Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
enum_type_data_t Struct Reference

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

#include <typeinf.hpp>

Inherits qvector< T >.

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 etimask 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 set_value_repr (const value_repr_t &repr)
 set enum radix and other representation info More...
 
- 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
 

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...
 

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
 

Detailed Description

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

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
radixradix 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 etimask enum

Parameters
[out]group_start_indexindex of the group mask
[out]group_sizegroup size (>=1)
idxconstant 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
idxindex
Returns
success

◆ 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
reprvalue 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: