Home | History | Annotate | Download | only in src

Lines Matching full: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)
100 for (; first != last; ++first)
109 parse_number(const char* first, const char* last)
111 if (first != last)
116 if (t != last)
125 while (first != last && std::isdigit(*first))
174 parse_floating_number(const char* first, const char* last, C& db)
177 if (static_cast<std::size_t>(last - first) > N)
179 last = first + N;
187 for (; t != last; ++t, ++e)
218 parse_source_name(const char* first, const char* last, C& db)
220 if (first != last)
223 if (isdigit(c) && first+1 != last)
230 if (++t == last)
233 if (static_cast<size_t>(last - t) >= n)
260 parse_substitution(const char* first, const char* last, C& db)
262 if (last - first >= 2)
309 for (++t; t != last && (std::isdigit(*t) || std::isupper(*t)); ++t)
317 if (t == last || *t != '_')
368 parse_builtin_type(const char* first, const char* last, C& db)
370 if (first != last)
460 const char*t = parse_source_name(first+1, last, db);
466 if (first+1 != last)
517 parse_cv_qualifiers(const char* first, const char* last, unsigned& cv)
520 if (first != last)
546 parse_template_param(const char* first, const char* last, C& db)
548 if (last - first >= 2)
573 for (++t; t != last && isdigit(*t); ++t)
578 if (t == last || *t != '_' || db.template_param.empty())
603 parse_const_cast_expr(const char* first, const char* last, C& db)
605 if (last - first >= 3 && first[0] == 'c' && first[1] == 'c')
607 const char* t = parse_type(first+2, last, db);
610 const char* t1 = parse_expression(t, last, db);
629 parse_dynamic_cast_expr(const char* first, const char* last, C& db)
631 if (last - first >= 3 && first[0] == 'd' && first[1] == 'c')
633 const char* t = parse_type(first+2, last, db);
636 const char* t1 = parse_expression(t, last, db);
655 parse_reinterpret_cast_expr(const char* first, const char* last, C& db)
657 if (last - first >= 3 && first[0] == 'r' && first[1] == 'c')
659 const char* t = parse_type(first+2, last, db);
662 const char* t1 = parse_expression(t, last, db);
681 parse_static_cast_expr(const char* first, const char* last, C& db)
683 if (last - first >= 3 && first[0] == 's' && first[1] == 'c')
685 const char* t = parse_type(first+2, last, db);
688 const char* t1 = parse_expression(t, last, db);
707 parse_pack_expansion(const char* first, const char* last, C& db)
709 if (last - first >= 3 && first[0] == 's' && first[1] == 'p')
711 const char* t = parse_expression(first+2, last, db);
722 parse_sizeof_type_expr(const char* first, const char* last, C& db)
724 if (last - first >= 3 && first[0] == 's' && first[1] == 't')
726 const char* t = parse_type(first+2, last, db);
742 parse_sizeof_expr_expr(const char* first, const char* last, C& db)
744 if (last - first >= 3 && first[0] == 's' && first[1] == 'z')
746 const char* t = parse_expression(first+2, last, db);
762 parse_sizeof_param_pack_expr(const char* first, const char* last, C& db)
764 if (last - first >= 3 && first[0] == 's' && first[1] == 'Z' && first[2] == 'T')
767 const char* t = parse_template_param(first+2, last, db);
796 parse_function_param(const char* first, const char* last, C& db)
798 if (last - first >= 3 && *first == 'f')
803 const char* t = parse_cv_qualifiers(first+2, last, cv);
804 const char* t1 = parse_number(t, last);
805 if (t1 != last && *t1 == '_')
814 const char* t0 = parse_number(first+2, last);
815 if (t0 != last && *t0 == 'p')
818 const char* t = parse_cv_qualifiers(t0, last, cv);
819 const char* t1 = parse_number(t, last);
820 if (t1 != last && *t1 == '_')
835 parse_sizeof_function_param_pack_expr(const char* first, const char* last, C& db)
837 if (last - first >= 3 && first[0] == 's' && first[1] == 'Z' && first[2] == 'f')
839 const char* t = parse_function_param(first+2, last, db);
856 parse_typeid_expr(const char* first, const char* last, C& db)
858 if (last - first >= 3 && first[0] == 't' && (first[1] == 'e' || first[1] == 'i'))
862 t = parse_expression(first+2, last, db);
864 t = parse_type(first+2, last, db);
880 parse_throw_expr(const char* first, const char* last, C& db)
882 if (last - first >= 3 && first[0] == 't' && first[1] == 'w')
884 const char* t = parse_expression(first+2, last, db);
900 parse_dot_star_expr(const char* first, const char* last, C& db)
902 if (last - first >= 3 && first[0] == 'd' && first[1] == 's')
904 const char* t = parse_expression(first+2, last, db);
907 const char* t1 = parse_expression(t, last, db);
926 parse_simple_id(const char* first, const char* last, C& db)
928 if (first != last)
930 const char* t = parse_source_name(first, last, db);
933 const char* t1 = parse_template_args(t, last, db);
956 parse_unresolved_type(const char* first, const char* last, C& db)
958 if (first != last)
966 t = parse_template_param(first, last, db);
981 t = parse_decltype(first, last, db);
991 t = parse_substitution(first, last, db);
996 if (last - first > 2 && first[1] == 't')
998 t = parse_unqualified_name(first+2, last, db);
1020 parse_destructor_name(const char* first, const char* last, C& db)
1022 if (first != last)
1024 const char* t = parse_unresolved_type(first, last, db);
1026 t = parse_simple_id(first, last, db);
1048 parse_base_unresolved_name(const char* first, const char* last, C& db)
1050 if (last - first >= 2)
1056 const char* t = parse_operator_name(first+2, last, db);
1059 first = parse_template_args(t, last, db);
1072 const char* t = parse_destructor_name(first+2, last, db);
1079 const char* t = parse_simple_id(first, last, db);
1082 t = parse_operator_name(first, last, db);
1085 first = parse_template_args(t, last, db);
1107 parse_unresolved_qualifier_level(const char* first, const char* last, C& db)
1109 return parse_simple_id(first, last, db);
1124 parse_unresolved_name(const char* first, const char* last, C& db)
1126 if (last - first > 2)
1135 const char* t2 = parse_base_unresolved_name(t, last, db);
1146 else if (last - t > 2 && t[0] == 's' && t[1] == 'r')
1151 const char* t1 = parse_unresolved_type(t, last, db);
1152 if (t1 == t || t1 == last)
1155 t1 = parse_template_args(t, last, db);
1164 if (t == last)
1172 t1 = parse_unresolved_qualifier_level(t, last, db);
1173 if (t1 == t || t1 == last || db.names.size() < 2)
1181 t1 = parse_base_unresolved_name(t, last, db);
1198 const char* t1 = parse_unresolved_type(t, last, db);
1202 t1 = parse_template_args(t, last, db);
1212 t1 = parse_base_unresolved_name(t, last, db);
1228 t1 = parse_unresolved_qualifier_level(t, last, db);
1229 if (t1 == t || t1 == last)
1240 t1 = parse_unresolved_qualifier_level(t, last, db);
1241 if (t1 == t || t1 == last || db.names.size() < 2)
1249 t1 = parse_base_unresolved_name(t, last, db);
1273 parse_dot_expr(const char* first, const char* last, C& db)
1275 if (last - first >= 3 && first[0] == 'd' && first[1] == 't')
1277 const char* t = parse_expression(first+2, last, db);
1280 const char* t1 = parse_unresolved_name(t, last, db);
1299 parse_call_expr(const char* first, const char* last, C& db)
1301 if (last - first >= 4 && first[0] == 'c' && first[1] == 'l')
1303 const char* t = parse_expression(first+2, last, db);
1306 if (t == last)
1316 const char* t1 = parse_expression(t, last, db);
1317 if (t1 == t || t1 == last)
1354 parse_new_expr(const char* first, const char* last, C& db)
1356 if (last - first >= 4)
1369 if (t == last)
1375 const char* t1 = parse_expression(t, last, db);
1376 if (t1 == t || t1 == last)
1397 const char* t1 = parse_type(t, last, db);
1398 if (t1 == t || t1 == last)
1402 if (last - t >= 3 && t[0] == 'p' && t[1] == 'i')
1409 t1 = parse_expression(t, last, db);
1410 if (t1 == t || t1 == last)
1476 parse_conversion_expr(const char* first, const char* last, C& db)
1478 if (last - first >= 3 && first[0] == 'c' && first[1] == 'v')
1482 const char* t = parse_type(first+2, last, db);
1484 if (t != first+2 && t != last)
1488 const char* t1 = parse_expression(t, last, db);
1496 if (t == last)
1505 const char* t1 = parse_expression(t, last, db);
1506 if (t1 == t || t1 == last)
1543 parse_arrow_expr(const char* first, const char* last, C& db)
1545 if (last - first >= 3 && first[0] == 'p' && first[1] == 't')
1547 const char* t = parse_expression(first+2, last, db);
1550 const char* t1 = parse_expression(t, last, db);
1573 parse_function_type(const char* first, const char* last, C& db)
1575 if (first != last && *first == 'F')
1578 if (t != last)
1583 if (++t == last)
1586 const char* t1 = parse_type(t, last, db);
1594 if (t == last)
1609 if (*t == 'R' && t+1 != last && t[1] == 'E')
1615 if (*t == 'O' && t+1 != last && t[1] == 'E')
1622 t1 = parse_type(t, last, db);
1624 if (t1 == t || t1 == last)
1661 parse_pointer_to_member_type(const char* first, const char* last, C& db)
1663 if (first != last && *first == 'M')
1665 const char* t = parse_type(first+1, last, db);
1668 const char* t2 = parse_type(t, last, db);
1698 parse_array_type(const char* first, const char* last, C& db)
1700 if (first != last && *first == 'A' && first+1 != last)
1704 const char* t = parse_type(first+2, last, db);
1717 const char* t = parse_number(first+1, last);
1718 if (t != last && *t == '_')
1720 const char* t2 = parse_type(t+1, last, db);
1734 const char* t = parse_expression(first+1, last, db);
1735 if (t != first+1 && t != last && *t == '_')
1737 const char* t2 = parse_type(++t, last, db);
1762 parse_decltype(const char* first, const char* last, C& db)
1764 if (last - first >= 4 && first[0] == 'D')
1771 const char* t = parse_expression(first+2, last, db);
1772 if (t != first+2 && t != last && *t == 'E')
1795 parse_vector_type(const char* first, const char* last, C& db)
1797 if (last - first > 3 && first[0] == 'D' && first[1] == 'v')
1801 const char* t = parse_number(first+2, last);
1802 if (t == last || *t != '_')
1806 if (++t != last)
1810 const char* t1 = parse_type(t, last, db);
1833 const char* t = parse_expression(t1, last, db);
1843 if (t1 != last && *t1 == '_' && ++t1 != last)
1845 const char* t = parse_type(t1, last, db);
1884 parse_type(const char* first, const char* last, C& db)
1886 if (first != last)
1895 const char* t = parse_cv_qualifiers(first, last, cv);
1900 const char* t1 = parse_type(t, last, db);
1947 const char* t = parse_builtin_type(first, last, db);
1957 t = parse_array_type(first, last, db);
1967 t = parse_type(first+1, last, db);
1978 t = parse_function_type(first, last, db);
1988 t = parse_type(first+1, last, db);
1999 t = parse_pointer_to_member_type(first, last, db);
2011 t = parse_type(first+1, last, db);
2039 t = parse_type(first+1, last, db);
2074 t = parse_type(first+1, last, db);
2102 t = parse_template_param(first, last, db);
2111 const char* t1 = parse_template_args(t, last, db);
2126 if (first+1 != last)
2128 t = parse_source_name(first+1, last, db);
2131 const char* t2 = parse_type(t, last, db);
2163 if (first+1 != last && first[1] == 't')
2165 t = parse_name(first, last, db);
2176 t = parse_substitution(first, last, db);
2182 t = parse_template_args(first, last, db);
2198 if (first+1 != last)
2205 t = parse_type(first+2, last, db);
2219 t = parse_decltype(first, last, db);
2230 t = parse_vector_type(first, last, db);
2246 t = parse_builtin_type(first, last, db);
2253 t = parse_name(first, last, db);
2326 parse_operator_name(const char* first, const char* last, C& db)
2328 if (last - first >= 2)
2373 const char* t = parse_type(first+2, last, db);
2458 const char* t = parse_source_name(first+2, last, db);
2609 const char* t = parse_source_name(first+2, last, db);
2626 parse_integer_literal(const char* first, const char* last, const typename C::String& lit, C& db)
2628 const char* t = parse_number(first, last);
2629 if (t != first && t != last && *t == 'E')
2657 parse_expr_primary(const char* first, const char* last, C& db)
2659 if (last - first >= 4 && *first == 'L')
2665 const char* t = parse_integer_literal(first+2, last, "wchar_t", db);
2688 const char* t = parse_integer_literal(first+2, last, "char", db);
2695 const char* t = parse_integer_literal(first+2, last, "signed char", db);
2702 const char* t = parse_integer_literal(first+2, last, "unsigned char", db);
2709 const char* t = parse_integer_literal(first+2, last, "short", db);
2716 const char* t = parse_integer_literal(first+2, last, "unsigned short", db);
2723 const char* t = parse_integer_literal(first+2, last, "", db);
2730 const char* t = parse_integer_literal(first+2, last, "u", db);
2737 const char* t = parse_integer_literal(first+2, last, "l", db);
2744 const char* t = parse_integer_literal(first+2, last, "ul", db);
2751 const char* t = parse_integer_literal(first+2, last, "ll", db);
2758 const char* t = parse_integer_literal(first+2, last, "ull", db);
2765 const char* t = parse_integer_literal(first+2, last, "__int128", db);
2772 const char* t = parse_integer_literal(first+2, last, "unsigned __int128", db);
2779 const char* t = parse_floating_number<float>(first+2, last, db);
2786 const char* t = parse_floating_number<double>(first+2, last, db);
2793 const char* t = parse_floating_number<long double>(first+2, last, db);
2801 const char* t = parse_encoding(first+3, last, db);
2802 if (t != first+3 && t != last && *t == 'E')
2813 const char* t = parse_type(first+1, last, db);
2814 if (t != first+1 && t != last)
2819 for (; n != last && isdigit(*n); ++n)
2821 if (n != t && n != last && *n == 'E')
2912 parse_ctor_dtor_name(const char* first, const char* last, C& db)
2914 if (last-first >= 2 && !db.names.empty())
2962 parse_unnamed_type_name(const char* first, const char* last, C& db)
2964 if (last - first > 2 && first[0] == 'U')
2973 if (t0 == last)
2981 while (t1 != last && std::isdigit(*t1))
2987 if (t0 == last || *t0 != '_')
3006 const char* t1 = parse_type(t0, last, db);
3020 t1 = parse_type(t0, last, db);
3036 if (t0 == last || *t0 != 'E')
3042 if (t0 == last)
3050 while (t1 != last && std::isdigit(*t1))
3055 if (t0 == last || *t0 != '_')
3075 parse_unqualified_name(const char* first, const char* last, C& db)
3077 if (first != last)
3084 t = parse_ctor_dtor_name(first, last, db);
3089 t = parse_unnamed_type_name(first, last, db);
3102 t = parse_source_name(first, last, db);
3107 t = parse_operator_name(first, last, db);
3122 parse_unscoped_name(const char* first, const char* last, C& db)
3124 if (last - first >= 2)
3132 if (t0 != last && *t0 == 'L')
3135 const char* t1 = parse_unqualified_name(t0, last, db);
3154 parse_alignof_type(const char* first, const char* last, C& db)
3156 if (last - first >= 3 && first[0] == 'a' && first[1] == 't')
3158 const char* t = parse_type(first+2, last, db);
3174 parse_alignof_expr(const char* first, const char* last, C& db)
3176 if (last - first >= 3 && first[0] == 'a' && first[1] == 'z')
3178 const char* t = parse_expression(first+2, last, db);
3192 parse_noexcept_expression(const char* first, const char* last, C& db)
3194 const char* t1 = parse_expression(first, last, db);
3207 parse_prefix_expression(const char* first, const char* last, const typename C::String& op, C& db)
3209 const char* t1 = parse_expression(first, last, db);
3222 parse_binary_expression(const char* first, const char* last, const typename C::String& op, C& db)
3224 const char* t1 = parse_expression(first, last, db);
3227 const char* t2 = parse_expression(t1, last, db);
3292 parse_expression(const char* first, const char* last, C& db)
3294 if (last - first >= 2)
3298 if (last - first >= 4 && t[0] == 'g' && t[1] == 's')
3306 first = parse_expr_primary(first, last, db);
3309 first = parse_template_param(first, last, db);
3312 first = parse_function_param(first, last, db);
3318 t = parse_binary_expression(first+2, last, "&&", db);
3323 t = parse_prefix_expression(first+2, last, "&", db);
3328 t = parse_binary_expression(first+2, last, "&", db);
3333 t = parse_binary_expression(first+2, last, "&=", db);
3338 t = parse_binary_expression(first+2, last, "=", db);
3343 first = parse_alignof_type(first, last, db);
3346 first = parse_alignof_expr(first, last, db);
3354 first = parse_const_cast_expr(first, last, db);
3357 first = parse_call_expr(first, last, db);
3360 t = parse_binary_expression(first+2, last, ",", db);
3365 t = parse_prefix_expression(first+2, last, "~", db);
3370 first = parse_conversion_expr(first, last, db);
3379 const char* t1 = parse_expression(t+2, last, db);
3391 first = parse_dynamic_cast_expr(first, last, db);
3394 t = parse_prefix_expression(first+2, last, "*", db);
3400 const char* t1 = parse_expression(t+2, last, db);
3412 return parse_unresolved_name(first, last, db);
3414 first = parse_dot_star_expr(first, last, db);
3417 first = parse_dot_expr(first, last, db);
3420 t = parse_binary_expression(first+2, last, "/", db);
3425 t = parse_binary_expression(first+2, last, "/=", db);
3435 t = parse_binary_expression(first+2, last, "^", db);
3440 t = parse_binary_expression(first+2, last, "^=", db);
3445 t = parse_binary_expression(first+2, last, "==", db);
3455 t = parse_binary_expression(first+2, last, ">=", db);
3460 t = parse_binary_expression(first+2, last, ">", db);
3469 const char* t1 = parse_expression(first+2, last, db);
3472 const char* t2 = parse_expression(t1, last, db);
3492 t = parse_binary_expression(first+2, last, "<=", db);
3497 t = parse_binary_expression(first+2, last, "<<", db);
3502 t = parse_binary_expression(first+2, last, "<<=", db);
3507 t = parse_binary_expression(first+2, last, "<", db);
3517 t = parse_binary_expression(first+2, last, "-", db);
3522 t = parse_binary_expression(first+2, last, "-=", db);
3527 t = parse_binary_expression(first+2, last, "*", db);
3532 t = parse_binary_expression(first+2, last, "*=", db);
3537 if (first+2 != last && first[2] == '_')
3539 t = parse_prefix_expression(first+3, last, "--", db);
3545 const char* t1 = parse_expression(first+2, last, db);
3562 first = parse_new_expr(first, last, db);
3565 t = parse_binary_expression(first+2, last, "!=", db);
3570 t = parse_prefix_expression(first+2, last, "-", db);
3575 t = parse_prefix_expression(first+2, last, "!", db);
3580 t = parse_noexcept_expression(first+2, last, db);
3590 return parse_unresolved_name(first, last, db);
3592 t = parse_binary_expression(first+2, last, "||", db);
3597 t = parse_binary_expression(first+2, last, "|", db);
3602 t = parse_binary_expression(first+2, last, "|=", db);
3612 t = parse_binary_expression(first+2, last, "->*", db);
3617 t = parse_binary_expression(first+2, last, "+", db);
3622 t = parse_binary_expression(first+2, last, "+=", db);
3627 if (first+2 != last && first[2] == '_')
3629 t = parse_prefix_expression(first+3, last, "++", db);
3635 const char* t1 = parse_expression(first+2, last, db);
3646 t = parse_prefix_expression(first+2, last, "+", db);
3651 first = parse_arrow_expr(first, last, db);
3658 const char* t1 = parse_expression(first+2, last, db);
3661 const char* t2 = parse_expression(t1, last, db);
3664 const char* t3 = parse_expression(t2, last, db);
3692 first = parse_reinterpret_cast_expr(first, last, db);
3695 t = parse_binary_expression(first+2, last, "%", db);
3700 t = parse_binary_expression(first+2, last, "%=", db);
3705 t = parse_binary_expression(first+2, last, ">>", db);
3710 t = parse_binary_expression(first+2, last, ">>=", db);
3720 first = parse_static_cast_expr(first, last, db);
3723 first = parse_pack_expansion(first, last, db);
3726 return parse_unresolved_name(first, last, db);
3728 first = parse_sizeof_type_expr(first, last, db);
3731 first = parse_sizeof_expr_expr(first, last, db);
3734 if (last - t >= 3)
3739 first = parse_sizeof_param_pack_expr(first, last, db);
3742 first = parse_sizeof_function_param_pack_expr(first, last, db);
3754 first = parse_typeid_expr(first, last, db);
3761 first = parse_throw_expr(first, last, db);
3774 return parse_unresolved_name(first, last, db);
3788 parse_template_arg(const char* first, const char* last, C& db)
3790 if (first != last)
3796 t = parse_expression(first+1, last, db);
3799 if (t != last && *t == 'E')
3805 if (t == last)
3809 const char* t1 = parse_template_arg(t, last, db);
3818 if (first+1 != last && first[1] == 'Z')
3820 t = parse_encoding(first+2, last, db);
3821 if (t != first+2 && t != last && *t == 'E')
3825 first = parse_expr_primary(first, last, db);
3829 first = parse_type(first, last, db);
3841 parse_template_args(const char* first, const char* last, C& db)
3843 if (last - first >= 2 && *first == 'I')
3854 const char* t1 = parse_template_arg(t, last, db);
3858 if (t1 == t || t1 == last)
3905 parse_nested_name(const char* first, const char* last, C& db,
3908 last && *first == 'N')
3911 const char* t0 = parse_cv_qualifiers(first+1, last, cv);
3912 if (t0 == last)
3926 if (last - t0 >= 2 && t0[0] == 'S' && t0[1] == 't')
3931 if (t0 == last)
3945 if (t0 + 1 != last && t0[1] == 't')
3947 t1 = parse_substitution(t0, last, db);
3948 if (t1 != t0 && t1 != last)
3966 t1 = parse_template_param(t0, last, db);
3967 if (t1 != t0 && t1 != last)
3983 if (t0 + 1 != last && t0[1] != 't' && t0[1] != 'T')
3985 t1 = parse_decltype(t0, last, db);
3986 if (t1 != t0 && t1 != last)
4002 t1 = parse_template_args(t0, last, db);
4003 if (t1 != t0 && t1 != last)
4016 if (++t0 == last)
4021 t1 = parse_unqualified_name(t0, last, db);
4022 if (t1 != t0 && t1 != last)
4053 parse_discriminator(const char* first, const char* last)
4056 if (first != last)
4061 if (t1 != last)
4067 for (++t1; t1 != last && std::isdigit(*t1); ++t1)
4069 if (t1 != last && *t1 == '_')
4077 for (; t1 != last && std::isdigit(*t1); ++t1)
4091 parse_local_name(const char* first, const char* last, C& db,
4094 if (first != last && *first == 'Z')
4096 const char* t = parse_encoding(first+1, last, db);
4097 if (t != first+1 && t != last && *t == 'E' && ++t != last)
4102 first = parse_discriminator(t+1, last);
4108 if (++t != last)
4110 const char* t1 = parse_number(t, last);
4111 if (t1 != last && *t1 == '_')
4114 t1 = parse_name(t, last, db,
4133 const char* t1 = parse_name(t, last, db,
4138 first = parse_discriminator(t1, last);
4166 parse_name(const char* first, const char* last, C& db,
4169 if (last - first >= 2)
4179 const char* t1 = parse_nested_name(t0, last, db,
4187 const char* t1 = parse_local_name(t0, last, db,
4195 const char* t1 = parse_unscoped_name(t0, last, db);
4198 if (t1 != last && *t1 == 'I') // <unscoped-template-name> <template-args>
4204 t1 = parse_template_args(t0, last, db);
4222 t1 = parse_substitution(t0, last, db);
4223 if (t1 != t0 && t1 != last && *t1 == 'I')
4226 t1 = parse_template_args(t0, last, db);
4257 parse_call_offset(const char* first, const char* last)
4259 if (first != last)
4265 const char* t = parse_number(first + 1, last);
4266 if (t != first + 1 && t != last && *t == '_')
4272 const char* t = parse_number(first + 1, last);
4273 if (t != first + 1 && t != last && *t == '_')
4275 const char* t2 = parse_number(++t, last);
4276 if (t2 != t && t2 != last && *t2 == '_')
4303 parse_special_name(const char* first, const char* last, C& db)
4305 if (last - first > 2)
4315 t = parse_type(first+2, last, db);
4326 t = parse_type(first+2, last, db);
4337 t = parse_type(first+2, last, db);
4348 t = parse_type(first+2, last, db);
4360 const char* t0 = parse_call_offset(first+2, last);
4363 const char* t1 = parse_call_offset(t0, last);
4366 t = parse_encoding(t1, last, db);
4378 t = parse_type(first+2, last, db);
4381 const char* t0 = parse_number(t, last);
4382 if (t0 != t && t0 != last && *t0 == '_')
4384 const char* t1 = parse_type(++t0, last, db);
4402 const char* t0 = parse_call_offset(first+1, last);
4405 t = parse_encoding(t0, last, db);
4430 t = parse_name(first+2, last, db);
4441 t = parse_name(first+2, last, db);
4483 parse_encoding(const char* first, const char* last, C& db)
4485 if (first != last)
4496 first = parse_special_name(first, last, db);
4501 const char* t = parse_name(first, last, db,
4507 if (t != last && *t != 'E' && *t != '.')
4520 t2 = parse_type(t, last, db);
4534 if (t != last && *t == 'v')
4544 t2 = parse_type(t, last, db);
4605 parse_block_invoke(const char* first, const char* last, C& db)
4607 if (last - first >= 13)
4616 if (t != last)
4621 if (++t == last || !std::isdigit(*t))
4626 while (t != last && isdigit(*t))
4642 parse_dot_suffix(const char* first, const char* last, C& db)
4644 if (first != last && *first == '.')
4648 db.names.back().first += " (" + typename C::String(first, last) + ")";
4649 first = last;
4662 demangle(const char* first, const char* last, C& db, int& status)
4664 if (first >= last)
4671 if (last - first >= 4)
4675 const char* t = parse_encoding(first+2, last, db);
4676 if (t != first+2 && t != last && *t == '.')
4677 t = parse_dot_suffix(t, last, db);
4678 if (t != last)
4683 const char* t = parse_encoding(first+4, last, db);
4684 if (t != first+4 && t != last)
4686 const char* t1 = parse_block_invoke(t, last, db);
4687 if (t1 != last)
4701 const char* t = parse_type(first, last, db);
4702 if (t != last)