1#!/usr/bin/env python3 2# $Id: adprocess.py,v 1.12 2001/08/24 18:26:15 bsmith Exp $ 3# 4# change python to whatever is needed on your system to invoke python 5# 6# Reads classes.data and prints the language d classes 7# 8# Crude as all hack! 9# 10# Calling sequence: 11# d.py 12## 13import os 14import re 15import sys 16from string import * 17import pickle 18 19 20def main(args): 21 file = open('classes.data') 22 enums = pickle.load(file) 23 senums = pickle.load(file) 24 structs = pickle.load(file) 25 aliases = pickle.load(file) 26 classes = pickle.load(file) 27 outfile = open('petsc.d','w') 28 29 for i in aliases: 30 outfile.write("alias "+aliases[i]+" "+i+"; \n") 31 outfile.write("\n") 32 33 for i in senums: 34 outfile.write("alias char* "+i+"; \n") 35# for j in senums[i]: 36# outfile.write("alias "+senums[i][j]+" "+j+"; \n") 37 38 for i in enums: 39 outfile.write("enum "+i+"\n") 40 outfile.write("{\n") 41 cnt = 0 42 for j in enums[i]: 43 outfile.write(" "+j) 44 cnt = cnt + 1 45 if not cnt == len(enums[i]): outfile.write(",") 46 outfile.write("\n") 47 outfile.write("};\n") 48 outfile.write("\n") 49 50 for i in structs: 51 outfile.write("struct "+i+"\n") 52 outfile.write("{\n") 53 for j in structs[i]: 54 outfile.write(" "+j+";\n") 55 outfile.write("};\n") 56 outfile.write("\n") 57 58 for i in classes: 59 outfile.write("class "+i+"\n") 60 outfile.write("{\n") 61 for j in classes[i]: 62 outfile.write(" int "+j+"(") 63 cnt = 0 64 for k in classes[i][j]: 65 if cnt > 0: 66 outfile.write(k.replace("const ","").replace("unsigned long","ulong")) 67 if cnt < len(classes[i][j])-1: outfile.write(",") 68 cnt = cnt + 1 69 outfile.write("){return 0;};\n") 70 outfile.write("}\n") 71 72 73# 74# The classes in this file can also be used in other python-programs by using 'import' 75# 76if __name__ == '__main__': 77 main(sys.argv[1:]) 78 79