Module ida_enum
Assembly level enum management.
Enums and bitfields are represented as enum_t.
Global variables
var DEFMASK
-
default bitmask
var ENFL_REGEX
-
apply regular expressions to beautify the name
var ENUM_MEMBER_ERROR_ENUM
-
bad enum id
var ENUM_MEMBER_ERROR_ILLV
-
bad bmask and value combination (~bmask & value != 0)
var ENUM_MEMBER_ERROR_MASK
-
bad bmask
var ENUM_MEMBER_ERROR_NAME
-
already have member with this name (bad name)
var ENUM_MEMBER_ERROR_VALUE
-
already have 256 members with this value
var MAX_ENUM_SERIAL
-
Max number of identical constants allowed for one enum type.
Functions
def add_enum(*args) ‑> enum_t
-
add_enum(idx, name, flag) -> enum_tAdd new enum type.
- if idx==BADADDR then add as the last idx
- if name==nullptr then generate a unique name "enum_%d"
idx: (C++: size_t)name: (C++: const char *) char const *flag: (C++: flags64_t) def add_enum_member(*args) ‑> int
-
add_enum_member(id, name, value, bmask=(bmask_t(-1))) -> int Add member to enum type.id: (C++: enum_t)name: (C++: const char *) char const *value: (C++: uval_t)bmask: (C++: bmask_t)return: 0 if ok, otherwise one of Add enum member result codes
def del_enum(*args) ‑> void
-
del_enum(id)Delete an enum type.id: (C++: enum_t)
def del_enum_member(*args) ‑> bool
-
del_enum_member(id, value, serial, bmask) -> boolDelete member of enum type.id: (C++: enum_t)value: (C++: uval_t)serial: (C++: uchar)bmask: (C++: bmask_t)
def for_all_enum_members(*args) ‑> int
-
for_all_enum_members(id, cv) -> intVisit all members of a given enum.id: (C++: enum_t)cv: (C++: enum_member_visitor_t &)
def get_bmask_cmt(*args) ‑> qstring *
-
get_bmask_cmt(id, bmask, repeatable) -> strid: enum_tbmask: bmask_trepeatable: bool
def get_bmask_name(*args) ‑> qstring *
-
get_bmask_name(id, bmask) -> strid: enum_tbmask: bmask_t
def get_enum(*args) ‑> enum_t
-
get_enum(name) -> enum_tGet enum by name.name: (C++: const char *) char const *
def get_enum_cmt(*args) ‑> qstring *
-
get_enum_cmt(id, repeatable) -> strGet enum comment.id: (C++: enum_t)repeatable: (C++: bool)
def get_enum_flag(*args) ‑> flags64_t
-
get_enum_flag(id) -> flags64_tGet flags determining the representation of the enum. (currently they define the numeric base: octal, decimal, hex, bin) and signness.id: (C++: enum_t)
def get_enum_idx(*args) ‑> uval_t
-
get_enum_idx(id) -> uval_tGet the index in the list of enums.id: (C++: enum_t)
def get_enum_member(*args) ‑> const_t
-
get_enum_member(id, value, serial, mask) -> const_tFind an enum member by enum, value and bitmasknote: if serial -1, return a member with any serialid: (C++: enum_t)value: (C++: uval_t)serial: (C++: int)mask: (C++: bmask_t)
def get_enum_member_bmask(*args) ‑> bmask_t
-
get_enum_member_bmask(id) -> bmask_tGet bitmask of an enum member.id: (C++: const_t)
def get_enum_member_by_name(*args) ‑> const_t
-
get_enum_member_by_name(name) -> const_tGet a reference to an enum member by its name.name: (C++: const char *) char const *
def get_enum_member_cmt(*args) ‑> qstring *
-
get_enum_member_cmt(id, repeatable) -> strGet enum member's comment.id: (C++: const_t)repeatable: (C++: bool)
def get_enum_member_enum(*args) ‑> enum_t
-
get_enum_member_enum(id) -> enum_tGet the parent enum of an enum member.id: (C++: const_t)
def get_enum_member_name(*args) ‑> qstring *
-
get_enum_member_name(id) -> strGet name of an enum member by const_t.id: (C++: const_t)
def get_enum_member_serial(*args) ‑> uchar
-
get_enum_member_serial(cid) -> ucharGet serial number of an enum member.cid: (C++: const_t)
def get_enum_member_value(*args) ‑> uval_t
-
get_enum_member_value(id) -> uval_tGet value of an enum member.id: (C++: const_t)
def get_enum_name(*args) ‑> qstring *
-
get_enum_name(id) -> strid: enum_t
def get_enum_name2(*args) ‑> qstring *
-
get_enum_name2(id, flags=0) -> strGet name of enumid: (C++: enum_t) enum idflags: (C++: int) Enum name flags
def get_enum_qty(*args) ‑> size_t
-
get_enum_qty() -> size_tGet number of declared enum_t types.
def get_enum_size(*args) ‑> size_t
-
get_enum_size(id) -> size_tGet the number of the members of the enum.id: (C++: enum_t)
def get_enum_type_ordinal(*args) ‑> int32
-
get_enum_type_ordinal(id) -> int32Get corresponding type ordinal number.id: (C++: enum_t)
def get_enum_width(*args) ‑> size_t
-
get_enum_width(id) -> size_tGet the width of a enum element allowed values: 0 (unspecified),1,2,4,8,16,32,64id: (C++: enum_t)
def get_first_bmask(*args) ‑> bmask_t
-
get_first_bmask(enum_id) -> bmask_tGet first bitmask in the enum (bitfield)enum_id: (C++: enum_t) id of enum (bitfield)return: the smallest bitmask for enum, or DEFMASK
def get_first_enum_member(*args) ‑> uval_t
-
get_first_enum_member(id, bmask=(bmask_t(-1))) -> uval_tid: enum_tbmask: bmask_t
def get_first_serial_enum_member(*args) ‑> uchar *
-
get_first_serial_enum_member(id, value, bmask) -> const_tid: enum_tvalue: uval_tbmask: bmask_t
def get_last_bmask(*args) ‑> bmask_t
-
get_last_bmask(enum_id) -> bmask_tGet last bitmask in the enum (bitfield)enum_id: (C++: enum_t) id of enumreturn: the biggest bitmask for enum, or DEFMASK
def get_last_enum_member(*args) ‑> uval_t
-
get_last_enum_member(id, bmask=(bmask_t(-1))) -> uval_tid: enum_tbmask: bmask_t
def get_last_serial_enum_member(*args) ‑> uchar *
-
get_last_serial_enum_member(id, value, bmask) -> const_tid: enum_tvalue: uval_tbmask: bmask_t
def get_next_bmask(*args) ‑> bmask_t
-
get_next_bmask(enum_id, bmask) -> bmask_tGet next bitmask in the enum (bitfield)enum_id: (C++: enum_t) id of enumbmask: (C++: bmask_t) the current bitmaskreturn: value of a bitmask with value higher than the specified value, orDEFMASK
def get_next_enum_member(*args) ‑> uval_t
-
get_next_enum_member(id, value, bmask=(bmask_t(-1))) -> uval_tid: enum_tvalue: uval_tbmask: bmask_t
def get_next_serial_enum_member(*args) ‑> uchar *
-
get_next_serial_enum_member(in_out_serial, first_cid) -> const_tin_out_serial: uchar *first_cid: const_t
def get_prev_bmask(*args) ‑> bmask_t
-
get_prev_bmask(enum_id, bmask) -> bmask_tGet prev bitmask in the enum (bitfield)enum_id: (C++: enum_t) id of enumbmask: (C++: bmask_t) the current bitmaskreturn: value of a bitmask with value lower than the specified value, orDEFMASK
def get_prev_enum_member(*args) ‑> uval_t
-
get_prev_enum_member(id, value, bmask=(bmask_t(-1))) -> uval_tid: enum_tvalue: uval_tbmask: bmask_t
def get_prev_serial_enum_member(*args) ‑> uchar *
-
get_prev_serial_enum_member(in_out_serial, first_cid) -> const_tin_out_serial: uchar *first_cid: const_t
def getn_enum(*args) ‑> enum_t
-
getn_enum(idx) -> enum_tGet enum by its index in the list of enums (0..get_enum_qty()-1).idx: (C++: size_t)
def is_bf(*args) ‑> bool
-
is_bf(id) -> boolIs enum a bitfield? (otherwise - plain enum, no bitmasks except for DEFMASK are allowed)id: (C++: enum_t)
def is_enum_fromtil(*args) ‑> bool
-
is_enum_fromtil(id) -> boolDoes enum come from type library?id: (C++: enum_t)
-
is_enum_hidden(id) -> boolIs enum collapsed?id: (C++: enum_t)
def is_ghost_enum(*args) ‑> bool
-
is_ghost_enum(id) -> boolIs a ghost copy of a local type?id: (C++: enum_t)
def is_one_bit_mask(*args) ‑> bool
-
is_one_bit_mask(mask) -> boolIs bitmask one bit?mask: (C++: bmask_t)
def set_bmask_cmt(*args) ‑> bool
-
set_bmask_cmt(id, bmask, cmt, repeatable) -> boolid: enum_tbmask: bmask_tcmt: char const *repeatable: bool
def set_bmask_name(*args) ‑> bool
-
set_bmask_name(id, bmask, name) -> boolid: enum_tbmask: bmask_tname: char const *
def set_enum_bf(*args) ‑> bool
-
set_enum_bf(id, bf) -> boolSet 'bitfield' bit of enum (i.e. convert it to a bitfield)id: (C++: enum_t)bf: (C++: bool)
def set_enum_cmt(*args) ‑> bool
-
set_enum_cmt(id, cmt, repeatable) -> boolSet comment for enum type.id: (C++: enum_t)cmt: (C++: const char *) char const *repeatable: (C++: bool)
def set_enum_flag(*args) ‑> bool
-
set_enum_flag(id, flag) -> boolSet data representation flags.id: (C++: enum_t)flag: (C++: flags64_t)
def set_enum_fromtil(*args) ‑> bool
-
set_enum_fromtil(id, fromtil) -> boolSpecify that enum comes from a type library.id: (C++: enum_t)fromtil: (C++: bool)
def set_enum_ghost(*args) ‑> bool
-
set_enum_ghost(id, ghost) -> boolSpecify that enum is a ghost copy of a local type.id: (C++: enum_t)ghost: (C++: bool)
-
set_enum_hidden(id, hidden) -> boolCollapse enum.id: (C++: enum_t)hidden: (C++: bool)
def set_enum_idx(*args) ‑> bool
-
set_enum_idx(id, idx) -> boolSet serial number of enum. Also see get_enum_idx().id: (C++: enum_t)idx: (C++: size_t)
def set_enum_member_cmt(*args) ‑> bool
-
set_enum_member_cmt(id, cmt, repeatable) -> boolSet comment for enum member.id: (C++: const_t)cmt: (C++: const char *) char const *repeatable: (C++: bool)
def set_enum_member_name(*args) ‑> bool
-
set_enum_member_name(id, name) -> boolSet name of enum member.id: (C++: const_t)name: (C++: const char *) char const *
def set_enum_name(*args) ‑> bool
-
set_enum_name(id, name) -> boolSet name of enum type.id: (C++: enum_t)name: (C++: const char *) char const *
def set_enum_type_ordinal(*args) ‑> void
-
set_enum_type_ordinal(id, ord)Set corresponding type ordinal number.id: (C++: enum_t)ord: (C++: int32)
def set_enum_width(*args) ‑> bool
-
set_enum_width(id, width) -> boolSee comment for get_enum_width()id: (C++: enum_t)width: (C++: int)
Classes
class enum_member_visitor_t (*args)
-
Proxy of C++ enum_member_visitor_t class.__init__(self) -> enum_member_visitor_tself: PyObject *
Methods
def visit_enum_member(self, *args) ‑> int
-
visit_enum_member(self, cid, value) -> intImplements action to take when enum member is visited.cid: (C++: const_t)value: (C++: uval_t)return: nonzero to stop the iteration