blob: 8bd885f4696e99b91643bbe4b7ec674832c7dacc [file] [log] [blame]
Brian Paulfeaf04a2000-02-22 22:45:20 +00001#!/usr/bin/env python
2
Brian Paulfeaf04a2000-02-22 22:45:20 +00003
4# Mesa 3-D graphics library
Brian Paul6c0d72f2001-11-18 22:42:57 +00005# Version: 4.1
Brian Paulfeaf04a2000-02-22 22:45:20 +00006#
Brian Paul6c0d72f2001-11-18 22:42:57 +00007# Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
Brian Paulfeaf04a2000-02-22 22:45:20 +00008#
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:
Brian Paul6c0d72f2001-11-18 22:42:57 +000030# gloffsets.py >glapitable.h
Brian Paulfeaf04a2000-02-22 22:45:20 +000031#
32# Dependencies:
Brian Paul6c0d72f2001-11-18 22:42:57 +000033# The apispec file must be in the current directory.
Brian Paulfeaf04a2000-02-22 22:45:20 +000034
35
Brian Paul6c0d72f2001-11-18 22:42:57 +000036import apiparser;
Brian Paulfeaf04a2000-02-22 22:45:20 +000037
38
39def PrintHead():
Brian Paul6c0d72f2001-11-18 22:42:57 +000040 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 '#include <GL/gl.h>'
45 print ''
46 print 'struct _glapi_table'
47 print '{'
48 return
Brian Paulfeaf04a2000-02-22 22:45:20 +000049#endif
50
51
52def PrintTail():
Brian Paul6c0d72f2001-11-18 22:42:57 +000053 print '};'
54 print ''
55 print '#endif'
Brian Paulfeaf04a2000-02-22 22:45:20 +000056#endif
57
58
Brian Paul6c0d72f2001-11-18 22:42:57 +000059records = {}
Brian Paulfeaf04a2000-02-22 22:45:20 +000060
Brian Paul6c0d72f2001-11-18 22:42:57 +000061def DoRecord(name, returnType, argTypeList, argNameList, alias, offset):
62 argList = apiparser.MakeArgList(argTypeList, argNameList)
63 if offset >= 0 and not records.has_key(offset):
64 records[offset] = (name, returnType, argList)
65 #print '#define _gloffset_%s %d' % (name, offset)
66#endif
67
68
69def PrintRecords():
70 keys = records.keys()
71 keys.sort()
72 prevk = -1
73 for k in keys:
74 if k != prevk + 1:
75 #print 'Missing offset %d' % (prevk)
76 pass
77 prevk = int(k)
78 (name, returnType, argList) = records[k]
Kendall Bennettc40d1dd2003-10-21 22:22:17 +000079 print ' %s (GLAPIENTRYP %s)(%s); /* %d */' % (returnType, name, argList, k)
Brian Paul6c0d72f2001-11-18 22:42:57 +000080#endef
81
82
83PrintHead()
84apiparser.ProcessSpecFile("APIspec", DoRecord)
85PrintRecords()
86PrintTail()
87