Example #1
0
  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
Example #2
0
  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
Example #3
0
  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
Example #4
0
  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