Lines Matching defs:dpi

4190 d_count_templates_scopes (struct d_print_info *dpi,
4193 if (dc == NULL || dc->d_counting > 1 || dpi->recursion > MAX_RECURSION_COUNT)
4216 dpi->num_copy_templates++;
4222 dpi->num_saved_scopes++;
4289 if (dpi->recursion > DEMANGLE_RECURSION_LIMIT)
4294 ++ dpi->recursion;
4295 d_count_templates_scopes (dpi, d_left (dc));
4296 d_count_templates_scopes (dpi, d_right (dc));
4297 -- dpi->recursion;
4301 d_count_templates_scopes (dpi, dc->u.s_ctor.name);
4305 d_count_templates_scopes (dpi, dc->u.s_dtor.name);
4309 d_count_templates_scopes (dpi, dc->u.s_extended_operator.name);
4313 d_count_templates_scopes (dpi, dc->u.s_fixed.length);
4319 d_count_templates_scopes (dpi, d_left (dc));
4324 d_count_templates_scopes (dpi, dc->u.s_unary_num.sub);
4332 d_print_init (struct d_print_info *dpi, demangle_callbackref callback,
4335 dpi->len = 0;
4336 dpi->last_char = '\0';
4337 dpi->templates = NULL;
4338 dpi->modifiers = NULL;
4339 dpi->pack_index = 0;
4340 dpi->flush_count = 0;
4342 dpi->callback = callback;
4343 dpi->opaque = opaque;
4345 dpi->demangle_failure = 0;
4346 dpi->recursion = 0;
4347 dpi->is_lambda_arg = 0;
4349 dpi->component_stack = NULL;
4351 dpi->saved_scopes = NULL;
4352 dpi->next_saved_scope = 0;
4353 dpi->num_saved_scopes = 0;
4355 dpi->copy_templates = NULL;
4356 dpi->next_copy_template = 0;
4357 dpi->num_copy_templates = 0;
4359 d_count_templates_scopes (dpi, dc);
4363 if (dpi->recursion < DEMANGLE_RECURSION_LIMIT)
4364 dpi->recursion = 0;
4365 dpi->num_copy_templates *= dpi->num_saved_scopes;
4367 dpi->current_template = NULL;
4373 d_print_error (struct d_print_info *dpi)
4375 dpi->demangle_failure = 1;
4379 d_print_saw_error (struct d_print_info *dpi)
4381 return dpi->demangle_failure != 0;
4387 d_print_flush (struct d_print_info *dpi)
4389 dpi->buf[dpi->len] = '\0';
4390 dpi->callback (dpi->buf, dpi->len, dpi->opaque);
4391 dpi->len = 0;
4392 dpi->flush_count++;
4398 d_append_char (struct d_print_info *dpi, char c)
4400 if (dpi->len == sizeof (dpi->buf) - 1)
4401 d_print_flush (dpi);
4403 dpi->buf[dpi->len++] = c;
4404 dpi->last_char = c;
4408 d_append_buffer (struct d_print_info *dpi, const char *s, size_t l)
4413 d_append_char (dpi, s[i]);
4417 d_append_string (struct d_print_info *dpi, const char *s)
4419 d_append_buffer (dpi, s, strlen (s));
4423 d_append_num (struct d_print_info *dpi, int l)
4427 d_append_string (dpi, buf);
4431 d_last_char (struct d_print_info *dpi)
4433 return dpi->last_char;
4451 struct d_print_info dpi;
4453 d_print_init (&dpi, callback, opaque, dc);
4459 __extension__ struct d_saved_scope scopes[(dpi.num_saved_scopes > 0)
4460 ? dpi.num_saved_scopes : 1];
4461 __extension__ struct d_print_template temps[(dpi.num_copy_templates > 0)
4462 ? dpi.num_copy_templates : 1];
4464 dpi.saved_scopes = scopes;
4465 dpi.copy_templates = temps;
4467 dpi.saved_scopes = alloca (dpi.num_saved_scopes
4468 * sizeof (*dpi.saved_scopes));
4469 dpi.copy_templates = alloca (dpi.num_copy_templates
4470 * sizeof (*dpi.copy_templates));
4473 d_print_comp (&dpi, options, dc);
4476 d_print_flush (&dpi);
4478 return ! d_print_saw_error (&dpi);
4543 d_lookup_template_argument (struct d_print_info *dpi,
4546 if (dpi->templates == NULL)
4548 d_print_error (dpi);
4553 (d_right (dpi->templates->template_decl),
4560 d_find_pack (struct d_print_info *dpi,
4570 a = d_lookup_template_argument (dpi, dc);
4593 return d_find_pack (dpi, dc->u.s_extended_operator.name);
4595 return d_find_pack (dpi, dc->u.s_ctor.name);
4597 return d_find_pack (dpi, dc->u.s_dtor.name);
4600 a = d_find_pack (dpi, d_left (dc));
4603 return d_find_pack (dpi, d_right (dc));
4626 d_args_length (struct d_print_info *dpi, const struct demangle_component *dc)
4637 struct demangle_component *a = d_find_pack (dpi, d_left (elt));
4650 d_print_subexpr (struct d_print_info *dpi, int options,
4660 d_append_char (dpi, '(');
4661 d_print_comp (dpi, options, dc);
4663 d_append_char (dpi, ')');
4669 d_save_scope (struct d_print_info *dpi,
4675 if (dpi->next_saved_scope >= dpi->num_saved_scopes)
4677 d_print_error (dpi);
4680 scope = &dpi->saved_scopes[dpi->next_saved_scope];
4681 dpi->next_saved_scope++;
4686 for (src = dpi->templates; src != NULL; src = src->next)
4690 if (dpi->next_copy_template >= dpi->num_copy_templates)
4692 d_print_error (dpi);
4695 dst = &dpi->copy_templates[dpi->next_copy_template];
4696 dpi->next_copy_template++;
4710 d_get_saved_scope (struct d_print_info *dpi,
4715 for (i = 0; i < dpi->next_saved_scope; i++)
4716 if (dpi->saved_scopes[i].container == container)
4717 return &dpi->saved_scopes[i];
4726 d_maybe_print_fold_expression (struct d_print_info *dpi, int options,
4747 save_idx = dpi->pack_index;
4748 dpi->pack_index = -1;
4754 d_append_string (dpi, "(...");
4755 d_print_expr_op (dpi, options, operator_);
4756 d_print_subexpr (dpi, options, op1);
4757 d_append_char (dpi, ')');
4762 d_append_char (dpi, '(');
4763 d_print_subexpr (dpi, options, op1);
4764 d_print_expr_op (dpi, options, operator_);
4765 d_append_string (dpi, "...)");
4772 d_append_char (dpi, '(');
4773 d_print_subexpr (dpi, options, op1);
4774 d_print_expr_op (dpi, options, operator_);
4775 d_append_string (dpi, "...");
4776 d_print_expr_op (dpi, options, operator_);
4777 d_print_subexpr (dpi, options, op2);
4778 d_append_char (dpi, ')');
4782 dpi->pack_index = save_idx;
4805 d_maybe_print_designated_init (struct d_print_info *dpi, int options,
4818 d_append_char (dpi, '.');
4820 d_append_char (dpi, '[');
4822 d_print_comp (dpi, options, op1);
4825 d_append_string (dpi, " ... ");
4826 d_print_comp (dpi, options, d_left (op2));
4830 d_append_char (dpi, ']');
4834 d_print_comp (dpi, options, op2);
4838 d_append_char (dpi, '=');
4839 d_print_subexpr (dpi, options, op2);
4847 d_print_comp_inner (struct d_print_info *dpi, int options,
4863 d_print_error (dpi);
4866 if (d_print_saw_error (dpi))
4873 d_append_buffer (dpi, dc->u.s_name.s, dc->u.s_name.len);
4875 d_print_java_identifier (dpi, dc->u.s_name.s, dc->u.s_name.len);
4879 d_print_comp (dpi, options, d_left (dc));
4880 d_append_string (dpi, "[abi:");
4881 d_print_comp (dpi, options, d_right (dc));
4882 d_append_char (dpi, ']');
4886 d_append_char (dpi, '[');
4889 d_print_comp (dpi, options, d_left (dc));
4893 d_append_string (dpi, ", ");
4895 d_append_char (dpi, ']');
4899 d_print_comp (dpi, options, d_left (dc));
4900 d_append_char (dpi, '@');
4901 d_print_comp (dpi, options, d_right (dc));
4908 d_print_comp (dpi, options, d_left (dc));
4912 d_append_char (dpi, c);
4913 d_print_comp (dpi, options, d_right (dc));
4919 d_print_comp (dpi, options, d_left (dc));
4921 d_append_string (dpi, "::");
4923 d_append_char (dpi, '.');
4928 d_append_string (dpi, "{default arg#");
4929 d_append_num (dpi, local_name->u.s_unary_num.num + 1);
4930 d_append_string (dpi, "}::");
4933 d_print_comp (dpi, options, local_name);
4948 hold_modifiers = dpi->modifiers;
4949 dpi->modifiers = 0;
4956 d_print_error (dpi);
4960 adpm[i].next = dpi->modifiers;
4961 dpi->modifiers = &adpm[i];
4964 adpm[i].templates = dpi->templates;
4975 d_print_error (dpi);
4993 d_print_error (dpi);
4999 dpi->modifiers = &adpm[i];
5003 adpm[i - 1].templates = dpi->templates;
5010 d_print_error (dpi);
5019 dpt.next = dpi->templates;
5020 dpi->templates = &dpt;
5024 d_print_comp (dpi, options, d_right (dc));
5027 dpi->templates = dpt.next;
5036 d_append_char (dpi, ' ');
5037 d_print_mod (dpi, options, adpm[i].mod);
5041 dpi->modifiers = hold_modifiers;
5054 hold_current = dpi->current_template;
5055 dpi->current_template = dc;
5061 hold_dpm = dpi->modifiers;
5062 dpi->modifiers = NULL;
5074 d_print_comp (dpi, options, d_right (dc));
5075 d_append_string (dpi, "[]");
5079 d_print_comp (dpi, options, dcl);
5080 if (d_last_char (dpi) == '<')
5081 d_append_char (dpi, ' ');
5082 d_append_char (dpi, '<');
5083 d_print_comp (dpi, options, d_right (dc));
5086 if (d_last_char (dpi) == '>')
5087 d_append_char (dpi, ' ');
5088 d_append_char (dpi, '>');
5091 dpi->modifiers = hold_dpm;
5092 dpi->current_template = hold_current;
5098 if (dpi->is_lambda_arg)
5103 d_append_buffer (dpi, "auto:", 5);
5104 d_append_num (dpi, dc->u.s_number.number + 1);
5109 struct demangle_component *a = d_lookup_template_argument (dpi, dc);
5112 a = d_index_template_argument (a, dpi->pack_index);
5116 d_print_error (dpi);
5125 hold_dpt = dpi->templates;
5126 dpi->templates = hold_dpt->next;
5128 d_print_comp (dpi, options, a);
5130 dpi->templates = hold_dpt;
5135 d_append_string (dpi, "template parameter object for ");
5136 d_print_comp (dpi, options, d_left (dc));
5140 d_print_comp (dpi, options, dc->u.s_ctor.name);
5144 d_append_char (dpi, '~');
5145 d_print_comp (dpi, options, dc->u.s_dtor.name);
5149 d_append_string (dpi, "initializer for module ");
5150 d_print_comp (dpi, options, d_left (dc));
5154 d_append_string (dpi, "vtable for ");
5155 d_print_comp (dpi, options, d_left (dc));
5159 d_append_string (dpi, "VTT for ");
5160 d_print_comp (dpi, options, d_left (dc));
5164 d_append_string (dpi, "construction vtable for ");
5165 d_print_comp (dpi, options, d_left (dc));
5166 d_append_string (dpi, "-in-");
5167 d_print_comp (dpi, options, d_right (dc));
5171 d_append_string (dpi, "typeinfo for ");
5172 d_print_comp (dpi, options, d_left (dc));
5176 d_append_string (dpi, "typeinfo name for ");
5177 d_print_comp (dpi, options, d_left (dc));
5181 d_append_string (dpi, "typeinfo fn for ");
5182 d_print_comp (dpi, options, d_left (dc));
5186 d_append_string (dpi, "non-virtual thunk to ");
5187 d_print_comp (dpi, options, d_left (dc));
5191 d_append_string (dpi, "virtual thunk to ");
5192 d_print_comp (dpi, options, d_left (dc));
5196 d_append_string (dpi, "covariant return thunk to ");
5197 d_print_comp (dpi, options, d_left (dc));
5201 d_append_string (dpi, "java Class for ");
5202 d_print_comp (dpi, options, d_left (dc));
5206 d_append_string (dpi, "guard variable for ");
5207 d_print_comp (dpi, options, d_left (dc));
5211 d_append_string (dpi, "TLS init function for ");
5212 d_print_comp (dpi, options, d_left (dc));
5216 d_append_string (dpi, "TLS wrapper function for ");
5217 d_print_comp (dpi, options, d_left (dc));
5221 d_append_string (dpi, "reference temporary #");
5222 d_print_comp (dpi, options, d_right (dc));
5223 d_append_string (dpi, " for ");
5224 d_print_comp (dpi, options, d_left (dc));
5228 d_append_string (dpi, "hidden alias for ");
5229 d_print_comp (dpi, options, d_left (dc));
5233 d_append_string (dpi, "transaction clone for ");
5234 d_print_comp (dpi, options, d_left (dc));
5238 d_append_string (dpi, "non-transaction clone for ");
5239 d_print_comp (dpi, options, d_left (dc));
5243 d_append_buffer (dpi, dc->u.s_string.string, dc->u.s_string.len);
5256 for (pdpm = dpi->modifiers; pdpm != NULL; pdpm = pdpm->next)
5266 d_print_comp (dpi, options, d_left (dc));
5279 if (!dpi->is_lambda_arg
5282 struct d_saved_scope *scope = d_get_saved_scope (dpi, sub);
5291 d_save_scope (dpi, sub);
5292 if (d_print_saw_error (dpi))
5303 for (dcse = dpi->component_stack; dcse != NULL;
5308 && dcse != dpi->component_stack))
5317 saved_templates = dpi->templates;
5318 dpi->templates = scope->templates;
5323 a = d_lookup_template_argument (dpi, sub);
5325 a = d_index_template_argument (a, dpi->pack_index);
5330 dpi->templates = saved_templates;
5332 d_print_error (dpi);
5357 dpm.next = dpi->modifiers;
5358 dpi->modifiers = &dpm;
5361 dpm.templates = dpi->templates;
5366 d_print_comp (dpi, options, mod_inner);
5371 d_print_mod (dpi, options, dc);
5373 dpi->modifiers = dpm.next;
5376 dpi->templates = saved_templates;
5383 d_append_buffer (dpi, dc->u.s_builtin.type->name,
5386 d_append_buffer (dpi, dc->u.s_builtin.type->java_name,
5391 d_print_comp (dpi, options, d_left (dc));
5397 d_print_function_type (dpi,
5399 dc, dpi->modifiers);
5403 d_print_comp (dpi, options & ~(DMGL_RET_POSTFIX | DMGL_RET_DROP),
5411 dpm.next = dpi->modifiers;
5412 dpi->modifiers = &dpm;
5415 dpm.templates = dpi->templates;
5417 d_print_comp (dpi, options & ~(DMGL_RET_POSTFIX | DMGL_RET_DROP),
5420 dpi->modifiers = dpm.next;
5428 d_append_char (dpi, ' ');
5432 d_print_function_type (dpi,
5434 dc, dpi->modifiers);
5454 hold_modifiers = dpi->modifiers;
5457 dpi->modifiers = &adpm[0];
5460 adpm[0].templates = dpi->templates;
5473 d_print_error (dpi);
5478 adpm[i].next = dpi->modifiers;
5479 dpi->modifiers = &adpm[i];
5487 d_print_comp (dpi, options, d_right (dc));
5489 dpi->modifiers = hold_modifiers;
5497 d_print_mod (dpi, options, adpm[i].mod);
5500 d_print_array_type (dpi, options, dc, dpi->modifiers);
5510 dpm.next = dpi->modifiers;
5511 dpi->modifiers = &dpm;
5514 dpm.templates = dpi->templates;
5516 d_print_comp (dpi, options, d_right (dc));
5521 d_print_mod (dpi, options, dc);
5523 dpi->modifiers = dpm.next;
5530 d_append_string (dpi, "_Sat ");
5535 d_print_comp (dpi, options, dc->u.s_fixed.length);
5536 d_append_char (dpi, ' ');
5539 d_append_string (dpi, "_Accum");
5541 d_append_string (dpi, "_Fract");
5547 d_print_comp (dpi, options, d_left (dc));
5553 dpi->len -= 2 wouldn't work. */
5554 if (dpi->len >= sizeof (dpi->buf) - 2)
5555 d_print_flush (dpi);
5556 d_append_string (dpi, ", ");
5557 len = dpi->len;
5558 flush_count = dpi->flush_count;
5559 d_print_comp (dpi, options, d_right (dc));
5562 if (dpi->flush_count == flush_count && dpi->len == len)
5563 dpi->len -= 2;
5573 d_print_comp (dpi, options, type);
5574 d_append_char (dpi, '{');
5575 d_print_comp (dpi, options, list);
5576 d_append_char (dpi, '}');
5585 d_append_string (dpi, "operator");
5588 d_append_char (dpi, ' ');
5592 d_append_buffer (dpi, op->name, len);
5597 d_append_string (dpi, "operator ");
5598 d_print_comp (dpi, options, dc->u.s_extended_operator.name);
5602 d_append_string (dpi, "operator ");
5603 d_print_conversion (dpi, options, dc);
5607 d_print_expr_op (dpi, options, d_left (dc));
5632 d_print_subexpr (dpi, options, operand);
5633 d_print_expr_op (dpi, options, op);
5641 struct demangle_component *a = d_find_pack (dpi, operand);
5643 d_append_num (dpi, len);
5648 int len = d_args_length (dpi, operand);
5649 d_append_num (dpi, len);
5654 d_print_expr_op (dpi, options, op);
5657 d_append_char (dpi, '(');
5658 d_print_cast (dpi, options, op);
5659 d_append_char (dpi, ')');
5663 d_print_comp (dpi, options, operand);
5667 d_append_char (dpi, '(');
5668 d_print_comp (dpi, options, operand);
5669 d_append_char (dpi, ')');
5672 d_print_subexpr (dpi, options, operand);
5679 d_print_error (dpi);
5685 d_print_expr_op (dpi, options, d_left (dc));
5686 d_append_char (dpi, '<');
5687 d_print_comp (dpi, options, d_left (d_right (dc)));
5688 d_append_string (dpi, ">(");
5689 d_print_comp (dpi, options, d_right (d_right (dc)));
5690 d_append_char (dpi, ')');
5694 if (d_maybe_print_fold_expression (dpi, options, dc))
5697 if (d_maybe_print_designated_init (dpi, options, dc))
5706 d_append_char (dpi, '(');
5718 d_print_error (dpi);
5719 d_print_subexpr (dpi, options, d_left (func));
5722 d_print_subexpr (dpi, options, d_left (d_right (dc)));
5725 d_append_char (dpi, '[');
5726 d_print_comp (dpi, options, d_right (d_right (dc)));
5727 d_append_char (dpi, ']');
5732 d_print_expr_op (dpi, options, d_left (dc));
5733 d_print_subexpr (dpi, options, d_right (d_right (dc)));
5739 d_append_char (dpi, ')');
5745 d_print_error (dpi);
5752 d_print_error (dpi);
5755 if (d_maybe_print_fold_expression (dpi, options, dc))
5757 if (d_maybe_print_designated_init (dpi, options, dc))
5767 d_print_subexpr (dpi, options, first);
5768 d_print_expr_op (dpi, options, op);
5769 d_print_subexpr (dpi, options, second);
5770 d_append_string (dpi, " : ");
5771 d_print_subexpr (dpi, options, third);
5775 d_append_string (dpi, "new ");
5778 d_print_subexpr (dpi, options, first);
5779 d_append_char (dpi, ' ');
5781 d_print_comp (dpi, options, second);
5783 d_print_subexpr (dpi, options, third);
5791 d_print_error (dpi);
5815 d_append_char (dpi, '-');
5816 d_print_comp (dpi, options, d_right (dc));
5822 d_append_char (dpi, 'u');
5825 d_append_char (dpi, 'l');
5828 d_append_string (dpi, "ul");
5831 d_append_string (dpi, "ll");
5834 d_append_string (dpi, "ull");
5849 d_append_string (dpi, "false");
5852 d_append_string (dpi, "true");
5865 d_append_char (dpi, '(');
5866 d_print_comp (dpi, options, d_left (dc));
5867 d_append_char (dpi, ')');
5869 d_append_char (dpi, '-');
5871 d_append_char (dpi, '[');
5872 d_print_comp (dpi, options, d_right (dc));
5874 d_append_char (dpi, ']');
5879 d_print_comp (dpi, options, d_left (dc));
5880 d_append_char (dpi, '(');
5881 d_print_comp (dpi, options, d_right (dc));
5882 d_append_char (dpi, ')');
5886 d_append_num (dpi, dc->u.s_number.number);
5890 d_append_string (dpi, "java resource ");
5891 d_print_comp (dpi, options, d_left (dc));
5895 d_print_comp (dpi, options, d_left (dc));
5896 d_print_comp (dpi, options, d_right (dc));
5900 d_append_char (dpi, dc->u.s_character.character);
5904 d_append_string (dpi, "decltype (");
5905 d_print_comp (dpi, options, d_left (dc));
5906 d_append_char (dpi, ')');
5913 struct demangle_component *a = d_find_pack (dpi, d_left (dc));
5919 d_print_subexpr (dpi, options, d_left (dc));
5920 d_append_string (dpi, "...");
5928 dpi->pack_index = i;
5929 d_print_comp (dpi, options, dc);
5931 d_append_string (dpi, ", ");
5940 d_append_string (dpi, "this");
5943 d_append_string (dpi, "{parm#");
5944 d_append_num (dpi, num);
5945 d_append_char (dpi, '}');
5951 d_append_string (dpi, "global constructors keyed to ");
5952 d_print_comp (dpi, options, dc->u.s_binary.left);
5956 d_append_string (dpi, "global destructors keyed to ");
5957 d_print_comp (dpi, options, dc->u.s_binary.left);
5961 d_append_string (dpi, "{lambda(");
5964 dpi->is_lambda_arg++;
5965 d_print_comp (dpi, options, dc->u.s_unary_num.sub);
5966 dpi->is_lambda_arg--;
5967 d_append_string (dpi, ")#");
5968 d_append_num (dpi, dc->u.s_unary_num.num + 1);
5969 d_append_char (dpi, '}');
5973 d_append_string (dpi, "{unnamed type#");
5974 d_append_num (dpi, dc->u.s_number.number + 1);
5975 d_append_char (dpi, '}');
5979 d_print_comp (dpi, options, d_left (dc));
5980 d_append_string (dpi, " [clone ");
5981 d_print_comp (dpi, options, d_right (dc));
5982 d_append_char (dpi, ']');
5986 d_print_error (dpi);
5992 d_print_comp (struct d_print_info *dpi, int options,
5996 if (dc == NULL || dc->d_printing > 1 || dpi->recursion > MAX_RECURSION_COUNT)
5998 d_print_error (dpi);
6003 dpi->recursion++;
6006 self.parent = dpi->component_stack;
6007 dpi->component_stack = &self;
6009 d_print_comp_inner (dpi, options, dc);
6011 dpi->component_stack = self.parent;
6013 dpi->recursion--;
6022 d_print_java_identifier (struct d_print_info *dpi, const char *name, int len)
6058 d_append_char (dpi, c);
6064 d_append_char (dpi, *p);
6072 d_print_mod_list (struct d_print_info *dpi, int options,
6077 if (mods == NULL || d_print_saw_error (dpi))
6084 d_print_mod_list (dpi, options, mods->next, suffix);
6090 hold_dpt = dpi->templates;
6091 dpi->templates = mods->templates;
6095 d_print_function_type (dpi, options, mods->mod, mods->next);
6096 dpi->templates = hold_dpt;
6101 d_print_array_type (dpi, options, mods->mod, mods->next);
6102 dpi->templates = hold_dpt;
6115 hold_modifiers = dpi->modifiers;
6116 dpi->modifiers = NULL;
6117 d_print_comp (dpi, options, d_left (mods->mod));
6118 dpi->modifiers = hold_modifiers;
6121 d_append_string (dpi, "::");
6123 d_append_char (dpi, '.');
6129 d_append_string (dpi, "{default arg#");
6130 d_append_num (dpi, dc->u.s_unary_num.num + 1);
6131 d_append_string (dpi, "}::");
6138 d_print_comp (dpi, options, dc);
6140 dpi->templates = hold_dpt;
6144 d_print_mod (dpi, options, mods->mod);
6146 dpi->templates = hold_dpt;
6148 d_print_mod_list (dpi, options, mods->next, suffix);
6154 d_print_mod (struct d_print_info *dpi, int options,
6161 d_append_string (dpi, " restrict");
6165 d_append_string (dpi, " volatile");
6169 d_append_string (dpi, " const");
6172 d_append_string (dpi, " transaction_safe");
6175 d_append_string (dpi, " noexcept");
6178 d_append_char (dpi, '(');
6179 d_print_comp (dpi, options, d_right (mod));
6180 d_append_char (dpi, ')');
6184 d_append_string (dpi, " throw");
6187 d_append_char (dpi, '(');
6188 d_print_comp (dpi, options, d_right (mod));
6189 d_append_char (dpi, ')');
6193 d_append_char (dpi, ' ');
6194 d_print_comp (dpi, options, d_right (mod));
6199 d_append_char (dpi, '*');
6203 d_append_char (dpi, ' ');
6206 d_append_char (dpi, '&');
6209 d_append_char (dpi, ' ');
6212 d_append_string (dpi, "&&");
6215 d_append_string (dpi, " _Complex");
6218 d_append_string (dpi, " _Imaginary");
6221 if (d_last_char (dpi) != '(')
6222 d_append_char (dpi, ' ');
6223 d_print_comp (dpi, options, d_left (mod));
6224 d_append_string (dpi, "::*");
6227 d_print_comp (dpi, options, d_left (mod));
6230 d_append_string (dpi, " __vector(");
6231 d_print_comp (dpi, options, d_left (mod));
6232 d_append_char (dpi, ')');
6238 d_print_comp (dpi, options, mod);
6246 d_print_function_type (struct d_print_info *dpi, int options,
6292 if (d_last_char (dpi) != '('
6293 && d_last_char (dpi) != '*')
6296 if (need_space && d_last_char (dpi) != ' ')
6297 d_append_char (dpi, ' ');
6298 d_append_char (dpi, '(');
6301 hold_modifiers = dpi->modifiers;
6302 dpi->modifiers = NULL;
6304 d_print_mod_list (dpi, options, mods, 0);
6307 d_append_char (dpi, ')');
6309 d_append_char (dpi, '(');
6312 d_print_comp (dpi, options, d_right (dc));
6314 d_append_char (dpi, ')');
6316 d_print_mod_list (dpi, options, mods, 1);
6318 dpi->modifiers = hold_modifiers;
6324 d_print_array_type (struct d_print_info *dpi, int options,
6356 d_append_string (dpi, " (");
6358 d_print_mod_list (dpi, options, mods, 0);
6361 d_append_char (dpi, ')');
6365 d_append_char (dpi, ' ');
6367 d_append_char (dpi, '[');
6370 d_print_comp (dpi, options, d_left (dc));
6372 d_append_char (dpi, ']');
6378 d_print_expr_op (struct d_print_info *dpi, int options,
6382 d_append_buffer (dpi, dc->u.s_operator.op->name,
6385 d_print_comp (dpi, options, dc);
6391 d_print_cast (struct d_print_info *dpi, int options,
6394 d_print_comp (dpi, options, d_left (dc));
6400 d_print_conversion (struct d_print_info *dpi, int options,
6407 if (dpi->current_template != NULL)
6409 dpt.next = dpi->templates;
6410 dpi->templates = &dpt;
6411 dpt.template_decl = dpi->current_template;
6416 d_print_comp (dpi, options, d_left (dc));
6417 if (dpi->current_template != NULL)
6418 dpi->templates = dpt.next;
6422 d_print_comp (dpi, options, d_left (d_left (dc)));
6427 if (dpi->current_template != NULL)
6428 dpi->templates = dpt.next;
6430 if (d_last_char (dpi) == '<')
6431 d_append_char (dpi, ' ');
6432 d_append_char (dpi, '<');
6433 d_print_comp (dpi, options, d_right (d_left (dc)));
6436 if (d_last_char (dpi) == '>')
6437 d_append_char (dpi, ' ');
6438 d_append_char (dpi, '>');