diff options
author | Brian Paul <[email protected]> | 2001-11-18 22:42:57 +0000 |
---|---|---|
committer | Brian Paul <[email protected]> | 2001-11-18 22:42:57 +0000 |
commit | 6c0d72f9c05f490a52a9f8c8108cd8598e65942c (patch) | |
tree | 08f16fd99fa1596e8c8bc5fc9033c7204b54c153 /src/mesa/glapi/gloffsets.py | |
parent | 199b931c071dfeb03a036765ae0f316dd7236a33 (diff) |
new Python API generator scripts
Diffstat (limited to 'src/mesa/glapi/gloffsets.py')
-rw-r--r-- | src/mesa/glapi/gloffsets.py | 93 |
1 files changed, 29 insertions, 64 deletions
diff --git a/src/mesa/glapi/gloffsets.py b/src/mesa/glapi/gloffsets.py index dd2b00cdbef..7fa4a1b6061 100644 --- a/src/mesa/glapi/gloffsets.py +++ b/src/mesa/glapi/gloffsets.py @@ -1,11 +1,11 @@ #!/usr/bin/env python -# $Id: gloffsets.py,v 1.4 2000/05/11 17:45:20 brianp Exp $ +# $Id: gloffsets.py,v 1.5 2001/11/18 22:42:57 brianp Exp $ # Mesa 3-D graphics library -# Version: 3.3 +# Version: 4.1 # -# Copyright (C) 1999-2000 Brian Paul All Rights Reserved. +# Copyright (C) 1999-2001 Brian Paul All Rights Reserved. # # Permission is hereby granted, free of charge, to any person obtaining a # copy of this software and associated documentation files (the "Software"), @@ -31,13 +31,11 @@ # gloffsets.py >glapioffsets.h # # Dependencies: -# The gl.spec file from the SI must be in the current directory. -# -# Brian Paul 3 February 2000 +# The apispec file must be in the current directory. + -import string -import re +import apiparser; def PrintHead(): @@ -46,75 +44,42 @@ def PrintHead(): print '#define _GLAPI_OFFSETS_H_' print '' return -#endif +#enddef def PrintTail(): print '' print '#endif' -#endif +#enddef + +records = {} -def GenerateDefine(name, offset): - s = '#define _gloffset_' + name + ' ' + str(offset) - return s; +def AddOffset(name, returnType, argTypeList, argNameList, alias, offset): + argList = apiparser.MakeArgList(argTypeList, argNameList) + if offset >= 0 and not records.has_key(offset): + records[offset] = name + #print '#define _gloffset_%s %d' % (name, offset) #enddef -def PrintDefines(): - functionPattern = re.compile('^[a-zA-Z0-9]+\(') - functionNamePattern = re.compile('^[a-zA-Z0-9]+') - - funcName = '' - - maxOffset = 0 - offsetInfo = { } - - f = open('gl.spec') - for line in f.readlines(): - - m = functionPattern.match(line) - if m: - # extract funcName - n = functionNamePattern.findall(line) - funcName = n[0] - - m = string.split(line) - if len(m) > 1: - if m[0] == 'param': - paramName = m[1] - if m[0] == 'offset': - if m[1] == '?': - #print 'WARNING skipping', funcName - noop = 0 - else: - funcOffset = int(m[1]) - if funcOffset > maxOffset: - maxOffset = funcOffset - s = GenerateDefine(funcName, funcOffset) - if offsetInfo.has_key(funcOffset): - print 'ERROR: offset', funcOffset, 'already used!' - raise ERROR - else: - offsetInfo[funcOffset] = s; - #endif - #endif - #endif - #endif - #endfor - - # Now print the #defines in order of dispatch offset - for i in range(0, maxOffset + 1): - if offsetInfo.has_key(i): - print offsetInfo[i] - else: - print 'ERROR: missing offset:', i - raise ERROR +def PrintRecords(): + keys = records.keys() + keys.sort() + prevk = -1 + for k in keys: + if k != prevk + 1: + #print 'Missing offset %d' % (prevk) + pass + prevk = int(k) + name = records[k] + print '#define _gloffset_%s %d' % (name, k) +#endef -#enddef PrintHead() -PrintDefines() +apiparser.ProcessSpecFile("APIspec", AddOffset) +PrintRecords() PrintTail() |