Lines Matching refs:self

82     def __init__(self, elem):
83 self.required = False
84 self.declared = False
85 self.elem = elem
86 def resetState(self):
87 self.required = False
88 self.declared = False
94 def __init__(self, elem):
95 BaseInfo.__init__(self, elem)
101 def __init__(self, elem):
102 BaseInfo.__init__(self, elem)
103 self.enums = {}
110 def __init__(self, elem):
111 BaseInfo.__init__(self, elem)
112 self.type = elem.get('type')
113 if (self.type == None):
114 self.type = ''
124 def __init__(self, elem):
125 BaseInfo.__init__(self, elem)
126 self.glxtype = None
127 self.glxopcode = None
128 self.glxequiv = None
129 self.vecequiv = None
140 def __init__(self, elem):
141 BaseInfo.__init__(self, elem)
142 self.name = elem.get('name')
146 self.category = 'VERSION'
147 self.number = elem.get('number')
149 self.category = self.name.split('_', 2)[1]
150 self.number = "0"
151 self.emit = False
218 def __init__(self,
228 self.filename = filename
229 self.apiname = apiname
230 self.profile = profile
231 self.versions = self.emptyRegex(versions)
232 self.emitversions = self.emptyRegex(emitversions)
233 self.defaultExtensions = defaultExtensions
234 self.addExtensions = self.emptyRegex(addExtensions)
235 self.removeExtensions = self.emptyRegex(removeExtensions)
236 self.sortProcedure = sortProcedure
240 def emptyRegex(self,pat):
274 def __init__(self,
293 GeneratorOptions.__init__(self, filename, apiname, profile,
296 self.prefixText = prefixText
297 self.genFuncPointers = genFuncPointers
298 self.protectFile = protectFile
299 self.protectFeature = protectFeature
300 self.protectProto = protectProto
301 self.protectProtoStr = protectProtoStr
302 self.apicall = apicall
303 self.apientry = apientry
304 self.apientryp = apientryp
335 def __init__(self,
339 self.outFile = None
340 self.errFile = errFile
341 self.warnFile = warnFile
342 self.diagFile = diagFile
344 self.featureName = None
345 self.genOpts = None
354 def logMsg(self, level, *args):
359 if (self.errFile != None):
360 write(strfile.getvalue(), file=self.errFile)
363 if (self.warnFile != None):
364 write('WARNING:', *args, file=self.warnFile)
366 if (self.diagFile != None):
367 write('DIAG:', *args, file=self.diagFile)
372 def beginFile(self, genOpts):
373 self.genOpts = genOpts
377 if (self.genOpts.filename != None):
378 self.outFile = open(self.genOpts.filename, 'w')
380 self.outFile = sys.stdout
381 def endFile(self):
382 self.errFile and self.errFile.flush()
383 self.warnFile and self.warnFile.flush()
384 self.diagFile and self.diagFile.flush()
385 self.outFile.flush()
386 if (self.outFile != sys.stdout and self.outFile != sys.stderr):
387 self.outFile.close()
388 self.genOpts = None
390 def beginFeature(self, interface, emit):
391 self.emit = emit
392 self.featureName = interface.get('name')
394 self.featureExtraProtect = interface.get('protect')
395 def endFeature(self):
397 self.featureName = None
398 self.featureExtraProtect = None
401 def genType(self, typeinfo, name):
402 if (self.featureName == None):
407 def genEnum(self, enuminfo, name):
408 if (self.featureName == None):
413 def genCmd(self, cmd, name):
414 if (self.featureName == None):
438 def __init__(self,
442 OutputGenerator.__init__(self, errFile, warnFile, diagFile)
444 self.typeBody = ''
445 self.enumBody = ''
446 self.cmdBody = ''
451 def makeCDecls(self, cmd):
456 pdecl = self.genOpts.apicall
475 pdecl += self.genOpts.apientry + text + tail
476 tdecl += '(' + self.genOpts.apientryp + 'PFN' + text.upper() + 'PROC' + tail + ')'
496 def newline(self):
497 write('', file=self.outFile)
499 def beginFile(self, genOpts):
500 OutputGenerator.beginFile(self, genOpts)
504 if (genOpts.protectFile and self.genOpts.filename):
505 headerSym = '__' + self.genOpts.apiname + '_' + re.sub('\.h', '_h_', os.path.basename(self.genOpts.filename))
506 write('#ifndef', headerSym, file=self.outFile)
507 write('#define', headerSym, '1', file=self.outFile)
508 self.newline()
509 write('#ifdef __cplusplus', file=self.outFile)
510 write('extern "C" {', file=self.outFile)
511 write('#endif', file=self.outFile)
512 self.newline()
517 write(s, file=self.outFile)
522 write('/* Generated C header for:', file=self.outFile)
523 write(' * API:', genOpts.apiname, file=self.outFile)
525 write(' * Profile:', genOpts.profile, file=self.outFile)
526 write(' * Versions considered:', genOpts.versions, file=self.outFile)
527 write(' * Versions emitted:', genOpts.emitversions, file=self.outFile)
528 write(' * Default extensions included:', genOpts.defaultExtensions, file=self.outFile)
529 write(' * Additional extensions included:', genOpts.addExtensions, file=self.outFile)
530 write(' * Extensions removed:', genOpts.removeExtensions, file=self.outFile)
531 write(' */', file=self.outFile)
532 def endFile(self):
535 self.newline()
536 write('#ifdef __cplusplus', file=self.outFile)
537 write('}', file=self.outFile)
538 write('#endif', file=self.outFile)
539 if (self.genOpts.protectFile and self.genOpts.filename):
540 self.newline()
541 write('#endif', file=self.outFile)
543 OutputGenerator.endFile(self)
544 def beginFeature(self, interface, emit):
546 OutputGenerator.beginFeature(self, interface, emit)
551 self.typeBody = ''
552 self.enumBody = ''
553 self.cmdPointerBody = ''
554 self.cmdBody = ''
555 def endFeature(self):
558 if (self.emit):
559 self.newline()
560 if (self.genOpts.protectFeature):
561 write('#ifndef', self.featureName, file=self.outFile)
562 write('#define', self.featureName, '1', file=self.outFile)
563 if (self.typeBody != ''):
564 write(self.typeBody, end='', file=self.outFile)
568 if (self.featureExtraProtect != None):
569 write('#ifdef', self.featureExtraProtect, file=self.outFile)
570 if (self.enumBody != ''):
571 write(self.enumBody, end='', file=self.outFile)
572 if (self.genOpts.genFuncPointers and self.cmdPointerBody != ''):
573 write(self.cmdPointerBody, end='', file=self.outFile)
574 if (self.cmdBody != ''):
575 if (self.genOpts.protectProto == True):
576 prefix = '#ifdef ' + self.genOpts.protectProtoStr + '\n'
578 elif (self.genOpts.protectProto == 'nonzero'):
579 prefix = '#if ' + self.genOpts.protectProtoStr + '\n'
581 elif (self.genOpts.protectProto == False):
585 self.gen.logMsg('warn',
587 self.genOpts.protectProto,
592 write(prefix + self.cmdBody + suffix, end='', file=self.outFile)
593 if (self.featureExtraProtect != None):
594 write('#endif /*', self.featureExtraProtect, '*/', file=self.outFile)
595 if (self.genOpts.protectFeature):
596 write('#endif /*', self.featureName, '*/', file=self.outFile)
598 OutputGenerator.endFeature(self)
601 def genType(self, typeinfo, name):
602 OutputGenerator.genType(self, typeinfo, name)
605 # (from self.genOpts). Copy other text through unchanged.
611 s += self.genOpts.apientry + noneStr(elem.tail)
615 self.typeBody += s + '\n'
618 def genEnum(self, enuminfo, name):
619 OutputGenerator.genEnum(self, enuminfo, name)
622 self.enumBody += '#define ' + name.ljust(33) + ' ' + enuminfo.elem.get('value')
627 self.enumBody += enuminfo.type
628 self.enumBody += '\n'
631 def genCmd(self, cmdinfo, name):
632 OutputGenerator.genCmd(self, cmdinfo, name)
634 decls = self.makeCDecls(cmdinfo.elem)
635 self.cmdBody += decls[0]
636 if (self.genOpts.genFuncPointers):
637 self.cmdPointerBody += decls[1]
674 def __init__(self):
675 self.tree = None
676 self.typedict = {}
677 self.groupdict = {}
678 self.enumdict = {}
679 self.cmddict = {}
680 self.apidict = {}
681 self.extensions = []
682 self.extdict = {}
685 self.gen = OutputGenerator()
686 self.genOpts = None
687 self.emitFeatures = False
688 def loadElementTree(self, tree):
690 self.tree = tree
691 self.parseTree()
692 def loadFile(self, file):
694 self.tree = etree.parse(file)
695 self.parseTree()
696 def setGenerator(self, gen):
698 self.gen = gen
704 # dictionary - self.{type|group|enum|cmd|api|ext}dict
708 def addElementInfo(self, elem, info, infoName, dictionary):
714 self.gen.logMsg('warn', '*** Attempt to redefine',
722 # dictionary - self.{type|enum|cmd}dict
723 def lookupElementInfo(self, fname, dictionary):
724 key = (fname, self.genOpts.apiname)
726 # self.gen.logMsg('diag', 'Found API-specific element for feature', fname)
729 # self.gen.logMsg('diag', 'Found generic element for feature', fname)
733 def parseTree(self):
736 self.reg = self.tree.getroot()
744 self.typedict = {}
745 for type in self.reg.findall('types/type'):
750 self.addElementInfo(type, TypeInfo(type), 'type', self.typedict)
756 self.groupdict = {}
757 for group in self.reg.findall('groups/group'):
758 self.addElementInfo(group, GroupInfo(group), 'group', self.groupdict)
766 self.enumdict = {}
767 for enum in self.reg.findall('enums/enum'):
768 self.addElementInfo(enum, EnumInfo(enum), 'enum', self.enumdict)
776 self.cmddict = {}
777 for cmd in self.reg.findall('commands/command'):
783 self.addElementInfo(cmd, ci, 'command', self.cmddict)
788 self.apidict = {}
789 for feature in self.reg.findall('feature'):
791 self.addElementInfo(feature, ai, 'feature', self.apidict)
792 self.extensions = self.reg.findall('extensions/extension')
793 self.extdict = {}
794 for feature in self.extensions:
796 self.addElementInfo(feature, ei, 'extension', self.extdict)
797 def dumpReg(self, maxlen = 40, filehandle = sys.stdout):
803 for name in self.typedict:
804 tobj = self.typedict[name]
807 for name in self.groupdict:
808 gobj = self.groupdict[name]
811 for name in self.enumdict:
812 eobj = self.enumdict[name]
815 for name in self.cmddict:
816 cobj = self.cmddict[name]
819 for key in self.apidict:
821 etree.tostring(self.apidict[key].elem)[0:maxlen], file=filehandle)
823 for key in self.extdict:
825 etree.tostring(self.extdict[key].elem)[0:maxlen], file=filehandle)
829 # write(etree.tostring(self.tree.getroot(),pretty_print=True), file=filehandle)
833 def markTypeRequired(self, typename, required):
835 self.gen.logMsg('diag', '*** tagging type:', typename, '-> required =', required)
837 type = self.lookupElementInfo(typename, self.typedict)
844 self.gen.logMsg('diag', '*** Generating dependent type',
846 self.markTypeRequired(depType, required)
849 self.gen.logMsg('warn', '*** type:', typename , 'IS NOT DEFINED')
853 def markRequired(self, features, required):
855 self.gen.logMsg('diag', '*** markRequired (features = <too long to print>, required =', required, ')')
860 self.markTypeRequired(typeElem.get('name'), required)
863 self.gen.logMsg('diag', '*** tagging enum:', name, '-> required =', required)
864 enum = self.lookupElementInfo(name, self.enumdict)
868 self.gen.logMsg('warn', '*** enum:', name , 'IS NOT DEFINED')
871 self.gen.logMsg('diag', '*** tagging command:', name, '-> required =', required)
872 cmd = self.lookupElementInfo(name, self.cmddict)
884 self.gen.logMsg('diag', '*** markRequired: command implicitly requires dependent type', ptype.text)
885 self.markTypeRequired(ptype.text, required)
887 self.gen.logMsg('warn', '*** command:', name, 'IS NOT DEFINED')
893 def requireAndRemoveFeatures(self, interface, api, profile):
898 self.markRequired(feature,True)
902 self.markRequired(feature,False)
908 # dictionary - of *Info objects - self.{type|enum|cmd}dict
909 # genProc - bound function pointer for self.gen.gen{Type|Enum|Cmd}
910 def generateFeature(self, fname, ftype, dictionary, genProc):
911 f = self.lookupElementInfo(fname, dictionary)
914 self.gen.logMsg('diag', '*** No entry found for feature', fname,
920 self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(not required)')
923 self.gen.logMsg('diag', '*** Skipping', ftype, fname, '(already declared)')
934 self.gen.logMsg('diag', '*** Generating required dependent type',
936 self.generateFeature(depname, 'type', self.typedict,
937 self.gen.genType)
941 self.gen.logMsg('diag', '*** Generating required parameter type',
943 self.generateFeature(depname, 'type', self.typedict,
944 self.gen.genType)
947 if self.emitFeatures:
948 self.gen.logMsg('diag', '*** Emitting', ftype, 'decl for', fname)
951 self.gen.logMsg('diag', '*** Skipping', ftype, fname,
959 def generateRequiredInterface(self, interface):
966 self.generateFeature(t.get('name'), 'type', self.typedict,
967 self.gen.genType)
969 self.generateFeature(e.get('name'), 'enum', self.enumdict,
970 self.gen.genEnum)
972 self.generateFeature(c.get('name'), 'command', self.cmddict,
973 self.gen.genCmd)
978 def apiGen(self, genOpts):
981 self.gen.logMsg('diag', '*******************************************')
982 self.gen.logMsg('diag', ' Registry.apiGen file:', genOpts.filename,
985 self.gen.logMsg('diag', '*******************************************')
987 self.genOpts = genOpts
989 self.apiReset()
992 regVersions = re.compile(self.genOpts.versions)
993 regEmitVersions = re.compile(self.genOpts.emitversions)
994 regAddExtensions = re.compile(self.genOpts.addExtensions)
995 regRemoveExtensions = re.compile(self.genOpts.removeExtensions)
1000 for key in self.apidict:
1001 fi = self.apidict[key]
1003 if (api == self.genOpts.apiname):
1012 self.gen.logMsg('diag', '*** NOT tagging feature api =', api,
1016 self.gen.logMsg('diag', '*** NOT including feature api =', api,
1020 self.gen.logMsg('diag', '*** NOT including feature api =', api,
1024 self.gen.logMsg('warn', '*** No matching API versions found!')
1031 for key in self.extdict:
1032 ei = self.extdict[key]
1041 if (self.genOpts.defaultExtensions and
1042 re.match(pat, self.genOpts.defaultExtensions)):
1043 self.gen.logMsg('diag', '*** Including extension',
1052 self.gen.logMsg('diag', '*** Including extension',
1060 self.gen.logMsg('diag', '*** Removing extension',
1070 self.gen.logMsg('diag', '*** NOT including extension',
1074 if (self.genOpts.sortProcedure):
1075 self.genOpts.sortProcedure(features)
1085 self.gen.logMsg('diag', '*** PASS 1: TAG FEATURES ********************************************')
1087 self.gen.logMsg('diag', '*** PASS 1: Tagging required and removed features for',
1089 self.requireAndRemoveFeatures(f.elem, self.genOpts.apiname, self.genOpts.profile)
1094 self.gen.logMsg('diag', '*** PASS 2: GENERATE INTERFACES FOR FEATURES ************************')
1095 self.gen.beginFile(self.genOpts)
1097 self.gen.logMsg('diag', '*** PASS 2: Generating interface for',
1099 emit = self.emitFeatures = f.emit
1101 self.gen.logMsg('diag', '*** PASS 2: NOT declaring feature',
1105 self.gen.beginFeature(f.elem, emit)
1106 self.generateRequiredInterface(f.elem)
1107 self.gen.endFeature()
1108 self.gen.endFile()
1112 def apiReset(self):
1114 for type in self.typedict:
1115 self.typedict[type].resetState()
1116 for enum in self.enumdict:
1117 self.enumdict[enum].resetState()
1118 for cmd in self.cmddict:
1119 self.cmddict[cmd].resetState()
1120 for cmd in self.apidict:
1121 self.apidict[cmd].resetState()
1125 def validateGroups(self):
1129 self.gen.logMsg('diag', '*** VALIDATING GROUP ATTRIBUTES ***')
1130 for cmd in self.reg.findall('commands/command'):
1135 # self.gen.logMsg('diag', '*** Command ', funcname, ' has return group ', group)
1136 if (group not in self.groupdict.keys()):
1137 # self.gen.logMsg('diag', '*** Command ', funcname, ' has UNKNOWN return group ', group)
1150 if (group not in self.groupdict.keys()):
1151 # self.gen.logMsg('diag', '*** Command ', funcname, ' param ', pname, ' has UNKNOWN group ', group)
1157 self.gen.logMsg('diag', '*** SUMMARY OF UNRECOGNIZED GROUPS ***')
1159 self.gen.logMsg('diag', ' ', key, ' occurred ', badGroup[key], ' times')