804 case 'C':
case 'D':
case 'E':
case 'F':
case 'G':
805 case 'H':
case 'I':
case 'J':
case 'K':
case 'M':
806 case 'N':
case 'O':
case 'X':
case 'Z':
817 const char* struct_name =
NULL;
818 const char* type_name =
NULL;
826 case 'T': type_name =
"union ";
break;
827 case 'U': type_name =
"struct ";
break;
828 case 'V': type_name =
"class ";
break;
829 case 'Y': type_name =
"cointerface ";
break;
855 if (!
get_modified_type(ct, sym, pmt_ref, in_args ? dt :
'P', in_args))
goto done;
867 const char* call_conv;
868 const char* exported;
870 unsigned mark = sym->
stack.num;
872 const char* modifier;
873 const char* ptr_modif;
882 modifier =
str_printf(sym,
"%s %s", modifier, ptr_modif);
883 else if(ptr_modif[0])
886 &call_conv, &exported,
893 if (!
args)
goto done;
894 sym->
stack.num = mark;
897 sub_ct.left, sub_ct.right, call_conv,
class);
903 const char* call_conv;
904 const char* exported;
906 unsigned mark = sym->
stack.num;
911 &call_conv, &exported,
917 if (!
args)
goto done;
918 sym->
stack.num = mark;
921 sub_ct.left, sub_ct.right, call_conv);
936 ct->
left = enum_name;
942 case '0':
case '1':
case '2':
case '3':
case '4':
943 case '5':
case '6':
case '7':
case '8':
case '9':
946 if (!pmt_ref)
goto done;
949 if (!ct->
left)
goto done;
995 unsigned mark = sym->
stack.num;
997 const char* arr =
NULL;
1019 ct->
left = sub_ct.left;
1020 ct->
right = sub_ct.right;
1021 sym->
stack.num = mark;
1023 else if (*sym->
current ==
'C')
1025 const char *
ptr, *ptr_modif;
1036 ERR(
"Unknown type %c\n", dt);
1039 if (add_pmt && pmt_ref && in_args)
#define UNDNAME_NO_COMPLEX_TYPE
static const char * get_simple_type(char c)
static char * str_printf(struct parsed_symbol *sym, const char *format,...)
static const char * get_extended_type(char c)
static char * get_class_name(struct parsed_symbol *sym)
static BOOL get_calling_convention(char ch, const char **call_conv, const char **exported, unsigned flags)
static BOOL str_array_push(struct parsed_symbol *sym, const char *ptr, int len, struct array *a)
static BOOL demangle_datatype(struct parsed_symbol *sym, struct datatype_t *ct, struct array *pmt, BOOL in_args)
static const char * get_number(struct parsed_symbol *sym)
static char * get_args(struct parsed_symbol *sym, struct array *pmt_ref, BOOL z_term, char open_char, char close_char)
static BOOL get_modifier(struct parsed_symbol *sym, const char **ret, const char **ptr_modif)
_Check_return_ int __cdecl atoi(_In_z_ const char *_Str)
static char * str_array_get_ref(struct array *cref, unsigned idx)
#define UNDNAME_NO_ALLOCATION_LANGUAGE
static BOOL get_modified_type(struct datatype_t *ct, struct parsed_symbol *sym, struct array *pmt_ref, char modif, BOOL in_args)