2 # HFacer.py - regenerate the Scintilla.h and SciLexer.h files from the Scintilla.iface interface
4 # The header files are copied to a temporary file apart from the section between a /* ++Autogenerated*/
5 # comment and a /* --Autogenerated*/ comment which is generated by the printHFile and printLexHFile
6 # functions. After the temporary file is created, it is copied back to the original file name.
13 return s
.find(sub
) != -1
15 def printLexHFile(f
,out
):
18 if v
["FeatureType"] in ["val"]:
19 if Contains(name
, "SCE_") or Contains(name
, "SCLEX_"):
20 out
.write("#define " + name
+ " " + v
["Value"] + "\n")
22 def printHFile(f
,out
):
25 if v
["Category"] != "Deprecated":
26 if v
["FeatureType"] in ["fun", "get", "set"]:
27 featureDefineName
= "SCI_" + name
.upper()
28 out
.write("#define " + featureDefineName
+ " " + v
["Value"] + "\n")
29 elif v
["FeatureType"] in ["evt"]:
30 featureDefineName
= "SCN_" + name
.upper()
31 out
.write("#define " + featureDefineName
+ " " + v
["Value"] + "\n")
32 elif v
["FeatureType"] in ["val"]:
33 if not (Contains(name
, "SCE_") or Contains(name
, "SCLEX_")):
34 out
.write("#define " + name
+ " " + v
["Value"] + "\n")
36 def CopyWithInsertion(input, output
, genfn
, definition
):
38 for line
in input.readlines():
41 if Contains(line
, "/* ++Autogenerated"):
43 genfn(definition
, output
)
44 if Contains(line
, "/* --Autogenerated"):
48 def contents(filename
):
54 def Regenerate(filename
, genfn
, definition
):
55 inText
= contents(filename
)
56 tempname
= "HFacer.tmp"
57 out
= open(tempname
,"w")
58 hfile
= open(filename
)
59 CopyWithInsertion(hfile
, out
, genfn
, definition
)
62 outText
= contents(tempname
)
67 os
.rename(tempname
, filename
)
71 f
.ReadFromFile("Scintilla.iface")
72 Regenerate("Scintilla.h", printHFile
, f
)
73 Regenerate("SciLexer.h", printLexHFile
, f
)
74 print("Maximum ID is %s" % max([x
for x
in f
.values
if int(x
) < 3000]))