def genGroup(self, groupinfo, groupName, alias=None): OutputGenerator.genGroup(self, groupinfo, groupName, alias) if alias: return if getElemType(groupinfo.elem) == 'bitmask': bitmaskTypeName = getElemName(groupinfo.flagType.elem) bitmaskTuples = [] for elem in groupinfo.elem.findall('enum'): (numVal, strVal) = self.enumToValue(elem, True) bitmaskTuples.append((getElemName(elem), strVal)) self.bitmasks.append(CBitmask(bitmaskTypeName, bitmaskTuples)) else: groupElem = groupinfo.elem expandName = re.sub(r'([0-9a-z_])([A-Z0-9][^A-Z0-9]?)', r'\1_\2', groupName).upper() expandPrefix = expandName expandSuffix = '' expandSuffixMatch = re.search(r'[A-Z][A-Z]+$', groupName) if expandSuffixMatch: expandSuffix = '_' + expandSuffixMatch.group() # Strip off the suffix from the prefix expandPrefix = expandName.rsplit(expandSuffix, 1)[0] enumTuples = [] for elem in groupElem.findall('enum'): (numVal, strVal) = self.enumToValue(elem, True) enumTuples.append((getElemName(elem), strVal)) self.enums.append(CEnum(groupName, expandPrefix, expandSuffix, enumTuples))
def genGroup(self, groupinfo, groupName, alias=None): """Generate groups (e.g. C "enum" type). These are concatenated together with other types. If alias is not None, it is the name of another group type which aliases this type; just generate that alias.""" OutputGenerator.genGroup(self, groupinfo, groupName, alias) groupElem = groupinfo.elem # After either enumerated type or alias paths, add the declaration # to the appropriate section for the group being defined. if groupElem.get('type') == 'bitmask': section = 'bitmask' else: section = 'group' if alias: # If the group name is aliased, just emit a typedef declaration # for the alias. body = 'typedef ' + alias + ' ' + groupName + ';\n' self.appendSection(section, body) else: (section, body) = self.buildEnumCDecl(self.genOpts.genEnumBeginEndRange, groupinfo, groupName) self.appendSection(section, "\n" + body)
def genGroup(self, groupinfo, groupName, alias): """Generate group (e.g. C "enum" type).""" OutputGenerator.genGroup(self, groupinfo, groupName, alias) if alias: return self.record_name(self.enums, groupName)
def genGroup(self, groupinfo, groupName, alias): OutputGenerator.genGroup(self, groupinfo, groupName, alias) if alias: # If the group name is aliased, just emit a typedef declaration # for the alias. body = 'typedef ' + alias + ' ' + groupName + ';\n' else: expand = self.genOpts.expandEnumerants (_, body) = self.buildEnumCDecl(expand, groupinfo, groupName) self.writeInclude('enums', groupName, body)
def genGroup(self, groupinfo, groupName, alias): """Generate group (e.g. C "enum" type).""" OutputGenerator.genGroup(self, groupinfo, groupName, alias) if alias: # If the group name is aliased, just emit a typedef declaration # for the alias. body = 'typedef ' + alias + ' ' + groupName + ';\n' else: expand = self.genOpts.expandEnumerants (_, body) = self.buildEnumCDecl(expand, groupinfo, groupName) if self.genOpts.conventions.generate_enum_table: self.genEnumTable(groupinfo, groupName) self.writeInclude('enums', groupName, body)
def genGroup(self, groupinfo, groupName, alias): OutputGenerator.genGroup(self, groupinfo, groupName, alias) groupElem = groupinfo.elem if alias: # Add name -> alias mapping self.addName(self.alias, groupName, alias) else: # May want to only emit definition on this branch True # Loop over the nested 'enum' tags. enumerants = [elem.get('name') for elem in groupElem.findall('enum')] for name in enumerants: self.addName(self.consts, name, groupName) self.enums[groupName] = enumerants
def genGroup(self, groupinfo, groupName, alias = None): OutputGenerator.genGroup(self, groupinfo, groupName, alias) groupElem = groupinfo.elem # After either enumerated type or alias paths, add the declaration # to the appropriate section for the group being defined. if groupElem.get('type') == 'bitmask': section = 'bitmask' else: section = 'group' if alias: # If the group name is aliased, just emit a typedef declaration # for the alias. body = 'typedef ' + alias + ' ' + groupName + ';\n' self.appendSection(section, body) else: (section, body) = self.buildEnumCDecl(self.genOpts.genEnumBeginEndRange, groupinfo, groupName) self.appendSection(section, "\n" + body)
def genGroup(self, groupinfo, groupName, alias): """Generate group (e.g. C "enum" type). These are concatenated together with other types. - Add the enum type name to the 'enums' dictionary, with the value being an ordered list of the enumerant names. - Add each enumerant name to the 'consts' dictionary, with the value being the enum type the enumerant is part of.""" OutputGenerator.genGroup(self, groupinfo, groupName, alias) groupElem = groupinfo.elem if alias: # Add name -> alias mapping self.addName(self.alias, groupName, alias) else: # May want to only emit definition on this branch True # Loop over the nested 'enum' tags. enumerants = [elem.get('name') for elem in groupElem.findall('enum')] for name in enumerants: self.addName(self.consts, name, groupName) self.enums[groupName] = enumerants
def genGroup(self, groupinfo, groupName, alias): OutputGenerator.genGroup(self, groupinfo, groupName, alias) self.enumNames.add(groupName)
def genGroup(self, groupinfo, groupName): OutputGenerator.genGroup(self, groupinfo, groupName) expand = self.genOpts.expandEnumerants (_, body) = self.buildEnumCDecl(expand, groupinfo, groupName) self.writeInclude('enums', groupName, body)