Lines Matching refs:mangled
199 dlang_number (const char *mangled, long *ret) in dlang_number() argument
202 if (mangled == NULL || !ISDIGIT (*mangled)) in dlang_number()
207 while (ISDIGIT (*mangled)) in dlang_number()
216 (*ret) += mangled[0] - '0'; in dlang_number()
217 mangled++; in dlang_number()
220 if (*mangled == '\0' || *ret < 0) in dlang_number()
223 return mangled; in dlang_number()
229 dlang_hexdigit (const char *mangled, char *ret) in dlang_hexdigit() argument
234 if (mangled == NULL || !ISXDIGIT (mangled[0]) || !ISXDIGIT (mangled[1])) in dlang_hexdigit()
237 c = mangled[0]; in dlang_hexdigit()
243 c = mangled[1]; in dlang_hexdigit()
249 mangled += 2; in dlang_hexdigit()
251 return mangled; in dlang_hexdigit()
257 dlang_call_convention_p (const char *mangled) in dlang_call_convention_p() argument
259 switch (*mangled) in dlang_call_convention_p()
273 dlang_call_convention (string *decl, const char *mangled) in dlang_call_convention() argument
275 if (mangled == NULL || *mangled == '\0') in dlang_call_convention()
278 switch (*mangled) in dlang_call_convention()
281 mangled++; in dlang_call_convention()
284 mangled++; in dlang_call_convention()
288 mangled++; in dlang_call_convention()
292 mangled++; in dlang_call_convention()
296 mangled++; in dlang_call_convention()
300 mangled++; in dlang_call_convention()
307 return mangled; in dlang_call_convention()
313 dlang_type_modifiers (string *decl, const char *mangled) in dlang_type_modifiers() argument
315 if (mangled == NULL || *mangled == '\0') in dlang_type_modifiers()
318 switch (*mangled) in dlang_type_modifiers()
321 mangled++; in dlang_type_modifiers()
323 return mangled; in dlang_type_modifiers()
325 mangled++; in dlang_type_modifiers()
327 return mangled; in dlang_type_modifiers()
329 mangled++; in dlang_type_modifiers()
331 return dlang_type_modifiers (decl, mangled); in dlang_type_modifiers()
333 mangled++; in dlang_type_modifiers()
334 if (*mangled == 'g') /* wild */ in dlang_type_modifiers()
336 mangled++; in dlang_type_modifiers()
338 return dlang_type_modifiers (decl, mangled); in dlang_type_modifiers()
344 return mangled; in dlang_type_modifiers()
351 dlang_attributes (string *decl, const char *mangled) in dlang_attributes() argument
353 if (mangled == NULL || *mangled == '\0') in dlang_attributes()
356 while (*mangled == 'N') in dlang_attributes()
358 mangled++; in dlang_attributes()
359 switch (*mangled) in dlang_attributes()
362 mangled++; in dlang_attributes()
366 mangled++; in dlang_attributes()
370 mangled++; in dlang_attributes()
374 mangled++; in dlang_attributes()
378 mangled++; in dlang_attributes()
382 mangled++; in dlang_attributes()
393 mangled--; in dlang_attributes()
396 mangled++; in dlang_attributes()
400 mangled++; in dlang_attributes()
404 mangled++; in dlang_attributes()
414 return mangled; in dlang_attributes()
420 dlang_function_type (string *decl, const char *mangled) in dlang_function_type() argument
425 if (mangled == NULL || *mangled == '\0') in dlang_function_type()
439 mangled = dlang_call_convention (decl, mangled); in dlang_function_type()
442 mangled = dlang_attributes (&attr, mangled); in dlang_function_type()
446 mangled = dlang_function_args (&args, mangled); in dlang_function_type()
450 mangled = dlang_type (&type, mangled); in dlang_function_type()
463 return mangled; in dlang_function_type()
469 dlang_function_args (string *decl, const char *mangled) in dlang_function_args() argument
473 while (mangled && *mangled != '\0') in dlang_function_args()
475 switch (*mangled) in dlang_function_args()
478 mangled++; in dlang_function_args()
480 return mangled; in dlang_function_args()
482 mangled++; in dlang_function_args()
486 return mangled; in dlang_function_args()
488 mangled++; in dlang_function_args()
489 return mangled; in dlang_function_args()
495 if (*mangled == 'M') /* scope(T) */ in dlang_function_args()
497 mangled++; in dlang_function_args()
501 if (mangled[0] == 'N' && mangled[1] == 'k') /* return(T) */ in dlang_function_args()
503 mangled += 2; in dlang_function_args()
507 switch (*mangled) in dlang_function_args()
510 mangled++; in dlang_function_args()
514 mangled++; in dlang_function_args()
518 mangled++; in dlang_function_args()
522 mangled = dlang_type (decl, mangled); in dlang_function_args()
525 return mangled; in dlang_function_args()
531 dlang_type (string *decl, const char *mangled) in dlang_type() argument
533 if (mangled == NULL || *mangled == '\0') in dlang_type()
536 switch (*mangled) in dlang_type()
539 mangled++; in dlang_type()
541 mangled = dlang_type (decl, mangled); in dlang_type()
543 return mangled; in dlang_type()
545 mangled++; in dlang_type()
547 mangled = dlang_type (decl, mangled); in dlang_type()
549 return mangled; in dlang_type()
551 mangled++; in dlang_type()
553 mangled = dlang_type (decl, mangled); in dlang_type()
555 return mangled; in dlang_type()
557 mangled++; in dlang_type()
558 if (*mangled == 'g') /* wild(T) */ in dlang_type()
560 mangled++; in dlang_type()
562 mangled = dlang_type (decl, mangled); in dlang_type()
564 return mangled; in dlang_type()
566 else if (*mangled == 'h') /* vector(T) */ in dlang_type()
568 mangled++; in dlang_type()
570 mangled = dlang_type (decl, mangled); in dlang_type()
572 return mangled; in dlang_type()
577 mangled++; in dlang_type()
578 mangled = dlang_type (decl, mangled); in dlang_type()
580 return mangled; in dlang_type()
585 mangled++; in dlang_type()
587 numptr = mangled; in dlang_type()
588 while (ISDIGIT (*mangled)) in dlang_type()
591 mangled++; in dlang_type()
593 mangled = dlang_type (decl, mangled); in dlang_type()
597 return mangled; in dlang_type()
603 mangled++; in dlang_type()
606 mangled = dlang_type (&type, mangled); in dlang_type()
609 mangled = dlang_type (decl, mangled); in dlang_type()
615 return mangled; in dlang_type()
618 mangled++; in dlang_type()
619 if (!dlang_call_convention_p (mangled)) in dlang_type()
621 mangled = dlang_type (decl, mangled); in dlang_type()
623 return mangled; in dlang_type()
633 mangled = dlang_function_type (decl, mangled); in dlang_type()
635 return mangled; in dlang_type()
641 mangled++; in dlang_type()
642 return dlang_parse_qualified (decl, mangled, dlang_type_name); in dlang_type()
647 mangled++; in dlang_type()
650 mangled = dlang_type_modifiers (&mods, mangled); in dlang_type()
653 mangled = dlang_function_type (decl, mangled); in dlang_type()
658 return mangled; in dlang_type()
661 mangled++; in dlang_type()
662 return dlang_parse_tuple (decl, mangled); in dlang_type()
666 mangled++; in dlang_type()
668 return mangled; in dlang_type()
670 mangled++; in dlang_type()
672 return mangled; in dlang_type()
674 mangled++; in dlang_type()
676 return mangled; in dlang_type()
678 mangled++; in dlang_type()
680 return mangled; in dlang_type()
682 mangled++; in dlang_type()
684 return mangled; in dlang_type()
686 mangled++; in dlang_type()
688 return mangled; in dlang_type()
690 mangled++; in dlang_type()
692 return mangled; in dlang_type()
694 mangled++; in dlang_type()
696 return mangled; in dlang_type()
698 mangled++; in dlang_type()
700 return mangled; in dlang_type()
702 mangled++; in dlang_type()
704 return mangled; in dlang_type()
706 mangled++; in dlang_type()
708 return mangled; in dlang_type()
710 mangled++; in dlang_type()
712 return mangled; in dlang_type()
714 mangled++; in dlang_type()
716 return mangled; in dlang_type()
720 mangled++; in dlang_type()
722 return mangled; in dlang_type()
724 mangled++; in dlang_type()
726 return mangled; in dlang_type()
728 mangled++; in dlang_type()
730 return mangled; in dlang_type()
732 mangled++; in dlang_type()
734 return mangled; in dlang_type()
736 mangled++; in dlang_type()
738 return mangled; in dlang_type()
740 mangled++; in dlang_type()
742 return mangled; in dlang_type()
746 mangled++; in dlang_type()
748 return mangled; in dlang_type()
750 mangled++; in dlang_type()
752 return mangled; in dlang_type()
754 mangled++; in dlang_type()
756 return mangled; in dlang_type()
758 mangled++; in dlang_type()
760 return mangled; in dlang_type()
762 mangled++; in dlang_type()
763 switch (*mangled) in dlang_type()
766 mangled++; in dlang_type()
768 return mangled; in dlang_type()
770 mangled++; in dlang_type()
772 return mangled; in dlang_type()
784 dlang_identifier (string *decl, const char *mangled, in dlang_identifier() argument
788 const char *endptr = dlang_number (mangled, &len); in dlang_identifier()
805 mangled = pend; in dlang_identifier()
818 if (ISDIGIT (*mangled)) in dlang_identifier()
819 mangled = dlang_parse_qualified (decl, mangled, in dlang_identifier()
821 else if (strncmp (mangled, "_D", 2) == 0) in dlang_identifier()
822 mangled = dlang_parse_mangle (decl, mangled, dlang_function); in dlang_identifier()
825 if (mangled && (mangled - pend) == psize) in dlang_identifier()
826 return mangled; in dlang_identifier()
840 mangled = endptr; in dlang_identifier()
843 if (len >= 5 && mangled[0] == '_' && mangled[1] == '_' in dlang_identifier()
844 && (mangled[2] == 'T' || mangled[2] == 'U')) in dlang_identifier()
845 return dlang_parse_template (decl, mangled, len); in dlang_identifier()
850 if (strncmp (mangled, "__ctor", len) == 0) in dlang_identifier()
854 mangled += len; in dlang_identifier()
855 return mangled; in dlang_identifier()
857 else if (strncmp (mangled, "__dtor", len) == 0) in dlang_identifier()
861 mangled += len; in dlang_identifier()
862 return mangled; in dlang_identifier()
864 else if (strncmp (mangled, "__initZ", len+1) == 0) in dlang_identifier()
869 mangled += len; in dlang_identifier()
870 return mangled; in dlang_identifier()
872 else if (strncmp (mangled, "__vtblZ", len+1) == 0) in dlang_identifier()
877 mangled += len; in dlang_identifier()
878 return mangled; in dlang_identifier()
883 if (strncmp (mangled, "__ClassZ", len+1) == 0) in dlang_identifier()
888 mangled += len; in dlang_identifier()
889 return mangled; in dlang_identifier()
894 if (strncmp (mangled, "__postblitMFZ", len+3) == 0) in dlang_identifier()
898 mangled += len + 3; in dlang_identifier()
899 return mangled; in dlang_identifier()
904 if (strncmp (mangled, "__InterfaceZ", len+1) == 0) in dlang_identifier()
909 mangled += len; in dlang_identifier()
910 return mangled; in dlang_identifier()
915 if (strncmp (mangled, "__ModuleInfoZ", len+1) == 0) in dlang_identifier()
920 mangled += len; in dlang_identifier()
921 return mangled; in dlang_identifier()
926 string_appendn (decl, mangled, len); in dlang_identifier()
927 mangled += len; in dlang_identifier()
930 return mangled; in dlang_identifier()
937 dlang_parse_integer (string *decl, const char *mangled, char type) in dlang_parse_integer() argument
947 mangled = dlang_number (mangled, &val); in dlang_parse_integer()
948 if (mangled == NULL) in dlang_parse_integer()
1003 mangled = dlang_number (mangled, &val); in dlang_parse_integer()
1004 if (mangled == NULL) in dlang_parse_integer()
1012 const char *numptr = mangled; in dlang_parse_integer()
1015 if (! ISDIGIT (*mangled)) in dlang_parse_integer()
1018 while (ISDIGIT (*mangled)) in dlang_parse_integer()
1021 mangled++; in dlang_parse_integer()
1042 return mangled; in dlang_parse_integer()
1048 dlang_parse_real (string *decl, const char *mangled) in dlang_parse_real() argument
1051 if (strncmp (mangled, "NAN", 3) == 0) in dlang_parse_real()
1054 mangled += 3; in dlang_parse_real()
1055 return mangled; in dlang_parse_real()
1057 else if (strncmp (mangled, "INF", 3) == 0) in dlang_parse_real()
1060 mangled += 3; in dlang_parse_real()
1061 return mangled; in dlang_parse_real()
1063 else if (strncmp (mangled, "NINF", 4) == 0) in dlang_parse_real()
1066 mangled += 4; in dlang_parse_real()
1067 return mangled; in dlang_parse_real()
1071 if (*mangled == 'N') in dlang_parse_real()
1074 mangled++; in dlang_parse_real()
1077 if (!ISXDIGIT (*mangled)) in dlang_parse_real()
1081 string_appendn (decl, mangled, 1); in dlang_parse_real()
1083 mangled++; in dlang_parse_real()
1086 while (ISXDIGIT (*mangled)) in dlang_parse_real()
1088 string_appendn (decl, mangled, 1); in dlang_parse_real()
1089 mangled++; in dlang_parse_real()
1093 if (*mangled != 'P') in dlang_parse_real()
1097 mangled++; in dlang_parse_real()
1099 if (*mangled == 'N') in dlang_parse_real()
1102 mangled++; in dlang_parse_real()
1105 while (ISDIGIT (*mangled)) in dlang_parse_real()
1107 string_appendn (decl, mangled, 1); in dlang_parse_real()
1108 mangled++; in dlang_parse_real()
1111 return mangled; in dlang_parse_real()
1117 dlang_parse_string (string *decl, const char *mangled) in dlang_parse_string() argument
1119 char type = *mangled; in dlang_parse_string()
1122 mangled++; in dlang_parse_string()
1123 mangled = dlang_number (mangled, &len); in dlang_parse_string()
1124 if (mangled == NULL || *mangled != '_') in dlang_parse_string()
1127 mangled++; in dlang_parse_string()
1132 const char *endptr = dlang_hexdigit (mangled, &val); in dlang_parse_string()
1165 string_appendn (decl, mangled, 2); in dlang_parse_string()
1169 mangled = endptr; in dlang_parse_string()
1176 return mangled; in dlang_parse_string()
1182 dlang_parse_arrayliteral (string *decl, const char *mangled) in dlang_parse_arrayliteral() argument
1186 mangled = dlang_number (mangled, &elements); in dlang_parse_arrayliteral()
1187 if (mangled == NULL) in dlang_parse_arrayliteral()
1193 mangled = dlang_value (decl, mangled, NULL, '\0'); in dlang_parse_arrayliteral()
1194 if (mangled == NULL) in dlang_parse_arrayliteral()
1202 return mangled; in dlang_parse_arrayliteral()
1208 dlang_parse_assocarray (string *decl, const char *mangled) in dlang_parse_assocarray() argument
1212 mangled = dlang_number (mangled, &elements); in dlang_parse_assocarray()
1213 if (mangled == NULL) in dlang_parse_assocarray()
1219 mangled = dlang_value (decl, mangled, NULL, '\0'); in dlang_parse_assocarray()
1220 if (mangled == NULL) in dlang_parse_assocarray()
1224 mangled = dlang_value (decl, mangled, NULL, '\0'); in dlang_parse_assocarray()
1225 if (mangled == NULL) in dlang_parse_assocarray()
1233 return mangled; in dlang_parse_assocarray()
1239 dlang_parse_structlit (string *decl, const char *mangled, const char *name) in dlang_parse_structlit() argument
1243 mangled = dlang_number (mangled, &args); in dlang_parse_structlit()
1244 if (mangled == NULL) in dlang_parse_structlit()
1253 mangled = dlang_value (decl, mangled, NULL, '\0'); in dlang_parse_structlit()
1254 if (mangled == NULL) in dlang_parse_structlit()
1262 return mangled; in dlang_parse_structlit()
1268 dlang_value (string *decl, const char *mangled, const char *name, char type) in dlang_value() argument
1270 if (mangled == NULL || *mangled == '\0') in dlang_value()
1273 switch (*mangled) in dlang_value()
1277 mangled++; in dlang_value()
1283 mangled++; in dlang_value()
1285 mangled = dlang_parse_integer (decl, mangled, type); in dlang_value()
1289 mangled++; in dlang_value()
1297 mangled = dlang_parse_integer (decl, mangled, type); in dlang_value()
1302 mangled++; in dlang_value()
1303 mangled = dlang_parse_real (decl, mangled); in dlang_value()
1308 mangled++; in dlang_value()
1309 mangled = dlang_parse_real (decl, mangled); in dlang_value()
1311 if (mangled == NULL || *mangled != 'c') in dlang_value()
1313 mangled++; in dlang_value()
1314 mangled = dlang_parse_real (decl, mangled); in dlang_value()
1322 mangled = dlang_parse_string (decl, mangled); in dlang_value()
1327 mangled++; in dlang_value()
1329 mangled = dlang_parse_assocarray (decl, mangled); in dlang_value()
1331 mangled = dlang_parse_arrayliteral (decl, mangled); in dlang_value()
1336 mangled++; in dlang_value()
1337 mangled = dlang_parse_structlit (decl, mangled, name); in dlang_value()
1344 return mangled; in dlang_value()
1350 dlang_parse_mangle (string *decl, const char *mangled, in dlang_parse_mangle() argument
1363 mangled += 2; in dlang_parse_mangle()
1365 mangled = dlang_parse_qualified (decl, mangled, dlang_top_level); in dlang_parse_mangle()
1367 if (mangled != NULL) in dlang_parse_mangle()
1370 if (*mangled == 'Z') in dlang_parse_mangle()
1371 mangled++; in dlang_parse_mangle()
1378 if (*mangled == 'M') in dlang_parse_mangle()
1379 mangled++; in dlang_parse_mangle()
1383 mangled = dlang_type_modifiers (&mods, mangled); in dlang_parse_mangle()
1385 if (mangled && dlang_call_convention_p (mangled)) in dlang_parse_mangle()
1389 mangled = dlang_call_convention (decl, mangled); in dlang_parse_mangle()
1390 mangled = dlang_attributes (decl, mangled); in dlang_parse_mangle()
1394 mangled = dlang_function_args (decl, mangled); in dlang_parse_mangle()
1403 mangled = dlang_type (decl, mangled); in dlang_parse_mangle()
1413 if (mangled == NULL || *mangled != '\0') in dlang_parse_mangle()
1417 return mangled; in dlang_parse_mangle()
1423 dlang_parse_qualified (string *decl, const char *mangled, in dlang_parse_qualified() argument
1445 while (*mangled == '0') in dlang_parse_qualified()
1446 mangled++; in dlang_parse_qualified()
1448 mangled = dlang_identifier (decl, mangled, kind); in dlang_parse_qualified()
1454 if (mangled && (*mangled == 'M' || dlang_call_convention_p (mangled))) in dlang_parse_qualified()
1456 const char *start = mangled; in dlang_parse_qualified()
1460 if (*mangled == 'M') in dlang_parse_qualified()
1462 mangled++; in dlang_parse_qualified()
1463 mangled = dlang_type_modifiers (decl, mangled); in dlang_parse_qualified()
1474 mangled = dlang_call_convention (decl, mangled); in dlang_parse_qualified()
1475 mangled = dlang_attributes (decl, mangled); in dlang_parse_qualified()
1479 mangled = dlang_function_args (decl, mangled); in dlang_parse_qualified()
1482 if (mangled == NULL || !ISDIGIT (*mangled)) in dlang_parse_qualified()
1485 mangled = start; in dlang_parse_qualified()
1490 while (mangled && ISDIGIT (*mangled)); in dlang_parse_qualified()
1492 return mangled; in dlang_parse_qualified()
1498 dlang_parse_tuple (string *decl, const char *mangled) in dlang_parse_tuple() argument
1502 mangled = dlang_number (mangled, &elements); in dlang_parse_tuple()
1503 if (mangled == NULL) in dlang_parse_tuple()
1510 mangled = dlang_type (decl, mangled); in dlang_parse_tuple()
1511 if (mangled == NULL) in dlang_parse_tuple()
1519 return mangled; in dlang_parse_tuple()
1525 dlang_template_args (string *decl, const char *mangled) in dlang_template_args() argument
1529 while (mangled && *mangled != '\0') in dlang_template_args()
1531 switch (*mangled) in dlang_template_args()
1534 mangled++; in dlang_template_args()
1535 return mangled; in dlang_template_args()
1542 if (*mangled == 'H') in dlang_template_args()
1543 mangled++; in dlang_template_args()
1545 switch (*mangled) in dlang_template_args()
1548 mangled++; in dlang_template_args()
1549 mangled = dlang_identifier (decl, mangled, dlang_template_param); in dlang_template_args()
1552 mangled++; in dlang_template_args()
1553 mangled = dlang_type (decl, mangled); in dlang_template_args()
1561 mangled++; in dlang_template_args()
1562 type = *mangled; in dlang_template_args()
1567 mangled = dlang_type (&name, mangled); in dlang_template_args()
1571 mangled = dlang_value (decl, mangled, name.b, type); in dlang_template_args()
1581 return mangled; in dlang_template_args()
1588 dlang_parse_template (string *decl, const char *mangled, long len) in dlang_parse_template() argument
1590 const char *start = mangled; in dlang_parse_template()
1604 if (!ISDIGIT (mangled[3]) || mangled[3] == '0') in dlang_parse_template()
1607 mangled += 3; in dlang_parse_template()
1610 mangled = dlang_identifier (decl, mangled, dlang_template_ident); in dlang_parse_template()
1614 mangled = dlang_template_args (decl, mangled); in dlang_parse_template()
1618 if (mangled && (mangled - start) != len) in dlang_parse_template()
1621 return mangled; in dlang_parse_template()
1628 dlang_demangle (const char *mangled, int option ATTRIBUTE_UNUSED) in dlang_demangle() argument
1633 if (mangled == NULL || *mangled == '\0') in dlang_demangle()
1636 if (strncmp (mangled, "_D", 2) != 0) in dlang_demangle()
1641 if (strcmp (mangled, "_Dmain") == 0) in dlang_demangle()
1647 if (dlang_parse_mangle (&decl, mangled, dlang_top_level) == NULL) in dlang_demangle()