Go to the source code of this file.
#define MTOKEN_BINARY_LEFT | ( | PT | ) | ((PT)->binary.left) |
Sets the left node on binary token, PT pointer to a binary uMToken.
#define MTOKEN_BINARY_RIGHT | ( | PT | ) | ((PT)->binary.right) |
Sets the right node on binary token, PT pointer to a binary uMToken.
#define MTOKEN_CHAIN | ( | PT | ) | ((PT)->base.chain) |
Sets the pointer to the next token in the chain.
#define MTOKEN_DIM_NEGATE | ( | PT | ) | ((PT)->dim.beNegate) |
Retrieve or set negative bit on value token, PT pointer to an generic uMToken
#define MTOKEN_DIM_NTTP | ( | PT | ) | ((PT)->dim.non_tt_param) |
Retrieve or set the template of a token, PT pointer to a name uMToken
#define MTOKEN_DIM_VALUE | ( | PT | ) | ((PT)->dim.value) |
Retrieve or set the value of a token, PT pointer to a value uMToken
#define MTOKEN_FLAGS | ( | PT | ) | ((PT)->base.flags) |
Sets flags in base descriptor.
#define MTOKEN_FLAGS_ARRAY 0x8 |
Decoded fragment has an array-like expression.
#define MTOKEN_FLAGS_NOTE 0x2 |
Contains "note" name token.
#define MTOKEN_FLAGS_PTRREF 0x4 |
Decoded fragment is a referrence.
#define MTOKEN_FLAGS_UDC 0x1 |
Indicates a following "name" token for named struct/union/class.
#define MTOKEN_KIND | ( | PT | ) | ((PT)->base.kind) |
Sets the token kind, PT pointer to a base uMToken.
#define MTOKEN_NAME | ( | PT | ) | ((PT)->name.name) |
Retrieve or set the name string, PT pointer to a name uMToken
#define MTOKEN_SUBKIND | ( | PT | ) | ((PT)->base.subkind) |
Sets the token subkind, PT pointer to a base uMToken.
#define MTOKEN_UNARY | ( | PT | ) | ((PT)->unary.unary) |
Sets the leaf element on a unary token, PT pointer to a unary uMToken.
#define MTOKEN_VALUE | ( | PT | ) | ((PT)->value.value) |
Sets the token value. PT pointer to a value uMToken.
#define MTOKEN_VALUE_SIGNED | ( | PT | ) | ((PT)->value.is_signed) |
Sets the signed bit on value token. PT pointer to a value uMToken.
#define MTOKEN_VALUE_SIZE | ( | PT | ) | ((PT)->value.size) |
Sets the byte width of value in value token. PT pointer to a value uMToken.
enum eMSToken |
Token "Subkind" enumeration list. Also used by internal function sprint_decl1() for printing.
eMST_unmangled |
Name is unmagled. |
eMST_nttp |
Template name. |
eMST_name |
Decoded function name. |
eMST_colon |
Class member accessibility. |
eMST_rtti |
Runtime Type information name. |
eMST_cv |
Function call convention / data qualifiers / pointer. |
eMST_vftable |
Virtual Function Table. |
eMST_vbtable |
Virtual Base Table. |
eMST_vcall |
Virtual Function Call. |
eMST_opname |
Overloaded operator. |
eMST_templargname |
Explicit template arg name. |
eMST_type |
Function return type. |
eMST_dim |
Print array-like expression.
|
eMST_val |
Print value expression.
|
eMST_gcarray | |
eMST_slashed |
MSVC extenstion: "__gc" Managed C++ reference. MTOKEN_UNARY appended and prepended with "/". |
eMST_array |
MTOKEN_UNARY enclosed by square brackets. |
eMST_element |
MTOKEN_UNARY in an argument list. |
eMST_template_argument_list |
MTOKEN_UNARY in an argument list. |
eMST_ltgt |
MTOKEN_UNARY enclosed by angular brackets. |
eMST_frame |
MTOKEN_UNARY enclosed by curly brackets. |
eMST_throw |
MTOKEN_UNARY prepended by "throw ". |
eMST_rframe |
MTOKEN_UNARY enclosed by parentheses. |
eMST_destructor |
MTOKEN_UNARY prepended with "~". |
eMST_oper |
indicates that token an operand, prints from MTOKEN_UNARY. |
eMST_colonarray | |
eMST_lexical_frame |
Unused, to be removed. MTOKEN_UNARY enclosed by single quotes "'". |
eMST_scope |
MTOKEN_UNARY, unenclosed. |
eMST_udt_returning |
User defined types (RTTI). |
eMST_coloncolon |
"::" between MTOKEN_BINARY_LEFT and MTOKEN_BINARY_RIGHT. |
eMST_assign |
"=" between MTOKEN_BINARY_LEFT and MTOKEN_BINARY_RIGHT and appended with "}". |
eMST_templateparam |
Explicit template. |
eMST_nonetypetemplateparam |
Non-explicit template. |
eMST_exp |
dim 'e' (exponent) dim |
eMST_combine |
Unary grouping. |
eMST_ecsu |
Is an Enum/Class/Struct/Union |
eMST_based |
MSVC extension: "__based" Based addressing |
enum eMToken |
Token "Kind" enumeration list.
Chains uMTokens together.
[in] | l | uMtoken chain to link up with. |
[in] | add | uMtoken to add to chain. |
uMToken* gen_binary | ( | libmangle_gc_context_t * | gc, | |
enum eMSToken | skind, | |||
uMToken * | l, | |||
uMToken * | r | |||
) |
Generates a binary node token.
[in] | gc | Pointer to garbage collection context. |
[in] | skind | Token subKind. |
[in] | l | Left node element. |
[in] | r | Right node element. |
uMToken* gen_dim | ( | libmangle_gc_context_t * | gc, | |
enum eMSToken | skind, | |||
uint64_t | val, | |||
const char * | non_tt_param, | |||
int | fSigned, | |||
int | fNegate | |||
) |
Constructs a "dim" kind token.
[in] | gc | Pointer to garbage collection context. |
[in] | skind | Token subkind. |
[in] | val | Token numerical value. |
[in] | non_tt_param | pointer to decoded C++ template name. |
[in] | fSigned | Signedness of the numerical value. |
[in] | fNegate | 1 for "val" is negative digit. |
uMToken* gen_name | ( | libmangle_gc_context_t * | gc, | |
enum eMSToken | skind, | |||
const char * | name | |||
) |
Constructs a "name" kind token.
[in] | gc | Pointer to garbage collection context. |
[in] | skind | Token subkind. |
[in] | name | Pointer to name string. |
uMToken* gen_unary | ( | libmangle_gc_context_t * | gc, | |
enum eMSToken | skind, | |||
uMToken * | un | |||
) |
Constructs a "unary" kind token.
[in] | gc | Pointer to garbage collection context. |
[in] | skind | Token subkind. |
[in] | un | Pointer to leaf element. |
uMToken* gen_value | ( | libmangle_gc_context_t * | gc, | |
enum eMSToken | skind, | |||
uint64_t | val, | |||
int | is_signed, | |||
int | size | |||
) |
Constructs a "value" kind token.
[in] | gc | Pointer to garbage collection context. |
[in] | skind | Token subkind. |
[in] | val | Sets the value on token, |
[in] | is_signed | Signed bit of val. |
[in] | size | Width of val. |
void libmangle_dump_tok | ( | FILE * | fp, | |
uMToken * | p | |||
) |
uMToken* libmangle_gen_tok | ( | libmangle_gc_context_t * | gc, | |
enum eMToken | kind, | |||
enum eMSToken | subkind, | |||
size_t | addend | |||
) |
gen_tok constructs uMToken instances Instances are destroyed with libmangle_release_gc().
[in] | gc | Pointer to garbage collection context. |
[in] | kind | Kind of token to construct |
[in] | subkind | Subkind of token to construct |
[in] | addend | Additional byte padding at the end. |
libmangle_gc_context_t* libmangle_generate_gc | ( | void | ) |
Constructs a garbage collection context token.
void libmangle_print_decl | ( | FILE * | fp, | |
uMToken * | p | |||
) |
Prints C++ name to file descriptor.
[in] | fp | Output file descriptor. |
[in] | p | Token containing information about the C++ name. |
void libmangle_release_gc | ( | libmangle_gc_context_t * | gc | ) |
Releases memory tracked by context.
[in] | gc | Garbage collection context to work on. |
char* libmangle_sprint_decl | ( | uMToken * | r | ) |
Get pointer to decoded C++ name string. Use free() to release returned string.
[in] | r | C++ name token. |