+c_type_print_modifier (struct type *type, struct ui_file *stream,
+ int need_pre_space, int need_post_space,
+ enum language language)
+{
+ int did_print_modifier = 0;
+ const char *address_space_id;
+
+ /* We don't print `const' qualifiers for references --- since all
+ operators affect the thing referenced, not the reference itself,
+ every reference is `const'. */
+ if (TYPE_CONST (type) && !TYPE_IS_REFERENCE (type))
+ {
+ if (need_pre_space)
+ fprintf_filtered (stream, " ");
+ fprintf_filtered (stream, "const");
+ did_print_modifier = 1;
+ }
+
+ if (TYPE_VOLATILE (type))
+ {
+ if (did_print_modifier || need_pre_space)
+ fprintf_filtered (stream, " ");
+ fprintf_filtered (stream, "volatile");
+ did_print_modifier = 1;
+ }
+
+ if (TYPE_RESTRICT (type))
+ {
+ if (did_print_modifier || need_pre_space)
+ fprintf_filtered (stream, " ");
+ fprintf_filtered (stream, (language == language_cplus
+ ? "__restrict__"
+ : "restrict"));
+ did_print_modifier = 1;
+ }
+
+ if (TYPE_ATOMIC (type))
+ {
+ if (did_print_modifier || need_pre_space)
+ fprintf_filtered (stream, " ");
+ fprintf_filtered (stream, "_Atomic");
+ did_print_modifier = 1;
+ }
+
+ address_space_id = address_space_int_to_name (get_type_arch (type),
+ TYPE_INSTANCE_FLAGS (type));
+ if (address_space_id)
+ {
+ if (did_print_modifier || need_pre_space)
+ fprintf_filtered (stream, " ");
+ fprintf_filtered (stream, "@%s", address_space_id);
+ did_print_modifier = 1;
+ }
+
+ if (did_print_modifier && need_post_space)
+ fprintf_filtered (stream, " ");
+}
+
+
+/* Print out the arguments of TYPE, which should have TYPE_CODE_METHOD
+ or TYPE_CODE_FUNC, to STREAM. Artificial arguments, such as "this"
+ in non-static methods, are displayed if LINKAGE_NAME is zero. If
+ LINKAGE_NAME is non-zero and LANGUAGE is language_cplus the topmost
+ parameter types get removed their possible const and volatile qualifiers to
+ match demangled linkage name parameters part of such function type.
+ LANGUAGE is the language in which TYPE was defined. This is a necessary
+ evil since this code is used by the C and C++. */
+
+void
+c_type_print_args (struct type *type, struct ui_file *stream,
+ int linkage_name, enum language language,
+ const struct type_print_options *flags)