def __init__(self, struc): self.mems = [] self.src = struc self.tid = struc.id self.name = idaapi.get_struc_name(self.tid) self.deps = set([]) for i in range(struc.memqty): m = struc.get_member(i) self.mems.append(member.create_member_node(m, struc)) d = util.member_str_id(m, struc) if d != None: self.deps = self.deps | set([d])
def __init__(self, member, parent): ##These objects below can apparently be mutated by ua stuff. #self.src = member #self.src_parent = parent self.name = idaapi.get_member_name(member.id) self.flags = member.flag self.val = value.get_node_for_member(member, parent) self.eoff = member.eoff self.soff = member.soff self.decl = data.get_decl_for_member(member, parent) self.unit_size = data.get_member_unit_size(member, parent) self.struc_id = None if idaapi.isStruct(self.flags): self.struc_id = util.member_str_id(member, parent)
def get_decl_for_member(mem, struc): if idaapi.isStruct(mem.flag): return idaapi.get_struc_name(util.member_str_id(mem, struc)) else: return get_decl_for_prim(mem.flag)
def get_member_unit_size(mem, struc): if idaapi.isStruct(mem.flag): return idaapi.get_struc_size(util.member_str_id(mem, struc)) else: return get_prim_unit_size(mem.flag)
def get_node_for_member(mem, parent): if idaapi.isStruct(mem.flag): return unset_structure_node(idaapi.get_struc(util.member_str_id(mem, parent))) else: return unset_primitive_node()