OSDN Git Service

Compiler warnings removal Numerous tweaks to remove compiler warnings where solution...
[tortoisegit/TortoiseGitJp.git] / ext / scintilla / include / HFacer.py
1 # HFacer.py - regenerate the Scintilla.h and SciLexer.h files from the Scintilla.iface interface\r
2 # definition file.\r
3 # The header files are copied to a temporary file apart from the section between a //++Autogenerated\r
4 # comment and a //--Autogenerated comment which is generated by the printHFile and printLexHFile\r
5 # functions. After the temporary file is created, it is copied back to the original file name.\r
6 \r
7 import string\r
8 import sys\r
9 import os\r
10 import Face\r
11 \r
12 def Contains(s,sub):\r
13         return string.find(s, sub) != -1\r
14 \r
15 def printLexHFile(f,out):\r
16         for name in f.order:\r
17                 v = f.features[name]\r
18                 if v["FeatureType"] in ["val"]:\r
19                         if Contains(name, "SCE_") or Contains(name, "SCLEX_"):\r
20                                 out.write("#define " + name + " " + v["Value"] + "\n")\r
21 \r
22 def printHFile(f,out):\r
23         for name in f.order:\r
24                 v = f.features[name]\r
25                 if v["Category"] != "Deprecated":\r
26                         if v["FeatureType"] in ["fun", "get", "set"]:\r
27                                 featureDefineName = "SCI_" + string.upper(name)\r
28                                 out.write("#define " + featureDefineName + " " + v["Value"] + "\n")\r
29                         elif v["FeatureType"] in ["evt"]:\r
30                                 featureDefineName = "SCN_" + string.upper(name)\r
31                                 out.write("#define " + featureDefineName + " " + v["Value"] + "\n")\r
32                         elif v["FeatureType"] in ["val"]:\r
33                                 if not (Contains(name, "SCE_") or Contains(name, "SCLEX_")):\r
34                                         out.write("#define " + name + " " + v["Value"] + "\n")\r
35 \r
36 def CopyWithInsertion(input, output, genfn, definition):\r
37         copying = 1\r
38         for line in input.readlines():\r
39                 if copying:\r
40                         output.write(line)\r
41                 if Contains(line, "//++Autogenerated"):\r
42                         copying = 0\r
43                         genfn(definition, output)\r
44                 if Contains(line, "//--Autogenerated"):\r
45                         copying = 1\r
46                         output.write(line)\r
47 \r
48 def contents(filename):\r
49         f = file(filename)\r
50         t = f.read()\r
51         f.close()\r
52         return t\r
53 \r
54 def Regenerate(filename, genfn, definition):\r
55         inText = contents(filename)\r
56         tempname = "HFacer.tmp"\r
57         out = open(tempname,"w")\r
58         hfile = open(filename)\r
59         CopyWithInsertion(hfile, out, genfn, definition)\r
60         out.close()\r
61         hfile.close()\r
62         outText = contents(tempname)\r
63         if inText == outText:\r
64                 os.unlink(tempname)\r
65         else:\r
66                 os.unlink(filename)\r
67                 os.rename(tempname, filename)\r
68 \r
69 f = Face.Face()\r
70 try:\r
71         f.ReadFromFile("Scintilla.iface")\r
72         Regenerate("Scintilla.h", printHFile, f)\r
73         Regenerate("SciLexer.h", printLexHFile, f)\r
74         print "Maximum ID is", max([x for x in f.values if int(x) < 3000])\r
75 except:\r
76         raise\r