Esempio n. 1
0
 def get_ast(self):
     fields = [get_field_ast(f) for f in self.fields]
     methods = [m.get_ast() for m in self.methods if m.ast is not None]
     isInterface = 'interface' in self.access
     return {
         'rawname': self.thisclass[1:-1],
         'name': parse_descriptor(self.thisclass),
         'super': parse_descriptor(self.superclass),
         'flags': self.access,
         'isInterface': isInterface,
         'interfaces': map(parse_descriptor, self.interfaces),
         'fields': fields,
         'methods': methods,
     }
Esempio n. 2
0
def get_field_ast(field):
    triple = field.get_class_name()[1:-1], field.get_name(), field.get_descriptor()

    expr = None
    if field.init_value:
        val = field.init_value.value
        expr = dummy(str(val))

        if val is not None:
            if field.get_descriptor() == 'Ljava/lang/String;':
                expr = literal_string(val)
            elif field.proto == 'B':
                expr = literal_hex_int(struct.unpack('<b', val)[0])

    return {
        'triple': triple,
        'type': parse_descriptor(field.get_descriptor()),
        'flags': util.get_access_field(field.get_access_flags()),
        'expr': expr,
    }