Lines Matching refs:work

70 #define CURRENT_DEMANGLING_STYLE work->options
160 #define PRINT_ANSI_QUALIFIERS (work -> options & DMGL_ANSI)
161 #define PRINT_ARG_TYPES (work -> options & DMGL_PARAMS)
338 #define SCOPE_STRING(work) ((work->options & DMGL_JAVA) ? "." : "::")
364 demangle_template_template_parm (struct work_stuff *work,
368 demangle_template (struct work_stuff *work, const char **, string *,
653 struct work_stuff work[1];
659 memset ((char *) work, 0, sizeof (work));
660 work->options = options;
668 if (do_type (work, &tem, &type))
762 if (do_type (work, &tem, &type))
770 squangle_mop_up (work);
862 struct work_stuff work[1];
867 memset ((char *) work, 0, sizeof (work));
868 work->options = options;
869 if ((work->options & DMGL_STYLE_MASK) == 0)
870 work->options |= (int) current_demangling_style & DMGL_STYLE_MASK;
875 ret = cplus_demangle_v3 (mangled, work->options);
890 ret = internal_cplus_demangle (work, mangled);
891 squangle_mop_up (work);
1166 internal_cplus_demangle (struct work_stuff *work, const char *mangled)
1173 s1 = work->constructor;
1174 s2 = work->destructor;
1175 s3 = work->static_type;
1176 s4 = work->type_quals;
1177 work->constructor = work->destructor = 0;
1178 work->type_quals = TYPE_UNQUALIFIED;
1179 work->dllimported = 0;
1194 success = gnu_special (work, &mangled, &decl);
1197 delete_work_stuff (work);
1203 success = demangle_prefix (work, &mangled, &decl);
1207 success = demangle_signature (work, &mangled, &decl);
1209 if (work->constructor == 2)
1212 work->constructor = 0;
1214 else if (work->destructor == 2)
1217 work->destructor = 0;
1219 else if (work->dllimported == 1)
1222 work->dllimported = 0;
1224 demangled = mop_up (work, &decl, success);
1226 work->constructor = s1;
1227 work->destructor = s2;
1228 work->static_type = s3;
1229 work->type_quals = s4;
1236 squangle_mop_up (struct work_stuff *work)
1239 forget_B_and_K_types (work);
1240 if (work -> btypevec != NULL)
1242 free ((char *) work -> btypevec);
1243 work->btypevec = NULL;
1245 if (work -> ktypevec != NULL)
1247 free ((char *) work -> ktypevec);
1248 work->ktypevec = NULL;
1253 /* Copy the work state and storage. */
1322 delete_non_B_K_work_stuff (struct work_stuff *work)
1326 forget_types (work);
1327 if (work -> typevec != NULL)
1329 free ((char *) work -> typevec);
1330 work -> typevec = NULL;
1331 work -> typevec_size = 0;
1333 if (work->tmpl_argvec)
1337 for (i = 0; i < work->ntmpl_args; i++)
1338 free ((char*) work->tmpl_argvec[i]);
1340 free ((char*) work->tmpl_argvec);
1341 work->tmpl_argvec = NULL;
1343 if (work->previous_argument)
1345 string_delete (work->previous_argument);
1346 free ((char*) work->previous_argument);
1347 work->previous_argument = NULL;
1354 delete_work_stuff (struct work_stuff *work)
1356 delete_non_B_K_work_stuff (work);
1357 squangle_mop_up (work);
1364 mop_up (struct work_stuff *work, string *declp, int success)
1368 delete_non_B_K_work_stuff (work);
1394 demangle_signature (struct work_stuff *work, const char **mangled,
1416 demangle_signature (struct work_stuff *work,
1433 success = demangle_qualified (work, mangled, declp, 1, 0);
1435 remember_type (work, oldmangled, *mangled - oldmangled);
1443 success = demangle_qualified (work, mangled, declp, 1, 0);
1458 work -> static_type = 1;
1464 work->type_quals |= code_for_qualifier (**mangled);
1493 work->temp_start = -1; /* uppermost call to demangle_class */
1494 success = demangle_class (work, mangled, declp);
1497 remember_type (work, oldmangled, *mangled - oldmangled);
1512 success = do_type (work, mangled, &s);
1515 string_append (&s, SCOPE_STRING (work));
1542 forget_types (work);
1544 success = demangle_args (work, mangled, declp);
1552 success = do_type (work, mangled, &tname);
1566 success = demangle_template (work, mangled, &tname,
1570 remember_type (work, oldmangled, *mangled - oldmangled);
1572 string_append (&tname, SCOPE_STRING (work));
1575 if (work -> destructor & 1)
1579 work->destructor -= 1;
1581 if ((work->constructor & 1) || (work->destructor & 1))
1584 work->constructor -= 1;
1599 success = do_type (work, mangled, &return_type);
1629 success = demangle_template (work, mangled, declp, 0, 0,
1631 if (!(work->constructor & 1))
1646 success = demangle_args (work, mangled, declp);
1667 forget_types (work);
1669 success = demangle_args (work, mangled, declp);
1687 success = demangle_args (work, mangled, declp);
1692 if (work->static_type)
1694 if (work->type_quals != TYPE_UNQUALIFIED)
1697 string_append (declp, qualifier_string (work->type_quals));
1707 demangle_method_args (struct work_stuff *work, const char **mangled,
1712 if (work -> static_type)
1720 success = demangle_args (work, mangled, declp);
1728 demangle_template_template_parm (struct work_stuff *work,
1759 demangle_template_template_parm (work, mangled, tname);
1768 success = do_type (work, mangled, &temp);
1790 demangle_expression (struct work_stuff *work, const char **mangled,
1832 success = demangle_template_value_parm (work, mangled, s, tk);
1847 demangle_integral_value (struct work_stuff *work,
1853 success = demangle_expression (work, mangled, s, tk_integral);
1855 success = demangle_qualified (work, mangled, s, 0, 1);
1943 demangle_real_value (struct work_stuff *work,
1947 return demangle_expression (work, mangled, s, tk_real);
1984 demangle_template_value_parm (struct work_stuff *work, const char **mangled,
1997 || (work->tmpl_argvec && idx >= work->ntmpl_args)
2000 if (work->tmpl_argvec)
2001 string_append (s, work->tmpl_argvec[idx]);
2006 success = demangle_integral_value (work, mangled, s);
2039 success = demangle_real_value (work, mangled, s);
2043 success = demangle_qualified (work, mangled, s,
2063 q = ML_(cplus_demangle) (p, work->options);
2093 demangle_template (struct work_stuff *work, const char **mangled,
2116 || (work->tmpl_argvec && idx >= work->ntmpl_args)
2120 if (work->tmpl_argvec)
2122 string_append (tname, work->tmpl_argvec[idx]);
2124 string_append (trawname, work->tmpl_argvec[idx]);
2140 is_java_array = (work -> options & DMGL_JAVA)
2161 work->tmpl_argvec = XNEWVEC (char *, r);
2162 work->ntmpl_args = r;
2164 work->tmpl_argvec[i] = 0;
2177 success = do_type (work, mangled, &temp);
2186 work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
2187 memcpy (work->tmpl_argvec[i], temp.b, len);
2188 work->tmpl_argvec[i][len] = '\0';
2202 success = demangle_template_template_parm (work, mangled, tname);
2214 work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
2215 memcpy (work->tmpl_argvec[i], *mangled, len);
2216 work->tmpl_argvec[i][len] = '\0';
2233 success = do_type (work, mangled, &temp);
2246 success = demangle_template_value_parm (work, mangled, s,
2260 work->tmpl_argvec[i] = XNEWVEC (char, len + 1);
2261 memcpy (work->tmpl_argvec[i], s->b, len);
2262 work->tmpl_argvec[i][len] = '\0';
2283 const int bindex = register_Btype (work);
2284 remember_Btype (work, tname->b, LEN_STRING (tname), bindex);
2288 if (work -> static_type)
2296 success = demangle_args (work, mangled, declp);
2358 demangle_arm_hp_template (struct work_stuff *work, const char **mangled,
2382 if (work->temp_start == -1) /* non-recursive call */
2383 work->temp_start = declp->p - declp->b;
2387 hold_options = work->options;
2388 work->options |= DMGL_PARAMS;
2399 if (!do_type (work, mangled, &arg))
2406 if (!do_hpacc_template_const_value (work, mangled, &arg))
2412 if (!do_hpacc_template_literal (work, mangled, &arg))
2436 work->options = hold_options;
2447 if (work->temp_start == -1) /* non-recursive call */
2448 work->temp_start = declp->p - declp->b;
2452 hold_options = work->options;
2453 work->options |= DMGL_PARAMS;
2469 if (!do_type (work, &args, &type_str))
2493 if (!do_type (work, &args, &arg))
2499 work->options = hold_options;
2512 work->options = hold_options;
2524 if (work->temp_start == -1) /* non-recursive call only */
2525 work->temp_start = 0; /* disable in recursive calls */
2536 demangle_class_name (struct work_stuff *work, const char **mangled,
2547 demangle_arm_hp_template (work, mangled, n, declp);
2563 demangle_class (struct work_stuff *work, const char **mangled,
2590 demangle_class (struct work_stuff *work, const char **mangled, string *declp)
2598 btype = register_Btype (work);
2599 if (demangle_class_name (work, mangled, &class_name))
2602 if ((work->constructor & 1) || (work->destructor & 1))
2605 if (work->temp_start && (work->temp_start != -1))
2607 class_name.p = class_name.b + work->temp_start;
2610 if (work -> destructor & 1)
2613 work -> destructor -= 1;
2617 work -> constructor -= 1;
2621 remember_Ktype (work, class_name.b, LEN_STRING(&class_name));
2622 remember_Btype (work, class_name.b, LEN_STRING(&class_name), btype);
2623 string_prepend (declp, SCOPE_STRING (work));
2642 iterate_demangle_function (struct work_stuff *work, const char **mangled,
2657 return demangle_function_name (work, mangled, declp, scan);
2664 work_stuff_copy_to_from (&work_init, work);
2674 if (demangle_function_name (work, mangled, declp, scan))
2676 success = demangle_signature (work, mangled, declp);
2685 work_stuff_copy_to_from (work, &work_init);
2716 demangle_prefix (struct work_stuff *work, const char **mangled,
2741 demangle_prefix (struct work_stuff *work, const char **mangled,
2756 work->dllimported = 1;
2767 work->destructor = 2;
2768 if (gnu_special (work, mangled, declp))
2775 work->constructor = 2;
2776 if (gnu_special (work, mangled, declp))
2785 work->destructor = 2;
2791 work->constructor = 2;
2823 else if (work -> static_type)
2853 work -> constructor += 1;
2863 demangle_arm_hp_template (work, mangled, strlen (*mangled), declp);
2873 demangle_arm_hp_template (work, mangled, strlen (*mangled), declp);
2895 return iterate_demangle_function (work, mangled, declp, scan);
2904 return iterate_demangle_function (work, mangled, declp, scan);
2912 if (!success && (work->constructor == 2 || work->destructor == 2))
2930 gnu_special (struct work_stuff *work, const char **mangled,
2950 gnu_special (struct work_stuff *work, const char **mangled, string *declp)
2962 work -> destructor += 1;
2975 input string, which means that demangle_signature has no work
2987 success = demangle_qualified (work, mangled, declp, 0, 1);
2990 success = demangle_template (work, mangled, declp, 0, 1,
3020 string_append (declp, SCOPE_STRING (work));
3043 success = demangle_qualified (work, mangled, declp, 0, 1);
3046 success = demangle_template (work, mangled, declp, 0, 1, 1);
3082 string_append (declp, SCOPE_STRING (work));
3102 char *method = internal_cplus_demangle (work, ++*mangled);
3129 success = demangle_qualified (work, mangled, declp, 0, 1);
3132 success = demangle_template (work, mangled, declp, 0, 1, 1);
3135 success = do_type (work, mangled, declp);
3151 recursively_demangle(struct work_stuff *work, const char **mangled,
3161 recurse_dem = ML_(cplus_demangle) (recurse, work->options);
3210 input string, which means that demangle_signature has no work
3283 demangle_qualified (struct work_stuff *work, const char **mangled,
3291 int bindex = register_Btype (work);
3296 && ((work->constructor & 1) || (work->destructor & 1)));
3307 if (idx == -1 || idx >= work -> numk)
3310 string_append (&temp, work -> ktypevec[idx]);
3376 success = demangle_template(work, mangled, &temp,
3386 if (idx == -1 || idx >= work->numk)
3389 string_append (&temp, work->ktypevec[idx]);
3408 recursively_demangle(work, mangled, &temp, namelength);
3413 success = do_type (work, mangled, &last_name);
3421 remember_Ktype (work, temp.b, LEN_STRING (&temp));
3424 string_append (&temp, SCOPE_STRING (work));
3427 remember_Btype (work, temp.b, LEN_STRING (&temp), bindex);
3436 string_append (&temp, SCOPE_STRING (work));
3437 if (work -> destructor & 1)
3450 string_append (&temp, SCOPE_STRING (work));
3542 do_type (struct work_stuff *work, const char **mangled, string *result)
3567 if (! (work -> options & DMGL_JAVA))
3593 success = demangle_template_value_parm (work, mangled, &decl,
3604 if (!get_count (mangled, &n) || n >= work -> ntypes)
3610 remembered_type = work -> typevec[n];
3627 if (!demangle_nested_args (work, mangled, &decl)
3650 string_prepend (&decl, SCOPE_STRING (work));
3667 do_type (work, mangled, &temp);
3675 success = demangle_template (work, mangled, &temp,
3690 success = demangle_qualified (work, mangled, &decl,
3724 if ((member && !demangle_nested_args (work, mangled, &decl))
3775 success = demangle_qualified (work, mangled, result, 0, 1);
3782 if (!get_count (mangled, &n) || n >= work -> numb)
3785 string_append (result, work->btypevec[n]);
3798 || (work->tmpl_argvec && idx >= work->ntmpl_args)
3805 if (work->tmpl_argvec)
3806 string_append (result, work->tmpl_argvec[idx]);
3815 success = demangle_fund_type (work, mangled, result);
3854 demangle_fund_type (struct work_stuff *work,
4026 int bindex = register_Btype (work);
4029 if (demangle_class_name (work, mangled, &btype)) {
4030 remember_Btype (work, btype.b, LEN_STRING (&btype), bindex);
4043 success = demangle_template (work, mangled, &btype, 0, 1, 1);
4061 do_hpacc_template_const_value (struct work_stuff *work ATTRIBUTE_UNUSED,
4116 do_hpacc_template_literal (struct work_stuff *work, const char **mangled,
4142 recurse_dem = ML_(cplus_demangle) (recurse, work->options);
4189 do_arg (struct work_stuff *work, const char **mangled, string *result)
4197 if (work->nrepeats > 0)
4199 --work->nrepeats;
4201 if (work->previous_argument == 0)
4205 string_appends (result, work->previous_argument);
4213 work->nrepeats = consume_count(mangled);
4215 if (work->nrepeats <= 0)
4219 if (work->nrepeats > 9)
4230 return do_arg (work, mangled, result);
4237 if (work->previous_argument)
4238 string_delete (work->previous_argument);
4240 work->previous_argument = XNEW (string);
4242 if (!do_type (work, mangled, work->previous_argument))
4245 string_appends (result, work->previous_argument);
4247 remember_type (work, start, *mangled - start);
4252 remember_type (struct work_stuff *work, const char *start, int len)
4256 if (work->forgetting_types)
4259 if (work -> ntypes >= work -> typevec_size)
4261 if (work -> typevec_size == 0)
4263 work -> typevec_size = 3;
4264 work -> typevec = XNEWVEC (char *, work->typevec_size);
4268 work -> typevec_size *= 2;
4269 work -> typevec
4270 = XRESIZEVEC (char *, work->typevec, work->typevec_size);
4276 work -> typevec[work -> ntypes++] = tem;
4282 remember_Ktype (struct work_stuff *work, const char *start, int len)
4286 if (work -> numk >= work -> ksize)
4288 if (work -> ksize == 0)
4290 work -> ksize = 5;
4291 work -> ktypevec = XNEWVEC (char *, work->ksize);
4295 work -> ksize *= 2;
4296 work -> ktypevec
4297 = XRESIZEVEC (char *, work->ktypevec, work->ksize);
4303 work -> ktypevec[work -> numk++] = tem;
4311 register_Btype (struct work_stuff *work)
4315 if (work -> numb >= work -> bsize)
4317 if (work -> bsize == 0)
4319 work -> bsize = 5;
4320 work -> btypevec = XNEWVEC (char *, work->bsize);
4324 work -> bsize *= 2;
4325 work -> btypevec
4326 = XRESIZEVEC (char *, work->btypevec, work->bsize);
4329 ret = work -> numb++;
4330 work -> btypevec[ret] = NULL;
4337 remember_Btype (struct work_stuff *work, const char *start,
4345 work -> btypevec[indx] = tem;
4350 forget_B_and_K_types (struct work_stuff *work)
4354 while (work -> numk > 0)
4356 i = --(work -> numk);
4357 if (work -> ktypevec[i] != NULL)
4359 free (work -> ktypevec[i]);
4360 work -> ktypevec[i] = NULL;
4364 while (work -> numb > 0)
4366 i = --(work -> numb);
4367 if (work -> btypevec[i] != NULL)
4369 free (work -> btypevec[i]);
4370 work -> btypevec[i] = NULL;
4377 forget_types (struct work_stuff *work)
4381 while (work -> ntypes > 0)
4383 i = --(work -> ntypes);
4384 if (work -> typevec[i] != NULL)
4386 free (work -> typevec[i]);
4387 work -> typevec[i] = NULL;
4435 demangle_args (struct work_stuff *work, const char **mangled,
4455 || work->nrepeats > 0)
4472 if ((HP_DEMANGLING || ARM_DEMANGLING || EDG_DEMANGLING) && work -> ntypes >= 10)
4498 if ((t < 0) || (t >= work -> ntypes))
4502 while (work->nrepeats > 0 || --r >= 0)
4504 tem = work -> typevec[t];
4509 if (!do_arg (work, &tem, &arg))
4525 if (!do_arg (work, mangled, &arg))
4558 demangle_nested_args (struct work_stuff *work, const char **mangled,
4569 ++work->forgetting_types;
4573 saved_previous_argument = work->previous_argument;
4574 saved_nrepeats = work->nrepeats;
4575 work->previous_argument = 0;
4576 work->nrepeats = 0;
4579 result = demangle_args (work, mangled, declp);
4582 if (work->previous_argument)
4584 string_delete (work->previous_argument);
4585 free ((char *) work->previous_argument);
4587 work->previous_argument = saved_previous_argument;
4588 --work->forgetting_types;
4589 work->nrepeats = saved_nrepeats;
4597 demangle_function_name (struct work_stuff *work, const char **mangled,
4620 demangle_arm_hp_template (work, mangled, 0, declp);
4634 work -> constructor += 1;
4640 work -> destructor += 1;
4690 if (do_type (work, &tem, &type))
4704 if (do_type (work, &tem, &type))