Lines Matching +full:2 +full:d

11  * 2. Redistributions in binary form must reproduce the above copyright
44 * @brief Decode function name encoding in GNU 2.
46 * Function name encoding in GNU 2 based on ARM style.
69 #define VEC_PUSH_STR(d,s) vector_str_push((d), (s), strlen((s))) argument
91 * @brief Decode the input string by the GNU 2 style.
98 struct demangle_data d; in cpp_demangle_gnu2() local
106 if (init_demangle_data(&d) == false) in cpp_demangle_gnu2()
112 d.p = org; in cpp_demangle_gnu2()
113 if (read_func_name(&d) == false) in cpp_demangle_gnu2()
116 switch (d.type) { in cpp_demangle_gnu2()
122 if (push_CTDT("::", 2, &d.vec) == false) in cpp_demangle_gnu2()
127 if (push_CTDT("::~", 3, &d.vec) == false) in cpp_demangle_gnu2()
130 if (VEC_PUSH_STR(&d.vec, "(void)") == false) in cpp_demangle_gnu2()
141 if (*d.p == 'F') in cpp_demangle_gnu2()
142 ++d.p; in cpp_demangle_gnu2()
143 else if (*d.p == '\0') { in cpp_demangle_gnu2()
144 if (d.class_name == true) { in cpp_demangle_gnu2()
145 if (VEC_PUSH_STR(&d.vec, "(void)") == false) in cpp_demangle_gnu2()
154 if (VEC_PUSH_STR(&d.vec, "(") == false) in cpp_demangle_gnu2()
158 if (*d.p == 'T') { in cpp_demangle_gnu2()
159 const int rtn_subst = read_subst(&d); in cpp_demangle_gnu2()
169 if (*d.p == 'N') { in cpp_demangle_gnu2()
170 const int rtn_subst_iter = read_subst_iter(&d); in cpp_demangle_gnu2()
180 arg_begin = d.vec.size; in cpp_demangle_gnu2()
182 if (read_type(&d) == false) in cpp_demangle_gnu2()
185 if (d.ptr == true) { in cpp_demangle_gnu2()
186 if (VEC_PUSH_STR(&d.vec, "*") == false) in cpp_demangle_gnu2()
189 d.ptr = false; in cpp_demangle_gnu2()
192 if (d.ref == true) { in cpp_demangle_gnu2()
193 if (VEC_PUSH_STR(&d.vec, "&") == false) in cpp_demangle_gnu2()
196 d.ref = false; in cpp_demangle_gnu2()
199 if (d.cnst == true) { in cpp_demangle_gnu2()
200 if (VEC_PUSH_STR(&d.vec, " const") == false) in cpp_demangle_gnu2()
203 d.cnst = false; in cpp_demangle_gnu2()
206 if (d.array == true) { in cpp_demangle_gnu2()
207 if (vector_str_push(&d.vec, d.array_str.buf, in cpp_demangle_gnu2()
208 d.array_str.size) == false) in cpp_demangle_gnu2()
211 dest_cstring(&d.array_str); in cpp_demangle_gnu2()
212 d.array = false; in cpp_demangle_gnu2()
215 if (*d.p == '\0') in cpp_demangle_gnu2()
218 if ((arg = vector_str_substr(&d.vec, arg_begin, d.vec.size - 1, in cpp_demangle_gnu2()
222 if (vector_str_push(&d.arg, arg, arg_len) == false) { in cpp_demangle_gnu2()
229 if (VEC_PUSH_STR(&d.vec, ", ") == false) in cpp_demangle_gnu2()
237 if (VEC_PUSH_STR(&d.vec, ")") == false) in cpp_demangle_gnu2()
240 if (d.cnst_fn == true && VEC_PUSH_STR(&d.vec, " const") == false) in cpp_demangle_gnu2()
243 rtn = vector_str_get_flat(&d.vec, NULL); in cpp_demangle_gnu2()
245 dest_demangle_data(&d); in cpp_demangle_gnu2()
251 * @brief Test input string is encoded by the GNU 2 style.
253 * @return True if input string is encoded by the GNU 2 style.
267 if (*(str + 2) != '\0') { in is_cpp_mangled_gnu2()
268 if (*(str + 2) == 'C' || in is_cpp_mangled_gnu2()
269 *(str + 2) == 'F' || in is_cpp_mangled_gnu2()
270 *(str + 2) == 'Q' || in is_cpp_mangled_gnu2()
271 ELFTC_ISDIGIT(*(str + 2))) { in is_cpp_mangled_gnu2()
278 switch (SIMPLE_HASH(*(str + 2), *(str + 3))) { in is_cpp_mangled_gnu2()
280 case SIMPLE_HASH('d', 'v') : in is_cpp_mangled_gnu2()
281 case SIMPLE_HASH('m', 'd') : in is_cpp_mangled_gnu2()
292 case SIMPLE_HASH('a', 'd') : in is_cpp_mangled_gnu2()
314 case SIMPLE_HASH('d', 'l') : in is_cpp_mangled_gnu2()
325 str = strstr(str + 2, "__"); in is_cpp_mangled_gnu2()
347 dest_demangle_data(struct demangle_data *d) in dest_demangle_data() argument
350 if (d != NULL) { in dest_demangle_data()
351 vector_str_dest(&d->arg); in dest_demangle_data()
352 vector_str_dest(&d->vec); in dest_demangle_data()
354 dest_cstring(&d->array_str); in dest_demangle_data()
374 init_demangle_data(struct demangle_data *d) in init_demangle_data() argument
377 if (d == NULL) in init_demangle_data()
380 d->ptr = false; in init_demangle_data()
381 d->ref = false; in init_demangle_data()
382 d->cnst = false; in init_demangle_data()
383 d->array = false; in init_demangle_data()
384 d->cnst_fn = false; in init_demangle_data()
385 d->class_name = false; in init_demangle_data()
387 d->array_str.buf = NULL; in init_demangle_data()
388 d->array_str.size = 0; in init_demangle_data()
390 d->type = ENCODE_FUNC; in init_demangle_data()
392 if (!vector_str_init(&d->vec)) in init_demangle_data()
395 if (!vector_str_init(&d->arg)) { in init_demangle_data()
396 vector_str_dest(&d->vec); in init_demangle_data()
415 return (VEC_PUSH_STR(v, v->container[v->size - 2])); in push_CTDT()
419 read_array(struct demangle_data *d) in read_array() argument
424 if (d == NULL || d->p == NULL) in read_array()
427 end = d->p; in read_array()
443 len = end - d->p; in read_array()
446 dest_cstring(&d->array_str); in read_array()
447 if (init_cstring(&d->array_str, len + 3) == false) in read_array()
450 strncpy(d->array_str.buf + 1, d->p, len); in read_array()
451 *d->array_str.buf = '['; in read_array()
452 *(d->array_str.buf + len + 1) = ']'; in read_array()
454 d->array = true; in read_array()
455 d->p = end + 1; in read_array()
461 read_class(struct demangle_data *d) in read_class() argument
466 if (d == NULL) in read_class()
469 len = strtol(d->p, &str, 10); in read_class()
476 if (vector_str_push(&d->vec, str, len) == false) in read_class()
479 d->p = str + len; in read_class()
481 d->class_name = true; in read_class()
487 read_func(struct demangle_data *d) in read_func() argument
493 if (d == NULL) in read_func()
496 assert(d->p != NULL && "d->p (org str) is NULL"); in read_func()
497 if ((delim = strstr(d->p, "__")) == NULL) in read_func()
500 len = delim - d->p; in read_func()
503 name = d->p; in read_func()
505 d->p = delim + 2; in read_func()
507 if (*d->p == 'C') { in read_func()
508 ++d->p; in read_func()
510 d->cnst_fn = true; in read_func()
513 if (*d->p == 'Q' && ELFTC_ISDIGIT(*(d->p + 1))) { in read_func()
514 ++d->p; in read_func()
516 if (read_qual_name(d) == false) in read_func()
518 } else if (ELFTC_ISDIGIT(*d->p)) { in read_func()
519 if (read_class(d) == false) in read_func()
522 if (VEC_PUSH_STR(&d->vec, "::") == false) in read_func()
526 return (vector_str_push(&d->vec, name, len)); in read_func()
530 read_func_name(struct demangle_data *d) in read_func_name() argument
536 if (d == NULL) in read_func_name()
542 assert(d->p != NULL && "d->p (org str) is NULL"); in read_func_name()
544 if (*d->p == '_' && *(d->p + 1) == '_') { in read_func_name()
545 d->p += 2; in read_func_name()
548 if (*d->p == 'Q' && ELFTC_ISDIGIT(*(d->p + 1))) { in read_func_name()
549 ++d->p; in read_func_name()
550 d->type = ENCODE_OP_CT; in read_func_name()
552 if (read_qual_name(d) == false) in read_func_name()
555 return (vector_str_pop(&d->vec)); in read_func_name()
556 } else if (ELFTC_ISDIGIT(*d->p)) { in read_func_name()
557 d->type = ENCODE_OP_CT; in read_func_name()
559 return (read_class(d)); in read_func_name()
562 d->type = ENCODE_OP; in read_func_name()
563 if (read_op(d) == false) { in read_func_name()
565 d->type = ENCODE_FUNC; in read_func_name()
567 if (VEC_PUSH_STR(&d->vec, "__") == false) in read_func_name()
570 return (read_func(d)); in read_func_name()
573 if (d->type == ENCODE_OP_USER || in read_func_name()
574 d->type == ENCODE_OP_TF || in read_func_name()
575 d->type == ENCODE_OP_TI) in read_func_name()
579 d->p += 2; in read_func_name()
581 if (*d->p == 'C') { in read_func_name()
582 ++d->p; in read_func_name()
584 d->cnst_fn = true; in read_func_name()
588 if (*d->p == 'Q' && ELFTC_ISDIGIT(*(d->p + 1))) { in read_func_name()
589 ++d->p; in read_func_name()
591 assert(d->vec.size > 0); in read_func_name()
593 len = strlen(d->vec.container[d->vec.size - 1]); in read_func_name()
599 d->vec.container[d->vec.size - 1]); in read_func_name()
600 vector_str_pop(&d->vec); in read_func_name()
602 if (read_qual_name(d) == false) in read_func_name()
605 if (VEC_PUSH_STR(&d->vec, "::") == false) in read_func_name()
608 if (vector_str_push(&d->vec, op_name, len) == false) in read_func_name()
612 } else if (ELFTC_ISDIGIT(*d->p)) { in read_func_name()
613 assert(d->vec.size > 0); in read_func_name()
615 len = strlen(d->vec.container[d->vec.size - 1]); in read_func_name()
621 d->vec.container[d->vec.size - 1]); in read_func_name()
622 vector_str_pop(&d->vec); in read_func_name()
624 if (read_class(d) == false) in read_func_name()
627 if (VEC_PUSH_STR(&d->vec, "::") == false) in read_func_name()
630 if (vector_str_push(&d->vec, op_name, len) == false) in read_func_name()
635 } else if (memcmp(d->p, "_$_", 3) == 0) { in read_func_name()
637 d->p += 3; in read_func_name()
638 d->type = ENCODE_OP_DT; in read_func_name()
640 if (*d->p == 'Q' && ELFTC_ISDIGIT(*(d->p + 1))) { in read_func_name()
641 ++d->p; in read_func_name()
643 if (read_qual_name(d) == false) in read_func_name()
646 return (vector_str_pop(&d->vec)); in read_func_name()
647 } else if (ELFTC_ISDIGIT(*d->p)) in read_func_name()
648 return (read_class(d)); in read_func_name()
651 } else if (memcmp(d->p, "_vt$", 4) == 0) { in read_func_name()
653 d->p += 4; in read_func_name()
654 d->type = ENCODE_OP_VT; in read_func_name()
656 if (*d->p == 'Q' && ELFTC_ISDIGIT(*(d->p + 1))) { in read_func_name()
657 ++d->p; in read_func_name()
659 if (read_qual_name(d) == false) in read_func_name()
662 if (vector_str_pop(&d->vec) == false) in read_func_name()
664 } else if (ELFTC_ISDIGIT(*d->p)) { in read_func_name()
665 if (read_class(d) == false) in read_func_name()
669 return (VEC_PUSH_STR(&d->vec, " virtual table")); in read_func_name()
671 return (read_func(d)); in read_func_name()
680 read_func_ptr(struct demangle_data *d) in read_func_ptr() argument
687 if (d == NULL) in read_func_ptr()
693 fptr.p = d->p + 1; in read_func_ptr()
754 d->p = fptr.p + 1; in read_func_ptr()
764 fptr.p = d->p; in read_func_ptr()
775 d->p = fptr.p; in read_func_ptr()
780 if (vector_str_push(&d->vec, rtn_type, rtn_len) == false) { in read_func_ptr()
789 if (VEC_PUSH_STR(&d->vec, " (*)(") == false) { in read_func_ptr()
795 if (vector_str_push(&d->vec, arg_type, arg_len) == false) { in read_func_ptr()
803 return (VEC_PUSH_STR(&d->vec, ")")); in read_func_ptr()
807 read_memptr(struct demangle_data *d) in read_memptr() argument
814 if (d == NULL || d->p == NULL) in read_memptr()
823 mptr.p = d->p; in read_memptr()
832 d->p = mptr.p; in read_memptr()
837 if (vector_str_push(&d->vec, mptr_str, len) == false) in read_memptr()
840 if (VEC_PUSH_STR(&d->vec, "::*") == false) in read_memptr()
852 read_op(struct demangle_data *d) in read_op() argument
855 if (d == NULL) in read_op()
858 assert(d->p != NULL && "d->p (org str) is NULL"); in read_op()
860 switch (SIMPLE_HASH(*(d->p), *(d->p+1))) { in read_op()
862 d->p += 2; in read_op()
863 return (VEC_PUSH_STR(&d->vec, "operator*")); in read_op()
864 case SIMPLE_HASH('d', 'v') : in read_op()
865 d->p += 2; in read_op()
866 return (VEC_PUSH_STR(&d->vec, "operator/")); in read_op()
867 case SIMPLE_HASH('m', 'd') : in read_op()
868 d->p += 2; in read_op()
869 return (VEC_PUSH_STR(&d->vec, "operator%")); in read_op()
871 d->p += 2; in read_op()
872 return (VEC_PUSH_STR(&d->vec, "operator+")); in read_op()
874 d->p += 2; in read_op()
875 return (VEC_PUSH_STR(&d->vec, "operator-")); in read_op()
877 d->p += 2; in read_op()
878 return (VEC_PUSH_STR(&d->vec, "operator<<")); in read_op()
880 d->p += 2; in read_op()
881 return (VEC_PUSH_STR(&d->vec, "operator>>")); in read_op()
883 d->p += 2; in read_op()
884 return (VEC_PUSH_STR(&d->vec, "operator==")); in read_op()
886 d->p += 2; in read_op()
887 return (VEC_PUSH_STR(&d->vec, "operator!=")); in read_op()
889 d->p += 2; in read_op()
890 return (VEC_PUSH_STR(&d->vec, "operator<")); in read_op()
892 d->p += 2; in read_op()
893 return (VEC_PUSH_STR(&d->vec, "operator>")); in read_op()
895 d->p += 2; in read_op()
896 return (VEC_PUSH_STR(&d->vec, "operator<=")); in read_op()
898 d->p += 2; in read_op()
899 return (VEC_PUSH_STR(&d->vec, "operator>=")); in read_op()
900 case SIMPLE_HASH('a', 'd') : in read_op()
901 d->p += 2; in read_op()
902 if (*d->p == 'v') { in read_op()
903 ++d->p; in read_op()
904 return (VEC_PUSH_STR(&d->vec, "operator/=")); in read_op()
906 return (VEC_PUSH_STR(&d->vec, "operator&")); in read_op()
908 d->p += 2; in read_op()
909 return (VEC_PUSH_STR(&d->vec, "operator|")); in read_op()
911 d->p += 2; in read_op()
912 return (VEC_PUSH_STR(&d->vec, "operator^")); in read_op()
914 d->p += 2; in read_op()
915 if (*d->p == 'd') { in read_op()
916 ++d->p; in read_op()
917 return (VEC_PUSH_STR(&d->vec, "operator&=")); in read_op()
919 return (VEC_PUSH_STR(&d->vec, "operator&&")); in read_op()
921 d->p += 2; in read_op()
922 return (VEC_PUSH_STR(&d->vec, "operator||")); in read_op()
924 d->p += 2; in read_op()
925 return (VEC_PUSH_STR(&d->vec, "operator!")); in read_op()
927 d->p += 2; in read_op()
928 return (VEC_PUSH_STR(&d->vec, "operator~")); in read_op()
930 d->p += 2; in read_op()
931 return (VEC_PUSH_STR(&d->vec, "operator++")); in read_op()
933 d->p += 2; in read_op()
934 return (VEC_PUSH_STR(&d->vec, "operator--")); in read_op()
936 d->p += 2; in read_op()
937 return (VEC_PUSH_STR(&d->vec, "operator=")); in read_op()
939 d->p += 2; in read_op()
940 return (VEC_PUSH_STR(&d->vec, "operator->")); in read_op()
943 if (*(d->p + 2) != 'l') in read_op()
946 d->p += 3; in read_op()
947 return (VEC_PUSH_STR(&d->vec, "operator+=")); in read_op()
949 d->p += 2; in read_op()
950 if (*d->p == 'i') { in read_op()
951 ++d->p; in read_op()
952 return (VEC_PUSH_STR(&d->vec, "operator-=")); in read_op()
953 } else if (*d->p == 'u') { in read_op()
954 ++d->p; in read_op()
955 return (VEC_PUSH_STR(&d->vec, "operator*=")); in read_op()
956 } else if (*d->p == 'd') { in read_op()
957 ++d->p; in read_op()
958 return (VEC_PUSH_STR(&d->vec, "operator%=")); in read_op()
964 if (*(d->p + 2) != 's') in read_op()
967 d->p += 3; in read_op()
968 return (VEC_PUSH_STR(&d->vec, "operator<<=")); in read_op()
971 if (*(d->p + 2) != 's') in read_op()
974 d->p += 3; in read_op()
975 return (VEC_PUSH_STR(&d->vec, "operator>>=")); in read_op()
978 if (*(d->p + 2) != 'r') in read_op()
981 d->p += 3; in read_op()
982 return (VEC_PUSH_STR(&d->vec, "operator|=")); in read_op()
985 if (*(d->p + 2) != 'r') in read_op()
988 d->p += 3; in read_op()
989 return (VEC_PUSH_STR(&d->vec, "operator^=")); in read_op()
991 d->p += 2; in read_op()
992 return (VEC_PUSH_STR(&d->vec, "operator,")); in read_op()
994 d->p += 2; in read_op()
995 return (VEC_PUSH_STR(&d->vec, "operator->*")); in read_op()
997 d->p += 2; in read_op()
998 return (VEC_PUSH_STR(&d->vec, "()")); in read_op()
1000 d->p += 2; in read_op()
1001 return (VEC_PUSH_STR(&d->vec, "[]")); in read_op()
1003 d->p += 2; in read_op()
1004 return (VEC_PUSH_STR(&d->vec, "operator new()")); in read_op()
1005 case SIMPLE_HASH('d', 'l') : in read_op()
1006 d->p += 2; in read_op()
1007 return (VEC_PUSH_STR(&d->vec, "operator delete()")); in read_op()
1010 d->p += 2; in read_op()
1012 d->type = ENCODE_OP_USER; in read_op()
1014 return (read_op_user(d)); in read_op()
1016 d->p += 2; in read_op()
1017 d->type = ENCODE_OP_TF; in read_op()
1019 if (read_type(d) == false) in read_op()
1022 return (VEC_PUSH_STR(&d->vec, " type_info function")); in read_op()
1024 d->p += 2; in read_op()
1025 d->type = ENCODE_OP_TI; in read_op()
1027 if (read_type(d) == false) in read_op()
1030 return (VEC_PUSH_STR(&d->vec, " type_info node")); in read_op()
1037 read_op_user(struct demangle_data *d) in read_op_user() argument
1044 if (d == NULL) in read_op_user()
1056 to.p = d->p; in read_op_user()
1071 to.p += 2; in read_op_user()
1093 if (vector_str_push(&d->vec, from_str, from_len) == false) in read_op_user()
1096 if (VEC_PUSH_STR(&d->vec, "::operator ") == false) in read_op_user()
1099 if (vector_str_push(&d->vec, to_str, to_len) == false) in read_op_user()
1102 rtn = VEC_PUSH_STR(&d->vec, "()"); in read_op_user()
1114 read_qual_name(struct demangle_data *d) in read_qual_name() argument
1119 if (d == NULL) in read_qual_name()
1122 assert(d->p != NULL && "d->p (org str) is NULL"); in read_qual_name()
1123 assert(*d->p > 48 && *d->p < 58 && "*d->p not in ASCII numeric range"); in read_qual_name()
1125 num = *d->p - 48; in read_qual_name()
1129 ++d->p; in read_qual_name()
1131 if (read_class(d) == false) in read_qual_name()
1134 if (VEC_PUSH_STR(&d->vec, "::") == false) in read_qual_name()
1138 if (*d->p != '\0') in read_qual_name()
1139 d->p = d->p + 2; in read_qual_name()
1146 read_subst(struct demangle_data *d) in read_subst() argument
1151 if (d == NULL) in read_subst()
1154 idx = strtol(d->p + 1, &str, 10); in read_subst()
1161 d->p = str; in read_subst()
1163 if (VEC_PUSH_STR(&d->vec, d->arg.container[idx - 1]) == false) in read_subst()
1166 if (VEC_PUSH_STR(&d->arg, d->arg.container[idx - 1]) == false) in read_subst()
1169 if (*d->p == '\0') in read_subst()
1176 read_subst_iter(struct demangle_data *d) in read_subst_iter() argument
1183 if (d == NULL) in read_subst_iter()
1186 ++d->p; in read_subst_iter()
1187 assert(*d->p > 48 && *d->p < 58 && "*d->p not in ASCII numeric range"); in read_subst_iter()
1189 repeat = *d->p - 48; in read_subst_iter()
1193 ++d->p; in read_subst_iter()
1195 idx = strtol(d->p, &str, 10); in read_subst_iter()
1202 d->p = str; in read_subst_iter()
1205 if (VEC_PUSH_STR(&d->vec, d->arg.container[idx - 1]) == false) in read_subst_iter()
1208 if (VEC_PUSH_STR(&d->arg, d->arg.container[idx - 1]) == false) in read_subst_iter()
1212 VEC_PUSH_STR(&d->vec, ", ") == false) in read_subst_iter()
1216 if (*d->p == '\0') in read_subst_iter()
1223 read_type(struct demangle_data *d) in read_type() argument
1226 if (d == NULL) in read_type()
1229 assert(d->p != NULL && "d->p (org str) is NULL"); in read_type()
1231 while (*d->p == 'U' || *d->p == 'C' || *d->p == 'V' || *d->p == 'S' || in read_type()
1232 *d->p == 'P' || *d->p == 'R' || *d->p == 'A' || *d->p == 'F' || in read_type()
1233 *d->p == 'M') { in read_type()
1234 switch (*d->p) { in read_type()
1236 ++d->p; in read_type()
1238 if (VEC_PUSH_STR(&d->vec, "unsigned ") == false) in read_type()
1243 ++d->p; in read_type()
1245 if (*d->p == 'P') in read_type()
1246 d->cnst = true; in read_type()
1248 if (VEC_PUSH_STR(&d->vec, "const ") == in read_type()
1255 ++d->p; in read_type()
1257 if (VEC_PUSH_STR(&d->vec, "volatile ") == false) in read_type()
1262 ++d->p; in read_type()
1264 if (VEC_PUSH_STR(&d->vec, "signed ") == false) in read_type()
1269 ++d->p; in read_type()
1271 if (*d->p == 'F') in read_type()
1272 return (read_func_ptr(d)); in read_type()
1274 d->ptr = true; in read_type()
1278 ++d->p; in read_type()
1280 d->ref = true; in read_type()
1286 ++d->p; in read_type()
1288 if (read_array(d) == false) in read_type()
1293 ++d->p; in read_type()
1295 if (read_memptr(d) == false) in read_type()
1304 if (ELFTC_ISDIGIT(*d->p)) in read_type()
1305 return (read_class(d)); in read_type()
1307 switch (*d->p) { in read_type()
1309 ++d->p; in read_type()
1311 return (read_qual_name(d)); in read_type()
1313 ++d->p; in read_type()
1315 return (VEC_PUSH_STR(&d->vec, "void")); in read_type()
1317 ++d->p; in read_type()
1319 return(VEC_PUSH_STR(&d->vec, "bool")); in read_type()
1321 ++d->p; in read_type()
1323 return (VEC_PUSH_STR(&d->vec, "char")); in read_type()
1325 ++d->p; in read_type()
1327 return (VEC_PUSH_STR(&d->vec, "short")); in read_type()
1329 ++d->p; in read_type()
1331 return (VEC_PUSH_STR(&d->vec, "int")); in read_type()
1333 ++d->p; in read_type()
1335 return (VEC_PUSH_STR(&d->vec, "long")); in read_type()
1337 ++d->p; in read_type()
1339 return (VEC_PUSH_STR(&d->vec, "float")); in read_type()
1340 case 'd': in read_type()
1341 ++d->p; in read_type()
1343 return (VEC_PUSH_STR(&d->vec, "double")); in read_type()
1345 ++d->p; in read_type()
1347 return (VEC_PUSH_STR(&d->vec, "long double")); in read_type()
1349 ++d->p; in read_type()
1351 return (VEC_PUSH_STR(&d->vec, "...")); in read_type()
1353 ++d->p; in read_type()
1355 return (VEC_PUSH_STR(&d->vec, "wchar_t")); in read_type()
1357 ++d->p; in read_type()
1359 return (VEC_PUSH_STR(&d->vec, "long long")); in read_type()