revert to version 1.18 for now to fix segfaults in some applications
[mesa.git] / src / mesa / glapi / gltable.py
1 #!/usr/bin/env python
2
3
4 # Mesa 3-D graphics library
5 # Version: 5.1
6 #
7 # Copyright (C) 1999-2003 Brian Paul All Rights Reserved.
8 #
9 # Permission is hereby granted, free of charge, to any person obtaining a
10 # copy of this software and associated documentation files (the "Software"),
11 # to deal in the Software without restriction, including without limitation
12 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
13 # and/or sell copies of the Software, and to permit persons to whom the
14 # Software is furnished to do so, subject to the following conditions:
15 #
16 # The above copyright notice and this permission notice shall be included
17 # in all copies or substantial portions of the Software.
18 #
19 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
20 # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
21 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
22 # BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
23 # AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
24 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
25
26
27 # Generate the glapitable.h file.
28 #
29 # Usage:
30 # python gloffsets.py >glapitable.h
31 #
32 # Dependencies:
33 # The apispec file must be in the current directory.
34
35
36 import apiparser;
37
38
39 def PrintHead():
40 print '/* DO NOT EDIT - This file generated automatically with gltable.py script */'
41 print '#ifndef _GLAPI_TABLE_H_'
42 print '#define _GLAPI_TABLE_H_'
43 print ''
44 print '#ifndef GLAPIENTRYP'
45 print '#define GLAPIENTRYP'
46 print '#endif'
47 print ''
48 print 'struct _glapi_table'
49 print '{'
50 return
51 #endif
52
53
54 def PrintTail():
55 print '};'
56 print ''
57 print '#endif'
58 #endif
59
60
61 records = {}
62
63 def DoRecord(name, returnType, argTypeList, argNameList, alias, offset):
64 argList = apiparser.MakeArgList(argTypeList, argNameList)
65 if offset >= 0 and not records.has_key(offset):
66 records[offset] = (name, returnType, argList)
67 #print '#define _gloffset_%s %d' % (name, offset)
68 #endif
69
70
71 def PrintRecords():
72 keys = records.keys()
73 keys.sort()
74 prevk = -1
75 for k in keys:
76 if k != prevk + 1:
77 #print 'Missing offset %d' % (prevk)
78 pass
79 prevk = int(k)
80 (name, returnType, argList) = records[k]
81 print ' %s (GLAPIENTRYP %s)(%s); /* %d */' % (returnType, name, argList, k)
82 #endef
83
84
85 PrintHead()
86 apiparser.ProcessSpecFile("APIspec", DoRecord)
87 PrintRecords()
88 PrintTail()
89