Module index

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_t
Add 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) -> bool
Delete 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) -> int
Visit 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) -> str
id: enum_t
bmask: bmask_t
repeatable: bool
def get_bmask_name(*args) ‑> qstring *
get_bmask_name(id, bmask) -> str
id: enum_t
bmask: bmask_t
def get_enum(*args) ‑> enum_t
get_enum(name) -> enum_t
Get enum by name.
name: (C++: const char *) char const *
def get_enum_cmt(*args) ‑> qstring *
get_enum_cmt(id, repeatable) -> str
Get enum comment.
id: (C++: enum_t)
repeatable: (C++: bool)
def get_enum_flag(*args) ‑> flags64_t
get_enum_flag(id) -> flags64_t
Get 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_t
Get 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_t
Find an enum member by enum, value and bitmask
note: if serial -1, return a member with any serial
id: (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_t
Get 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_t
Get 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) -> str
Get 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_t
Get the parent enum of an enum member.
id: (C++: const_t)
def get_enum_member_name(*args) ‑> qstring *
get_enum_member_name(id) -> str
Get name of an enum member by const_t.
id: (C++: const_t)
def get_enum_member_serial(*args) ‑> uchar
get_enum_member_serial(cid) -> uchar
Get serial number of an enum member.
cid: (C++: const_t)
def get_enum_member_value(*args) ‑> uval_t
get_enum_member_value(id) -> uval_t
Get value of an enum member.
id: (C++: const_t)
def get_enum_name(*args) ‑> qstring *
get_enum_name(id) -> str
id: enum_t
def get_enum_name2(*args) ‑> qstring *
get_enum_name2(id, flags=0) -> str
Get name of enum
id: (C++: enum_t) enum id
flags: (C++: int) Enum name flags
def get_enum_qty(*args) ‑> size_t
get_enum_qty() -> size_t
Get number of declared enum_t types.
def get_enum_size(*args) ‑> size_t
get_enum_size(id) -> size_t
Get the number of the members of the enum.
id: (C++: enum_t)
def get_enum_type_ordinal(*args) ‑> int32
get_enum_type_ordinal(id) -> int32
Get corresponding type ordinal number.
id: (C++: enum_t)
def get_enum_width(*args) ‑> size_t
get_enum_width(id) -> size_t
Get the width of a enum element allowed values: 0 (unspecified),1,2,4,8,16,32,64
id: (C++: enum_t)
def get_first_bmask(*args) ‑> bmask_t
get_first_bmask(enum_id) -> bmask_t
Get 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_t
id: enum_t
bmask: bmask_t
def get_first_serial_enum_member(*args) ‑> uchar *
get_first_serial_enum_member(id, value, bmask) -> const_t
id: enum_t
value: uval_t
bmask: bmask_t
def get_last_bmask(*args) ‑> bmask_t
get_last_bmask(enum_id) -> bmask_t
Get last bitmask in the enum (bitfield)
enum_id: (C++: enum_t) id of enum
return: 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_t
id: enum_t
bmask: bmask_t
def get_last_serial_enum_member(*args) ‑> uchar *
get_last_serial_enum_member(id, value, bmask) -> const_t
id: enum_t
value: uval_t
bmask: bmask_t
def get_next_bmask(*args) ‑> bmask_t
get_next_bmask(enum_id, bmask) -> bmask_t
Get next bitmask in the enum (bitfield)
enum_id: (C++: enum_t) id of enum
bmask: (C++: bmask_t) the current bitmask
return: value of a bitmask with value higher than the specified value, or
DEFMASK
def get_next_enum_member(*args) ‑> uval_t
get_next_enum_member(id, value, bmask=(bmask_t(-1))) -> uval_t
id: enum_t
value: uval_t
bmask: bmask_t
def get_next_serial_enum_member(*args) ‑> uchar *
get_next_serial_enum_member(in_out_serial, first_cid) -> const_t
in_out_serial: uchar *
first_cid: const_t
def get_prev_bmask(*args) ‑> bmask_t
get_prev_bmask(enum_id, bmask) -> bmask_t
Get prev bitmask in the enum (bitfield)
enum_id: (C++: enum_t) id of enum
bmask: (C++: bmask_t) the current bitmask
return: value of a bitmask with value lower than the specified value, or
DEFMASK
def get_prev_enum_member(*args) ‑> uval_t
get_prev_enum_member(id, value, bmask=(bmask_t(-1))) -> uval_t
id: enum_t
value: uval_t
bmask: bmask_t
def get_prev_serial_enum_member(*args) ‑> uchar *
get_prev_serial_enum_member(in_out_serial, first_cid) -> const_t
in_out_serial: uchar *
first_cid: const_t
def getn_enum(*args) ‑> enum_t
getn_enum(idx) -> enum_t
Get 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) -> bool
Is 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) -> bool
Does enum come from type library?
id: (C++: enum_t)
def is_enum_hidden(*args) ‑> bool
is_enum_hidden(id) -> bool
Is enum collapsed?
id: (C++: enum_t)
def is_ghost_enum(*args) ‑> bool
is_ghost_enum(id) -> bool
Is a ghost copy of a local type?
id: (C++: enum_t)
def is_one_bit_mask(*args) ‑> bool
is_one_bit_mask(mask) -> bool
Is bitmask one bit?
mask: (C++: bmask_t)
def set_bmask_cmt(*args) ‑> bool
set_bmask_cmt(id, bmask, cmt, repeatable) -> bool
id: enum_t
bmask: bmask_t
cmt: char const *
repeatable: bool
def set_bmask_name(*args) ‑> bool
set_bmask_name(id, bmask, name) -> bool
id: enum_t
bmask: bmask_t
name: char const *
def set_enum_bf(*args) ‑> bool
set_enum_bf(id, bf) -> bool
Set '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) -> bool
Set 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) -> bool
Set data representation flags.
id: (C++: enum_t)
flag: (C++: flags64_t)
def set_enum_fromtil(*args) ‑> bool
set_enum_fromtil(id, fromtil) -> bool
Specify 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) -> bool
Specify that enum is a ghost copy of a local type.
id: (C++: enum_t)
ghost: (C++: bool)
def set_enum_hidden(*args) ‑> bool
set_enum_hidden(id, hidden) -> bool
Collapse enum.
id: (C++: enum_t)
hidden: (C++: bool)
def set_enum_idx(*args) ‑> bool
set_enum_idx(id, idx) -> bool
Set 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) -> bool
Set 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) -> bool
Set 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) -> bool
Set 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) -> bool
See 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_t
self: PyObject *

Methods

def visit_enum_member(self, *args) ‑> int
visit_enum_member(self, cid, value) -> int
Implements action to take when enum member is visited.
cid: (C++: const_t)
value: (C++: uval_t)
return: nonzero to stop the iteration