Lines Matching refs:st

99 rust_demangle_v0(rust_state_t *restrict st, strview_t *restrict sv)  in rust_demangle_v0()  argument
106 st->rs_error = EINVAL; in rust_demangle_v0()
118 if (!rustv0_parse_path(st, sv, B_TRUE)) in rust_demangle_v0()
122 SKIP_BEGIN(st, save_skip); in rust_demangle_v0()
123 ret = OPTIONAL(st, rustv0_parse_path(st, sv, B_FALSE)); in rust_demangle_v0()
124 SKIP_END(st, save_skip); in rust_demangle_v0()
130 return (!HAS_ERROR(st)); in rust_demangle_v0()
143 return (!HAS_ERROR(st)); in rust_demangle_v0()
148 st->rs_error = EINVAL; in rust_demangle_v0()
152 return (rust_append_sv(st, sv_remaining(sv), sv)); in rust_demangle_v0()
160 rustv0_parse_opt_list(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_opt_list() argument
175 if (count > 0 && !rust_append(st, sep)) in rustv0_parse_opt_list()
178 if (!fn(st, sv, bval)) in rustv0_parse_opt_list()
192 rustv0_parse_uint_type(rust_state_t *restrict st, strview_t *sv) in rustv0_parse_uint_type() argument
198 if (HAS_ERROR(st) || sv_remaining(sv) == 0) in rustv0_parse_uint_type()
228 return (rust_append(st, str)); in rustv0_parse_uint_type()
232 rustv0_parse_basic_type(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_basic_type() argument
238 if (HAS_ERROR(st) || sv_remaining(sv) == 0) in rustv0_parse_basic_type()
241 if (rustv0_parse_uint_type(st, sv)) in rustv0_parse_basic_type()
298 return (rust_append(st, str)); in rustv0_parse_basic_type()
302 rustv0_parse_type(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_type() argument
310 if (HAS_ERROR(st)) in rustv0_parse_type()
318 SAVE_LEN(st, len); in rustv0_parse_type()
323 ret = rust_appendc(st, '[') && in rustv0_parse_type()
324 rustv0_parse_type(st, sv, B_FALSE) && in rustv0_parse_type()
325 rust_append(st, "; ") && in rustv0_parse_type()
326 rustv0_parse_const(st, sv, B_FALSE) && in rustv0_parse_type()
327 rust_appendc(st, ']'); in rustv0_parse_type()
330 ret = rust_appendc(st, '[') && in rustv0_parse_type()
331 rustv0_parse_type(st, sv, B_FALSE) && in rustv0_parse_type()
332 rust_appendc(st, ']'); in rustv0_parse_type()
336 ret = rust_appendc(st, '(') && in rustv0_parse_type()
337 rustv0_parse_opt_list(st, sv, rustv0_parse_type, ", ", in rustv0_parse_type()
339 rust_append(st, (tuple_elem_count == 1) ? ",)" : ")"); in rustv0_parse_type()
344 if (!(ret = rust_appendc(st, '&'))) in rustv0_parse_type()
351 if (rustv0_parse_lifetime(st, sv)) { in rustv0_parse_type()
352 if (!(ret = rust_appendc(st, ' '))) in rustv0_parse_type()
354 } else if (HAS_ERROR(st)) { in rustv0_parse_type()
358 ret = rust_append(st, (c == 'Q') ? "mut " : "") && in rustv0_parse_type()
359 rustv0_parse_type(st, sv, B_FALSE); in rustv0_parse_type()
362 ret = rust_append(st, "*const ") && in rustv0_parse_type()
363 rustv0_parse_type(st, sv, B_FALSE); in rustv0_parse_type()
366 ret = rust_append(st, "*mut ") && in rustv0_parse_type()
367 rustv0_parse_type(st, sv, B_FALSE); in rustv0_parse_type()
370 ret = rustv0_parse_fnsig(st, sv); in rustv0_parse_type()
373 ret = rust_append(st, "dyn ") && in rustv0_parse_type()
374 rustv0_parse_dynbounds(st, sv); in rustv0_parse_type()
396 !(ret = rust_append(st, " + "))) in rustv0_parse_type()
399 ret = rustv0_parse_lifetime(st, sv); in rustv0_parse_type()
404 ret = rustv0_parse_backref(st, sv, rustv0_parse_type, in rustv0_parse_type()
406 rustv0_parse_basic_type(st, sv); in rustv0_parse_type()
410 ret = rustv0_parse_path(st, sv, B_FALSE); in rustv0_parse_type()
414 DEMDEBUG("%s: type='%.*s' (%s)", __func__, CSTR_END(st, len), in rustv0_parse_type()
430 rustv0_parse_path(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_path() argument
438 boolean_t args_stay_save = st->rs_args_stay_open; in rustv0_parse_path()
439 boolean_t args_open_save = st->rs_args_is_open; in rustv0_parse_path()
441 if (HAS_ERROR(st)) in rustv0_parse_path()
449 SAVE_LEN(st, len); in rustv0_parse_path()
454 if (!OPTIONAL(st, rustv0_parse_disambiguator(st, sv, &disamb))) in rustv0_parse_path()
457 if (!rustv0_parse_undisambiguated_identifier(st, sv, B_FALSE)) in rustv0_parse_path()
460 if (st->rs_verbose && in rustv0_parse_path()
461 !rust_append_printf(st, "[%" PRIx64 "]", disamb)) in rustv0_parse_path()
465 SKIP_BEGIN(st, save_skip); in rustv0_parse_path()
466 if (!rustv0_parse_impl_path(st, sv, in_value)) { in rustv0_parse_path()
467 SKIP_END(st, save_skip); in rustv0_parse_path()
470 SKIP_END(st, save_skip); in rustv0_parse_path()
472 if (!rust_appendc(st, '<') || in rustv0_parse_path()
473 !rustv0_parse_type(st, sv, B_FALSE) || in rustv0_parse_path()
474 !rust_appendc(st, '>')) in rustv0_parse_path()
478 SKIP_BEGIN(st, save_skip); in rustv0_parse_path()
479 if (!rustv0_parse_impl_path(st, sv, in_value)) { in rustv0_parse_path()
480 SKIP_END(st, save_skip); in rustv0_parse_path()
483 SKIP_END(st, save_skip); in rustv0_parse_path()
486 if (!rust_appendc(st, '<') || in rustv0_parse_path()
487 !rustv0_parse_type(st, sv, B_FALSE) || in rustv0_parse_path()
488 !rust_append(st, " as ") || in rustv0_parse_path()
489 !rustv0_parse_path(st, sv, B_FALSE) || in rustv0_parse_path()
490 !rust_appendc(st, '>')) in rustv0_parse_path()
494 if (!rustv0_parse_nested_path(st, sv, in_value)) in rustv0_parse_path()
498 st->rs_args_stay_open = B_FALSE; in rustv0_parse_path()
499 st->rs_args_is_open = B_FALSE; in rustv0_parse_path()
501 if (!rustv0_parse_path(st, sv, in_value)) in rustv0_parse_path()
504 if (in_value && !rust_append(st, "::")) in rustv0_parse_path()
507 if (!rust_appendc(st, '<') || in rustv0_parse_path()
508 !rustv0_parse_opt_list(st, sv, rustv0_parse_generic_arg, in rustv0_parse_path()
512 st->rs_args_stay_open = args_stay_save; in rustv0_parse_path()
513 st->rs_args_is_open = args_open_save; in rustv0_parse_path()
519 if (st->rs_args_stay_open) { in rustv0_parse_path()
520 st->rs_args_stay_open = B_FALSE; in rustv0_parse_path()
521 st->rs_args_is_open = B_TRUE; in rustv0_parse_path()
522 } else if (!rust_appendc(st, '>')) { in rustv0_parse_path()
532 if (!rustv0_parse_backref(st, sv, rustv0_parse_path, in_value)) in rustv0_parse_path()
539 DEMDEBUG("%s: path='%.*s' (%s)", __func__, CSTR_END(st, len), in rustv0_parse_path()
546 rustv0_parse_impl_path(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_impl_path() argument
551 return (OPTIONAL(st, rustv0_parse_disambiguator(st, sv, &val)) && in rustv0_parse_impl_path()
552 rustv0_parse_path(st, sv, in_value)); in rustv0_parse_impl_path()
562 rustv0_has_name(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_has_name() argument
567 if (HAS_ERROR(st)) in rustv0_has_name()
581 st->rs_error = EINVAL; in rustv0_has_name()
595 rustv0_parse_nested_path(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_nested_path() argument
604 if (HAS_ERROR(st)) in rustv0_parse_nested_path()
612 SAVE_LEN(st, len); in rustv0_parse_nested_path()
616 if (!rustv0_parse_path(st, sv, in_value)) in rustv0_parse_nested_path()
619 if (!OPTIONAL(st, rustv0_parse_disambiguator(st, sv, &disambiguator))) in rustv0_parse_nested_path()
622 if (!rustv0_has_name(st, sv, &has_name)) in rustv0_parse_nested_path()
626 if (!rust_append(st, "::{")) in rustv0_parse_nested_path()
631 if (!rust_append(st, "closure")) in rustv0_parse_nested_path()
635 if (!rust_append(st, "shim")) in rustv0_parse_nested_path()
639 if (!rust_appendc(st, ns)) in rustv0_parse_nested_path()
644 if (has_name && !rust_appendc(st, ':')) in rustv0_parse_nested_path()
647 if (!rustv0_parse_undisambiguated_identifier(st, sv, B_FALSE)) in rustv0_parse_nested_path()
650 ret = rust_append_printf(st, "#%" PRIu64 "}", disambiguator); in rustv0_parse_nested_path()
653 if (!(ret = rust_append(st, "::"))) in rustv0_parse_nested_path()
656 ret = rustv0_parse_undisambiguated_identifier(st, sv, B_FALSE); in rustv0_parse_nested_path()
660 DEMDEBUG("%s: nested path = '%.*s' (%s)", __func__, CSTR_END(st, len), in rustv0_parse_nested_path()
671 rustv0_parse_disambiguator(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_disambiguator() argument
674 if (HAS_ERROR(st) || sv_remaining(sv) < 2) in rustv0_parse_disambiguator()
684 if (!rustv0_parse_base62(st, sv, valp)) { in rustv0_parse_disambiguator()
685 st->rs_error = EINVAL; in rustv0_parse_disambiguator()
704 rustv0_parse_undisambiguated_identifier(rust_state_t *restrict st, in rustv0_parse_undisambiguated_identifier() argument
710 if (HAS_ERROR(st)) in rustv0_parse_undisambiguated_identifier()
721 if (!rust_parse_base10(st, sv, &len)) in rustv0_parse_undisambiguated_identifier()
742 if (!rustv0_puny_decode(st, &ident, repl_underscore)) in rustv0_parse_undisambiguated_identifier()
758 return (rust_append_sv(st, len, sv)); in rustv0_parse_undisambiguated_identifier()
770 if (!rust_appendc(st, c)) in rustv0_parse_undisambiguated_identifier()
779 rustv0_parse_backref(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_backref() argument
789 if (HAS_ERROR(st)) in rustv0_parse_backref()
799 if (!rustv0_parse_base62(st, sv, &idx)) { in rustv0_parse_backref()
800 st->rs_error = EINVAL; in rustv0_parse_backref()
808 VERIFY3P(backref.sv_first, >=, st->rs_orig.sv_first); in rustv0_parse_backref()
809 len = (size_t)(uintptr_t)(backref.sv_first - st->rs_orig.sv_first); in rustv0_parse_backref()
819 st->rs_error = ERANGE; in rustv0_parse_backref()
835 sv_init_sv_range(&target, &st->rs_orig, len); in rustv0_parse_backref()
843 idx, SV_PRINT(&target), st->rs_skip ? " (skipping)" : ""); in rustv0_parse_backref()
850 if (st->rs_skip) in rustv0_parse_backref()
853 SAVE_LEN(st, save_len); in rustv0_parse_backref()
854 if (!fn(st, &target, bval)) in rustv0_parse_backref()
857 DEMDEBUG("%s: backref is '%.*s'", __func__, CSTR_END(st, save_len)); in rustv0_parse_backref()
862 rustv0_append_lifetime(rust_state_t *restrict st, uint64_t lifetime) in rustv0_append_lifetime() argument
866 if (HAS_ERROR(st)) in rustv0_append_lifetime()
869 if (!rust_appendc(st, '\'')) in rustv0_append_lifetime()
873 return (rust_appendc(st, '_')); in rustv0_append_lifetime()
875 if (sub_overflow(st->rs_lt_depth, lifetime, &bound_lt)) { in rustv0_append_lifetime()
878 st->rs_lt_depth); in rustv0_append_lifetime()
879 st->rs_lt_depth = ERANGE; in rustv0_append_lifetime()
888 return (rust_append_printf(st, "%c", c)); in rustv0_append_lifetime()
894 return (rust_append_printf(st, "_%" PRIu64, bound_lt)); in rustv0_append_lifetime()
898 rustv0_parse_lifetime(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_lifetime() argument
905 if (!rustv0_parse_base62(st, sv, &lifetime)) in rustv0_parse_lifetime()
908 return (rustv0_append_lifetime(st, lifetime)); in rustv0_parse_lifetime()
912 rustv0_parse_const_data(rust_state_t *restrict st, in rustv0_parse_const_data() argument
922 if (HAS_ERROR(st)) in rustv0_parse_const_data()
926 SAVE_LEN(st, save_len); in rustv0_parse_const_data()
934 ret = OPTIONAL(st, rustv0_parse_hex_num(st, sv, &val)) && in rustv0_parse_const_data()
942 ret = rust_append_printf(st, "%s%" PRIu64, neg ? "-" : "", val); in rustv0_parse_const_data()
951 ret = rust_append_printf(st, "%s", in rustv0_parse_const_data()
962 ret = rust_appendc(st, '\'') && rust_append_utf8_c(st, val) && in rustv0_parse_const_data()
963 rust_appendc(st, '\''); in rustv0_parse_const_data()
970 DEMDEBUG("%s: const='%.*s' (%s)", __func__, CSTR_END(st, save_len), in rustv0_parse_const_data()
977 rustv0_parse_const(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_const() argument
987 if (HAS_ERROR(st)) in rustv0_parse_const()
991 SAVE_LEN(st, start_len); in rustv0_parse_const()
996 if (rustv0_parse_backref(st, sv, rustv0_parse_const, B_FALSE)) in rustv0_parse_const()
1000 ret = rust_appendc(st, '_'); in rustv0_parse_const()
1027 SKIP_BEGIN(st, save_skip); in rustv0_parse_const()
1028 ret = rustv0_parse_type(st, sv, B_FALSE); in rustv0_parse_const()
1029 SKIP_END(st, save_skip); in rustv0_parse_const()
1037 ret = rust_appendc(st, '_'); in rustv0_parse_const()
1039 ret = rustv0_parse_const_data(st, ctype_class, sv); in rustv0_parse_const()
1044 if (st->rs_show_const_type) { in rustv0_parse_const()
1045 ret = rust_append(st, ": ") && in rustv0_parse_const()
1046 rustv0_parse_uint_type(st, &type); in rustv0_parse_const()
1050 DEMDEBUG("%s: const='%.*s' (%s)", __func__, CSTR_END(st, start_len), in rustv0_parse_const()
1056 rustv0_parse_abi(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_abi() argument
1061 return (rust_appendc(st, 'C')); in rustv0_parse_abi()
1063 return (rustv0_parse_undisambiguated_identifier(st, sv, B_TRUE)); in rustv0_parse_abi()
1067 rustv0_parse_binder(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_binder() argument
1074 if (!rustv0_parse_base62(st, sv, &n)) in rustv0_parse_binder()
1078 if (!rust_append(st, "for<")) in rustv0_parse_binder()
1082 if (i > 0 && !rust_append(st, ", ")) in rustv0_parse_binder()
1085 st->rs_lt_depth++; in rustv0_parse_binder()
1086 if (!rustv0_append_lifetime(st, 1)) in rustv0_parse_binder()
1090 if (!rust_append(st, "> ")) in rustv0_parse_binder()
1104 rustv0_parse_fnsig(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_fnsig() argument
1106 uint64_t save_lt = st->rs_lt_depth; in rustv0_parse_fnsig()
1110 if (!OPTIONAL(st, rustv0_parse_binder(st, sv))) in rustv0_parse_fnsig()
1113 if (sv_consume_if_c(sv, 'U') && !rust_append(st, "unsafe ")) in rustv0_parse_fnsig()
1117 (!rust_append(st, "extern \"") || !rustv0_parse_abi(st, sv) || in rustv0_parse_fnsig()
1118 !rust_append(st, "\" "))) in rustv0_parse_fnsig()
1121 if (!rust_append(st, "fn(")) in rustv0_parse_fnsig()
1124 if (!rustv0_parse_opt_list(st, sv, rustv0_parse_type, ", ", B_FALSE, in rustv0_parse_fnsig()
1129 if (!rust_appendc(st, ')')) in rustv0_parse_fnsig()
1134 if (!rust_append(st, " -> ")) in rustv0_parse_fnsig()
1137 if (!rustv0_parse_type(st, sv, B_FALSE)) in rustv0_parse_fnsig()
1141 st->rs_lt_depth = save_lt; in rustv0_parse_fnsig()
1150 rustv0_parse_dyn_trait_assoc_binding(rust_state_t *restrict st, in rustv0_parse_dyn_trait_assoc_binding() argument
1155 if (HAS_ERROR(st)) in rustv0_parse_dyn_trait_assoc_binding()
1165 SAVE_LEN(st, save_len); in rustv0_parse_dyn_trait_assoc_binding()
1167 if (!rust_append(st, open ? ", " : "<")) in rustv0_parse_dyn_trait_assoc_binding()
1170 if (!rustv0_parse_undisambiguated_identifier(st, sv, B_FALSE)) { in rustv0_parse_dyn_trait_assoc_binding()
1171 st->rs_error = EINVAL; in rustv0_parse_dyn_trait_assoc_binding()
1175 if (!rust_append(st, " = ")) in rustv0_parse_dyn_trait_assoc_binding()
1178 if (!rustv0_parse_type(st, sv, B_FALSE)) { in rustv0_parse_dyn_trait_assoc_binding()
1179 st->rs_error = EINVAL; in rustv0_parse_dyn_trait_assoc_binding()
1183 DEMDEBUG("%s: binding='%.*s'", __func__, CSTR_END(st, save_len)); in rustv0_parse_dyn_trait_assoc_binding()
1189 rustv0_parse_dyn_trait(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_dyn_trait() argument
1192 boolean_t stay_save = st->rs_args_stay_open; in rustv0_parse_dyn_trait()
1193 boolean_t open_save = st->rs_args_is_open; in rustv0_parse_dyn_trait()
1196 if (HAS_ERROR(st)) in rustv0_parse_dyn_trait()
1223 st->rs_args_stay_open = B_TRUE; in rustv0_parse_dyn_trait()
1224 st->rs_args_is_open = B_FALSE; in rustv0_parse_dyn_trait()
1226 if (!rustv0_parse_path(st, sv, B_FALSE)) { in rustv0_parse_dyn_trait()
1227 st->rs_args_stay_open = stay_save; in rustv0_parse_dyn_trait()
1228 st->rs_args_is_open = open_save; in rustv0_parse_dyn_trait()
1232 open = st->rs_args_is_open; in rustv0_parse_dyn_trait()
1234 st->rs_args_stay_open = stay_save; in rustv0_parse_dyn_trait()
1235 st->rs_args_is_open = open_save; in rustv0_parse_dyn_trait()
1237 while (rustv0_parse_dyn_trait_assoc_binding(st, sv, open)) { in rustv0_parse_dyn_trait()
1241 if (HAS_ERROR(st)) in rustv0_parse_dyn_trait()
1244 if (open && !rust_appendc(st, '>')) in rustv0_parse_dyn_trait()
1247 return (!HAS_ERROR(st)); in rustv0_parse_dyn_trait()
1251 rustv0_parse_dynbounds(rust_state_t *restrict st, strview_t *restrict sv) in rustv0_parse_dynbounds() argument
1253 uint64_t save_lt = st->rs_lt_depth; in rustv0_parse_dynbounds()
1255 if (HAS_ERROR(st)) in rustv0_parse_dynbounds()
1265 if (!OPTIONAL(st, rustv0_parse_binder(st, sv))) in rustv0_parse_dynbounds()
1268 if (!rustv0_parse_opt_list(st, sv, rustv0_parse_dyn_trait, " + ", in rustv0_parse_dynbounds()
1272 st->rs_lt_depth = save_lt; in rustv0_parse_dynbounds()
1278 rustv0_parse_generic_arg(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_generic_arg() argument
1284 return (rustv0_parse_const(st, sv, B_FALSE)); in rustv0_parse_generic_arg()
1286 if (rustv0_parse_lifetime(st, sv)) in rustv0_parse_generic_arg()
1289 return (rustv0_parse_type(st, sv, B_FALSE)); in rustv0_parse_generic_arg()
1297 rustv0_parse_hex_num(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_hex_num() argument
1303 if (HAS_ERROR(st)) in rustv0_parse_hex_num()
1347 rustv0_parse_base62(rust_state_t *restrict st, strview_t *restrict sv, in rustv0_parse_base62() argument
1353 if (HAS_ERROR(st)) in rustv0_parse_base62()