import string import sys import os import Face def DEFINEName(ifaceName): featureDefineName = string.upper(ifaceName) if "_" not in featureDefineName: featureDefineName = "SCI_" + featureDefineName return featureDefineName def Contains(s,sub): return string.find(s, sub) != -1 def printLexHFile(f,out): for name in f.order: v = f.features[name] if v["FeatureType"] in ["val"]: if Contains(name, "SCE_") or Contains(name, "SCLEX_"): out.write("#define " + name + " " + v["Value"] + "\n") def printHFile(f,out): for name in f.order: v = f.features[name] if v["Category"] != "Deprecated": if v["FeatureType"] in ["fun", "get", "set"]: featureDefineName = "SCI_" + string.upper(name) out.write("#define " + featureDefineName + " " + v["Value"] + "\n") elif v["FeatureType"] in ["evt"]: featureDefineName = "SCN_" + string.upper(name) out.write("#define " + featureDefineName + " " + v["Value"] + "\n") elif v["FeatureType"] in ["val"]: if not (Contains(name, "SCE_") or Contains(name, "SCLEX_")): out.write("#define " + name + " " + v["Value"] + "\n") def CopyWithInsertion(input, output, gen, definition): copying = 1 for line in input.readlines(): if copying: out.write(line) if Contains(line, "//++Autogenerated"): copying = 0 gen(definition, out) if Contains(line, "//--Autogenerated"): copying = 1 out.write(line) f = Face.Face() f.ReadFromFile("Scintilla.iface") out = open("Sci.h","w") hfile = open("Scintilla.h") CopyWithInsertion(hfile, out, printHFile, f) out.close() hfile.close() os.unlink("Scintilla.h") os.rename("Sci.h", "Scintilla.h") out = open("SciL.h","w") lexhfile = open("SciLexer.h") CopyWithInsertion(lexhfile, out, printLexHFile, f) out.close() lexhfile.close() os.unlink("SciLexer.h") os.rename("SciL.h", "SciLexer.h")