]> git.tdb.fi Git - gldbg.git/blob - genenum.py
Fix glXGetProcAddress serialisation order
[gldbg.git] / genenum.py
1 #!/usr/bin/python
2 # $Id$
3
4 import sys
5
6 enums = []
7
8 cur_categ = None
9 for fn in sys.argv[1:]:
10         prefix = "GL_"
11         if '=' in fn:
12                 fn, prefix = fn.split('=', 1)
13         for line in open(fn):
14                 line = line.strip()
15                 if not line or line[0]=='#':
16                         continue
17                 elif line[-1]==':':
18                         parts = line[:-1].split()
19                         if parts[1]=="enum":
20                                 cur_categ = parts[0]
21                 elif cur_categ:
22                         parts = line.split()
23                         if parts[0]=="use":
24                                 enums.append([None, cur_categ, prefix+parts[2]])
25                         elif parts[1]=="=":
26                                 try:
27                                         enums.append([int(parts[2], 0), cur_categ, prefix+parts[0]])
28                                 except ValueError, e:
29                                         sys.stderr.write("Syntax error in %s: %s\n"%(fn, e))
30
31 for e in enums:
32         if e[0] is None:
33                 for n in enums:
34                         if n[2]==e[2] and n[0] is not None:
35                                 e[0] = n[0]
36                 if e[0] is None:
37                         sys.stderr.write("Could not find value for enum reference %s in category %s\n"%(e[2], e[1]))
38
39 enums.sort(lambda x, y: cmp(x[0], y[0])*2+cmp(x[1], y[1]))
40
41 '''categs = set([e[2] for e in enums])
42 for c in categs:
43         print c, reduce(lambda x, y: x^y, [ord(c[i])*(1<<i) for i in range(len(c))])'''
44
45 print "EnumInfo enums[] ="
46 print "{"
47 for e in enums:
48         if e[0] is not None:
49                 print "\t{ 0x%X, \"%s\", \"%s\" },"%(e[0], e[1], e[2])
50 print "\t{ 0, 0, 0 }"
51 print "};"
52 print "unsigned enum_count = %d;"%len(enums)