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