def __call__(self): struc = ida_struct.get_struc_id(self.sname) sptr = ida_struct.get_struc(struc) cmt = self.cmt if self.cmt else "" if self.smname: mptr = ida_struct.get_member_by_name(sptr, self.smname) ida_struct.set_member_cmt(mptr, cmt, self.repeatable_cmt) else: ida_struct.set_struc_cmt(sptr.id, cmt, self.repeatable_cmt)
def __call__(self): struc = ida_struct.get_struc_id(Event.encode(self.sname)) sptr = ida_struct.get_struc(struc) cmt = Event.encode(self.cmt if self.cmt else '') if self.smname: mptr = ida_struct.get_member_by_name(sptr, Event.encode(self.smname)) ida_struct.set_member_cmt(mptr, cmt, self.repeatable_cmt) else: ida_struct.set_struc_cmt(sptr.id, cmt, self.repeatable_cmt)
def apply(cls, data): struct_id = ida_struct.add_struc(idaapi.BADADDR, data['name'], data['union']) if 'comment' in data and data['comment']: ida_struct.set_struc_cmt(struct_id, data['comment'], False) if 'repeatable_comment' in data and data['comment']: ida_struct.set_struc_cmt(struct_id, data['repeatable_comment'], True) if 'members' in data and data['members']: struct = ida_struct.get_struc(struct_id) for member_idx, member_data in data['members']: cls.apply_member(struct, member_data)