~ubuntu-branches/ubuntu/vivid/emscripten/vivid

« back to all changes in this revision

Viewing changes to system/lib/libcxxabi/include/cxa_demangle.h

  • Committer: Package Import Robot
  • Author(s): Sylvestre Ledru
  • Date: 2013-05-02 13:11:51 UTC
  • Revision ID: package-import@ubuntu.com-20130502131151-q8dvteqr1ef2x7xz
Tags: upstream-1.4.1~20130504~adb56cb
ImportĀ upstreamĀ versionĀ 1.4.1~20130504~adb56cb

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
//===-------------------------- cxa_demangle.h ----------------------------===//
 
2
//
 
3
//                     The LLVM Compiler Infrastructure
 
4
//
 
5
// This file is dual licensed under the MIT and the University of Illinois Open
 
6
// Source Licenses. See LICENSE.TXT for details.
 
7
//
 
8
//===----------------------------------------------------------------------===//
 
9
 
 
10
#ifndef _CXA_DEMANGLE_H
 
11
#define _CXA_DEMANGLE_H
 
12
 
 
13
#include <cxxabi.h>
 
14
 
 
15
#pragma GCC visibility push(hidden)
 
16
 
 
17
namespace __cxxabiv1
 
18
{
 
19
 
 
20
namespace __libcxxabi
 
21
{
 
22
 
 
23
class __demangle_tree;
 
24
class __node;
 
25
 
 
26
char*
 
27
__demangle(__demangle_tree, char*, size_t*, int*);
 
28
 
 
29
struct __demangle_tree_rv
 
30
{
 
31
    __demangle_tree* ptr_;
 
32
 
 
33
    explicit __demangle_tree_rv(__demangle_tree* ptr)
 
34
        : ptr_(ptr) {}
 
35
};
 
36
 
 
37
class __demangle_tree
 
38
{
 
39
    const char* __mangled_name_begin_;
 
40
    const char* __mangled_name_end_;
 
41
    int         __status_;
 
42
    __node*     __root_;
 
43
    __node*     __node_begin_;
 
44
    __node*     __node_end_;
 
45
    __node*     __node_cap_;
 
46
    __node**    __sub_begin_;
 
47
    __node**    __sub_end_;
 
48
    __node**    __sub_cap_;
 
49
    __node**    __t_begin_;
 
50
    __node**    __t_end_;
 
51
    __node**    __t_cap_;
 
52
    bool        __tag_templates_;
 
53
    bool        __fix_forward_references_;
 
54
    bool        __owns_buf_;
 
55
 
 
56
    __demangle_tree& operator=(const __demangle_tree&);
 
57
public:
 
58
    __demangle_tree(const char*, char*, size_t);
 
59
    ~__demangle_tree();
 
60
 
 
61
    __demangle_tree(__demangle_tree&);
 
62
    __demangle_tree(__demangle_tree_rv);
 
63
    operator __demangle_tree_rv() {return __demangle_tree_rv(this);}
 
64
 
 
65
    int __status() const;
 
66
    size_t size() const;
 
67
    char* __get_demangled_name(char*) const;
 
68
 
 
69
    void __parse();
 
70
 
 
71
private:
 
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&);
 
135
 
 
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,
 
146
                         class _A5>
 
147
        bool __make(_A0 __a0, _A1 __a1, _A2 __a2, _A3 __a3, _A4 __a4, _A5 __a5);
 
148
 
 
149
    friend
 
150
    char*
 
151
    __demangle(__demangle_tree, char*, size_t*, int*);
 
152
 
 
153
};
 
154
 
 
155
__demangle_tree
 
156
__demangle(const char*);
 
157
 
 
158
__demangle_tree
 
159
__demangle(const char*, char*, size_t);
 
160
 
 
161
}  // __libcxxabi
 
162
}  // __cxxabiv1
 
163
 
 
164
#pragma GCC visibility pop
 
165
 
 
166
 
 
167
#endif  // _CXA_DEMANGLE_H