blob: dfa9d0e357094afac032f7d6e56a8b289f471d55 [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 Pauldd7f7352003-12-05 00:46:06 +00005# Version: 5.1
Brian Paulfeaf04a2000-02-22 22:45:20 +00006#
Brian Pauldd7f7352003-12-05 00:46:06 +00007# Copyright (C) 1999-2003 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 Pauldd7f7352003-12-05 00:46:06 +000030# python 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 ''
Brian Pauldd7f7352003-12-05 00:46:06 +000044 print '#ifndef GLAPIENTRYP'
45 print '#define GLAPIENTRYP'
46 print '#endif'
Brian Paul6c0d72f2001-11-18 22:42:57 +000047 print ''
48 print 'struct _glapi_table'
49 print '{'
50 return
Brian Paulfeaf04a2000-02-22 22:45:20 +000051#endif
52
53
54def PrintTail():
Brian Paul6c0d72f2001-11-18 22:42:57 +000055 print '};'
56 print ''
57 print '#endif'
Brian Paulfeaf04a2000-02-22 22:45:20 +000058#endif
59
60
Brian Paul6c0d72f2001-11-18 22:42:57 +000061records = {}
Brian Paulfeaf04a2000-02-22 22:45:20 +000062
Brian Paul6c0d72f2001-11-18 22:42:57 +000063def 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
71def 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]
Kendall Bennettc40d1dd2003-10-21 22:22:17 +000081 print ' %s (GLAPIENTRYP %s)(%s); /* %d */' % (returnType, name, argList, k)
Brian Paul6c0d72f2001-11-18 22:42:57 +000082#endef
83
84
85PrintHead()
86apiparser.ProcessSpecFile("APIspec", DoRecord)
87PrintRecords()
88PrintTail()
89