| IDA SDK

Public Attributes | Public Member Functions | List of all members
enum_type_data_t Struct Reference

## Detailed Description

Enum type information (see tinfo_t::get_enum_details())

Inherits qvector< T >.

## Public Attributes
intvec_t | group_sizes
| if present, specifies bitmask group sizes each non-trivial group starts with a mask member
uint32 | taenum_bits = 0
| Type attributes for enums
bte_t | bte
| enum member sizes (shift amount) and style. More...

## Public Member Functions
| enum_type_data_t (bte_t _bte=BTE_ALWAYS|BTE_HEX)
int | get_enum_radix () const
| Get enum constant radix. More...
bool | is_number_signed () const
void | set_enum_radix (int radix, bool sign)
| Set radix to display constants. More...
bool | is_char () const
bool | is_dec () const
bool | is_hex () const
bool | is_oct () const
bool | is_bin () const
bool | is_udec () const
bool | is_shex () const
bool | is_soct () const
bool | is_sbin () const
bool | has_lzero () const
void | set_lzero (bool on)
uint64 | calc_mask () const
bool | store_64bit_values () const
bool | is_bf () const
| is bitmask or ordinary enum?
int | calc_nbytes () const
| get the width of enum in bytes
bool | set_nbytes (int nbytes)
| set enum width (nbytes)
bool | get_constant_group (size_t *group_start_index, size_t *group_size, size_t idx) const
| get group parameters for the constant, valid for bitmask enum More...
bool | is_group_mask_at (size_t idx) const
| is the enum member at IDX a non-trivial group mask? a trivial group consist of one bit and has just one member, which can be considered as a mask or a bitfield constant More...
bool | is_valid_group_sizes () const
| is valid group sizes
ssize_t | find_member (const char *name, size_t from=0, size_t to=size_t(-1)) const
| find member (constant or bmask) by name
ssize_t | find_member (uint64 value, uchar serial, size_t from=0, size_t to=size_t(-1), uint64 vmask=uint64(-1)) const
| find member (constant or bmask) by value
void | swap (enum_type_data_t &r)
| swap two instances
void | add_constant (const char *name, uint64 value, const char *cmt=nullptr)
| add constant for regular enum
tinfo_code_t | get_value_repr (value_repr_t *repr) const
| get enum radix and other representation info More...
tinfo_code_t | set_value_repr (const value_repr_t &repr)
| set enum radix and other representation info More...
uchar | get_serial (size_t index) const
| returns serial for the constant
uchar | get_max_serial (uint64 value) const
| return the maximum serial for the value
int | for_all_constants (std::function< int(size_t idx, size_t grp_start, int grp_size)> v) const
| visit all enum constants not bmasks
int | for_all_groups (std::function< int(size_t grp_start, int grp_size)> v, bool skip_trivial=false) const
| visit all enum groups, for bitmask enum only
Public Member Functions inherited from qvector< T >
| qvector (void)
| Constructor.
| qvector (const qvector< T > &x)
| Constructor - creates a new qvector identical to 'x'.
| qvector (qvector< T > &&x) noexcept
| Move constructor.
| ~qvector (void)
| Destructor.
void | push_back (const T &x)
| Append a new element to the end the qvector.
void | push_back (T &&x)
| Append a new element to the end the qvector with a move semantics.
T & | push_back (void)
| Append a new empty element to the end of the qvector. More...
void | pop_back (void)
| Remove the last element in the qvector.
size_t | size (void) const
| Get the number of elements in the qvector.
bool | empty (void) const
| Does the qvector have 0 elements?
const T & | operator[] (size_t _idx) const
| Allows use of typical c-style array indexing for qvectors.
T & | operator[] (size_t _idx)
| Allows use of typical c-style array indexing for qvectors.
const T & | at (size_t _idx) const
| Get element at index '_idx'.
T & | at (size_t _idx)
| Get element at index '_idx'.
const T & | front (void) const
| Get the first element in the qvector.
T & | front (void)
| Get the first element in the qvector.
const T & | back (void) const
| Get the last element in the qvector.
T & | back (void)
| Get the last element in the qvector.
void | qclear (void)
| Destroy all elements but do not free memory.
void | clear (void)
| Destroy all elements and free memory.
qvector< T > & | operator= (const qvector< T > &x)
| Allow assignment of one qvector to another using '='.
qvector< T > & | operator= (qvector< T > &&x) noexcept
| Move assignment operator.
void | resize (size_t _newsize, const T &x)
| Resize to the given size. More...
void | resize (size_t _newsize)
| Same as resize(size_t, const T &), but extra space is filled with empty elements.
void | resize_noinit (size_t _newsize)
void | grow (const T &x=T())
| Add an element to the end of the qvector, which will be a new T() if x is not given.
size_t | capacity (void) const
| Get the number of elements that this qvector can contain - not the same as the number of elements currently in the qvector (size())
void | reserve (size_t cnt)
| Increase the capacity of the qvector. More...
void | truncate (void)
| Shrink the capacity down to the current number of elements.
void | swap (qvector< T > &r) noexcept
| Replace all attributes of this qvector with that of 'r', and vice versa. More...
T * | extract (void)
| Empty the qvector and return a pointer to it's contents. More...
void | inject (T *s, size_t len)
| Populate the qvector with dynamic memory. More...
bool | operator== (const qvector< T > &r) const
| Allow ability to test the equality of two qvectors using '=='.
bool | operator!= (const qvector< T > &r) const
| Allow ability to test equality of two qvectors using '!='.
iterator | begin (void)
| Get an iterator that points to the first element in the qvector.
iterator | end (void)
| Get an iterator that points to the end of the qvector (NOT the last element)
const_iterator | begin (void) const
| Get a const iterator that points to the first element in the qvector.
const_iterator | end (void) const
| Get a const iterator that points to the end of the qvector (NOT the last element)
iterator | insert (iterator it, const T &x)
| Insert an element into the qvector at a specified position. More...
iterator | insert (iterator it, T &&x)
| Insert an element into the qvector with a move semantics.
template<class it2 >
iterator | insert (iterator it, it2 first, it2 last)
| Insert a several elements to the qvector at a specified position. More...
iterator | erase (iterator it)
| Remove an element from the qvector. More...
iterator | erase (iterator first, iterator last)
| Remove a subset of the qvector. More...
iterator | find (const T &x)
| Find an element in the qvector. More...
const_iterator | find (const T &x) const
| Find an element in the qvector. More...
ssize_t | index (const T &x) const
| Find index of the specified value or return -1.
void | add (const T &x)
| Add an element to the end of the qvector.
void | add (T &&x)
bool | has (const T &x) const
| Does the qvector contain x?
bool | add_unique (const T &x)
| Add an element to the end of the qvector - only if it isn't already present. More...
bool | del (const T &x)
| Find an element and remove it. More...
const char * | dstr (void) const

## Additional Inherited Members
Public Types inherited from qvector< T >
typedef T | value_type
| the type of objects contained in this qvector
typedef T * | iterator
typedef const T * | const_iterator

## Member Function Documentation

## ◆ get_enum_radix()

int enum_type_data_t::get_enum_radix | ( |  | ) | const
| inline

Get enum constant radix.

Returns
  radix or 1 for BTE_CHAR

## ◆ set_enum_radix()

void enum_type_data_t::set_enum_radix | ( | int | radix,
|  | bool | sign
| ) |  |
| inline

Set radix to display constants.

Parameters

  radix | radix with the special case 1 to display as character
  sign |

## ◆ get_constant_group()

bool enum_type_data_t::get_constant_group | ( | size_t * | group_start_index,
|  | size_t * | group_size,
|  | size_t | idx
| ) |  | const
| inline

get group parameters for the constant, valid for bitmask enum

Parameters

  [out] | group_start_index | index of the group mask
  [out] | group_size | group size (>=1)
  | idx | constant index

Returns
  success

## ◆ is_group_mask_at()

bool enum_type_data_t::is_group_mask_at | ( | size_t | idx | ) | const
| inline

is the enum member at IDX a non-trivial group mask? a trivial group consist of one bit and has just one member, which can be considered as a mask or a bitfield constant

Parameters

  idx | index

Returns
  success

## ◆ get_value_repr()

tinfo_code_t enum_type_data_t::get_value_repr | ( | value_repr_t * | repr | ) | const
| inline

get enum radix and other representation info

Parameters

  repr | value display info

## ◆ set_value_repr()

tinfo_code_t enum_type_data_t::set_value_repr | ( | const value_repr_t & | repr | ) |
| inline

set enum radix and other representation info

Parameters

  repr | value display info

## Member Data Documentation

## ◆ bte

bte_t enum_type_data_t::bte

enum member sizes (shift amount) and style.

do not manually set BTE_BITMASK, use set_enum_is_bitmask()

The documentation for this struct was generated from the following file:

- typeinf.hpp