| IDA SDK

Public Attributes | Static Public Attributes | Public Member Functions | List of all members
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_t & | add_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_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 udm_t & | operator[] (size_t _idx) const
| Allows use of typical c-style array indexing for qvectors.
udm_t & | operator[] (size_t _idx)
| Allows use of typical c-style array indexing for qvectors.
const udm_t & | at (size_t _idx) const
| Get element at index '_idx'.
udm_t & | at (size_t _idx)
| Get element at index '_idx'.
const udm_t & | front (void) const
| Get the first element in the qvector.
udm_t & | front (void)
| Get the first element in the qvector.
const udm_t & | back (void) const
| Get the last element in the qvector.
udm_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< 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_t * | extract (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_t * | iterator
typedef const udm_t * | const_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

  | _name | Member name. Must not be nullptr.
  | _type | Member type. Must not be empty.
  [in] | _offset | Member 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] | out | udm_t storage. Must not be nullptr
  | disp | the byte offset

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

- typeinf.hpp