def __repr__(self): attributes = { 'extent': self.extent, 'name': self.name, 'type': self.type, 'typename': self.typename, } output = '<%s %s>\n' % (self.kind, ' '.join([ "%s='%s'" % (k,xml.escape(str(v))) for k,v in attributes.items() ])) prev = self.cursor.extent.start for c in self.children: output += Sources.getchunk(Extent(start=prev, end=c.cursor.extent.start)) output += str(c) + '\n' prev = c.cursor.extent.end output += Sources.getchunk(Extent(start=prev, end=self.cursor.extent.end)) output += '</%s>' % self.kind return output
def __init__(self, cursor): super(Type, self).__init__(cursor) if self.cursor.displayname in ['%sint%d_t' % (s, i) for i in [8,16,32,64] for s in ['','u']]: self.type = self.cursor.displayname.replace('_t', '') elif self.cursor.kind.is_attribute(): if len(self.cursor.displayname) > 0: self.type = '__attr_%s' % self.cursor.displayname else: self.type = '__attr_%s' % Sources.getchunk(self.extent).strip('_') else: self.type = Type.nameof(self.cursor.type) self.typename = Type.typenameof(self.cursor.type) self.name = self.cursor.displayname
def __init__(self, cursor): super(MacroDefinition, self).__init__(cursor) self.value = Sources.getchunk(Extent(cursor=cursor)) match = re.search(r'(?P<name>%s\([^)]*\)|%s)' % (self.name, self.name), self.value) if match is not None: self.name = match.group('name') self.value = self.value.replace(self.name, '').strip('\\\n\t ') while self.value in MacroDefinition.macros: self.value = MacroDefinition.macros[self.value] self.value = xml.escape(self.value) MacroDefinition.macros[self.name] = self.value
def __init__(self, cursor): super(EnumValue, self).__init__(cursor) if len(self.children) == 1: child = self.children[0] self.value = Sources.getchunk(child.extent) if self.value in MacroDefinition.macros: self.value = MacroDefinition.macros[self.value] if len(self.value) == 0: self.value = None elif self.value[0] == "'": self.value = ord(self.value[1]) elif all([ c in '0123456789' for c in self.value]): self.value = eval(self.value) elif len(self.children) == 0: self.value = None else: self.value = None