blob: 5cdc07b643d1485fd41294fc4215a9556bade76f [file] [log] [blame]
Brian Paulfeaf04a2000-02-22 22:45:20 +00001#!/usr/bin/env python
2
Brian Paula5116092000-02-22 23:59:25 +00003# $Id: gloffsets.py,v 1.2 2000/02/22 23:59:25 brianp Exp $
Brian Paulfeaf04a2000-02-22 22:45:20 +00004
5# Mesa 3-D graphics library
6# Version: 3.3
7#
8# Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
9#
10# Permission is hereby granted, free of charge, to any person obtaining a
11# copy of this software and associated documentation files (the "Software"),
12# to deal in the Software without restriction, including without limitation
13# the rights to use, copy, modify, merge, publish, distribute, sublicense,
14# and/or sell copies of the Software, and to permit persons to whom the
15# Software is furnished to do so, subject to the following conditions:
16#
17# The above copyright notice and this permission notice shall be included
18# in all copies or substantial portions of the Software.
19#
20# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
21# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
23# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
24# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
25# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
26
27
28# Generate the glapioffsets.h file.
29#
30# Usage:
31# gloffsets.py >glapioffsets.h
32#
33# Dependencies:
34# The gl.spec file from the SI must be in the current directory.
35#
36# Brian Paul 3 February 2000
37
38
39import string
40import re
41
42
43def PrintHead():
44 print '/* DO NOT EDIT - This file generated automatically */'
45 print '#ifndef _GLAPI_OFFSETS_H_'
46 print '#define _GLAPI_OFFSETS_H_'
47 print ''
48 return
49#endif
50
51
52def PrintTail():
53 print ''
54 print '#endif'
55#endif
56
57
58def GenerateDefine(name, offset):
Brian Paula5116092000-02-22 23:59:25 +000059 s = '#define _gloffset_' + name + ' ' + str(offset)
Brian Paulfeaf04a2000-02-22 22:45:20 +000060 return s;
61#enddef
62
63
64def PrintDefines():
65 functionPattern = re.compile('^[a-zA-Z0-9]+\(')
66 functionNamePattern = re.compile('^[a-zA-Z0-9]+')
67
68 funcName = ''
69
Brian Paula5116092000-02-22 23:59:25 +000070 maxOffset = 0
71 offsetInfo = { }
72
Brian Paulfeaf04a2000-02-22 22:45:20 +000073 f = open('gl.spec')
74 for line in f.readlines():
75
76 m = functionPattern.match(line)
77 if m:
78 # extract funcName
79 n = functionNamePattern.findall(line)
80 funcName = n[0]
81
82 m = string.split(line)
83 if len(m) > 1:
84 if m[0] == 'param':
85 paramName = m[1]
86 if m[0] == 'offset':
Brian Paula5116092000-02-22 23:59:25 +000087 funcOffset = int(m[1])
88 if funcOffset > maxOffset:
89 maxOffset = funcOffset
Brian Paulfeaf04a2000-02-22 22:45:20 +000090 s = GenerateDefine(funcName, funcOffset)
Brian Paula5116092000-02-22 23:59:25 +000091 offsetInfo[funcOffset] = s;
Brian Paulfeaf04a2000-02-22 22:45:20 +000092 #endif
93 #endfor
Brian Paula5116092000-02-22 23:59:25 +000094
95 # Now print the #defines in order of dispatch offset
96 for i in range(0, maxOffset + 1):
97 print offsetInfo[i]
98
Brian Paulfeaf04a2000-02-22 22:45:20 +000099#enddef
100
101
102
103PrintHead()
104PrintDefines()
105PrintTail()