Lines Matching refs:ddata
484 static int cpp_demangle_local_source_name(struct cpp_demangle_data *ddata);
540 struct cpp_demangle_data ddata; in __cxa_demangle_gnu3() local
554 if (!cpp_demangle_data_init(&ddata, org)) in __cxa_demangle_gnu3()
556 if (!cpp_demangle_read_type(&ddata, 0)) in __cxa_demangle_gnu3()
558 rtn = vector_str_get_flat(&ddata.output, (size_t *) NULL); in __cxa_demangle_gnu3()
569 if (!cpp_demangle_data_init(&ddata, org + 2)) in __cxa_demangle_gnu3()
572 if (!cpp_demangle_read_encoding(&ddata)) in __cxa_demangle_gnu3()
578 if (*ddata.cur != 0 && ddata.subst.size >= 1) { in __cxa_demangle_gnu3()
579 if (!vector_str_pop(&ddata.subst)) in __cxa_demangle_gnu3()
592 if (ddata.is_tmpl) { in __cxa_demangle_gnu3()
593 ddata.is_tmpl = false; in __cxa_demangle_gnu3()
596 ddata.cur_output = &ret_type; in __cxa_demangle_gnu3()
600 while (*ddata.cur != '\0') { in __cxa_demangle_gnu3()
604 if (*ddata.cur == '@' && *(ddata.cur + 1) == '@') in __cxa_demangle_gnu3()
609 if (!cpp_demangle_read_type(&ddata, NULL)) in __cxa_demangle_gnu3()
613 if (!cpp_demangle_read_type(&ddata, &td)) in __cxa_demangle_gnu3()
621 if (!vector_str_push_vector_head(&ddata.output, in __cxa_demangle_gnu3()
624 ddata.cur_output = &ddata.output; in __cxa_demangle_gnu3()
636 if (ddata.output.size == 0) in __cxa_demangle_gnu3()
638 if (td.paren && !VEC_PUSH_STR(&ddata.output, ")")) in __cxa_demangle_gnu3()
640 if (ddata.mem_vat && !VEC_PUSH_STR(&ddata.output, " volatile")) in __cxa_demangle_gnu3()
642 if (ddata.mem_cst && !VEC_PUSH_STR(&ddata.output, " const")) in __cxa_demangle_gnu3()
644 if (ddata.mem_rst && !VEC_PUSH_STR(&ddata.output, " restrict")) in __cxa_demangle_gnu3()
646 if (ddata.mem_ref && !VEC_PUSH_STR(&ddata.output, " &")) in __cxa_demangle_gnu3()
648 if (ddata.mem_rref && !VEC_PUSH_STR(&ddata.output, " &&")) in __cxa_demangle_gnu3()
651 rtn = vector_str_get_flat(&ddata.output, (size_t *) NULL); in __cxa_demangle_gnu3()
657 cpp_demangle_data_dest(&ddata); in __cxa_demangle_gnu3()
728 cpp_demangle_push_fp(struct cpp_demangle_data *ddata, in cpp_demangle_push_fp() argument
736 if (ddata == NULL || decoder == NULL) in cpp_demangle_push_fp()
739 fp = ddata->cur; in cpp_demangle_push_fp()
740 while (*ddata->cur != 'E') in cpp_demangle_push_fp()
741 ++ddata->cur; in cpp_demangle_push_fp()
743 if ((f = decoder(fp, ddata->cur - fp)) == NULL) in cpp_demangle_push_fp()
748 rtn = cpp_demangle_push_str(ddata, f, len); in cpp_demangle_push_fp()
752 ++ddata->cur; in cpp_demangle_push_fp()
758 cpp_demangle_push_str(struct cpp_demangle_data *ddata, const char *str, in cpp_demangle_push_str() argument
762 if (ddata == NULL || str == NULL || len == 0) in cpp_demangle_push_str()
770 ddata->is_tmpl = false; in cpp_demangle_push_str()
772 return (vector_str_push(ddata->cur_output, str, len)); in cpp_demangle_push_str()
776 cpp_demangle_pop_str(struct cpp_demangle_data *ddata) in cpp_demangle_pop_str() argument
779 if (ddata == NULL) in cpp_demangle_pop_str()
782 return (vector_str_pop(ddata->cur_output)); in cpp_demangle_pop_str()
786 cpp_demangle_push_subst(struct cpp_demangle_data *ddata, const char *str, in cpp_demangle_push_subst() argument
790 if (ddata == NULL || str == NULL || len == 0) in cpp_demangle_push_subst()
793 if (!vector_str_find(&ddata->subst, str, len)) in cpp_demangle_push_subst()
794 return (vector_str_push(&ddata->subst, str, len)); in cpp_demangle_push_subst()
800 cpp_demangle_push_subst_v(struct cpp_demangle_data *ddata, struct vector_str *v) in cpp_demangle_push_subst_v() argument
806 if (ddata == NULL || v == NULL) in cpp_demangle_push_subst_v()
812 rtn = cpp_demangle_push_subst(ddata, str, str_len); in cpp_demangle_push_subst_v()
820 cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata, in cpp_demangle_push_type_qualifier() argument
830 if (ddata == NULL || v == NULL) in cpp_demangle_push_type_qualifier()
850 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
852 if (!DEM_PUSH_STR(ddata, "*")) in cpp_demangle_push_type_qualifier()
857 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
865 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
867 if (!DEM_PUSH_STR(ddata, "&")) in cpp_demangle_push_type_qualifier()
872 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
880 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
882 if (!DEM_PUSH_STR(ddata, "&&")) in cpp_demangle_push_type_qualifier()
887 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
895 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
897 if (!DEM_PUSH_STR(ddata, " complex")) in cpp_demangle_push_type_qualifier()
902 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
910 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
912 if (!DEM_PUSH_STR(ddata, " imaginary")) in cpp_demangle_push_type_qualifier()
917 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
925 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
938 if (!DEM_PUSH_STR(ddata, buf)) { in cpp_demangle_push_type_qualifier()
948 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
959 if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && in cpp_demangle_push_type_qualifier()
962 if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) in cpp_demangle_push_type_qualifier()
964 if (!DEM_PUSH_STR(ddata, " restrict")) in cpp_demangle_push_type_qualifier()
975 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
982 if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && in cpp_demangle_push_type_qualifier()
985 if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) in cpp_demangle_push_type_qualifier()
987 if (!DEM_PUSH_STR(ddata, " volatile")) in cpp_demangle_push_type_qualifier()
998 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
1005 if (ddata->push_qualifier == PUSH_NON_CV_QUALIFIER && in cpp_demangle_push_type_qualifier()
1008 if (ddata->push_qualifier == PUSH_CV_QUALIFIER && !cv) in cpp_demangle_push_type_qualifier()
1010 if (!DEM_PUSH_STR(ddata, " const")) in cpp_demangle_push_type_qualifier()
1021 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
1029 if (ddata->push_qualifier == PUSH_CV_QUALIFIER) in cpp_demangle_push_type_qualifier()
1041 if (!DEM_PUSH_STR(ddata, buf)) { in cpp_demangle_push_type_qualifier()
1050 if (!cpp_demangle_push_subst_v(ddata, in cpp_demangle_push_type_qualifier()
1072 cpp_demangle_get_subst(struct cpp_demangle_data *ddata, size_t idx) in cpp_demangle_get_subst() argument
1076 if (ddata == NULL || ddata->subst.size <= idx) in cpp_demangle_get_subst()
1078 if ((len = strlen(ddata->subst.container[idx])) == 0) in cpp_demangle_get_subst()
1080 if (!cpp_demangle_push_str(ddata, ddata->subst.container[idx], len)) in cpp_demangle_get_subst()
1084 ++ddata->cur; in cpp_demangle_get_subst()
1090 cpp_demangle_get_tmpl_param(struct cpp_demangle_data *ddata, size_t idx) in cpp_demangle_get_tmpl_param() argument
1094 if (ddata == NULL || ddata->tmpl.size <= idx) in cpp_demangle_get_tmpl_param()
1096 if ((len = strlen(ddata->tmpl.container[idx])) == 0) in cpp_demangle_get_tmpl_param()
1098 if (!cpp_demangle_push_str(ddata, ddata->tmpl.container[idx], len)) in cpp_demangle_get_tmpl_param()
1101 ++ddata->cur; in cpp_demangle_get_tmpl_param()
1107 cpp_demangle_read_array(struct cpp_demangle_data *ddata) in cpp_demangle_read_array() argument
1113 if (ddata == NULL || *(++ddata->cur) == '\0') in cpp_demangle_read_array()
1116 if (*ddata->cur == '_') { in cpp_demangle_read_array()
1117 if (*(++ddata->cur) == '\0') in cpp_demangle_read_array()
1120 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_array()
1123 if (!DEM_PUSH_STR(ddata, " []")) in cpp_demangle_read_array()
1126 if (ELFTC_ISDIGIT(*ddata->cur) != 0) { in cpp_demangle_read_array()
1127 num = ddata->cur; in cpp_demangle_read_array()
1128 while (ELFTC_ISDIGIT(*ddata->cur) != 0) in cpp_demangle_read_array()
1129 ++ddata->cur; in cpp_demangle_read_array()
1130 if (*ddata->cur != '_') in cpp_demangle_read_array()
1132 num_len = ddata->cur - num; in cpp_demangle_read_array()
1134 if (*(++ddata->cur) == '\0') in cpp_demangle_read_array()
1136 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_array()
1138 if (!DEM_PUSH_STR(ddata, " [")) in cpp_demangle_read_array()
1140 if (!cpp_demangle_push_str(ddata, num, num_len)) in cpp_demangle_read_array()
1142 if (!DEM_PUSH_STR(ddata, "]")) in cpp_demangle_read_array()
1145 p_idx = ddata->output.size; in cpp_demangle_read_array()
1146 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_array()
1148 if ((exp = vector_str_substr(&ddata->output, p_idx, in cpp_demangle_read_array()
1149 ddata->output.size - 1, &exp_len)) == NULL) in cpp_demangle_read_array()
1151 idx = ddata->output.size; in cpp_demangle_read_array()
1153 if (!vector_str_pop(&ddata->output)) { in cpp_demangle_read_array()
1157 if (*ddata->cur != '_') { in cpp_demangle_read_array()
1161 ++ddata->cur; in cpp_demangle_read_array()
1162 if (*ddata->cur == '\0') { in cpp_demangle_read_array()
1166 if (!cpp_demangle_read_type(ddata, NULL)) { in cpp_demangle_read_array()
1170 if (!DEM_PUSH_STR(ddata, " [")) { in cpp_demangle_read_array()
1174 if (!cpp_demangle_push_str(ddata, exp, exp_len)) { in cpp_demangle_read_array()
1178 if (!DEM_PUSH_STR(ddata, "]")) { in cpp_demangle_read_array()
1190 cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata) in cpp_demangle_read_expr_primary() argument
1194 if (ddata == NULL || *(++ddata->cur) == '\0') in cpp_demangle_read_expr_primary()
1197 if (*ddata->cur == '_' && *(ddata->cur + 1) == 'Z') { in cpp_demangle_read_expr_primary()
1198 ddata->cur += 2; in cpp_demangle_read_expr_primary()
1199 if (*ddata->cur == '\0') in cpp_demangle_read_expr_primary()
1201 if (!cpp_demangle_read_encoding(ddata)) in cpp_demangle_read_expr_primary()
1203 ++ddata->cur; in cpp_demangle_read_expr_primary()
1207 switch (*ddata->cur) { in cpp_demangle_read_expr_primary()
1209 if (*(ddata->cur + 2) != 'E') in cpp_demangle_read_expr_primary()
1211 switch (*(++ddata->cur)) { in cpp_demangle_read_expr_primary()
1213 ddata->cur += 2; in cpp_demangle_read_expr_primary()
1214 return (DEM_PUSH_STR(ddata, "false")); in cpp_demangle_read_expr_primary()
1216 ddata->cur += 2; in cpp_demangle_read_expr_primary()
1217 return (DEM_PUSH_STR(ddata, "true")); in cpp_demangle_read_expr_primary()
1223 ++ddata->cur; in cpp_demangle_read_expr_primary()
1224 return (cpp_demangle_push_fp(ddata, decode_fp_to_double)); in cpp_demangle_read_expr_primary()
1227 ++ddata->cur; in cpp_demangle_read_expr_primary()
1229 return (cpp_demangle_push_fp(ddata, in cpp_demangle_read_expr_primary()
1231 return (cpp_demangle_push_fp(ddata, decode_fp_to_float80)); in cpp_demangle_read_expr_primary()
1234 ++ddata->cur; in cpp_demangle_read_expr_primary()
1235 return (cpp_demangle_push_fp(ddata, decode_fp_to_float)); in cpp_demangle_read_expr_primary()
1238 ++ddata->cur; in cpp_demangle_read_expr_primary()
1240 return (cpp_demangle_push_fp(ddata, in cpp_demangle_read_expr_primary()
1242 return (cpp_demangle_push_fp(ddata, decode_fp_to_float128)); in cpp_demangle_read_expr_primary()
1253 if (*(++ddata->cur) == 'n') { in cpp_demangle_read_expr_primary()
1254 if (!DEM_PUSH_STR(ddata, "-")) in cpp_demangle_read_expr_primary()
1256 ++ddata->cur; in cpp_demangle_read_expr_primary()
1258 num = ddata->cur; in cpp_demangle_read_expr_primary()
1259 while (*ddata->cur != 'E') { in cpp_demangle_read_expr_primary()
1260 if (!ELFTC_ISDIGIT(*ddata->cur)) in cpp_demangle_read_expr_primary()
1262 ++ddata->cur; in cpp_demangle_read_expr_primary()
1264 ++ddata->cur; in cpp_demangle_read_expr_primary()
1265 return (cpp_demangle_push_str(ddata, num, in cpp_demangle_read_expr_primary()
1266 ddata->cur - num - 1)); in cpp_demangle_read_expr_primary()
1274 cpp_demangle_read_expression(struct cpp_demangle_data *ddata) in cpp_demangle_read_expression() argument
1277 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_expression()
1280 switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { in cpp_demangle_read_expression()
1282 ddata->cur += 2; in cpp_demangle_read_expression()
1283 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_expression()
1286 ddata->cur += 2; in cpp_demangle_read_expression()
1287 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_expression()
1289 if (!cpp_demangle_read_uqname(ddata)) in cpp_demangle_read_expression()
1291 if (*ddata->cur == 'I') in cpp_demangle_read_expression()
1292 return (cpp_demangle_read_tmpl_args(ddata)); in cpp_demangle_read_expression()
1297 ddata->cur += 2; in cpp_demangle_read_expression()
1298 return (cpp_demangle_read_expression_binary(ddata, "&&", 2)); in cpp_demangle_read_expression()
1302 ddata->cur += 2; in cpp_demangle_read_expression()
1303 return (cpp_demangle_read_expression_unary(ddata, "&", 1)); in cpp_demangle_read_expression()
1307 ddata->cur += 2; in cpp_demangle_read_expression()
1308 return (cpp_demangle_read_expression_binary(ddata, "&", 1)); in cpp_demangle_read_expression()
1312 ddata->cur += 2; in cpp_demangle_read_expression()
1313 return (cpp_demangle_read_expression_binary(ddata, "&=", 2)); in cpp_demangle_read_expression()
1317 ddata->cur += 2; in cpp_demangle_read_expression()
1318 return (cpp_demangle_read_expression_binary(ddata, "=", 1)); in cpp_demangle_read_expression()
1322 ddata->cur += 2; in cpp_demangle_read_expression()
1323 return (cpp_demangle_read_expression_binary(ddata, "()", 2)); in cpp_demangle_read_expression()
1327 ddata->cur += 2; in cpp_demangle_read_expression()
1328 return (cpp_demangle_read_expression_binary(ddata, ",", 1)); in cpp_demangle_read_expression()
1332 ddata->cur += 2; in cpp_demangle_read_expression()
1333 return (cpp_demangle_read_expression_binary(ddata, "~", 1)); in cpp_demangle_read_expression()
1337 ddata->cur += 2; in cpp_demangle_read_expression()
1338 return (cpp_demangle_read_expression_binary(ddata, "(cast)", 6)); in cpp_demangle_read_expression()
1342 ddata->cur += 2; in cpp_demangle_read_expression()
1343 return (cpp_demangle_read_expression_unary(ddata, "delete []", 9)); in cpp_demangle_read_expression()
1347 ddata->cur += 2; in cpp_demangle_read_expression()
1348 return (cpp_demangle_read_expression_unary(ddata, "*", 1)); in cpp_demangle_read_expression()
1352 ddata->cur += 2; in cpp_demangle_read_expression()
1353 return (cpp_demangle_read_expression_unary(ddata, "delete", 6)); in cpp_demangle_read_expression()
1357 ddata->cur += 2; in cpp_demangle_read_expression()
1358 return (cpp_demangle_read_expression_binary(ddata, "/", 1)); in cpp_demangle_read_expression()
1362 ddata->cur += 2; in cpp_demangle_read_expression()
1363 return (cpp_demangle_read_expression_binary(ddata, "/=", 2)); in cpp_demangle_read_expression()
1367 ddata->cur += 2; in cpp_demangle_read_expression()
1368 return (cpp_demangle_read_expression_binary(ddata, "^", 1)); in cpp_demangle_read_expression()
1372 ddata->cur += 2; in cpp_demangle_read_expression()
1373 return (cpp_demangle_read_expression_binary(ddata, "^=", 2)); in cpp_demangle_read_expression()
1377 ddata->cur += 2; in cpp_demangle_read_expression()
1378 return (cpp_demangle_read_expression_binary(ddata, "==", 2)); in cpp_demangle_read_expression()
1382 ddata->cur += 2; in cpp_demangle_read_expression()
1383 return (cpp_demangle_read_expression_binary(ddata, ">=", 2)); in cpp_demangle_read_expression()
1387 ddata->cur += 2; in cpp_demangle_read_expression()
1388 return (cpp_demangle_read_expression_binary(ddata, ">", 1)); in cpp_demangle_read_expression()
1392 ddata->cur += 2; in cpp_demangle_read_expression()
1393 return (cpp_demangle_read_expression_binary(ddata, "[]", 2)); in cpp_demangle_read_expression()
1397 ddata->cur += 2; in cpp_demangle_read_expression()
1398 return (cpp_demangle_read_expression_binary(ddata, "<=", 2)); in cpp_demangle_read_expression()
1402 ddata->cur += 2; in cpp_demangle_read_expression()
1403 return (cpp_demangle_read_expression_binary(ddata, "<<", 2)); in cpp_demangle_read_expression()
1407 ddata->cur += 2; in cpp_demangle_read_expression()
1408 return (cpp_demangle_read_expression_binary(ddata, "<<=", 3)); in cpp_demangle_read_expression()
1412 ddata->cur += 2; in cpp_demangle_read_expression()
1413 return (cpp_demangle_read_expression_binary(ddata, "<", 1)); in cpp_demangle_read_expression()
1417 ddata->cur += 2; in cpp_demangle_read_expression()
1418 return (cpp_demangle_read_expression_binary(ddata, "-", 1)); in cpp_demangle_read_expression()
1422 ddata->cur += 2; in cpp_demangle_read_expression()
1423 return (cpp_demangle_read_expression_binary(ddata, "-=", 2)); in cpp_demangle_read_expression()
1427 ddata->cur += 2; in cpp_demangle_read_expression()
1428 return (cpp_demangle_read_expression_binary(ddata, "*", 1)); in cpp_demangle_read_expression()
1432 ddata->cur += 2; in cpp_demangle_read_expression()
1433 return (cpp_demangle_read_expression_binary(ddata, "*=", 2)); in cpp_demangle_read_expression()
1437 ddata->cur += 2; in cpp_demangle_read_expression()
1438 return (cpp_demangle_read_expression_binary(ddata, "--", 2)); in cpp_demangle_read_expression()
1442 ddata->cur += 2; in cpp_demangle_read_expression()
1443 return (cpp_demangle_read_expression_unary(ddata, "new []", 6)); in cpp_demangle_read_expression()
1447 ddata->cur += 2; in cpp_demangle_read_expression()
1448 return (cpp_demangle_read_expression_binary(ddata, "!=", 2)); in cpp_demangle_read_expression()
1452 ddata->cur += 2; in cpp_demangle_read_expression()
1453 return (cpp_demangle_read_expression_unary(ddata, "-", 1)); in cpp_demangle_read_expression()
1457 ddata->cur += 2; in cpp_demangle_read_expression()
1458 return (cpp_demangle_read_expression_binary(ddata, "!", 1)); in cpp_demangle_read_expression()
1462 ddata->cur += 2; in cpp_demangle_read_expression()
1463 return (cpp_demangle_read_expression_unary(ddata, "new", 3)); in cpp_demangle_read_expression()
1467 ddata->cur += 2; in cpp_demangle_read_expression()
1468 return (cpp_demangle_read_expression_binary(ddata, "||", 2)); in cpp_demangle_read_expression()
1472 ddata->cur += 2; in cpp_demangle_read_expression()
1473 return (cpp_demangle_read_expression_binary(ddata, "|", 1)); in cpp_demangle_read_expression()
1477 ddata->cur += 2; in cpp_demangle_read_expression()
1478 return (cpp_demangle_read_expression_binary(ddata, "|=", 2)); in cpp_demangle_read_expression()
1482 ddata->cur += 2; in cpp_demangle_read_expression()
1483 return (cpp_demangle_read_expression_binary(ddata, "+", 1)); in cpp_demangle_read_expression()
1487 ddata->cur += 2; in cpp_demangle_read_expression()
1488 return (cpp_demangle_read_expression_binary(ddata, "+=", 2)); in cpp_demangle_read_expression()
1492 ddata->cur += 2; in cpp_demangle_read_expression()
1493 return (cpp_demangle_read_expression_binary(ddata, "->*", 3)); in cpp_demangle_read_expression()
1497 ddata->cur += 2; in cpp_demangle_read_expression()
1498 return (cpp_demangle_read_expression_binary(ddata, "++", 2)); in cpp_demangle_read_expression()
1502 ddata->cur += 2; in cpp_demangle_read_expression()
1503 return (cpp_demangle_read_expression_unary(ddata, "+", 1)); in cpp_demangle_read_expression()
1507 ddata->cur += 2; in cpp_demangle_read_expression()
1508 return (cpp_demangle_read_expression_binary(ddata, "->", 2)); in cpp_demangle_read_expression()
1512 ddata->cur += 2; in cpp_demangle_read_expression()
1513 return (cpp_demangle_read_expression_trinary(ddata, "?", 1, in cpp_demangle_read_expression()
1518 ddata->cur += 2; in cpp_demangle_read_expression()
1519 return (cpp_demangle_read_expression_binary(ddata, "%", 1)); in cpp_demangle_read_expression()
1523 ddata->cur += 2; in cpp_demangle_read_expression()
1524 return (cpp_demangle_read_expression_binary(ddata, "%=", 2)); in cpp_demangle_read_expression()
1528 ddata->cur += 2; in cpp_demangle_read_expression()
1529 return (cpp_demangle_read_expression_binary(ddata, ">>", 2)); in cpp_demangle_read_expression()
1533 ddata->cur += 2; in cpp_demangle_read_expression()
1534 return (cpp_demangle_read_expression_binary(ddata, ">>=", 3)); in cpp_demangle_read_expression()
1538 ddata->cur += 2; in cpp_demangle_read_expression()
1539 return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6)); in cpp_demangle_read_expression()
1543 ddata->cur += 2; in cpp_demangle_read_expression()
1544 return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6)); in cpp_demangle_read_expression()
1547 switch (*ddata->cur) { in cpp_demangle_read_expression()
1549 return (cpp_demangle_read_expr_primary(ddata)); in cpp_demangle_read_expression()
1551 return (cpp_demangle_read_tmpl_param(ddata)); in cpp_demangle_read_expression()
1558 cpp_demangle_read_expression_flat(struct cpp_demangle_data *ddata, char **str) in cpp_demangle_read_expression_flat() argument
1564 output = &ddata->output; in cpp_demangle_read_expression_flat()
1568 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_expression_flat()
1589 cpp_demangle_read_expression_binary(struct cpp_demangle_data *ddata, in cpp_demangle_read_expression_binary() argument
1593 if (ddata == NULL || name == NULL || len == 0) in cpp_demangle_read_expression_binary()
1595 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_expression_binary()
1597 if (!cpp_demangle_push_str(ddata, name, len)) in cpp_demangle_read_expression_binary()
1600 return (cpp_demangle_read_expression(ddata)); in cpp_demangle_read_expression_binary()
1604 cpp_demangle_read_expression_unary(struct cpp_demangle_data *ddata, in cpp_demangle_read_expression_unary() argument
1608 if (ddata == NULL || name == NULL || len == 0) in cpp_demangle_read_expression_unary()
1610 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_expression_unary()
1613 return (cpp_demangle_push_str(ddata, name, len)); in cpp_demangle_read_expression_unary()
1617 cpp_demangle_read_expression_trinary(struct cpp_demangle_data *ddata, in cpp_demangle_read_expression_trinary() argument
1621 if (ddata == NULL || name1 == NULL || len1 == 0 || name2 == NULL || in cpp_demangle_read_expression_trinary()
1625 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_expression_trinary()
1627 if (!cpp_demangle_push_str(ddata, name1, len1)) in cpp_demangle_read_expression_trinary()
1629 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_expression_trinary()
1631 if (!cpp_demangle_push_str(ddata, name2, len2)) in cpp_demangle_read_expression_trinary()
1634 return (cpp_demangle_read_expression(ddata)); in cpp_demangle_read_expression_trinary()
1638 cpp_demangle_read_function(struct cpp_demangle_data *ddata, int *ext_c, in cpp_demangle_read_function() argument
1648 if (ddata == NULL || *ddata->cur != 'F' || v == NULL) in cpp_demangle_read_function()
1651 ++ddata->cur; in cpp_demangle_read_function()
1652 if (*ddata->cur == 'Y') { in cpp_demangle_read_function()
1655 ++ddata->cur; in cpp_demangle_read_function()
1659 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_function()
1662 if (*ddata->cur != 'E') { in cpp_demangle_read_function()
1663 if (!DEM_PUSH_STR(ddata, " ")) in cpp_demangle_read_function()
1679 rc = vector_read_cmd_find(&ddata->cmd, READ_PTRMEM); in cpp_demangle_read_function()
1681 if (!DEM_PUSH_STR(ddata, "(")) in cpp_demangle_read_function()
1687 ddata->push_qualifier = PUSH_NON_CV_QUALIFIER; in cpp_demangle_read_function()
1688 if (!cpp_demangle_push_type_qualifier(ddata, v, NULL)) in cpp_demangle_read_function()
1692 if (non_cv_qualifier && !DEM_PUSH_STR(ddata, " ")) in cpp_demangle_read_function()
1694 if ((class_type_size = ddata->class_type.size) == 0) in cpp_demangle_read_function()
1697 ddata->class_type.container[class_type_size - 1]; in cpp_demangle_read_function()
1702 if (!cpp_demangle_push_str(ddata, class_type, in cpp_demangle_read_function()
1705 if (!DEM_PUSH_STR(ddata, "::*")) in cpp_demangle_read_function()
1708 ddata->push_qualifier = PUSH_ALL_QUALIFIER; in cpp_demangle_read_function()
1709 if (!cpp_demangle_push_type_qualifier(ddata, rc->data, in cpp_demangle_read_function()
1712 ++ddata->func_type; in cpp_demangle_read_function()
1716 if (!DEM_PUSH_STR(ddata, ")")) in cpp_demangle_read_function()
1724 ddata->is_functype = true; in cpp_demangle_read_function()
1726 if (!cpp_demangle_read_type(ddata, &td)) in cpp_demangle_read_function()
1728 if (*ddata->cur == 'E') in cpp_demangle_read_function()
1733 ddata->is_functype = false; in cpp_demangle_read_function()
1735 if (!DEM_PUSH_STR(ddata, ")")) in cpp_demangle_read_function()
1741 ddata->push_qualifier = PUSH_CV_QUALIFIER; in cpp_demangle_read_function()
1742 if (!cpp_demangle_push_type_qualifier(ddata, v, NULL)) in cpp_demangle_read_function()
1745 ddata->push_qualifier = PUSH_ALL_QUALIFIER; in cpp_demangle_read_function()
1753 if (ddata->ref_qualifier) { in cpp_demangle_read_function()
1754 switch (ddata->ref_qualifier_type) { in cpp_demangle_read_function()
1756 if (!DEM_PUSH_STR(ddata, " &")) in cpp_demangle_read_function()
1760 if (!DEM_PUSH_STR(ddata, " &&")) in cpp_demangle_read_function()
1766 ddata->ref_qualifier = false; in cpp_demangle_read_function()
1770 ++ddata->cur; in cpp_demangle_read_function()
1777 cpp_demangle_read_encoding(struct cpp_demangle_data *ddata) in cpp_demangle_read_encoding() argument
1783 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_encoding()
1787 switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { in cpp_demangle_read_encoding()
1789 if (!DEM_PUSH_STR(ddata, "hidden alias for ")) in cpp_demangle_read_encoding()
1791 ddata->cur += 2; in cpp_demangle_read_encoding()
1792 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1794 return (cpp_demangle_read_encoding(ddata)); in cpp_demangle_read_encoding()
1797 if (!DEM_PUSH_STR(ddata, "reference temporary #")) in cpp_demangle_read_encoding()
1799 ddata->cur += 2; in cpp_demangle_read_encoding()
1800 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1802 if (!cpp_demangle_read_name_flat(ddata, &name)) in cpp_demangle_read_encoding()
1805 if (!cpp_demangle_read_number_as_string(ddata, &num_str)) in cpp_demangle_read_encoding()
1807 if (!DEM_PUSH_STR(ddata, num_str)) in cpp_demangle_read_encoding()
1809 if (!DEM_PUSH_STR(ddata, " for ")) in cpp_demangle_read_encoding()
1811 if (!DEM_PUSH_STR(ddata, name)) in cpp_demangle_read_encoding()
1821 ddata->cur += 2; in cpp_demangle_read_encoding()
1822 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1824 switch (*ddata->cur) { in cpp_demangle_read_encoding()
1826 if (!DEM_PUSH_STR(ddata, "non-transaction clone for ")) in cpp_demangle_read_encoding()
1831 if (!DEM_PUSH_STR(ddata, "transaction clone for ")) in cpp_demangle_read_encoding()
1835 ++ddata->cur; in cpp_demangle_read_encoding()
1836 return (cpp_demangle_read_encoding(ddata)); in cpp_demangle_read_encoding()
1840 if (!DEM_PUSH_STR(ddata, "guard variable for ")) in cpp_demangle_read_encoding()
1842 ddata->cur += 2; in cpp_demangle_read_encoding()
1847 if (!DEM_PUSH_STR(ddata, in cpp_demangle_read_encoding()
1850 ddata->cur += 2; in cpp_demangle_read_encoding()
1851 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1853 if (!cpp_demangle_read_offset(ddata)) in cpp_demangle_read_encoding()
1855 if (!cpp_demangle_read_offset(ddata)) in cpp_demangle_read_encoding()
1857 return (cpp_demangle_read_encoding(ddata)); in cpp_demangle_read_encoding()
1861 if (!DEM_PUSH_STR(ddata, "construction vtable for ")) in cpp_demangle_read_encoding()
1863 ddata->cur += 2; in cpp_demangle_read_encoding()
1864 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1866 if (!cpp_demangle_read_type_flat(ddata, &type)) in cpp_demangle_read_encoding()
1869 if (!cpp_demangle_read_number(ddata, &offset)) in cpp_demangle_read_encoding()
1871 if (*ddata->cur++ != '_') in cpp_demangle_read_encoding()
1873 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_encoding()
1875 if (!DEM_PUSH_STR(ddata, "-in-")) in cpp_demangle_read_encoding()
1877 if (!DEM_PUSH_STR(ddata, type)) in cpp_demangle_read_encoding()
1890 if (!DEM_PUSH_STR(ddata, "typeinfo fn for ")) in cpp_demangle_read_encoding()
1892 ddata->cur += 2; in cpp_demangle_read_encoding()
1893 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1895 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1899 if (!DEM_PUSH_STR(ddata, in cpp_demangle_read_encoding()
1902 ddata->cur += 2; in cpp_demangle_read_encoding()
1903 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1905 if (!cpp_demangle_read_nv_offset(ddata)) in cpp_demangle_read_encoding()
1907 return (cpp_demangle_read_encoding(ddata)); in cpp_demangle_read_encoding()
1911 if (!DEM_PUSH_STR(ddata, "TLS init function for ")) in cpp_demangle_read_encoding()
1913 ddata->cur += 2; in cpp_demangle_read_encoding()
1914 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1920 if (!DEM_PUSH_STR(ddata, "typeinfo for ")) in cpp_demangle_read_encoding()
1922 ddata->cur += 2; in cpp_demangle_read_encoding()
1923 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1925 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1929 if (!DEM_PUSH_STR(ddata, "java Class for ")) in cpp_demangle_read_encoding()
1931 ddata->cur += 2; in cpp_demangle_read_encoding()
1932 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1934 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1938 if (!DEM_PUSH_STR(ddata, "typeinfo name for ")) in cpp_demangle_read_encoding()
1940 ddata->cur += 2; in cpp_demangle_read_encoding()
1941 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1943 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1947 if (!DEM_PUSH_STR(ddata, "VTT for ")) in cpp_demangle_read_encoding()
1949 ddata->cur += 2; in cpp_demangle_read_encoding()
1950 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1952 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1956 if (!DEM_PUSH_STR(ddata, "virtual function virtual override ")) in cpp_demangle_read_encoding()
1958 ddata->cur += 2; in cpp_demangle_read_encoding()
1959 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1961 if (!cpp_demangle_read_v_offset(ddata)) in cpp_demangle_read_encoding()
1963 return (cpp_demangle_read_encoding(ddata)); in cpp_demangle_read_encoding()
1967 if (!DEM_PUSH_STR(ddata, "vtable for ")) in cpp_demangle_read_encoding()
1969 ddata->cur += 2; in cpp_demangle_read_encoding()
1970 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1972 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_encoding()
1976 if (!DEM_PUSH_STR(ddata, "TLS wrapper function for ")) in cpp_demangle_read_encoding()
1978 ddata->cur += 2; in cpp_demangle_read_encoding()
1979 if (*ddata->cur == '\0') in cpp_demangle_read_encoding()
1984 return (cpp_demangle_read_name(ddata)); in cpp_demangle_read_encoding()
1988 cpp_demangle_read_local_name(struct cpp_demangle_data *ddata) in cpp_demangle_read_local_name() argument
1995 if (ddata == NULL) in cpp_demangle_read_local_name()
1997 if (*(++ddata->cur) == '\0') in cpp_demangle_read_local_name()
2002 ddata->cur_output = &local_name; in cpp_demangle_read_local_name()
2004 if (!cpp_demangle_read_encoding(ddata)) { in cpp_demangle_read_local_name()
2009 ddata->cur_output = &ddata->output; in cpp_demangle_read_local_name()
2021 if (ddata->is_tmpl) { in cpp_demangle_read_local_name()
2022 ddata->is_tmpl = false; in cpp_demangle_read_local_name()
2025 if (!cpp_demangle_read_type(ddata, NULL)) { in cpp_demangle_read_local_name()
2034 if (!vector_str_push_vector(&ddata->output, &local_name)) { in cpp_demangle_read_local_name()
2040 while (*ddata->cur != '\0') { in cpp_demangle_read_local_name()
2041 if (!cpp_demangle_read_type(ddata, &td)) in cpp_demangle_read_local_name()
2045 if (*ddata->cur == 'E') in cpp_demangle_read_local_name()
2053 if (*(++ddata->cur) == '\0') in cpp_demangle_read_local_name()
2056 if (!DEM_PUSH_STR(ddata, ")")) in cpp_demangle_read_local_name()
2060 if (*ddata->cur == 's') in cpp_demangle_read_local_name()
2061 ++ddata->cur; in cpp_demangle_read_local_name()
2063 if (!DEM_PUSH_STR(ddata, "::")) in cpp_demangle_read_local_name()
2065 if (!cpp_demangle_read_name(ddata)) in cpp_demangle_read_local_name()
2068 if (*ddata->cur == '_') { in cpp_demangle_read_local_name()
2069 ++ddata->cur; in cpp_demangle_read_local_name()
2070 while (ELFTC_ISDIGIT(*ddata->cur) != 0) in cpp_demangle_read_local_name()
2071 ++ddata->cur; in cpp_demangle_read_local_name()
2078 cpp_demangle_read_name(struct cpp_demangle_data *ddata) in cpp_demangle_read_name() argument
2085 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_name()
2088 output = ddata->cur_output; in cpp_demangle_read_name()
2092 switch (*ddata->cur) { in cpp_demangle_read_name()
2094 return (cpp_demangle_read_subst(ddata)); in cpp_demangle_read_name()
2096 return (cpp_demangle_read_nested_name(ddata)); in cpp_demangle_read_name()
2098 return (cpp_demangle_read_local_name(ddata)); in cpp_demangle_read_name()
2106 if (!cpp_demangle_read_uqname(ddata)) in cpp_demangle_read_name()
2117 if (!cpp_demangle_push_subst_v(ddata, &v)) in cpp_demangle_read_name()
2120 if (*ddata->cur == 'I') { in cpp_demangle_read_name()
2122 if (!cpp_demangle_read_tmpl_args(ddata)) in cpp_demangle_read_name()
2130 if (!cpp_demangle_push_subst_v(ddata, &v)) in cpp_demangle_read_name()
2144 cpp_demangle_read_name_flat(struct cpp_demangle_data *ddata, char **str) in cpp_demangle_read_name_flat() argument
2150 output = ddata->cur_output; in cpp_demangle_read_name_flat()
2154 if (!cpp_demangle_read_name(ddata)) in cpp_demangle_read_name_flat()
2175 cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata) in cpp_demangle_read_nested_name() argument
2182 if (ddata == NULL || *ddata->cur != 'N') in cpp_demangle_read_nested_name()
2184 if (*(++ddata->cur) == '\0') in cpp_demangle_read_nested_name()
2188 switch (*ddata->cur) { in cpp_demangle_read_nested_name()
2190 ddata->mem_rst = true; in cpp_demangle_read_nested_name()
2193 ddata->mem_vat = true; in cpp_demangle_read_nested_name()
2196 ddata->mem_cst = true; in cpp_demangle_read_nested_name()
2199 ddata->mem_ref = true; in cpp_demangle_read_nested_name()
2202 ddata->mem_rref = true; in cpp_demangle_read_nested_name()
2207 } while (*(++ddata->cur)); in cpp_demangle_read_nested_name()
2210 output = ddata->cur_output; in cpp_demangle_read_nested_name()
2218 switch (*ddata->cur) { in cpp_demangle_read_nested_name()
2220 if (!cpp_demangle_read_tmpl_args(ddata)) in cpp_demangle_read_nested_name()
2224 if (!cpp_demangle_read_subst(ddata)) in cpp_demangle_read_nested_name()
2228 if (!cpp_demangle_read_tmpl_param(ddata)) in cpp_demangle_read_nested_name()
2232 if (!cpp_demangle_read_uqname(ddata)) in cpp_demangle_read_nested_name()
2247 if (!cpp_demangle_push_subst_v(ddata, &v)) in cpp_demangle_read_nested_name()
2251 if (*ddata->cur == 'E') in cpp_demangle_read_nested_name()
2253 else if (*ddata->cur != 'I' && *ddata->cur != 'C' && in cpp_demangle_read_nested_name()
2254 *ddata->cur != 'D' && p_idx != output->size) { in cpp_demangle_read_nested_name()
2255 if (!DEM_PUSH_STR(ddata, "::")) in cpp_demangle_read_nested_name()
2264 ++ddata->cur; in cpp_demangle_read_nested_name()
2278 cpp_demangle_read_number(struct cpp_demangle_data *ddata, long *rtn) in cpp_demangle_read_number() argument
2282 if (ddata == NULL || rtn == NULL) in cpp_demangle_read_number()
2286 if (*ddata->cur == 'n') { in cpp_demangle_read_number()
2289 ++ddata->cur; in cpp_demangle_read_number()
2291 if (ELFTC_ISDIGIT(*ddata->cur) == 0) in cpp_demangle_read_number()
2295 if ((len = strtol(ddata->cur, (char **) NULL, 10)) == 0 && in cpp_demangle_read_number()
2299 while (ELFTC_ISDIGIT(*ddata->cur) != 0) in cpp_demangle_read_number()
2300 ++ddata->cur; in cpp_demangle_read_number()
2311 cpp_demangle_read_number_as_string(struct cpp_demangle_data *ddata, char **str) in cpp_demangle_read_number_as_string() argument
2315 if (!cpp_demangle_read_number(ddata, &n)) { in cpp_demangle_read_number_as_string()
2329 cpp_demangle_read_nv_offset(struct cpp_demangle_data *ddata) in cpp_demangle_read_nv_offset() argument
2332 if (ddata == NULL) in cpp_demangle_read_nv_offset()
2335 if (!DEM_PUSH_STR(ddata, "offset : ")) in cpp_demangle_read_nv_offset()
2338 return (cpp_demangle_read_offset_number(ddata)); in cpp_demangle_read_nv_offset()
2343 cpp_demangle_read_offset(struct cpp_demangle_data *ddata) in cpp_demangle_read_offset() argument
2346 if (ddata == NULL) in cpp_demangle_read_offset()
2349 if (*ddata->cur == 'h') { in cpp_demangle_read_offset()
2350 ++ddata->cur; in cpp_demangle_read_offset()
2351 return (cpp_demangle_read_nv_offset(ddata)); in cpp_demangle_read_offset()
2352 } else if (*ddata->cur == 'v') { in cpp_demangle_read_offset()
2353 ++ddata->cur; in cpp_demangle_read_offset()
2354 return (cpp_demangle_read_v_offset(ddata)); in cpp_demangle_read_offset()
2361 cpp_demangle_read_offset_number(struct cpp_demangle_data *ddata) in cpp_demangle_read_offset_number() argument
2366 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_offset_number()
2370 if (*ddata->cur == 'n') { in cpp_demangle_read_offset_number()
2372 start = ddata->cur + 1; in cpp_demangle_read_offset_number()
2375 start = ddata->cur; in cpp_demangle_read_offset_number()
2378 while (*ddata->cur != '_') in cpp_demangle_read_offset_number()
2379 ++ddata->cur; in cpp_demangle_read_offset_number()
2381 if (negative && !DEM_PUSH_STR(ddata, "-")) in cpp_demangle_read_offset_number()
2386 if (!cpp_demangle_push_str(ddata, start, ddata->cur - start)) in cpp_demangle_read_offset_number()
2388 if (!DEM_PUSH_STR(ddata, " ")) in cpp_demangle_read_offset_number()
2391 ++ddata->cur; in cpp_demangle_read_offset_number()
2397 cpp_demangle_read_pointer_to_member(struct cpp_demangle_data *ddata, in cpp_demangle_read_pointer_to_member() argument
2404 if (ddata == NULL || *ddata->cur != 'M' || *(++ddata->cur) == '\0') in cpp_demangle_read_pointer_to_member()
2407 p_idx = ddata->output.size; in cpp_demangle_read_pointer_to_member()
2408 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_pointer_to_member()
2411 if ((class_type = vector_str_substr(&ddata->output, p_idx, in cpp_demangle_read_pointer_to_member()
2412 ddata->output.size - 1, &class_type_len)) == NULL) in cpp_demangle_read_pointer_to_member()
2416 idx = ddata->output.size; in cpp_demangle_read_pointer_to_member()
2418 if (!vector_str_pop(&ddata->output)) in cpp_demangle_read_pointer_to_member()
2421 if (!vector_read_cmd_push(&ddata->cmd, READ_PTRMEM, v)) in cpp_demangle_read_pointer_to_member()
2424 if (!vector_str_push(&ddata->class_type, class_type, class_type_len)) in cpp_demangle_read_pointer_to_member()
2427 p_func_type = ddata->func_type; in cpp_demangle_read_pointer_to_member()
2428 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_pointer_to_member()
2431 if (p_func_type == ddata->func_type) { in cpp_demangle_read_pointer_to_member()
2432 if (!DEM_PUSH_STR(ddata, " ")) in cpp_demangle_read_pointer_to_member()
2434 if (!cpp_demangle_push_str(ddata, class_type, class_type_len)) in cpp_demangle_read_pointer_to_member()
2436 if (!DEM_PUSH_STR(ddata, "::*")) in cpp_demangle_read_pointer_to_member()
2442 if (!vector_str_pop(&ddata->class_type)) in cpp_demangle_read_pointer_to_member()
2445 if (!vector_read_cmd_pop(&ddata->cmd)) in cpp_demangle_read_pointer_to_member()
2459 cpp_demangle_read_sname(struct cpp_demangle_data *ddata) in cpp_demangle_read_sname() argument
2464 if (ddata == NULL || cpp_demangle_read_number(ddata, &len) == 0 || in cpp_demangle_read_sname()
2468 if (len == 12 && (memcmp("_GLOBAL__N_1", ddata->cur, 12) == 0)) in cpp_demangle_read_sname()
2469 err = DEM_PUSH_STR(ddata, "(anonymous namespace)"); in cpp_demangle_read_sname()
2471 err = cpp_demangle_push_str(ddata, ddata->cur, len); in cpp_demangle_read_sname()
2476 assert(ddata->cur_output->size > 0); in cpp_demangle_read_sname()
2477 if (vector_read_cmd_find(&ddata->cmd, READ_TMPL) == NULL) in cpp_demangle_read_sname()
2478 ddata->last_sname = in cpp_demangle_read_sname()
2479 ddata->cur_output->container[ddata->cur_output->size - 1]; in cpp_demangle_read_sname()
2481 ddata->cur += len; in cpp_demangle_read_sname()
2487 cpp_demangle_read_subst(struct cpp_demangle_data *ddata) in cpp_demangle_read_subst() argument
2491 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_subst()
2495 switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { in cpp_demangle_read_subst()
2498 if (!DEM_PUSH_STR(ddata, "std::allocator")) in cpp_demangle_read_subst()
2500 ddata->cur += 2; in cpp_demangle_read_subst()
2501 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2502 return (cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2508 if (!DEM_PUSH_STR(ddata, "std::basic_string")) in cpp_demangle_read_subst()
2510 ddata->cur += 2; in cpp_demangle_read_subst()
2511 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2512 return (cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2518 if (!DEM_PUSH_STR(ddata, "std::basic_iostream<char, " in cpp_demangle_read_subst()
2521 ddata->last_sname = "basic_iostream"; in cpp_demangle_read_subst()
2522 ddata->cur += 2; in cpp_demangle_read_subst()
2523 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2524 return (cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2531 if (!DEM_PUSH_STR(ddata, "std::basic_istream<char, " in cpp_demangle_read_subst()
2534 ddata->last_sname = "basic_istream"; in cpp_demangle_read_subst()
2535 ddata->cur += 2; in cpp_demangle_read_subst()
2536 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2537 return (cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2544 if (!DEM_PUSH_STR(ddata, "std::basic_ostream<char, " in cpp_demangle_read_subst()
2547 ddata->last_sname = "basic_ostream"; in cpp_demangle_read_subst()
2548 ddata->cur += 2; in cpp_demangle_read_subst()
2549 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2550 return (cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2559 if (!DEM_PUSH_STR(ddata, "std::string")) in cpp_demangle_read_subst()
2561 ddata->last_sname = "string"; in cpp_demangle_read_subst()
2562 ddata->cur += 2; in cpp_demangle_read_subst()
2563 if (*ddata->cur == 'I') in cpp_demangle_read_subst()
2564 return cpp_demangle_read_subst_stdtmpl(ddata, in cpp_demangle_read_subst()
2570 return (cpp_demangle_read_subst_std(ddata)); in cpp_demangle_read_subst()
2573 if (*(++ddata->cur) == '\0') in cpp_demangle_read_subst()
2577 if (!(*ddata->cur >= '0' && *ddata->cur <= '9') && in cpp_demangle_read_subst()
2578 !(*ddata->cur >= 'A' && *ddata->cur <= 'Z') && in cpp_demangle_read_subst()
2579 *ddata->cur != '_') { in cpp_demangle_read_subst()
2580 ++ddata->cur; in cpp_demangle_read_subst()
2585 if (*ddata->cur == '_') in cpp_demangle_read_subst()
2586 return (cpp_demangle_get_subst(ddata, 0)); in cpp_demangle_read_subst()
2590 if ((nth = strtol(ddata->cur, (char **) NULL, 36)) == 0 && in cpp_demangle_read_subst()
2597 while (*ddata->cur != '_') in cpp_demangle_read_subst()
2598 ++ddata->cur; in cpp_demangle_read_subst()
2602 return (cpp_demangle_get_subst(ddata, nth)); in cpp_demangle_read_subst()
2610 cpp_demangle_read_subst_std(struct cpp_demangle_data *ddata) in cpp_demangle_read_subst_std() argument
2617 if (ddata == NULL) in cpp_demangle_read_subst_std()
2625 if (!DEM_PUSH_STR(ddata, "std::")) in cpp_demangle_read_subst_std()
2631 ddata->cur += 2; in cpp_demangle_read_subst_std()
2633 output = ddata->cur_output; in cpp_demangle_read_subst_std()
2636 if (!cpp_demangle_read_uqname(ddata)) in cpp_demangle_read_subst_std()
2646 if (!cpp_demangle_push_subst_v(ddata, &v)) in cpp_demangle_read_subst_std()
2649 if (*ddata->cur == 'I') { in cpp_demangle_read_subst_std()
2651 if (!cpp_demangle_read_tmpl_args(ddata)) in cpp_demangle_read_subst_std()
2659 if (!cpp_demangle_push_subst_v(ddata, &v)) in cpp_demangle_read_subst_std()
2672 cpp_demangle_read_subst_stdtmpl(struct cpp_demangle_data *ddata, in cpp_demangle_read_subst_stdtmpl() argument
2680 if (ddata == NULL || str == NULL) in cpp_demangle_read_subst_stdtmpl()
2686 output = ddata->cur_output; in cpp_demangle_read_subst_stdtmpl()
2692 if (!cpp_demangle_read_tmpl_args(ddata)) in cpp_demangle_read_subst_stdtmpl()
2707 if (!cpp_demangle_push_subst(ddata, subst_str, substr_len + len)) in cpp_demangle_read_subst_stdtmpl()
2719 cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata) in cpp_demangle_read_tmpl_arg() argument
2722 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_tmpl_arg()
2725 switch (*ddata->cur) { in cpp_demangle_read_tmpl_arg()
2727 return (cpp_demangle_read_expr_primary(ddata)); in cpp_demangle_read_tmpl_arg()
2729 ++ddata->cur; in cpp_demangle_read_tmpl_arg()
2730 if (!cpp_demangle_read_expression(ddata)) in cpp_demangle_read_tmpl_arg()
2732 return (*ddata->cur++ == 'E'); in cpp_demangle_read_tmpl_arg()
2735 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_tmpl_arg()
2739 cpp_demangle_read_tmpl_args(struct cpp_demangle_data *ddata) in cpp_demangle_read_tmpl_args() argument
2745 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_tmpl_args()
2748 ++ddata->cur; in cpp_demangle_read_tmpl_args()
2750 if (!vector_read_cmd_push(&ddata->cmd, READ_TMPL, NULL)) in cpp_demangle_read_tmpl_args()
2753 if (!DEM_PUSH_STR(ddata, "<")) in cpp_demangle_read_tmpl_args()
2757 v = ddata->cur_output; in cpp_demangle_read_tmpl_args()
2760 if (!cpp_demangle_read_tmpl_arg(ddata)) in cpp_demangle_read_tmpl_args()
2765 if (!vector_str_find(&ddata->tmpl, arg, arg_len) && in cpp_demangle_read_tmpl_args()
2766 !vector_str_push(&ddata->tmpl, arg, arg_len)) { in cpp_demangle_read_tmpl_args()
2773 if (*ddata->cur == 'E') { in cpp_demangle_read_tmpl_args()
2774 ++ddata->cur; in cpp_demangle_read_tmpl_args()
2775 if (!DEM_PUSH_STR(ddata, ">")) in cpp_demangle_read_tmpl_args()
2777 ddata->is_tmpl = true; in cpp_demangle_read_tmpl_args()
2779 } else if (*ddata->cur != 'I' && in cpp_demangle_read_tmpl_args()
2780 !DEM_PUSH_STR(ddata, ", ")) in cpp_demangle_read_tmpl_args()
2787 return (vector_read_cmd_pop(&ddata->cmd)); in cpp_demangle_read_tmpl_args()
2795 cpp_demangle_read_tmpl_param(struct cpp_demangle_data *ddata) in cpp_demangle_read_tmpl_param() argument
2799 if (ddata == NULL || *ddata->cur != 'T') in cpp_demangle_read_tmpl_param()
2802 ++ddata->cur; in cpp_demangle_read_tmpl_param()
2804 if (*ddata->cur == '_') in cpp_demangle_read_tmpl_param()
2805 return (cpp_demangle_get_tmpl_param(ddata, 0)); in cpp_demangle_read_tmpl_param()
2809 if ((nth = strtol(ddata->cur, (char **) NULL, 36)) == 0 && in cpp_demangle_read_tmpl_param()
2816 while (*ddata->cur != '_') in cpp_demangle_read_tmpl_param()
2817 ++ddata->cur; in cpp_demangle_read_tmpl_param()
2821 return (cpp_demangle_get_tmpl_param(ddata, nth)); in cpp_demangle_read_tmpl_param()
2829 cpp_demangle_read_type(struct cpp_demangle_data *ddata, in cpp_demangle_read_type() argument
2841 if (ddata == NULL) in cpp_demangle_read_type()
2844 output = ddata->cur_output; in cpp_demangle_read_type()
2847 if (!DEM_PUSH_STR(ddata, "(")) in cpp_demangle_read_type()
2849 if (ddata->output.size < 2) in cpp_demangle_read_type()
2855 if (*ddata->cur != 'I') { in cpp_demangle_read_type()
2856 if (!DEM_PUSH_STR(ddata, ", ")) in cpp_demangle_read_type()
2880 if (*ddata->cur != 'R' && *ddata->cur != 'O' && *ddata->cur != 'E') in cpp_demangle_read_type()
2881 ddata->ref_qualifier = false; in cpp_demangle_read_type()
2884 switch (*ddata->cur) { in cpp_demangle_read_type()
2887 if (!DEM_PUSH_STR(ddata, "signed char")) in cpp_demangle_read_type()
2889 ++ddata->cur; in cpp_demangle_read_type()
2894 if (!cpp_demangle_read_array(ddata)) in cpp_demangle_read_type()
2901 if (!DEM_PUSH_STR(ddata, "bool")) in cpp_demangle_read_type()
2903 ++ddata->cur; in cpp_demangle_read_type()
2910 ++ddata->cur; in cpp_demangle_read_type()
2917 if (!DEM_PUSH_STR(ddata, "char")) in cpp_demangle_read_type()
2919 ++ddata->cur; in cpp_demangle_read_type()
2924 if (!DEM_PUSH_STR(ddata, "double")) in cpp_demangle_read_type()
2926 ++ddata->cur; in cpp_demangle_read_type()
2930 ++ddata->cur; in cpp_demangle_read_type()
2931 switch (*ddata->cur) { in cpp_demangle_read_type()
2934 if (!DEM_PUSH_STR(ddata, "auto")) in cpp_demangle_read_type()
2936 ++ddata->cur; in cpp_demangle_read_type()
2940 if (!DEM_PUSH_STR(ddata, "decltype(auto)")) in cpp_demangle_read_type()
2942 ++ddata->cur; in cpp_demangle_read_type()
2946 if (!DEM_PUSH_STR(ddata, "decimal64")) in cpp_demangle_read_type()
2948 ++ddata->cur; in cpp_demangle_read_type()
2952 if (!DEM_PUSH_STR(ddata, "decimal128")) in cpp_demangle_read_type()
2954 ++ddata->cur; in cpp_demangle_read_type()
2958 if (!DEM_PUSH_STR(ddata, "decimal32")) in cpp_demangle_read_type()
2960 ++ddata->cur; in cpp_demangle_read_type()
2964 if (!DEM_PUSH_STR(ddata, "half")) in cpp_demangle_read_type()
2966 ++ddata->cur; in cpp_demangle_read_type()
2970 if (!DEM_PUSH_STR(ddata, "char32_t")) in cpp_demangle_read_type()
2972 ++ddata->cur; in cpp_demangle_read_type()
2976 if (!DEM_PUSH_STR(ddata, "decltype(nullptr)")) in cpp_demangle_read_type()
2978 ++ddata->cur; in cpp_demangle_read_type()
2982 if (!DEM_PUSH_STR(ddata, "char16_t")) in cpp_demangle_read_type()
2984 ++ddata->cur; in cpp_demangle_read_type()
2988 ++ddata->cur; in cpp_demangle_read_type()
2989 if (*ddata->cur == '_') { in cpp_demangle_read_type()
2990 ++ddata->cur; in cpp_demangle_read_type()
2991 if (!cpp_demangle_read_expression_flat(ddata, in cpp_demangle_read_type()
2997 if (!cpp_demangle_read_number_as_string(ddata, in cpp_demangle_read_type()
3003 if (*ddata->cur != '_') in cpp_demangle_read_type()
3005 ++ddata->cur; in cpp_demangle_read_type()
3018 if (!DEM_PUSH_STR(ddata, "long double")) in cpp_demangle_read_type()
3020 ++ddata->cur; in cpp_demangle_read_type()
3025 if (ddata->ref_qualifier && ddata->is_functype) { in cpp_demangle_read_type()
3028 cpp_demangle_pop_str(ddata); in cpp_demangle_read_type()
3035 if (!DEM_PUSH_STR(ddata, "float")) in cpp_demangle_read_type()
3037 ++ddata->cur; in cpp_demangle_read_type()
3042 if (!cpp_demangle_read_function(ddata, &extern_c, &v)) in cpp_demangle_read_type()
3049 if (!DEM_PUSH_STR(ddata, "__float128")) in cpp_demangle_read_type()
3051 ++ddata->cur; in cpp_demangle_read_type()
3058 ++ddata->cur; in cpp_demangle_read_type()
3065 if (!DEM_PUSH_STR(ddata, "unsigned char")) in cpp_demangle_read_type()
3067 ++ddata->cur; in cpp_demangle_read_type()
3072 if (!DEM_PUSH_STR(ddata, "int")) in cpp_demangle_read_type()
3074 ++ddata->cur; in cpp_demangle_read_type()
3081 if (!cpp_demangle_read_tmpl_args(ddata)) in cpp_demangle_read_type()
3096 if (!cpp_demangle_push_subst_v(ddata, &sv)) { in cpp_demangle_read_type()
3105 if (!DEM_PUSH_STR(ddata, "unsigned int")) in cpp_demangle_read_type()
3107 ++ddata->cur; in cpp_demangle_read_type()
3114 ++ddata->cur; in cpp_demangle_read_type()
3121 if (!DEM_PUSH_STR(ddata, "long")) in cpp_demangle_read_type()
3123 ++ddata->cur; in cpp_demangle_read_type()
3128 if (!DEM_PUSH_STR(ddata, "unsigned long")) in cpp_demangle_read_type()
3131 ++ddata->cur; in cpp_demangle_read_type()
3136 if (!cpp_demangle_read_pointer_to_member(ddata, &v)) in cpp_demangle_read_type()
3143 if (!DEM_PUSH_STR(ddata, "__int128")) in cpp_demangle_read_type()
3145 ++ddata->cur; in cpp_demangle_read_type()
3150 if (!DEM_PUSH_STR(ddata, "unsigned __int128")) in cpp_demangle_read_type()
3152 ++ddata->cur; in cpp_demangle_read_type()
3157 if (ddata->ref_qualifier) in cpp_demangle_read_type()
3161 ddata->ref_qualifier = true; in cpp_demangle_read_type()
3162 ddata->ref_qualifier_type = TYPE_RREF; in cpp_demangle_read_type()
3163 ++ddata->cur; in cpp_demangle_read_type()
3172 ++ddata->cur; in cpp_demangle_read_type()
3181 ++ddata->cur; in cpp_demangle_read_type()
3188 if (ddata->ref_qualifier) in cpp_demangle_read_type()
3192 ddata->ref_qualifier = true; in cpp_demangle_read_type()
3193 ddata->ref_qualifier_type = TYPE_REF; in cpp_demangle_read_type()
3194 ++ddata->cur; in cpp_demangle_read_type()
3201 if (!DEM_PUSH_STR(ddata, "short")) in cpp_demangle_read_type()
3203 ++ddata->cur; in cpp_demangle_read_type()
3208 if (!cpp_demangle_read_subst(ddata)) in cpp_demangle_read_type()
3215 if (!DEM_PUSH_STR(ddata, "unsigned short")) in cpp_demangle_read_type()
3217 ++ddata->cur; in cpp_demangle_read_type()
3222 if (!cpp_demangle_read_tmpl_param(ddata)) in cpp_demangle_read_type()
3229 ++ddata->cur; in cpp_demangle_read_type()
3230 if (!cpp_demangle_read_sname(ddata)) in cpp_demangle_read_type()
3237 ++ddata->cur; in cpp_demangle_read_type()
3238 if (!cpp_demangle_read_number(ddata, &len)) in cpp_demangle_read_type()
3242 if (!vector_str_push(&v.ext_name, ddata->cur, len)) in cpp_demangle_read_type()
3244 ddata->cur += len; in cpp_demangle_read_type()
3260 for (p = ddata->cur + 1; *p != '\0'; p++) { in cpp_demangle_read_type()
3269 if (!omit_void && !DEM_PUSH_STR(ddata, "void")) in cpp_demangle_read_type()
3271 ++ddata->cur; in cpp_demangle_read_type()
3278 ++ddata->cur; in cpp_demangle_read_type()
3285 if (!DEM_PUSH_STR(ddata, "wchar_t")) in cpp_demangle_read_type()
3287 ++ddata->cur; in cpp_demangle_read_type()
3292 if (!DEM_PUSH_STR(ddata, "long long")) in cpp_demangle_read_type()
3294 ++ddata->cur; in cpp_demangle_read_type()
3299 if (!DEM_PUSH_STR(ddata, "unsigned long long")) in cpp_demangle_read_type()
3301 ++ddata->cur; in cpp_demangle_read_type()
3306 if (!DEM_PUSH_STR(ddata, "...")) in cpp_demangle_read_type()
3308 ++ddata->cur; in cpp_demangle_read_type()
3312 if (!cpp_demangle_read_name(ddata)) in cpp_demangle_read_type()
3322 if (!vector_str_find(&ddata->subst, type_str, type_str_len) && in cpp_demangle_read_type()
3323 !vector_str_push(&ddata->subst, type_str, type_str_len)) in cpp_demangle_read_type()
3328 !cpp_demangle_push_type_qualifier(ddata, &v, type_str)) in cpp_demangle_read_type()
3350 cpp_demangle_read_type_flat(struct cpp_demangle_data *ddata, char **str) in cpp_demangle_read_type_flat() argument
3356 output = ddata->cur_output; in cpp_demangle_read_type_flat()
3360 if (!cpp_demangle_read_type(ddata, NULL)) in cpp_demangle_read_type_flat()
3385 cpp_demangle_read_uqname(struct cpp_demangle_data *ddata) in cpp_demangle_read_uqname() argument
3389 if (ddata == NULL || *ddata->cur == '\0') in cpp_demangle_read_uqname()
3393 switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { in cpp_demangle_read_uqname()
3396 if (!DEM_PUSH_STR(ddata, "operator&&")) in cpp_demangle_read_uqname()
3398 ddata->cur += 2; in cpp_demangle_read_uqname()
3403 if (!DEM_PUSH_STR(ddata, "operator&")) in cpp_demangle_read_uqname()
3405 ddata->cur += 2; in cpp_demangle_read_uqname()
3410 if (!DEM_PUSH_STR(ddata, "operator&")) in cpp_demangle_read_uqname()
3412 ddata->cur += 2; in cpp_demangle_read_uqname()
3417 if (!DEM_PUSH_STR(ddata, "operator&=")) in cpp_demangle_read_uqname()
3419 ddata->cur += 2; in cpp_demangle_read_uqname()
3424 if (!DEM_PUSH_STR(ddata, "operator=")) in cpp_demangle_read_uqname()
3426 ddata->cur += 2; in cpp_demangle_read_uqname()
3431 if (!DEM_PUSH_STR(ddata, "operator()")) in cpp_demangle_read_uqname()
3433 ddata->cur += 2; in cpp_demangle_read_uqname()
3438 if (!DEM_PUSH_STR(ddata, "operator,")) in cpp_demangle_read_uqname()
3440 ddata->cur += 2; in cpp_demangle_read_uqname()
3445 if (!DEM_PUSH_STR(ddata, "operator~")) in cpp_demangle_read_uqname()
3447 ddata->cur += 2; in cpp_demangle_read_uqname()
3452 if (!DEM_PUSH_STR(ddata, "operator(cast)")) in cpp_demangle_read_uqname()
3454 ddata->cur += 2; in cpp_demangle_read_uqname()
3455 return (cpp_demangle_read_type(ddata, NULL)); in cpp_demangle_read_uqname()
3459 if (!DEM_PUSH_STR(ddata, "operator delete []")) in cpp_demangle_read_uqname()
3461 ddata->cur += 2; in cpp_demangle_read_uqname()
3466 if (!DEM_PUSH_STR(ddata, "operator*")) in cpp_demangle_read_uqname()
3468 ddata->cur += 2; in cpp_demangle_read_uqname()
3473 if (!DEM_PUSH_STR(ddata, "operator delete")) in cpp_demangle_read_uqname()
3475 ddata->cur += 2; in cpp_demangle_read_uqname()
3480 if (!DEM_PUSH_STR(ddata, "operator/")) in cpp_demangle_read_uqname()
3482 ddata->cur += 2; in cpp_demangle_read_uqname()
3487 if (!DEM_PUSH_STR(ddata, "operator/=")) in cpp_demangle_read_uqname()
3489 ddata->cur += 2; in cpp_demangle_read_uqname()
3494 if (!DEM_PUSH_STR(ddata, "operator^")) in cpp_demangle_read_uqname()
3496 ddata->cur += 2; in cpp_demangle_read_uqname()
3501 if (!DEM_PUSH_STR(ddata, "operator^=")) in cpp_demangle_read_uqname()
3503 ddata->cur += 2; in cpp_demangle_read_uqname()
3508 if (!DEM_PUSH_STR(ddata, "operator==")) in cpp_demangle_read_uqname()
3510 ddata->cur += 2; in cpp_demangle_read_uqname()
3515 if (!DEM_PUSH_STR(ddata, "operator>=")) in cpp_demangle_read_uqname()
3517 ddata->cur += 2; in cpp_demangle_read_uqname()
3522 if (!DEM_PUSH_STR(ddata, "operator>")) in cpp_demangle_read_uqname()
3524 ddata->cur += 2; in cpp_demangle_read_uqname()
3529 if (!DEM_PUSH_STR(ddata, "operator[]")) in cpp_demangle_read_uqname()
3531 ddata->cur += 2; in cpp_demangle_read_uqname()
3536 if (!DEM_PUSH_STR(ddata, "operator<=")) in cpp_demangle_read_uqname()
3538 ddata->cur += 2; in cpp_demangle_read_uqname()
3543 if (!DEM_PUSH_STR(ddata, "operator<<")) in cpp_demangle_read_uqname()
3545 ddata->cur += 2; in cpp_demangle_read_uqname()
3550 if (!DEM_PUSH_STR(ddata, "operator<<=")) in cpp_demangle_read_uqname()
3552 ddata->cur += 2; in cpp_demangle_read_uqname()
3557 if (!DEM_PUSH_STR(ddata, "operator<")) in cpp_demangle_read_uqname()
3559 ddata->cur += 2; in cpp_demangle_read_uqname()
3564 if (!DEM_PUSH_STR(ddata, "operator-")) in cpp_demangle_read_uqname()
3566 ddata->cur += 2; in cpp_demangle_read_uqname()
3571 if (!DEM_PUSH_STR(ddata, "operator-=")) in cpp_demangle_read_uqname()
3573 ddata->cur += 2; in cpp_demangle_read_uqname()
3578 if (!DEM_PUSH_STR(ddata, "operator*")) in cpp_demangle_read_uqname()
3580 ddata->cur += 2; in cpp_demangle_read_uqname()
3585 if (!DEM_PUSH_STR(ddata, "operator*=")) in cpp_demangle_read_uqname()
3587 ddata->cur += 2; in cpp_demangle_read_uqname()
3592 if (!DEM_PUSH_STR(ddata, "operator--")) in cpp_demangle_read_uqname()
3594 ddata->cur += 2; in cpp_demangle_read_uqname()
3599 if (!DEM_PUSH_STR(ddata, "operator new []")) in cpp_demangle_read_uqname()
3601 ddata->cur += 2; in cpp_demangle_read_uqname()
3606 if (!DEM_PUSH_STR(ddata, "operator!=")) in cpp_demangle_read_uqname()
3608 ddata->cur += 2; in cpp_demangle_read_uqname()
3613 if (!DEM_PUSH_STR(ddata, "operator-")) in cpp_demangle_read_uqname()
3615 ddata->cur += 2; in cpp_demangle_read_uqname()
3620 if (!DEM_PUSH_STR(ddata, "operator!")) in cpp_demangle_read_uqname()
3622 ddata->cur += 2; in cpp_demangle_read_uqname()
3627 if (!DEM_PUSH_STR(ddata, "operator new")) in cpp_demangle_read_uqname()
3629 ddata->cur += 2; in cpp_demangle_read_uqname()
3634 if (!DEM_PUSH_STR(ddata, "operator||")) in cpp_demangle_read_uqname()
3636 ddata->cur += 2; in cpp_demangle_read_uqname()
3641 if (!DEM_PUSH_STR(ddata, "operator|")) in cpp_demangle_read_uqname()
3643 ddata->cur += 2; in cpp_demangle_read_uqname()
3648 if (!DEM_PUSH_STR(ddata, "operator|=")) in cpp_demangle_read_uqname()
3650 ddata->cur += 2; in cpp_demangle_read_uqname()
3655 if (!DEM_PUSH_STR(ddata, "operator+")) in cpp_demangle_read_uqname()
3657 ddata->cur += 2; in cpp_demangle_read_uqname()
3662 if (!DEM_PUSH_STR(ddata, "operator+=")) in cpp_demangle_read_uqname()
3664 ddata->cur += 2; in cpp_demangle_read_uqname()
3669 if (!DEM_PUSH_STR(ddata, "operator->*")) in cpp_demangle_read_uqname()
3671 ddata->cur += 2; in cpp_demangle_read_uqname()
3676 if (!DEM_PUSH_STR(ddata, "operator++")) in cpp_demangle_read_uqname()
3678 ddata->cur += 2; in cpp_demangle_read_uqname()
3683 if (!DEM_PUSH_STR(ddata, "operator+")) in cpp_demangle_read_uqname()
3685 ddata->cur += 2; in cpp_demangle_read_uqname()
3690 if (!DEM_PUSH_STR(ddata, "operator->")) in cpp_demangle_read_uqname()
3692 ddata->cur += 2; in cpp_demangle_read_uqname()
3697 if (!DEM_PUSH_STR(ddata, "operator?")) in cpp_demangle_read_uqname()
3699 ddata->cur += 2; in cpp_demangle_read_uqname()
3704 if (!DEM_PUSH_STR(ddata, "operator%")) in cpp_demangle_read_uqname()
3706 ddata->cur += 2; in cpp_demangle_read_uqname()
3711 if (!DEM_PUSH_STR(ddata, "operator%=")) in cpp_demangle_read_uqname()
3713 ddata->cur += 2; in cpp_demangle_read_uqname()
3718 if (!DEM_PUSH_STR(ddata, "operator>>")) in cpp_demangle_read_uqname()
3720 ddata->cur += 2; in cpp_demangle_read_uqname()
3725 if (!DEM_PUSH_STR(ddata, "operator>>=")) in cpp_demangle_read_uqname()
3727 ddata->cur += 2; in cpp_demangle_read_uqname()
3732 if (!DEM_PUSH_STR(ddata, "operator sizeof ")) in cpp_demangle_read_uqname()
3734 ddata->cur += 2; in cpp_demangle_read_uqname()
3739 if (!DEM_PUSH_STR(ddata, "scope resolution operator ")) in cpp_demangle_read_uqname()
3741 ddata->cur += 2; in cpp_demangle_read_uqname()
3746 if (!DEM_PUSH_STR(ddata, "operator sizeof ")) in cpp_demangle_read_uqname()
3748 ddata->cur += 2; in cpp_demangle_read_uqname()
3753 if (*ddata->cur == 'v' && ELFTC_ISDIGIT(*(ddata->cur + 1))) { in cpp_demangle_read_uqname()
3754 if (!DEM_PUSH_STR(ddata, "vendor extened operator ")) in cpp_demangle_read_uqname()
3756 if (!cpp_demangle_push_str(ddata, ddata->cur + 1, 1)) in cpp_demangle_read_uqname()
3758 ddata->cur += 2; in cpp_demangle_read_uqname()
3759 return (cpp_demangle_read_sname(ddata)); in cpp_demangle_read_uqname()
3763 switch (SIMPLE_HASH(*ddata->cur, *(ddata->cur + 1))) { in cpp_demangle_read_uqname()
3767 if (ddata->last_sname == NULL) in cpp_demangle_read_uqname()
3769 if ((len = strlen(ddata->last_sname)) == 0) in cpp_demangle_read_uqname()
3771 if (!DEM_PUSH_STR(ddata, "::")) in cpp_demangle_read_uqname()
3773 if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) in cpp_demangle_read_uqname()
3775 ddata->cur +=2; in cpp_demangle_read_uqname()
3781 if (ddata->last_sname == NULL) in cpp_demangle_read_uqname()
3783 if ((len = strlen(ddata->last_sname)) == 0) in cpp_demangle_read_uqname()
3785 if (!DEM_PUSH_STR(ddata, "::~")) in cpp_demangle_read_uqname()
3787 if (!cpp_demangle_push_str(ddata, ddata->last_sname, len)) in cpp_demangle_read_uqname()
3789 ddata->cur +=2; in cpp_demangle_read_uqname()
3794 if (ELFTC_ISDIGIT(*ddata->cur) != 0) in cpp_demangle_read_uqname()
3795 return (cpp_demangle_read_sname(ddata)); in cpp_demangle_read_uqname()
3798 if (*ddata->cur == 'L') in cpp_demangle_read_uqname()
3799 return (cpp_demangle_local_source_name(ddata)); in cpp_demangle_read_uqname()
3812 cpp_demangle_local_source_name(struct cpp_demangle_data *ddata) in cpp_demangle_local_source_name() argument
3815 if (ddata == NULL || *ddata->cur != 'L') in cpp_demangle_local_source_name()
3817 ++ddata->cur; in cpp_demangle_local_source_name()
3820 if (!cpp_demangle_read_sname(ddata)) in cpp_demangle_local_source_name()
3824 if (*ddata->cur == '_') { in cpp_demangle_local_source_name()
3825 ++ddata->cur; in cpp_demangle_local_source_name()
3826 while (ELFTC_ISDIGIT(*ddata->cur) != 0) in cpp_demangle_local_source_name()
3827 ++ddata->cur; in cpp_demangle_local_source_name()
3834 cpp_demangle_read_v_offset(struct cpp_demangle_data *ddata) in cpp_demangle_read_v_offset() argument
3837 if (ddata == NULL) in cpp_demangle_read_v_offset()
3840 if (!DEM_PUSH_STR(ddata, "offset : ")) in cpp_demangle_read_v_offset()
3843 if (!cpp_demangle_read_offset_number(ddata)) in cpp_demangle_read_v_offset()
3846 if (!DEM_PUSH_STR(ddata, "virtual offset : ")) in cpp_demangle_read_v_offset()
3849 return (!cpp_demangle_read_offset_number(ddata)); in cpp_demangle_read_v_offset()