Primary mechanism for managing type information. More...
#include <typeinf.hpp>
Public Member Functions | |
tinfo_t () | |
Constructor. | |
tinfo_t (type_t decl_type) | |
Constructor - can only be used to initialize simple types! | |
tinfo_t (const tinfo_t &r) | |
Constructor. | |
tinfo_t & | operator= (const tinfo_t &r) |
Copy contents of given tinfo into this one. | |
~tinfo_t (void) | |
Destructor. | |
void | clear (void) |
Clear contents of this tinfo, and remove from the type system. | |
void | swap (tinfo_t &r) |
Assign this = r and r = this. | |
bool | get_named_type (const til_t *til, const char *name, type_t decl_type=BTF_TYPEDEF, bool resolve=true, bool try_ordinal=true) |
Create a tinfo_t object for an existing named type. More... | |
bool | get_numbered_type (const til_t *til, uint32 ordinal, type_t decl_type=BTF_TYPEDEF, bool resolve=true) |
Create a tinfo_t object for an existing ordinal type. More... | |
bool | serialize (qtype *type, qtype *fields=nullptr, qtype *fldcmts=nullptr, int sudt_flags=SUDT_FAST|SUDT_TRUNC) const |
Serialize tinfo_t object into a type string. | |
bool | deserialize (const til_t *til, const type_t **ptype, const p_list **pfields=nullptr, const p_list **pfldcmts=nullptr) |
Deserialize a type string into a tinfo_t object. | |
bool | deserialize (const til_t *til, const qtype *ptype, const qtype *pfields=nullptr, const qtype *pfldcmts=nullptr) |
Deserialize a type string into a tinfo_t object. More... | |
bool | is_correct (void) const |
Is the type object correct?. More... | |
type_t | get_realtype (bool full=false) const |
Get the resolved base type. More... | |
THREAD_SAFE type_t | get_decltype (void) const |
Get declared type (without resolving type references; they are returned as is). More... | |
THREAD_SAFE bool | empty (void) const |
Was tinfo_t initialized with some type info or not? | |
bool | present (void) const |
Is the type really present? (not a reference to a missing type, for example) | |
size_t | get_size (uint32 *p_effalign=nullptr, int gts_code=0) const |
Get the type size in bytes. More... | |
size_t | get_unpadded_size (void) const |
Get the type size in bytes without the final padding, in bytes. More... | |
type_sign_t | get_sign (void) const |
Get type sign. | |
bool | is_signed (void) const |
Is this a signed type? | |
bool | is_unsigned (void) const |
Is this an unsigned type? | |
uchar | get_declalign (void) const |
Get declared alignment of the type. | |
bool | set_declalign (uchar declalign) |
Set declared alignment of the type. | |
THREAD_SAFE bool | is_typeref (void) const |
Is this type a type reference?. More... | |
THREAD_SAFE bool | has_details (void) const |
Does this type refer to a nontrivial type? | |
bool | get_type_name (qstring *out) const |
Does a type refer to a name?. More... | |
bool | get_final_type_name (qstring *out) const |
Use in the case of typedef chain (TYPE1 -> TYPE2 -> TYPE3...TYPEn). More... | |
bool | get_next_type_name (qstring *out) const |
Use In the case of typedef chain (TYPE1 -> TYPE2 -> TYPE3...TYPEn). More... | |
uint32 | get_ordinal (void) const |
Get type ordinal (only if the type was created as a numbered type, 0 if none) | |
uint32 | get_final_ordinal (void) const |
Get final type ordinal (0 is none) | |
const til_t * | get_til (void) const |
Get the type library for tinfo_t. | |
bool | is_from_subtil (void) const |
Was the named type found in some base type library (not the top level type library)?. More... | |
bool | is_forward_decl (void) const |
Is this a forward declaration?. More... | |
THREAD_SAFE bool | is_decl_const (void) const |
is_type_const(get_decltype()) | |
THREAD_SAFE bool | is_decl_volatile (void) const |
is_type_volatile(get_decltype()) | |
THREAD_SAFE bool | is_decl_void (void) const |
is_type_void(get_decltype()) | |
THREAD_SAFE bool | is_decl_partial (void) const |
is_type_partial(get_decltype()) | |
THREAD_SAFE bool | is_decl_unknown (void) const |
is_type_unknown(get_decltype()) | |
THREAD_SAFE bool | is_decl_last (void) const |
is_typeid_last(get_decltype()) | |
THREAD_SAFE bool | is_decl_ptr (void) const |
is_type_ptr(get_decltype()) | |
THREAD_SAFE bool | is_decl_array (void) const |
is_type_array(get_decltype()) | |
THREAD_SAFE bool | is_decl_func (void) const |
is_type_func(get_decltype()) | |
THREAD_SAFE bool | is_decl_complex (void) const |
is_type_complex(get_decltype()) | |
THREAD_SAFE bool | is_decl_typedef (void) const |
is_type_typedef(get_decltype()) | |
THREAD_SAFE bool | is_decl_sue (void) const |
is_type_sue(get_decltype()) | |
THREAD_SAFE bool | is_decl_struct (void) const |
is_type_struct(get_decltype()) | |
THREAD_SAFE bool | is_decl_union (void) const |
is_type_union(get_decltype()) | |
THREAD_SAFE bool | is_decl_udt (void) const |
is_type_struni(get_decltype()) | |
THREAD_SAFE bool | is_decl_enum (void) const |
is_type_enum(get_decltype()) | |
THREAD_SAFE bool | is_decl_bitfield (void) const |
is_type_bitfld(get_decltype()) | |
THREAD_SAFE bool | is_decl_int128 (void) const |
is_type_int128(get_decltype()) | |
THREAD_SAFE bool | is_decl_int64 (void) const |
is_type_int64(get_decltype()) | |
THREAD_SAFE bool | is_decl_int32 (void) const |
is_type_int32(get_decltype()) | |
THREAD_SAFE bool | is_decl_int16 (void) const |
is_type_int16(get_decltype()) | |
THREAD_SAFE bool | is_decl_int (void) const |
is_type_int(get_decltype()) | |
THREAD_SAFE bool | is_decl_char (void) const |
is_type_char(get_decltype()) | |
THREAD_SAFE bool | is_decl_uint (void) const |
is_type_uint(get_decltype()) | |
THREAD_SAFE bool | is_decl_uchar (void) const |
is_type_uchar(get_decltype()) | |
THREAD_SAFE bool | is_decl_uint16 (void) const |
is_type_uint16(get_decltype()) | |
THREAD_SAFE bool | is_decl_uint32 (void) const |
is_type_uint32(get_decltype()) | |
THREAD_SAFE bool | is_decl_uint64 (void) const |
is_type_uint64(get_decltype()) | |
THREAD_SAFE bool | is_decl_uint128 (void) const |
is_type_uint128(get_decltype()) | |
THREAD_SAFE bool | is_decl_ldouble (void) const |
is_type_ldouble(get_decltype()) | |
THREAD_SAFE bool | is_decl_double (void) const |
is_type_double(get_decltype()) | |
THREAD_SAFE bool | is_decl_float (void) const |
is_type_float(get_decltype()) | |
THREAD_SAFE bool | is_decl_tbyte (void) const |
is_type_tbyte(get_decltype()) | |
THREAD_SAFE bool | is_decl_floating (void) const |
is_type_floating(get_decltype()) | |
THREAD_SAFE bool | is_decl_bool (void) const |
is_type_bool(get_decltype()) | |
THREAD_SAFE bool | is_decl_paf (void) const |
is_type_paf(get_decltype()) | |
THREAD_SAFE bool | is_well_defined (void) const |
!(empty()) && !(is_decl_partial()) | |
bool | is_const (void) const |
is_type_const(get_realtype()) | |
bool | is_volatile (void) const |
is_type_volatile(get_realtype()) | |
bool | is_void (void) const |
is_type_void(get_realtype()) | |
bool | is_partial (void) const |
is_type_partial(get_realtype()) | |
bool | is_unknown (void) const |
is_type_unknown(get_realtype()) | |
bool | is_ptr (void) const |
is_type_ptr(get_realtype()) | |
bool | is_array (void) const |
is_type_array(get_realtype()) | |
bool | is_func (void) const |
is_type_func(get_realtype()) | |
bool | is_complex (void) const |
is_type_complex(get_realtype()) | |
bool | is_struct (void) const |
is_type_struct(get_realtype()) | |
bool | is_union (void) const |
is_type_union(get_realtype()) | |
bool | is_udt (void) const |
is_type_struni(get_realtype()) | |
bool | is_enum (void) const |
is_type_enum(get_realtype()) | |
bool | is_sue (void) const |
is_type_sue(get_realtype()) | |
bool | is_bitfield (void) const |
is_type_bitfld(get_realtype()) | |
bool | is_int128 (void) const |
is_type_int128(get_realtype()) | |
bool | is_int64 (void) const |
is_type_int64(get_realtype()) | |
bool | is_int32 (void) const |
is_type_int32(get_realtype()) | |
bool | is_int16 (void) const |
is_type_int16(get_realtype()) | |
bool | is_int (void) const |
is_type_int(get_realtype()) | |
bool | is_char (void) const |
is_type_char(get_realtype()) | |
bool | is_uint (void) const |
is_type_uint(get_realtype()) | |
bool | is_uchar (void) const |
is_type_uchar(get_realtype()) | |
bool | is_uint16 (void) const |
is_type_uint16(get_realtype()) | |
bool | is_uint32 (void) const |
is_type_uint32(get_realtype()) | |
bool | is_uint64 (void) const |
is_type_uint64(get_realtype()) | |
bool | is_uint128 (void) const |
is_type_uint128(get_realtype()) | |
bool | is_ldouble (void) const |
is_type_ldouble(get_realtype()) | |
bool | is_double (void) const |
is_type_double(get_realtype()) | |
bool | is_float (void) const |
is_type_float(get_realtype()) | |
bool | is_tbyte (void) const |
is_type_tbyte(get_realtype()) | |
bool | is_bool (void) const |
is_type_bool(get_realtype()) | |
bool | is_paf (void) const |
is_type_paf(get_realtype()) | |
bool | is_ptr_or_array (void) const |
is_type_ptr_or_array(get_realtype()) | |
bool | is_integral (void) const |
is_type_integral(get_realtype()) | |
bool | is_ext_integral (void) const |
is_type_ext_integral(get_realtype()) | |
bool | is_floating (void) const |
is_type_floating(get_realtype()) | |
bool | is_arithmetic (void) const |
is_type_arithmetic(get_realtype()) | |
bool | is_ext_arithmetic (void) const |
is_type_ext_arithmetic(get_realtype()) | |
bool | is_scalar (void) const |
Does the type represent a single number? | |
bool | get_ptr_details (ptr_type_data_t *pi) const |
Get the pointer info. | |
bool | get_array_details (array_type_data_t *ai) const |
Get the array specific info. | |
bool | get_enum_details (enum_type_data_t *ei) const |
Get the enum specific info. | |
bool | get_bitfield_details (bitfield_type_data_t *bi) const |
Get the bitfield specific info. | |
bool | get_udt_details (udt_type_data_t *udt, gtd_udt_t gtd=GTD_CALC_LAYOUT) const |
Get the udt specific info. | |
bool | get_func_details (func_type_data_t *fi, gtd_func_t gtd=GTD_CALC_ARGLOCS) const |
Get only the function specific info for this tinfo_t. | |
bool | is_funcptr (void) const |
Is this pointer to a function? | |
bool | is_shifted_ptr (void) const |
Is a shifted pointer? | |
bool | is_varstruct (void) const |
Is a variable-size structure? | |
int | get_ptrarr_objsize (void) const |
BT_PTR & BT_ARRAY: get size of pointed object or array element. On error returns -1 | |
tinfo_t | get_ptrarr_object (void) const |
BT_PTR & BT_ARRAY: get the pointed object or array element. More... | |
tinfo_t | get_pointed_object (void) const |
BT_PTR: get type of pointed object. More... | |
bool | is_pvoid (void) const |
Is "void *"?. This function does not check the pointer attributes and type modifiers. | |
tinfo_t | get_array_element (void) const |
BT_ARRAY: get type of array element. See also get_ptrarr_object() | |
int | get_array_nelems (void) const |
BT_ARRAY: get number of elements (-1 means error) | |
tinfo_t | get_nth_arg (int n) const |
BT_FUNC or BT_PTR BT_FUNC: Get type of n-th arg (-1 means return type, see get_rettype()) | |
tinfo_t | get_rettype (void) const |
BT_FUNC or BT_PTR BT_FUNC: Get the function's return type | |
int | get_nargs (void) const |
BT_FUNC or BT_PTR BT_FUNC: Calculate number of arguments (-1 - error) | |
cm_t | get_cc (void) const |
BT_FUNC or BT_PTR BT_FUNC: Get calling convention | |
bool | is_user_cc (void) const |
is_user_cc(get_cc()) | |
bool | is_vararg_cc (void) const |
is_vararg_cc(get_cc()) | |
bool | is_purging_cc (void) const |
is_purging_cc(get_cc()) | |
int | calc_purged_bytes (void) const |
BT_FUNC: Calculate number of purged bytes | |
bool | is_high_func (void) const |
BT_FUNC: Is high level type? | |
bool | get_methods (udtmembervec_t *methods) const |
BT_COMPLEX: get a list of member functions declared in this udt. More... | |
bool | set_methods (udtmembervec_t &methods) |
BT_COMPLEX: set the list of member functions. More... | |
int | find_udt_member (struct udt_member_t *udm, int strmem_flags) const |
BTF_STRUCT,BTF_UNION: Find a udt member. More... | |
int | get_udt_nmembers (void) const |
Get number of udt members. -1-error. | |
bool | is_empty_udt (void) const |
Is an empty struct/union? (has no fields) | |
bool | is_small_udt (void) const |
Is a small udt? (can fit a register or a pair of registers) | |
bool | requires_qualifier (qstring *out, const char *name, uint64 offset) const |
Requires full qualifier? (name is not unique) More... | |
bool | append_covered (rangeset_t *out, uint64 offset=0) const |
Calculate set of covered bytes for the type. More... | |
bool | calc_gaps (rangeset_t *out) const |
Calculate set of padding bytes for the type. More... | |
bool | is_one_fpval (void) const |
Floating value or an object consisting of one floating member entirely. | |
bool | is_sse_type (void) const |
Is a SSE vector type? | |
bool | is_anonymous_udt (void) const |
Is an anonymous struct/union? We assume that types with names are anonymous if the name starts with $. | |
bool | is_vftable (void) const |
Is a vftable type? | |
bool | has_vftable (void) const |
Has a vftable? | |
type_t | get_enum_base_type (void) const |
Get enum base type (convert enum to integer type) Returns BT_UNK if failed to convert. | |
tinfo_t | get_onemember_type (void) const |
For objects consisting of one member entirely: return type of the member. | |
uint32 | calc_score (void) const |
Calculate the type score (the higher - the nicer is the type) | |
bool | print (qstring *out, const char *name=nullptr, int prtype_flags=PRTYPE_1LINE, int indent=0, int cmtindent=0, const char *prefix=nullptr, const char *cmt=nullptr) const |
Get a C-like string representation of the type. More... | |
const char * | dstr (void) const |
Function to facilitate debugging. | |
bool | get_attrs (type_attrs_t *tav, bool all_attrs=false) const |
Get type attributes (all_attrs: include attributes of referenced types, if any) | |
bool | get_attr (const qstring &key, bytevec_t *bv, bool all_attrs=true) const |
Get a type attribute. | |
bool | set_attrs (type_attrs_t *tav) |
Set type attributes. More... | |
bool | set_attr (const type_attr_t &ta, bool may_overwrite=true) |
Set a type attribute. If necessary, a new typid will be created. | |
void | del_attrs (void) |
Del all type attributes. typerefs cannot be modified by this function. | |
bool | del_attr (const qstring &key, bool make_copy=true) |
Del a type attribute. typerefs cannot be modified by this function. | |
bool | create_simple_type (type_t decl_type) |
bool | create_ptr (const ptr_type_data_t &p, type_t decl_type=BT_PTR) |
bool | create_array (const array_type_data_t &p, type_t decl_type=BT_ARRAY) |
bool | create_bitfield (const bitfield_type_data_t &p, type_t decl_type=BT_BITFIELD) |
bool | create_typedef (const typedef_type_data_t &p, type_t decl_type=BTF_TYPEDEF, bool try_ordinal=true) |
tinfo_code_t | create_forward_decl (til_t *til, type_t decl_type, const char *name, int ntf_flags=0) |
Create a forward declaration. More... | |
bool | convert_array_to_ptr (void) |
Convert an array into a pointer. More... | |
bool | remove_ptr_or_array (void) |
Replace the current type with the ptr obj or array element. More... | |
bool | change_sign (type_sign_t sign) |
Change the type sign. Works only for the types that may have sign. | |
bool | calc_udt_aligns (int sudt_flags=SUDT_GAPS) |
Calculate the udt alignments using the field offsets/sizes and the total udt size This function does not work on typerefs. | |
bool | compare_with (const tinfo_t &r, int tcflags=0) const |
Compare two types, based on given flags (see tinfo_t comparison flags) | |
bool | equals_to (const tinfo_t &r) const |
bool | is_castable_to (const tinfo_t &target) const |
bool | is_manually_castable_to (const tinfo_t &target) const |
Convenience functions | |
bool | create_ptr (const tinfo_t &tif, uchar bps=0, type_t decl_type=BT_PTR) |
bool | create_array (const tinfo_t &tif, uint32 nelems=0, uint32 base=0, type_t decl_type=BT_ARRAY) |
void | create_typedef (const til_t *til, const char *name, type_t decl_type=BTF_TYPEDEF, bool try_ordinal=true) |
void | create_typedef (const til_t *til, uint ord, type_t decl_type=BTF_TYPEDEF) |
bool | create_bitfield (uchar nbytes, uchar width, bool is_unsigned=false, type_t decl_type=BT_BITFIELD) |
Warning | |
These functions consume 'p' (make it empty) | |
bool | create_udt (udt_type_data_t &p, type_t decl_type) |
bool | create_enum (enum_type_data_t &p, type_t decl_type=BTF_ENUM) |
bool | create_func (func_type_data_t &p, type_t decl_type=BT_FUNC) |
Store type | |
Store the type info in the type library as a named or numbered type. The tinfo_t object will be replaced by a reference to the created type. Allowed bits for ntf_flags: NTF_NOBASE, NTF_REPLACE | |
tinfo_code_t | set_named_type (til_t *til, const char *name, int ntf_flags=0) |
tinfo_code_t | set_named_type (til_t *til, const char *name, const char *cmt, int ntf_flags=0) |
tinfo_code_t | set_symbol_type (til_t *til, const char *name, int ntf_flags=0) |
tinfo_code_t | set_symbol_type (til_t *til, const char *name, const char *cmt, int ntf_flags=0) |
tinfo_code_t | set_numbered_type (til_t *til, uint32 ord, int ntf_flags=0, const char *name=nullptr, const char *cmt=nullptr) |
Bitfields | |
Helper functions to store/extract bitfield values | |
uint64 | read_bitfield_value (uint64 v, int bitoff) const |
uint64 | write_bitfield_value (uint64 dst, uint64 v, int bitoff) const |
Modifiers | |
Work with type modifiers: const and volatile | |
type_t | get_modifiers (void) const |
void | set_modifiers (type_t mod) |
void | set_const (void) |
void | set_volatile (void) |
void | clr_const (void) |
void | clr_volatile (void) |
void | clr_const_volatile (void) |
Static Public Member Functions | |
static tinfo_t | get_stock (stock_type_id_t id) |
Get stock type information. More... | |
Friends | |
struct | type_detail_t |
tinfo_t | remove_pointer (const tinfo_t &tif) |
BT_PTR: If the current type is a pointer, return the pointed object. More... | |
Detailed Description
Primary mechanism for managing type information.
Member Function Documentation
◆ get_named_type()
|
inline |
Create a tinfo_t object for an existing named type.
- Parameters
-
til type library to use name name of the type to link to decl_type if the reference was explicitly specified with the type tag
(BTF_STRUCT/BTF_UNION/BTF_ENUM) you may specify it.
the kernel will accept only the specified tag after resolving
the type. If the resolved type does not correspond to the
explicitly specified tag, the type will be considered as undefined
resolve true: immediately resolve the type and return success code. false: return true but do not immediately resolve the type try_ordinal true: try to replace name reference by an ordinal reference
◆ get_numbered_type()
|
inline |
Create a tinfo_t object for an existing ordinal type.
- Parameters
-
til type library to use ordinal number of the type to link to decl_type if the reference was explicitly specified with the type tag (BTF_STRUCT/BTF_UNION/BTF_ENUM) you may specify it. the kernel will accept only the specified tag after resolving the type. If the resolved type does not correspond to the explicitly specified tag, the type will be considered as undefined resolve true: immediately resolve the type and return success code false: return true but do not immediately resolve the type
◆ deserialize()
|
inline |
Deserialize a type string into a tinfo_t object.
◆ is_correct()
|
inline |
Is the type object correct?.
It is possible to create incorrect types. For example, we can define a function that returns a enum and then delete the enum type. If this function returns false, the type should not be used in disassembly. Please note that this function does not verify all involved types: for example, pointers to undefined types are permitted.
◆ get_realtype()
|
inline |
Get the resolved base type.
Deserialization options:
- if full=true, the referenced type will be deserialized fully, this may not always be desirable (slows down things)
- if full=false, we just return the base type, the referenced type will be resolved again later if necessary (this may lead to multiple resolvings of the same type) imho full=false is a better approach because it does not perform unnecessary actions just in case. however, in some cases the caller knows that it is very likely that full type info will be required. in those cases full=true makes sense
◆ get_decltype()
|
inline |
Get declared type (without resolving type references; they are returned as is).
Obviously this is a very fast function and should be used instead of get_realtype() if possible.
◆ get_size()
|
inline |
Get the type size in bytes.
- Parameters
-
p_effalign buffer for the alignment value gts_code combination of GTS_... constants
- Returns
- BADSIZE in case of problems
◆ get_unpadded_size()
|
inline |
Get the type size in bytes without the final padding, in bytes.
For some UDTs get_unpadded_size() != get_size()
◆ is_typeref()
|
inline |
Is this type a type reference?.
Type references cannot be modified. Once created, they do not change. Because of this, the set_... functions applied to typerefs create a new type id. Other types are modified directly.
◆ get_type_name()
|
inline |
Does a type refer to a name?.
If yes, fill the provided buffer with the type name and return true. Names are returned for numbered types too: either a user-defined nice name or, if a user-provided name does not exist, an ordinal name (like #xx, see create_numbered_type_name()).
◆ get_final_type_name()
|
inline |
Use in the case of typedef chain (TYPE1 -> TYPE2 -> TYPE3...TYPEn).
- Returns
- the name of the last type in the chain (TYPEn). if there is no chain, returns TYPE1
◆ get_next_type_name()
|
inline |
Use In the case of typedef chain (TYPE1 -> TYPE2 -> TYPE3...TYPEn).
- Returns
- the name of the next type in the chain (TYPE2). if there is no chain, returns failure
◆ is_from_subtil()
|
inline |
Was the named type found in some base type library (not the top level type library)?.
If yes, it usually means that the type comes from some loaded type library, not the local type library for the database
◆ is_forward_decl()
|
inline |
Is this a forward declaration?.
Forward declarations are placeholders: the type definition does not exist
◆ get_ptrarr_object()
|
inline |
◆ get_pointed_object()
|
inline |
BT_PTR: get type of pointed object.
If the current type is not a pointer, return empty type info. See also get_ptrarr_object() and remove_pointer()
◆ get_methods()
|
inline |
BT_COMPLEX: get a list of member functions declared in this udt.
- Returns
- false if no member functions exist
◆ set_methods()
|
inline |
BT_COMPLEX: set the list of member functions.
This function consumes 'methods' (makes it empty).
- Returns
- false if this type is not a udt, or if the given list is empty
◆ find_udt_member()
|
inline |
BTF_STRUCT,BTF_UNION: Find a udt member.
- at the specified offset (STRMEM_OFFSET)
- with the specified index (STRMEM_INDEX)
- with the specified type (STRMEM_TYPE)
- with the specified name (STRMEM_NAME)
- Returns
- the index of the found member or -1
◆ requires_qualifier()
|
inline |
Requires full qualifier? (name is not unique)
- Parameters
-
out qualifier. may be nullptr name field name offset field offset in bits
- Returns
- if the name is not unique, returns true
◆ append_covered()
|
inline |
Calculate set of covered bytes for the type.
- Parameters
-
out pointer to the output buffer. covered bytes will be appended to it. offset delta in bytes to add to all calculations. used internally during recurion.
◆ calc_gaps()
|
inline |
Calculate set of padding bytes for the type.
- Parameters
-
out pointer to the output buffer; old buffer contents will be lost.
◆ print()
|
inline |
Get a C-like string representation of the type.
- Parameters
-
out output string name name of type prtype_flags Type printing flags indent structure level indent cmtindent comment indent prefix string prepended to each line cmt comment text
- Returns
- success
◆ set_attrs()
|
inline |
Set type attributes.
If necessary, a new typid will be created. this function modifies tav! (returns old attributes, if any)
- Returns
- false: bad attributes
◆ create_forward_decl()
|
inline |
Create a forward declaration.
decl_type: BTF_STRUCT, BTF_UNION, or BTF_ENUM
◆ get_stock()
|
inlinestatic |
Get stock type information.
This function can be used to get tinfo_t for some common types. The same tinfo_t will be returned for the same id, thus saving memory and increasing the speed Please note that retrieving the STI_SIZE_T or STI_SSIZE_T stock type, will also have the side-effect of adding that type to the 'idati' TIL, under the well-known name 'size_t' or 'ssize_t' (respectively). The same is valid for STI_COMPLEX64 and STI_COMPLEX64 stock types with names 'complex64_t' and 'complex128_t' (respectively).
◆ convert_array_to_ptr()
|
inline |
Convert an array into a pointer.
type[] => type *
◆ remove_ptr_or_array()
|
inline |
Replace the current type with the ptr obj or array element.
This function performs one of the following conversions:
- type[] => type
- type* => type If the conversion is performed successfully, return true
Friends And Related Function Documentation
◆ remove_pointer
BT_PTR: If the current type is a pointer, return the pointed object.
If the current type is not a pointer, return the current type. See also get_ptrarr_object() and get_pointed_object()
The documentation for this class was generated from the following file:
Generated by