IDA SDK
udt_type_data_t Struct Reference

Inherits udtmembervec_t.

Public Attributes

size_t total_size = 0
 total structure size in bytes
 
size_t unpadded_size = 0
 unpadded structure size in bytes
 
uint32 effalign = 0
 effective structure alignment (in bytes)
 
uint32 taudt_bits = 0
 TA... and TAUDT... bits.
 
uchar version = VERSION
 version of udt_type_data_t
 
uchar sda = 0
 declared structure alignment (shift amount+1). 0 - unspecified
 
uchar pack = 0
 #pragma pack() alignment (shift amount)
 
bool is_union = false
 is union or struct?
 

Static Public Attributes

static constexpr int VERSION = 1
 

Public Member Functions

void swap (udt_type_data_t &r)
 
bool is_unaligned () const
 
bool is_msstruct () const
 
bool is_cppobj () const
 
bool is_vftable () const
 
bool is_fixed () const
 
void set_vftable (bool on=true)
 
void set_fixed (bool on=true)
 
bool is_last_baseclass (size_t idx)
 
udm_tadd_member (const char *_name, const tinfo_t &_type, uint64 _offset=0)
 Add a new member to a structure or union. More...
 
ssize_t find_member (udm_t *pattern_udm, int strmem_flags) const
 tinfo_t::find_udm More...
 
ssize_t find_member (const char *name) const
 
ssize_t find_member (uint64 bit_offset) const
 
ssize_t get_best_fit_member (asize_t disp) const
 Get the member that is most likely referenced by the specified offset. More...
 
ssize_t get_best_fit_member (udm_t *out, asize_t disp) const
 Get the member that is most likely referenced by the specified offset. More...
 
- Public Member Functions inherited from qvector< udm_t >
 qvector (void)
 Constructor.
 
 qvector (const qvector< udm_t > &x)
 Constructor - creates a new qvector identical to 'x'.
 
 qvector (qvector< udm_t > &&x) noexcept
 Move constructor.
 
 ~qvector (void)
 Destructor.
 
void push_back (const udm_t &x)
 Append a new element to the end the qvector.
 
void push_back (udm_t &&x)
 Append a new element to the end the qvector with a move semantics.
 
udm_tpush_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 udm_toperator[] (size_t _idx) const
 Allows use of typical c-style array indexing for qvectors.
 
udm_toperator[] (size_t _idx)
 Allows use of typical c-style array indexing for qvectors.
 
const udm_tat (size_t _idx) const
 Get element at index '_idx'.
 
udm_tat (size_t _idx)
 Get element at index '_idx'.
 
const udm_tfront (void) const
 Get the first element in the qvector.
 
udm_tfront (void)
 Get the first element in the qvector.
 
const udm_tback (void) const
 Get the last element in the qvector.
 
udm_tback (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< udm_t > & operator= (const qvector< udm_t > &x)
 Allow assignment of one qvector to another using '='.
 
qvector< udm_t > & operator= (qvector< udm_t > &&x) noexcept
 Move assignment operator.
 
void resize (size_t _newsize, const udm_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 udm_t &x=udm_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< udm_t > &r) noexcept
 Replace all attributes of this qvector with that of 'r', and vice versa. More...
 
udm_textract (void)
 Empty the qvector and return a pointer to it's contents. More...
 
void inject (udm_t *s, size_t len)
 Populate the qvector with dynamic memory. More...
 
bool operator== (const qvector< udm_t > &r) const
 Allow ability to test the equality of two qvectors using '=='.
 
bool operator!= (const qvector< udm_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.
 
const_iterator begin (void) const
 Get a const 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 end (void) const
 Get a const iterator that points to the end of the qvector (NOT the last element)
 
iterator insert (iterator it, const udm_t &x)
 Insert an element into the qvector at a specified position. More...
 
iterator insert (iterator it, udm_t &&x)
 Insert an element into the qvector with a move semantics.
 
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 udm_t &x)
 Find an element in the qvector. More...
 
const_iterator find (const udm_t &x) const
 Find an element in the qvector. More...
 
ssize_t index (const udm_t &x) const
 Find index of the specified value or return -1.
 
void add (const udm_t &x)
 Add an element to the end of the qvector.
 
void add (udm_t &&x)
 
bool has (const udm_t &x) const
 Does the qvector contain x?
 
bool add_unique (const udm_t &x)
 Add an element to the end of the qvector - only if it isn't already present. More...
 
bool del (const udm_t &x)
 Find an element and remove it. More...
 
const char * dstr (void) const
 

Additional Inherited Members

- Public Types inherited from qvector< udm_t >
typedef udm_t value_type
 the type of objects contained in this qvector
 
typedef udm_titerator
 
typedef const udm_tconst_iterator
 

Member Function Documentation

◆ add_member()

udm_t & udt_type_data_t::add_member ( const char *  _name,
const tinfo_t _type,
uint64  _offset = 0 
)
inline

Add a new member to a structure or union.

This function just pushes a new member to the back of the structure/union member vector.

Parameters
_nameMember name. Must not be nullptr.
_typeMember type. Must not be empty.
[in]_offsetMember offset in bits. It is the caller's responsibility to specify correct offsets.
Returns
{ Reference to the newly added member }

◆ find_member()

ssize_t udt_type_data_t::find_member ( udm_t pattern_udm,
int  strmem_flags 
) const
inline

tinfo_t::find_udm

Note
STRMEM_VFTABLE is not supported
Returns
the index of the found member or -1

◆ get_best_fit_member() [1/2]

ssize_t udt_type_data_t::get_best_fit_member ( asize_t  disp) const
inline

Get the member that is most likely referenced by the specified offset.

Useful for offsets > sizeof(struct).

◆ get_best_fit_member() [2/2]

ssize_t udt_type_data_t::get_best_fit_member ( udm_t out,
asize_t  disp 
) const
inline

Get the member that is most likely referenced by the specified offset.

Useful for offsets > sizeof(struct).

Parameters
[out]outudm_t storage. Must not be nullptr
dispthe byte offset

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