1
//===-------------------------- cxa_demangle.h ----------------------------===//
3
// The LLVM Compiler Infrastructure
5
// This file is dual licensed under the MIT and the University of Illinois Open
6
// Source Licenses. See LICENSE.TXT for details.
8
//===----------------------------------------------------------------------===//
10
#ifndef _CXA_DEMANGLE_H
11
#define _CXA_DEMANGLE_H
15
#pragma GCC visibility push(hidden)
23
class __demangle_tree;
27
__demangle(__demangle_tree, char*, size_t*, int*);
29
struct __demangle_tree_rv
31
__demangle_tree* ptr_;
33
explicit __demangle_tree_rv(__demangle_tree* ptr)
39
const char* __mangled_name_begin_;
40
const char* __mangled_name_end_;
43
__node* __node_begin_;
46
__node** __sub_begin_;
52
bool __tag_templates_;
53
bool __fix_forward_references_;
56
__demangle_tree& operator=(const __demangle_tree&);
58
__demangle_tree(const char*, char*, size_t);
61
__demangle_tree(__demangle_tree&);
62
__demangle_tree(__demangle_tree_rv);
63
operator __demangle_tree_rv() {return __demangle_tree_rv(this);}
67
char* __get_demangled_name(char*) const;
72
const char* __parse_encoding(const char*, const char*);
73
const char* __parse_type(const char*, const char*,
74
bool = true, bool = false);
75
const char* __parse_special_name(const char*, const char*);
76
const char* __parse_name(const char*, const char*);
77
const char* __parse_bare_function_type(const char*, const char*);
78
const char* __parse_call_offset(const char*, const char*);
79
const char* __parse_number(const char*, const char*);
80
const char* __parse_cv_qualifiers(const char* first, const char* last,
81
unsigned& cv, bool = false);
82
const char* __parse_nested_name(const char*, const char*);
83
const char* __parse_discriminator(const char*, const char*);
84
const char* __parse_local_name(const char*, const char*);
85
const char* __parse_unscoped_template_name(const char*, const char*);
86
const char* __parse_unscoped_name(const char*, const char*);
87
const char* __parse_operator_name(const char*, const char*, int* = 0);
88
const char* __parse_unqualified_name(const char*, const char*);
89
const char* __parse_source_name(const char*, const char*);
90
const char* __parse_ctor_dtor_name(const char*, const char*);
91
const char* __parse_unnamed_type_name(const char*, const char*);
92
const char* __parse_template_args(const char*, const char*);
93
const char* __parse_template_arg(const char*, const char*);
94
const char* __parse_expression(const char*, const char*);
95
const char* __parse_expr_primary(const char*, const char*);
96
const char* __parse_substitution(const char*, const char*);
97
const char* __parse_builtin_type(const char*, const char*);
98
const char* __parse_function_type(const char*, const char*);
99
const char* __parse_class_enum_type(const char*, const char*);
100
const char* __parse_array_type(const char*, const char*);
101
const char* __parse_pointer_to_member_type(const char*, const char*);
102
const char* __parse_decltype(const char*, const char*);
103
const char* __parse_template_param(const char*, const char*);
104
const char* __parse_unresolved_name(const char*, const char*);
105
const char* __parse_unresolved_type(const char*, const char*);
106
const char* __parse_base_unresolved_name(const char*, const char*);
107
const char* __parse_simple_id(const char*, const char*);
108
const char* __parse_destructor_name(const char*, const char*);
109
const char* __parse_function_param(const char*, const char*);
110
const char* __parse_const_cast_expr(const char*, const char*);
111
const char* __parse_alignof_expr(const char*, const char*);
112
const char* __parse_call_expr(const char*, const char*);
113
const char* __parse_conversion_expr(const char*, const char*);
114
const char* __parse_delete_array_expr(const char*, const char*);
115
const char* __parse_delete_expr(const char*, const char*);
116
const char* __parse_dynamic_cast_expr(const char*, const char*);
117
const char* __parse_dot_star_expr(const char*, const char*);
118
const char* __parse_dot_expr(const char*, const char*);
119
const char* __parse_decrement_expr(const char*, const char*);
120
const char* __parse_new_expr(const char*, const char*);
121
const char* __parse_increment_expr(const char*, const char*);
122
const char* __parse_arrow_expr(const char*, const char*);
123
const char* __parse_reinterpret_cast_expr(const char*, const char*);
124
const char* __parse_static_cast_expr(const char*, const char*);
125
const char* __parse_sizeof_type_expr(const char*, const char*);
126
const char* __parse_sizeof_param_pack_expr(const char*, const char*);
127
const char* __parse_typeid_expr(const char*, const char*);
128
const char* __parse_throw_expr(const char*, const char*);
129
const char* __parse_pack_expansion(const char*, const char*);
130
const char* __parse_sizeof_function_param_pack_expr(const char*, const char*);
131
const char* __parse_dot_suffix(const char*, const char*);
132
const char* __parse_unresolved_qualifier_level(const char*, const char*);
133
const char* __parse_vector_type(const char*, const char*);
134
const char* __parse_hex_number(const char*, const char*, unsigned long long&);
136
template <class _Tp> bool __make();
137
template <class _Tp, class _A0> bool __make(_A0 __a0);
138
template <class _Tp, class _A0, class _A1> bool __make(_A0 __a0, _A1 __a1);
139
template <class _Tp, class _A0, class _A1, class _A2>
140
bool __make(_A0 __a0, _A1 __a1, _A2 __a2);
141
template <class _Tp, class _A0, class _A1, class _A2, class _A3>
142
bool __make(_A0 __a0, _A1 __a1, _A2 __a2, _A3 __a3);
143
template <class _Tp, class _A0, class _A1, class _A2, class _A3, class _A4>
144
bool __make(_A0 __a0, _A1 __a1, _A2 __a2, _A3 __a3, _A4 __a4);
145
template <class _Tp, class _A0, class _A1, class _A2, class _A3, class _A4,
147
bool __make(_A0 __a0, _A1 __a1, _A2 __a2, _A3 __a3, _A4 __a4, _A5 __a5);
151
__demangle(__demangle_tree, char*, size_t*, int*);
156
__demangle(const char*);
159
__demangle(const char*, char*, size_t);
164
#pragma GCC visibility pop
167
#endif // _CXA_DEMANGLE_H