diff --git a/pyswiftsim/dev.py b/pyswiftsim/dev.py new file mode 100644 index 0000000000000000000000000000000000000000..6646ecf4235022217387f0775c6fdf17ad3dd730 --- /dev/null +++ b/pyswiftsim/dev.py @@ -0,0 +1,69 @@ +#!/usr/bin/env python3 + +symbol_table = { + " int ": "i", + " double ": "d", + " char ": "c", +} + +def _generateFormatString(filename): + """ + Open a file containing a single struct and generate a format string + from it. (for dev, no guarantee of working). + """ + + struct_format = "" + struct_attribute = [] + + with open(filename, "r") as f: + line = "" + # skip until reaching struct + while ("struct" not in line): + line = f.readline() + + count = 0 + in_struct = False + + while (not in_struct or count != 0): + # count { and } + count += line.count("{") + if (count > 0): + in_struct = True + count -= line.count("}") + line = f.readline() + + for k in symbol_table.keys(): + if k not in line: + continue + + i = line.index(k) + len(k) + + if (line[i] == "*"): + struct_format += "p" + i += 1 + else: + struct_format += symbol_table[k] + + j = line.index(";") + struct_attribute.append(line[i:j]) + + + return struct_format, struct_attribute + + +if __name__ == "__main__": + + filename = "chemistry_data.h" + struct_format, struct_attribute = _generateFormatString(filename) + + attr = "[\n" + for i in struct_attribute: + attr += "\t'%s',\n" % i + attr += "]" + + txt = """ + _format = "{form}" + _name = {attr} + """.format(attr=attr, + form=struct_format) + print(txt)