Beispiel #1
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
Beispiel #2
0
 def __init__(self, cursor):
   super(ReturnType, self).__init__(cursor)
   self.name = 'output'
   self.type = Type.nameof(self.cursor.type.get_result())
   self.typename = Type.typenameof(self.cursor.type.get_result())
Beispiel #3
0
  def nameof(ctype):
    utype = ctype.get_canonical()
    ukind = utype.kind

    bits = int(Type.bits.replace('bit', ''))

    qualifiers = []
    if ctype.is_const_qualified():
      qualifiers += ['const']
    if ctype.is_volatile_qualified():
      qualifiers += ['volatile']
    if ctype.is_restrict_qualified():
      qualifiers += ['restrict']
    if len(qualifiers) > 0:
      qualifier = ' ' + ' '.join(qualifiers)
    else:
      qualifier = ''

    if ukind == TypeKind.INVALID:
      return '__invalid' + qualifier
    elif ukind == TypeKind.UNEXPOSED:
      return '__unexposed' + qualifier
    elif ukind == TypeKind.VOID:
      return 'void' + qualifier
    elif ukind == TypeKind.BOOL:
      return 'bool' + qualifier
    elif ukind == TypeKind.CHAR_U:
      return 'uchar' + qualifier
    elif ukind == TypeKind.UCHAR:
      return 'uint8' + qualifier
    elif ukind == TypeKind.CHAR16:
      return 'char16' + qualifier
    elif ukind == TypeKind.CHAR32:
      return 'char32' + qualifier
    elif ukind == TypeKind.USHORT:
      return 'uint16' + qualifier
    elif ukind == TypeKind.UINT:
      return 'uint32' + qualifier
    elif ukind == TypeKind.ULONG:
      return 'uint%d' % (bits) + qualifier
    elif ukind == TypeKind.ULONGLONG:
      return 'uint64' + qualifier
    elif ukind == TypeKind.UINT128:
      return 'uint128' + qualifier
    elif ukind == TypeKind.CHAR_S:
      return 'char' + qualifier
    elif ukind == TypeKind.SCHAR:
      return 'int8' + qualifier
    elif ukind == TypeKind.WCHAR:
      return 'wchar' + qualifier
    elif ukind == TypeKind.SHORT:
      return 'int16' + qualifier
    elif ukind == TypeKind.INT:
      return 'int32' + qualifier
    elif ukind == TypeKind.LONG:
      return 'int%d' % (bits) + qualifier
    elif ukind == TypeKind.LONGLONG:
      return 'int64' + qualifier
    elif ukind == TypeKind.INT128:
      return 'int128' + qualifier
    elif ukind == TypeKind.FLOAT:
      return 'float32' + qualifier
    elif ukind == TypeKind.DOUBLE:
      return 'float64' + qualifier
    elif ukind == TypeKind.LONGDOUBLE:
      return 'float%d' % (bits + 64) + qualifier
    elif ukind == TypeKind.NULLPTR:
      return 'nullptr' + qualifier
    elif ukind == TypeKind.OVERLOAD:
      return '__overload' + qualifier
    elif ukind == TypeKind.DEPENDENT:
      return '__dependent' + qualifier
    elif ukind == TypeKind.OBJCID:
      return '__objcid' + qualifier
    elif ukind == TypeKind.OBJCCLASS:
      return '__objcclass' + qualifier
    elif ukind == TypeKind.OBJCSEL:
      return '__objcsel' + qualifier
    elif ukind == TypeKind.COMPLEX:
      return '__complex_%s' % Type.nameof(utype.element_type) + qualifier
    elif ukind == TypeKind.POINTER:
      return '%s*' % Type.nameof(ctype.get_pointee()) + qualifier
    elif ukind == TypeKind.BLOCKPOINTER:
      return '__blockpointer' + qualifier
    elif ukind == TypeKind.LVALUEREFERENCE:
      return '%s&' % Type.typenameof(ctype.get_pointee()) + qualifier
    elif ukind == TypeKind.RVALUEREFERENCE:
      return '%s&&' % Type.typenameof(ctype.get_pointee()) + qualifier
    elif ukind == TypeKind.RECORD:
      return utype.get_declaration().displayname + qualifier
    elif ukind == TypeKind.ENUM:
      return utype.get_declaration().displayname + qualifier
    elif ukind == TypeKind.TYPEDEF:
      return '_typedef' + qualifier
    elif ukind == TypeKind.OBJCINTERFACE:
      return '<objc-object-interface>' + qualifier
    elif ukind == TypeKind.OBJCOBJECTPOINTER:
      return '<objc-object-pointer>' + qualifier
    elif ukind == TypeKind.FUNCTIONNOPROTO:
      return '<function-no-proto>' + qualifier
    elif ukind == TypeKind.FUNCTIONPROTO:
      return '<function-proto>' + qualifier
    elif ukind == TypeKind.CONSTANTARRAY:
      return Type.nameof(utype.element_type) + '[%s]' % utype.element_count + qualifier
    elif ukind == TypeKind.VECTOR:
      return '__vector_%s' % Type.nameof(utype.element_type) + '[%s]' % utype.element_count + qualifier
    else:
      return '__unknown' + qualifier