def parse_enum(self, cenum): name = metaname.EnumName() name.from_camel_case(cenum.publicName, namespace=self.namespace.name) enum = Enum(name) enum.briefDescription = cenum.briefDoc enum.detailedDescription = cenum.detailedDoc self.namespace.addenum(enum) for cEnumValue in cenum.values: valueName = metaname.EnumeratorName() valueName.from_camel_case(cEnumValue.name, namespace=name) aEnumValue = Enumerator(valueName) aEnumValue.briefDescription = cEnumValue.briefDoc aEnumValue.detailedDescription = cEnumValue.detailedDoc if cEnumValue.value is not None: try: aEnumValue.value_from_string(cEnumValue.value) except ValueError: reason = '{0} enum value has an invalid definition ({1})'.format(cEnumValue.name, cEnumValue.value) context = metaname.EnumeratorName() context.from_camel_case(cEnumValue.name) raise ParsingError(reason, context) enum.add_enumerator(aEnumValue) self.enumsIndex[cenum.publicName] = enum if cenum.publicName in self.enum_relocations: self._pending_enums.append(enum) return enum
def parse_enum(self, cenum): if 'associatedTypedef' in dir(cenum): nameStr = cenum.associatedTypedef.name else: nameStr = cenum.name name = metaname.EnumName() name.from_camel_case(nameStr, namespace=self.namespace.name) enum = Enum(name) enum.briefDescription = cenum.briefDoc enum.detailedDescription = cenum.detailedDoc self.namespace.add_child(enum) for cEnumValue in cenum.values: valueName = metaname.EnumeratorName() valueName.from_camel_case(cEnumValue.name, namespace=name) aEnumValue = Enumerator(valueName) aEnumValue.briefDescription = cEnumValue.briefDoc aEnumValue.detailedDescription = cEnumValue.detailedDoc if cEnumValue.value is not None: try: aEnumValue.value_from_string(cEnumValue.value) except ValueError: raise Error('{0} enum value has an invalid definition ({1})'.format(cEnumValue.name, cEnumValue.value)) enum.add_enumerator(aEnumValue) self.enumsIndex[nameStr] = enum self.enums.append(enum) return enum
def set_from_c(self, cEnum, namespace=None): Object.set_from_c(self, cEnum, namespace=namespace) if 'associatedTypedef' in dir(cEnum): name = cEnum.associatedTypedef.name else: name = cEnum.name self.name = metaname.EnumName() self.name.prev = None if namespace is None else namespace.name self.name.set_from_c(name) for cEnumValue in cEnum.values: aEnumValue = Enumerator() aEnumValue.set_from_c(cEnumValue, namespace=self) self.add_enumerator(aEnumValue)