Lines Matching refs:last
37 const char* parse_type(const char* first, const char* last, C& db);
39 const char* parse_encoding(const char* first, const char* last, C& db);
41 const char* parse_name(const char* first, const char* last, C& db,
44 const char* parse_expression(const char* first, const char* last, C& db);
46 const char* parse_template_args(const char* first, const char* last, C& db);
48 const char* parse_operator_name(const char* first, const char* last, C& db);
50 const char* parse_unqualified_name(const char* first, const char* last, C& db);
52 const char* parse_decltype(const char* first, const char* last, C& db);
97 print_state(const char* msg, const char* first, const char* last, const C& db) in print_state() argument
100 for (; first != last; ++first) in print_state()
109 parse_number(const char* first, const char* last) in parse_number() argument
111 if (first != last) in parse_number()
116 if (t != last) in parse_number()
125 while (first != last && std::isdigit(*first)) in parse_number()
172 parse_floating_number(const char* first, const char* last, C& db) in parse_floating_number() argument
175 if (static_cast<std::size_t>(last - first) > N) in parse_floating_number()
177 last = first + N; in parse_floating_number()
185 for (; t != last; ++t, ++e) in parse_floating_number()
216 parse_source_name(const char* first, const char* last, C& db) in parse_source_name() argument
218 if (first != last) in parse_source_name()
221 if (isdigit(c) && first+1 != last) in parse_source_name()
228 if (++t == last) in parse_source_name()
231 if (static_cast<size_t>(last - t) >= n) in parse_source_name()
258 parse_substitution(const char* first, const char* last, C& db) in parse_substitution() argument
260 if (last - first >= 2) in parse_substitution()
307 for (++t; t != last && (std::isdigit(*t) || std::isupper(*t)); ++t) in parse_substitution()
315 if (t == last || *t != '_') in parse_substitution()
366 parse_builtin_type(const char* first, const char* last, C& db) in parse_builtin_type() argument
368 if (first != last) in parse_builtin_type()
458 const char*t = parse_source_name(first+1, last, db); in parse_builtin_type()
464 if (first+1 != last) in parse_builtin_type()
515 parse_cv_qualifiers(const char* first, const char* last, unsigned& cv) in parse_cv_qualifiers() argument
518 if (first != last) in parse_cv_qualifiers()
544 parse_template_param(const char* first, const char* last, C& db) in parse_template_param() argument
546 if (last - first >= 2) in parse_template_param()
571 for (++t; t != last && isdigit(*t); ++t) in parse_template_param()
576 if (t == last || *t != '_' || db.template_param.empty()) in parse_template_param()
601 parse_const_cast_expr(const char* first, const char* last, C& db) in parse_const_cast_expr() argument
603 if (last - first >= 3 && first[0] == 'c' && first[1] == 'c') in parse_const_cast_expr()
605 const char* t = parse_type(first+2, last, db); in parse_const_cast_expr()
608 const char* t1 = parse_expression(t, last, db); in parse_const_cast_expr()
627 parse_dynamic_cast_expr(const char* first, const char* last, C& db) in parse_dynamic_cast_expr() argument
629 if (last - first >= 3 && first[0] == 'd' && first[1] == 'c') in parse_dynamic_cast_expr()
631 const char* t = parse_type(first+2, last, db); in parse_dynamic_cast_expr()
634 const char* t1 = parse_expression(t, last, db); in parse_dynamic_cast_expr()
653 parse_reinterpret_cast_expr(const char* first, const char* last, C& db) in parse_reinterpret_cast_expr() argument
655 if (last - first >= 3 && first[0] == 'r' && first[1] == 'c') in parse_reinterpret_cast_expr()
657 const char* t = parse_type(first+2, last, db); in parse_reinterpret_cast_expr()
660 const char* t1 = parse_expression(t, last, db); in parse_reinterpret_cast_expr()
679 parse_static_cast_expr(const char* first, const char* last, C& db) in parse_static_cast_expr() argument
681 if (last - first >= 3 && first[0] == 's' && first[1] == 'c') in parse_static_cast_expr()
683 const char* t = parse_type(first+2, last, db); in parse_static_cast_expr()
686 const char* t1 = parse_expression(t, last, db); in parse_static_cast_expr()
705 parse_pack_expansion(const char* first, const char* last, C& db) in parse_pack_expansion() argument
707 if (last - first >= 3 && first[0] == 's' && first[1] == 'p') in parse_pack_expansion()
709 const char* t = parse_expression(first+2, last, db); in parse_pack_expansion()
720 parse_sizeof_type_expr(const char* first, const char* last, C& db) in parse_sizeof_type_expr() argument
722 if (last - first >= 3 && first[0] == 's' && first[1] == 't') in parse_sizeof_type_expr()
724 const char* t = parse_type(first+2, last, db); in parse_sizeof_type_expr()
740 parse_sizeof_expr_expr(const char* first, const char* last, C& db) in parse_sizeof_expr_expr() argument
742 if (last - first >= 3 && first[0] == 's' && first[1] == 'z') in parse_sizeof_expr_expr()
744 const char* t = parse_expression(first+2, last, db); in parse_sizeof_expr_expr()
760 parse_sizeof_param_pack_expr(const char* first, const char* last, C& db) in parse_sizeof_param_pack_expr() argument
762 if (last - first >= 3 && first[0] == 's' && first[1] == 'Z' && first[2] == 'T') in parse_sizeof_param_pack_expr()
765 const char* t = parse_template_param(first+2, last, db); in parse_sizeof_param_pack_expr()
794 parse_function_param(const char* first, const char* last, C& db) in parse_function_param() argument
796 if (last - first >= 3 && *first == 'f') in parse_function_param()
801 const char* t = parse_cv_qualifiers(first+2, last, cv); in parse_function_param()
802 const char* t1 = parse_number(t, last); in parse_function_param()
803 if (t1 != last && *t1 == '_') in parse_function_param()
812 const char* t0 = parse_number(first+2, last); in parse_function_param()
813 if (t0 != last && *t0 == 'p') in parse_function_param()
816 const char* t = parse_cv_qualifiers(t0, last, cv); in parse_function_param()
817 const char* t1 = parse_number(t, last); in parse_function_param()
818 if (t1 != last && *t1 == '_') in parse_function_param()
833 parse_sizeof_function_param_pack_expr(const char* first, const char* last, C& db) in parse_sizeof_function_param_pack_expr() argument
835 if (last - first >= 3 && first[0] == 's' && first[1] == 'Z' && first[2] == 'f') in parse_sizeof_function_param_pack_expr()
837 const char* t = parse_function_param(first+2, last, db); in parse_sizeof_function_param_pack_expr()
854 parse_typeid_expr(const char* first, const char* last, C& db) in parse_typeid_expr() argument
856 if (last - first >= 3 && first[0] == 't' && (first[1] == 'e' || first[1] == 'i')) in parse_typeid_expr()
860 t = parse_expression(first+2, last, db); in parse_typeid_expr()
862 t = parse_type(first+2, last, db); in parse_typeid_expr()
878 parse_throw_expr(const char* first, const char* last, C& db) in parse_throw_expr() argument
880 if (last - first >= 3 && first[0] == 't' && first[1] == 'w') in parse_throw_expr()
882 const char* t = parse_expression(first+2, last, db); in parse_throw_expr()
898 parse_dot_star_expr(const char* first, const char* last, C& db) in parse_dot_star_expr() argument
900 if (last - first >= 3 && first[0] == 'd' && first[1] == 's') in parse_dot_star_expr()
902 const char* t = parse_expression(first+2, last, db); in parse_dot_star_expr()
905 const char* t1 = parse_expression(t, last, db); in parse_dot_star_expr()
924 parse_simple_id(const char* first, const char* last, C& db) in parse_simple_id() argument
926 if (first != last) in parse_simple_id()
928 const char* t = parse_source_name(first, last, db); in parse_simple_id()
931 const char* t1 = parse_template_args(t, last, db); in parse_simple_id()
954 parse_unresolved_type(const char* first, const char* last, C& db) in parse_unresolved_type() argument
956 if (first != last) in parse_unresolved_type()
964 t = parse_template_param(first, last, db); in parse_unresolved_type()
979 t = parse_decltype(first, last, db); in parse_unresolved_type()
989 t = parse_substitution(first, last, db); in parse_unresolved_type()
994 if (last - first > 2 && first[1] == 't') in parse_unresolved_type()
996 t = parse_unqualified_name(first+2, last, db); in parse_unresolved_type()
1018 parse_destructor_name(const char* first, const char* last, C& db) in parse_destructor_name() argument
1020 if (first != last) in parse_destructor_name()
1022 const char* t = parse_unresolved_type(first, last, db); in parse_destructor_name()
1024 t = parse_simple_id(first, last, db); in parse_destructor_name()
1046 parse_base_unresolved_name(const char* first, const char* last, C& db) in parse_base_unresolved_name() argument
1048 if (last - first >= 2) in parse_base_unresolved_name()
1054 const char* t = parse_operator_name(first+2, last, db); in parse_base_unresolved_name()
1057 first = parse_template_args(t, last, db); in parse_base_unresolved_name()
1070 const char* t = parse_destructor_name(first+2, last, db); in parse_base_unresolved_name()
1077 const char* t = parse_simple_id(first, last, db); in parse_base_unresolved_name()
1080 t = parse_operator_name(first, last, db); in parse_base_unresolved_name()
1083 first = parse_template_args(t, last, db); in parse_base_unresolved_name()
1105 parse_unresolved_qualifier_level(const char* first, const char* last, C& db) in parse_unresolved_qualifier_level() argument
1107 return parse_simple_id(first, last, db); in parse_unresolved_qualifier_level()
1122 parse_unresolved_name(const char* first, const char* last, C& db) in parse_unresolved_name() argument
1124 if (last - first > 2) in parse_unresolved_name()
1133 const char* t2 = parse_base_unresolved_name(t, last, db); in parse_unresolved_name()
1144 else if (last - t > 2 && t[0] == 's' && t[1] == 'r') in parse_unresolved_name()
1149 const char* t1 = parse_unresolved_type(t, last, db); in parse_unresolved_name()
1150 if (t1 == t || t1 == last) in parse_unresolved_name()
1153 t1 = parse_template_args(t, last, db); in parse_unresolved_name()
1162 if (t == last) in parse_unresolved_name()
1170 t1 = parse_unresolved_qualifier_level(t, last, db); in parse_unresolved_name()
1171 if (t1 == t || t1 == last || db.names.size() < 2) in parse_unresolved_name()
1179 t1 = parse_base_unresolved_name(t, last, db); in parse_unresolved_name()
1196 const char* t1 = parse_unresolved_type(t, last, db); in parse_unresolved_name()
1200 t1 = parse_template_args(t, last, db); in parse_unresolved_name()
1210 t1 = parse_base_unresolved_name(t, last, db); in parse_unresolved_name()
1226 t1 = parse_unresolved_qualifier_level(t, last, db); in parse_unresolved_name()
1227 if (t1 == t || t1 == last) in parse_unresolved_name()
1238 t1 = parse_unresolved_qualifier_level(t, last, db); in parse_unresolved_name()
1239 if (t1 == t || t1 == last || db.names.size() < 2) in parse_unresolved_name()
1247 t1 = parse_base_unresolved_name(t, last, db); in parse_unresolved_name()
1271 parse_dot_expr(const char* first, const char* last, C& db) in parse_dot_expr() argument
1273 if (last - first >= 3 && first[0] == 'd' && first[1] == 't') in parse_dot_expr()
1275 const char* t = parse_expression(first+2, last, db); in parse_dot_expr()
1278 const char* t1 = parse_unresolved_name(t, last, db); in parse_dot_expr()
1297 parse_call_expr(const char* first, const char* last, C& db) in parse_call_expr() argument
1299 if (last - first >= 4 && first[0] == 'c' && first[1] == 'l') in parse_call_expr()
1301 const char* t = parse_expression(first+2, last, db); in parse_call_expr()
1304 if (t == last) in parse_call_expr()
1314 const char* t1 = parse_expression(t, last, db); in parse_call_expr()
1315 if (t1 == t || t1 == last) in parse_call_expr()
1352 parse_new_expr(const char* first, const char* last, C& db) in parse_new_expr() argument
1354 if (last - first >= 4) in parse_new_expr()
1367 if (t == last) in parse_new_expr()
1373 const char* t1 = parse_expression(t, last, db); in parse_new_expr()
1374 if (t1 == t || t1 == last) in parse_new_expr()
1395 const char* t1 = parse_type(t, last, db); in parse_new_expr()
1396 if (t1 == t || t1 == last) in parse_new_expr()
1400 if (last - t >= 3 && t[0] == 'p' && t[1] == 'i') in parse_new_expr()
1407 t1 = parse_expression(t, last, db); in parse_new_expr()
1408 if (t1 == t || t1 == last) in parse_new_expr()
1474 parse_conversion_expr(const char* first, const char* last, C& db) in parse_conversion_expr() argument
1476 if (last - first >= 3 && first[0] == 'c' && first[1] == 'v') in parse_conversion_expr()
1480 const char* t = parse_type(first+2, last, db); in parse_conversion_expr()
1482 if (t != first+2 && t != last) in parse_conversion_expr()
1486 const char* t1 = parse_expression(t, last, db); in parse_conversion_expr()
1494 if (t == last) in parse_conversion_expr()
1503 const char* t1 = parse_expression(t, last, db); in parse_conversion_expr()
1504 if (t1 == t || t1 == last) in parse_conversion_expr()
1541 parse_arrow_expr(const char* first, const char* last, C& db) in parse_arrow_expr() argument
1543 if (last - first >= 3 && first[0] == 'p' && first[1] == 't') in parse_arrow_expr()
1545 const char* t = parse_expression(first+2, last, db); in parse_arrow_expr()
1548 const char* t1 = parse_expression(t, last, db); in parse_arrow_expr()
1571 parse_function_type(const char* first, const char* last, C& db) in parse_function_type() argument
1573 if (first != last && *first == 'F') in parse_function_type()
1576 if (t != last) in parse_function_type()
1582 if (++t == last) in parse_function_type()
1585 const char* t1 = parse_type(t, last, db); in parse_function_type()
1593 if (t == last) in parse_function_type()
1608 if (*t == 'R' && t+1 != last && t[1] == 'E') in parse_function_type()
1614 if (*t == 'O' && t+1 != last && t[1] == 'E') in parse_function_type()
1621 t1 = parse_type(t, last, db); in parse_function_type()
1623 if (t1 == t || t1 == last) in parse_function_type()
1660 parse_pointer_to_member_type(const char* first, const char* last, C& db) in parse_pointer_to_member_type() argument
1662 if (first != last && *first == 'M') in parse_pointer_to_member_type()
1664 const char* t = parse_type(first+1, last, db); in parse_pointer_to_member_type()
1667 const char* t2 = parse_type(t, last, db); in parse_pointer_to_member_type()
1697 parse_array_type(const char* first, const char* last, C& db) in parse_array_type() argument
1699 if (first != last && *first == 'A' && first+1 != last) in parse_array_type()
1703 const char* t = parse_type(first+2, last, db); in parse_array_type()
1716 const char* t = parse_number(first+1, last); in parse_array_type()
1717 if (t != last && *t == '_') in parse_array_type()
1719 const char* t2 = parse_type(t+1, last, db); in parse_array_type()
1733 const char* t = parse_expression(first+1, last, db); in parse_array_type()
1734 if (t != first+1 && t != last && *t == '_') in parse_array_type()
1736 const char* t2 = parse_type(++t, last, db); in parse_array_type()
1761 parse_decltype(const char* first, const char* last, C& db) in parse_decltype() argument
1763 if (last - first >= 4 && first[0] == 'D') in parse_decltype()
1770 const char* t = parse_expression(first+2, last, db); in parse_decltype()
1771 if (t != first+2 && t != last && *t == 'E') in parse_decltype()
1794 parse_vector_type(const char* first, const char* last, C& db) in parse_vector_type() argument
1796 if (last - first > 3 && first[0] == 'D' && first[1] == 'v') in parse_vector_type()
1800 const char* t = parse_number(first+2, last); in parse_vector_type()
1801 if (t == last || *t != '_') in parse_vector_type()
1805 if (++t != last) in parse_vector_type()
1809 const char* t1 = parse_type(t, last, db); in parse_vector_type()
1832 const char* t = parse_expression(t1, last, db); in parse_vector_type()
1842 if (t1 != last && *t1 == '_' && ++t1 != last) in parse_vector_type()
1844 const char* t = parse_type(t1, last, db); in parse_vector_type()
1883 parse_type(const char* first, const char* last, C& db) in parse_type() argument
1885 if (first != last) in parse_type()
1894 const char* t = parse_cv_qualifiers(first, last, cv); in parse_type()
1899 const char* t1 = parse_type(t, last, db); in parse_type()
1946 const char* t = parse_builtin_type(first, last, db); in parse_type()
1956 t = parse_array_type(first, last, db); in parse_type()
1966 t = parse_type(first+1, last, db); in parse_type()
1977 t = parse_function_type(first, last, db); in parse_type()
1987 t = parse_type(first+1, last, db); in parse_type()
1998 t = parse_pointer_to_member_type(first, last, db); in parse_type()
2010 t = parse_type(first+1, last, db); in parse_type()
2037 t = parse_type(first+1, last, db); in parse_type()
2071 t = parse_type(first+1, last, db); in parse_type()
2098 t = parse_template_param(first, last, db); in parse_type()
2107 const char* t1 = parse_template_args(t, last, db); in parse_type()
2122 if (first+1 != last) in parse_type()
2124 t = parse_source_name(first+1, last, db); in parse_type()
2127 const char* t2 = parse_type(t, last, db); in parse_type()
2159 if (first+1 != last && first[1] == 't') in parse_type()
2161 t = parse_name(first, last, db); in parse_type()
2172 t = parse_substitution(first, last, db); in parse_type()
2178 t = parse_template_args(first, last, db); in parse_type()
2194 if (first+1 != last) in parse_type()
2201 t = parse_type(first+2, last, db); in parse_type()
2215 t = parse_decltype(first, last, db); in parse_type()
2226 t = parse_vector_type(first, last, db); in parse_type()
2242 t = parse_builtin_type(first, last, db); in parse_type()
2249 t = parse_name(first, last, db); in parse_type()
2322 parse_operator_name(const char* first, const char* last, C& db) in parse_operator_name() argument
2324 if (last - first >= 2) in parse_operator_name()
2369 const char* t = parse_type(first+2, last, db); in parse_operator_name()
2454 const char* t = parse_source_name(first+2, last, db); in parse_operator_name()
2605 const char* t = parse_source_name(first+2, last, db); in parse_operator_name()
2622 parse_integer_literal(const char* first, const char* last, const typename C::String& lit, C& db) in parse_integer_literal() argument
2624 const char* t = parse_number(first, last); in parse_integer_literal()
2625 if (t != first && t != last && *t == 'E') in parse_integer_literal()
2653 parse_expr_primary(const char* first, const char* last, C& db) in parse_expr_primary() argument
2655 if (last - first >= 4 && *first == 'L') in parse_expr_primary()
2661 const char* t = parse_integer_literal(first+2, last, "wchar_t", db); in parse_expr_primary()
2684 const char* t = parse_integer_literal(first+2, last, "char", db); in parse_expr_primary()
2691 const char* t = parse_integer_literal(first+2, last, "signed char", db); in parse_expr_primary()
2698 const char* t = parse_integer_literal(first+2, last, "unsigned char", db); in parse_expr_primary()
2705 const char* t = parse_integer_literal(first+2, last, "short", db); in parse_expr_primary()
2712 const char* t = parse_integer_literal(first+2, last, "unsigned short", db); in parse_expr_primary()
2719 const char* t = parse_integer_literal(first+2, last, "", db); in parse_expr_primary()
2726 const char* t = parse_integer_literal(first+2, last, "u", db); in parse_expr_primary()
2733 const char* t = parse_integer_literal(first+2, last, "l", db); in parse_expr_primary()
2740 const char* t = parse_integer_literal(first+2, last, "ul", db); in parse_expr_primary()
2747 const char* t = parse_integer_literal(first+2, last, "ll", db); in parse_expr_primary()
2754 const char* t = parse_integer_literal(first+2, last, "ull", db); in parse_expr_primary()
2761 const char* t = parse_integer_literal(first+2, last, "__int128", db); in parse_expr_primary()
2768 const char* t = parse_integer_literal(first+2, last, "unsigned __int128", db); in parse_expr_primary()
2775 const char* t = parse_floating_number<float>(first+2, last, db); in parse_expr_primary()
2782 const char* t = parse_floating_number<double>(first+2, last, db); in parse_expr_primary()
2789 const char* t = parse_floating_number<long double>(first+2, last, db); in parse_expr_primary()
2797 const char* t = parse_encoding(first+3, last, db); in parse_expr_primary()
2798 if (t != first+3 && t != last && *t == 'E') in parse_expr_primary()
2809 const char* t = parse_type(first+1, last, db); in parse_expr_primary()
2810 if (t != first+1 && t != last) in parse_expr_primary()
2815 for (; n != last && isdigit(*n); ++n) in parse_expr_primary()
2817 if (n != t && n != last && *n == 'E') in parse_expr_primary()
2908 parse_ctor_dtor_name(const char* first, const char* last, C& db) in parse_ctor_dtor_name() argument
2910 if (last-first >= 2 && !db.names.empty()) in parse_ctor_dtor_name()
2958 parse_unnamed_type_name(const char* first, const char* last, C& db) in parse_unnamed_type_name() argument
2960 if (last - first > 2 && first[0] == 'U') in parse_unnamed_type_name()
2969 if (t0 == last) in parse_unnamed_type_name()
2977 while (t1 != last && std::isdigit(*t1)) in parse_unnamed_type_name()
2983 if (t0 == last || *t0 != '_') in parse_unnamed_type_name()
3002 const char* t1 = parse_type(t0, last, db); in parse_unnamed_type_name()
3016 t1 = parse_type(t0, last, db); in parse_unnamed_type_name()
3032 if (t0 == last || *t0 != 'E') in parse_unnamed_type_name()
3038 if (t0 == last) in parse_unnamed_type_name()
3046 while (t1 != last && std::isdigit(*t1)) in parse_unnamed_type_name()
3051 if (t0 == last || *t0 != '_') in parse_unnamed_type_name()
3071 parse_unqualified_name(const char* first, const char* last, C& db) in parse_unqualified_name() argument
3073 if (first != last) in parse_unqualified_name()
3080 t = parse_ctor_dtor_name(first, last, db); in parse_unqualified_name()
3085 t = parse_unnamed_type_name(first, last, db); in parse_unqualified_name()
3098 t = parse_source_name(first, last, db); in parse_unqualified_name()
3103 t = parse_operator_name(first, last, db); in parse_unqualified_name()
3118 parse_unscoped_name(const char* first, const char* last, C& db) in parse_unscoped_name() argument
3120 if (last - first >= 2) in parse_unscoped_name()
3128 if (t0 != last && *t0 == 'L') in parse_unscoped_name()
3131 const char* t1 = parse_unqualified_name(t0, last, db); in parse_unscoped_name()
3150 parse_alignof_type(const char* first, const char* last, C& db) in parse_alignof_type() argument
3152 if (last - first >= 3 && first[0] == 'a' && first[1] == 't') in parse_alignof_type()
3154 const char* t = parse_type(first+2, last, db); in parse_alignof_type()
3170 parse_alignof_expr(const char* first, const char* last, C& db) in parse_alignof_expr() argument
3172 if (last - first >= 3 && first[0] == 'a' && first[1] == 'z') in parse_alignof_expr()
3174 const char* t = parse_expression(first+2, last, db); in parse_alignof_expr()
3188 parse_noexcept_expression(const char* first, const char* last, C& db) in parse_noexcept_expression() argument
3190 const char* t1 = parse_expression(first, last, db); in parse_noexcept_expression()
3203 parse_prefix_expression(const char* first, const char* last, const typename C::String& op, C& db) in parse_prefix_expression() argument
3205 const char* t1 = parse_expression(first, last, db); in parse_prefix_expression()
3218 parse_binary_expression(const char* first, const char* last, const typename C::String& op, C& db) in parse_binary_expression() argument
3220 const char* t1 = parse_expression(first, last, db); in parse_binary_expression()
3223 const char* t2 = parse_expression(t1, last, db); in parse_binary_expression()
3288 parse_expression(const char* first, const char* last, C& db) in parse_expression() argument
3290 if (last - first >= 2) in parse_expression()
3294 if (last - first >= 4 && t[0] == 'g' && t[1] == 's') in parse_expression()
3302 first = parse_expr_primary(first, last, db); in parse_expression()
3305 first = parse_template_param(first, last, db); in parse_expression()
3308 first = parse_function_param(first, last, db); in parse_expression()
3314 t = parse_binary_expression(first+2, last, "&&", db); in parse_expression()
3319 t = parse_prefix_expression(first+2, last, "&", db); in parse_expression()
3324 t = parse_binary_expression(first+2, last, "&", db); in parse_expression()
3329 t = parse_binary_expression(first+2, last, "&=", db); in parse_expression()
3334 t = parse_binary_expression(first+2, last, "=", db); in parse_expression()
3339 first = parse_alignof_type(first, last, db); in parse_expression()
3342 first = parse_alignof_expr(first, last, db); in parse_expression()
3350 first = parse_const_cast_expr(first, last, db); in parse_expression()
3353 first = parse_call_expr(first, last, db); in parse_expression()
3356 t = parse_binary_expression(first+2, last, ",", db); in parse_expression()
3361 t = parse_prefix_expression(first+2, last, "~", db); in parse_expression()
3366 first = parse_conversion_expr(first, last, db); in parse_expression()
3375 const char* t1 = parse_expression(t+2, last, db); in parse_expression()
3387 first = parse_dynamic_cast_expr(first, last, db); in parse_expression()
3390 t = parse_prefix_expression(first+2, last, "*", db); in parse_expression()
3396 const char* t1 = parse_expression(t+2, last, db); in parse_expression()
3408 return parse_unresolved_name(first, last, db); in parse_expression()
3410 first = parse_dot_star_expr(first, last, db); in parse_expression()
3413 first = parse_dot_expr(first, last, db); in parse_expression()
3416 t = parse_binary_expression(first+2, last, "/", db); in parse_expression()
3421 t = parse_binary_expression(first+2, last, "/=", db); in parse_expression()
3431 t = parse_binary_expression(first+2, last, "^", db); in parse_expression()
3436 t = parse_binary_expression(first+2, last, "^=", db); in parse_expression()
3441 t = parse_binary_expression(first+2, last, "==", db); in parse_expression()
3451 t = parse_binary_expression(first+2, last, ">=", db); in parse_expression()
3456 t = parse_binary_expression(first+2, last, ">", db); in parse_expression()
3465 const char* t1 = parse_expression(first+2, last, db); in parse_expression()
3468 const char* t2 = parse_expression(t1, last, db); in parse_expression()
3488 t = parse_binary_expression(first+2, last, "<=", db); in parse_expression()
3493 t = parse_binary_expression(first+2, last, "<<", db); in parse_expression()
3498 t = parse_binary_expression(first+2, last, "<<=", db); in parse_expression()
3503 t = parse_binary_expression(first+2, last, "<", db); in parse_expression()
3513 t = parse_binary_expression(first+2, last, "-", db); in parse_expression()
3518 t = parse_binary_expression(first+2, last, "-=", db); in parse_expression()
3523 t = parse_binary_expression(first+2, last, "*", db); in parse_expression()
3528 t = parse_binary_expression(first+2, last, "*=", db); in parse_expression()
3533 if (first+2 != last && first[2] == '_') in parse_expression()
3535 t = parse_prefix_expression(first+3, last, "--", db); in parse_expression()
3541 const char* t1 = parse_expression(first+2, last, db); in parse_expression()
3558 first = parse_new_expr(first, last, db); in parse_expression()
3561 t = parse_binary_expression(first+2, last, "!=", db); in parse_expression()
3566 t = parse_prefix_expression(first+2, last, "-", db); in parse_expression()
3571 t = parse_prefix_expression(first+2, last, "!", db); in parse_expression()
3576 t = parse_noexcept_expression(first+2, last, db); in parse_expression()
3586 return parse_unresolved_name(first, last, db); in parse_expression()
3588 t = parse_binary_expression(first+2, last, "||", db); in parse_expression()
3593 t = parse_binary_expression(first+2, last, "|", db); in parse_expression()
3598 t = parse_binary_expression(first+2, last, "|=", db); in parse_expression()
3608 t = parse_binary_expression(first+2, last, "->*", db); in parse_expression()
3613 t = parse_binary_expression(first+2, last, "+", db); in parse_expression()
3618 t = parse_binary_expression(first+2, last, "+=", db); in parse_expression()
3623 if (first+2 != last && first[2] == '_') in parse_expression()
3625 t = parse_prefix_expression(first+3, last, "++", db); in parse_expression()
3631 const char* t1 = parse_expression(first+2, last, db); in parse_expression()
3642 t = parse_prefix_expression(first+2, last, "+", db); in parse_expression()
3647 first = parse_arrow_expr(first, last, db); in parse_expression()
3654 const char* t1 = parse_expression(first+2, last, db); in parse_expression()
3657 const char* t2 = parse_expression(t1, last, db); in parse_expression()
3660 const char* t3 = parse_expression(t2, last, db); in parse_expression()
3688 first = parse_reinterpret_cast_expr(first, last, db); in parse_expression()
3691 t = parse_binary_expression(first+2, last, "%", db); in parse_expression()
3696 t = parse_binary_expression(first+2, last, "%=", db); in parse_expression()
3701 t = parse_binary_expression(first+2, last, ">>", db); in parse_expression()
3706 t = parse_binary_expression(first+2, last, ">>=", db); in parse_expression()
3716 first = parse_static_cast_expr(first, last, db); in parse_expression()
3719 first = parse_pack_expansion(first, last, db); in parse_expression()
3722 return parse_unresolved_name(first, last, db); in parse_expression()
3724 first = parse_sizeof_type_expr(first, last, db); in parse_expression()
3727 first = parse_sizeof_expr_expr(first, last, db); in parse_expression()
3730 if (last - t >= 3) in parse_expression()
3735 first = parse_sizeof_param_pack_expr(first, last, db); in parse_expression()
3738 first = parse_sizeof_function_param_pack_expr(first, last, db); in parse_expression()
3750 first = parse_typeid_expr(first, last, db); in parse_expression()
3757 first = parse_throw_expr(first, last, db); in parse_expression()
3770 return parse_unresolved_name(first, last, db); in parse_expression()
3784 parse_template_arg(const char* first, const char* last, C& db) in parse_template_arg() argument
3786 if (first != last) in parse_template_arg()
3792 t = parse_expression(first+1, last, db); in parse_template_arg()
3795 if (t != last && *t == 'E') in parse_template_arg()
3801 if (t == last) in parse_template_arg()
3805 const char* t1 = parse_template_arg(t, last, db); in parse_template_arg()
3814 if (first+1 != last && first[1] == 'Z') in parse_template_arg()
3816 t = parse_encoding(first+2, last, db); in parse_template_arg()
3817 if (t != first+2 && t != last && *t == 'E') in parse_template_arg()
3821 first = parse_expr_primary(first, last, db); in parse_template_arg()
3825 first = parse_type(first, last, db); in parse_template_arg()
3837 parse_template_args(const char* first, const char* last, C& db) in parse_template_args() argument
3839 if (last - first >= 2 && *first == 'I') in parse_template_args()
3850 const char* t1 = parse_template_arg(t, last, db); in parse_template_args()
3854 if (t1 == t || t1 == last) in parse_template_args()
3901 parse_nested_name(const char* first, const char* last, C& db, in parse_nested_name() argument
3904 if (first != last && *first == 'N') in parse_nested_name()
3907 const char* t0 = parse_cv_qualifiers(first+1, last, cv); in parse_nested_name()
3908 if (t0 == last) in parse_nested_name()
3922 if (last - t0 >= 2 && t0[0] == 'S' && t0[1] == 't') in parse_nested_name()
3927 if (t0 == last) in parse_nested_name()
3941 if (t0 + 1 != last && t0[1] == 't') in parse_nested_name()
3943 t1 = parse_substitution(t0, last, db); in parse_nested_name()
3944 if (t1 != t0 && t1 != last) in parse_nested_name()
3962 t1 = parse_template_param(t0, last, db); in parse_nested_name()
3963 if (t1 != t0 && t1 != last) in parse_nested_name()
3979 if (t0 + 1 != last && t0[1] != 't' && t0[1] != 'T') in parse_nested_name()
3981 t1 = parse_decltype(t0, last, db); in parse_nested_name()
3982 if (t1 != t0 && t1 != last) in parse_nested_name()
3998 t1 = parse_template_args(t0, last, db); in parse_nested_name()
3999 if (t1 != t0 && t1 != last) in parse_nested_name()
4012 if (++t0 == last) in parse_nested_name()
4017 t1 = parse_unqualified_name(t0, last, db); in parse_nested_name()
4018 if (t1 != t0 && t1 != last) in parse_nested_name()
4049 parse_discriminator(const char* first, const char* last) in parse_discriminator() argument
4052 if (first != last) in parse_discriminator()
4057 if (t1 != last) in parse_discriminator()
4063 for (++t1; t1 != last && std::isdigit(*t1); ++t1) in parse_discriminator()
4065 if (t1 != last && *t1 == '_') in parse_discriminator()
4073 for (; t1 != last && std::isdigit(*t1); ++t1) in parse_discriminator()
4087 parse_local_name(const char* first, const char* last, C& db, in parse_local_name() argument
4090 if (first != last && *first == 'Z') in parse_local_name()
4092 const char* t = parse_encoding(first+1, last, db); in parse_local_name()
4093 if (t != first+1 && t != last && *t == 'E' && ++t != last) in parse_local_name()
4098 first = parse_discriminator(t+1, last); in parse_local_name()
4104 if (++t != last) in parse_local_name()
4106 const char* t1 = parse_number(t, last); in parse_local_name()
4107 if (t1 != last && *t1 == '_') in parse_local_name()
4110 t1 = parse_name(t, last, db, in parse_local_name()
4129 const char* t1 = parse_name(t, last, db, in parse_local_name()
4134 first = parse_discriminator(t1, last); in parse_local_name()
4162 parse_name(const char* first, const char* last, C& db, in parse_name() argument
4165 if (last - first >= 2) in parse_name()
4175 const char* t1 = parse_nested_name(t0, last, db, in parse_name()
4183 const char* t1 = parse_local_name(t0, last, db, in parse_name()
4191 const char* t1 = parse_unscoped_name(t0, last, db); in parse_name()
4194 if (t1 != last && *t1 == 'I') // <unscoped-template-name> <template-args> in parse_name()
4200 t1 = parse_template_args(t0, last, db); in parse_name()
4218 t1 = parse_substitution(t0, last, db); in parse_name()
4219 if (t1 != t0 && t1 != last && *t1 == 'I') in parse_name()
4222 t1 = parse_template_args(t0, last, db); in parse_name()
4253 parse_call_offset(const char* first, const char* last) in parse_call_offset() argument
4255 if (first != last) in parse_call_offset()
4261 const char* t = parse_number(first + 1, last); in parse_call_offset()
4262 if (t != first + 1 && t != last && *t == '_') in parse_call_offset()
4268 const char* t = parse_number(first + 1, last); in parse_call_offset()
4269 if (t != first + 1 && t != last && *t == '_') in parse_call_offset()
4271 const char* t2 = parse_number(++t, last); in parse_call_offset()
4272 if (t2 != t && t2 != last && *t2 == '_') in parse_call_offset()
4299 parse_special_name(const char* first, const char* last, C& db) in parse_special_name() argument
4301 if (last - first > 2) in parse_special_name()
4311 t = parse_type(first+2, last, db); in parse_special_name()
4322 t = parse_type(first+2, last, db); in parse_special_name()
4333 t = parse_type(first+2, last, db); in parse_special_name()
4344 t = parse_type(first+2, last, db); in parse_special_name()
4356 const char* t0 = parse_call_offset(first+2, last); in parse_special_name()
4359 const char* t1 = parse_call_offset(t0, last); in parse_special_name()
4362 t = parse_encoding(t1, last, db); in parse_special_name()
4374 t = parse_type(first+2, last, db); in parse_special_name()
4377 const char* t0 = parse_number(t, last); in parse_special_name()
4378 if (t0 != t && t0 != last && *t0 == '_') in parse_special_name()
4380 const char* t1 = parse_type(++t0, last, db); in parse_special_name()
4398 const char* t0 = parse_call_offset(first+1, last); in parse_special_name()
4401 t = parse_encoding(t0, last, db); in parse_special_name()
4426 t = parse_name(first+2, last, db); in parse_special_name()
4437 t = parse_name(first+2, last, db); in parse_special_name()
4479 parse_encoding(const char* first, const char* last, C& db) in parse_encoding() argument
4481 if (first != last) in parse_encoding()
4492 first = parse_special_name(first, last, db); in parse_encoding()
4497 const char* t = parse_name(first, last, db, in parse_encoding()
4503 if (t != last && *t != 'E' && *t != '.') in parse_encoding()
4516 t2 = parse_type(t, last, db); in parse_encoding()
4530 if (t != last && *t == 'v') in parse_encoding()
4540 t2 = parse_type(t, last, db); in parse_encoding()
4601 parse_block_invoke(const char* first, const char* last, C& db) in parse_block_invoke() argument
4603 if (last - first >= 13) in parse_block_invoke()
4612 if (t != last) in parse_block_invoke()
4617 if (++t == last || !std::isdigit(*t)) in parse_block_invoke()
4622 while (t != last && isdigit(*t)) in parse_block_invoke()
4638 parse_dot_suffix(const char* first, const char* last, C& db) in parse_dot_suffix() argument
4640 if (first != last && *first == '.') in parse_dot_suffix()
4644 db.names.back().first += " (" + typename C::String(first, last) + ")"; in parse_dot_suffix()
4645 first = last; in parse_dot_suffix()
4658 demangle(const char* first, const char* last, C& db, int& status) in demangle() argument
4660 if (first >= last) in demangle()
4667 if (last - first >= 4) in demangle()
4671 const char* t = parse_encoding(first+2, last, db); in demangle()
4672 if (t != first+2 && t != last && *t == '.') in demangle()
4673 t = parse_dot_suffix(t, last, db); in demangle()
4674 if (t != last) in demangle()
4679 const char* t = parse_encoding(first+4, last, db); in demangle()
4680 if (t != first+4 && t != last) in demangle()
4682 const char* t1 = parse_block_invoke(t, last, db); in demangle()
4683 if (t1 != last) in demangle()
4697 const char* t = parse_type(first, last, db); in demangle()
4698 if (t != last) in demangle()