Lines Matching refs:decl
744 decl_is_emitted(decl_base_sptr& decl) const in decl_is_emitted()
746 if (is_type(decl)) in decl_is_emitted()
749 string repr = get_pretty_representation(decl, true); in decl_is_emitted()
750 interned_string irepr = decl->get_environment()->intern(repr); in decl_is_emitted()
808 record_decl_as_emitted(const decl_base_sptr &decl)const in record_decl_as_emitted()
810 string repr = get_pretty_representation(decl, true); in record_decl_as_emitted()
811 interned_string irepr = decl->get_environment()->intern(repr); in record_decl_as_emitted()
983 annotate(const T& decl, in annotate() argument
987 if (!decl) in annotate()
998 << xml::escape_xml_comment(decl->get_pretty_representation()) in annotate()
1255 write_location(const decl_base_sptr& decl, in write_location() argument
1258 if (!decl) in write_location()
1261 location loc = decl->get_location(); in write_location()
1277 write_visibility(const shared_ptr<decl_base>& decl, ostream& o) in write_visibility() argument
1279 if (!decl) in write_visibility()
1282 decl_base::visibility v = decl->get_visibility(); in write_visibility()
1317 write_binding(const shared_ptr<decl_base>& decl, ostream& o) in write_binding() argument
1319 if (!decl) in write_binding()
1325 dynamic_pointer_cast<var_decl>(decl); in write_binding()
1331 dynamic_pointer_cast<function_decl>(decl); in write_binding()
1367 write_is_artificial(const decl_base_sptr& decl, ostream& o) in write_is_artificial() argument
1369 if (!decl) in write_is_artificial()
1372 if (decl->get_is_artificial()) in write_is_artificial()
1441 write_size_and_alignment(const shared_ptr<type_base> decl, ostream& o, in write_size_and_alignment() argument
1444 size_t size_in_bits = decl->get_size_in_bits(); in write_size_and_alignment()
1448 size_t alignment_in_bits = decl->get_alignment_in_bits(); in write_size_and_alignment()
1458 write_array_size_and_alignment(const shared_ptr<array_type_def> decl, ostream& o) in write_array_size_and_alignment() argument
1460 if (decl->is_infinite()) in write_array_size_and_alignment()
1463 size_t size_in_bits = decl->get_size_in_bits(); in write_array_size_and_alignment()
1468 size_t alignment_in_bits = decl->get_alignment_in_bits(); in write_array_size_and_alignment()
1828 write_is_anonymous(const decl_base_sptr& decl, ostream& o) in write_is_anonymous() argument
1830 if (decl->get_is_anonymous()) in write_is_anonymous()
1905 write_decl(const decl_base_sptr& decl, write_context& ctxt, unsigned indent) in write_decl() argument
1907 if (write_type_decl(dynamic_pointer_cast<type_decl> (decl), in write_decl()
1909 || write_namespace_decl(dynamic_pointer_cast<namespace_decl>(decl), in write_decl()
1912 (decl), in write_decl()
1914 || write_pointer_type_def(dynamic_pointer_cast<pointer_type_def>(decl), in write_decl()
1917 <reference_type_def>(decl), ctxt, indent) in write_decl()
1919 <array_type_def>(decl), ctxt, indent) in write_decl()
1920 || write_enum_type_decl(dynamic_pointer_cast<enum_type_decl>(decl), in write_decl()
1922 || write_typedef_decl(dynamic_pointer_cast<typedef_decl>(decl), in write_decl()
1924 || write_var_decl(dynamic_pointer_cast<var_decl>(decl), ctxt, in write_decl()
1927 (decl), ctxt, /*skip_first_parameter=*/true, in write_decl()
1929 || write_function_decl(dynamic_pointer_cast<function_decl>(decl), in write_decl()
1931 || write_class_decl(is_class_type(decl), ctxt, indent) in write_decl()
1932 || write_union_decl(is_union_type(decl), ctxt, indent) in write_decl()
1934 (dynamic_pointer_cast<function_tdecl>(decl), ctxt, indent)) in write_decl()
1936 (dynamic_pointer_cast<class_tdecl>(decl), ctxt, indent))) in write_decl()
1954 write_decl_in_scope(const decl_base_sptr& decl, in write_decl_in_scope() argument
1958 type_base_sptr type = is_type(decl); in write_decl_in_scope()
1965 for (scope_decl* s = decl->get_scope(); in write_decl_in_scope()
2026 write_decl(decl, ctxt, indent); in write_decl_in_scope()
2363 decl_base_sptr decl(d, noop_deleter()); in write_translation_unit() local
2364 write_decl_in_scope(decl, ctxt, in write_translation_unit()
2489 write_namespace_decl(const namespace_decl_sptr& decl, in write_namespace_decl() argument
2492 if (!decl || decl->is_empty_or_has_empty_sub_namespaces()) in write_namespace_decl()
2498 annotate(decl, ctxt, indent); in write_namespace_decl()
2503 << xml::escape_xml_string(decl->get_name()) in write_namespace_decl()
2508 const declarations& d = decl->get_member_decls(); in write_namespace_decl()
2510 write_canonical_types_of_scope(*decl, ctxt, in write_namespace_decl()
2548 write_qualified_type_def(const qualified_type_def_sptr& decl, in write_qualified_type_def() argument
2553 if (!decl) in write_qualified_type_def()
2559 type_base_sptr underlying_type = decl->get_underlying_type(); in write_qualified_type_def()
2561 annotate(decl, ctxt, indent); in write_qualified_type_def()
2570 if (decl->get_cv_quals() & qualified_type_def::CV_CONST) in write_qualified_type_def()
2572 if (decl->get_cv_quals() & qualified_type_def::CV_VOLATILE) in write_qualified_type_def()
2574 if (decl->get_cv_quals() & qualified_type_def::CV_RESTRICT) in write_qualified_type_def()
2577 write_location(static_pointer_cast<decl_base>(decl), ctxt); in write_qualified_type_def()
2581 i = ctxt.get_id_for_type(decl); in write_qualified_type_def()
2585 ctxt.record_type_as_emitted(decl); in write_qualified_type_def()
2601 write_qualified_type_def(const qualified_type_def_sptr& decl, in write_qualified_type_def() argument
2604 {return write_qualified_type_def(decl, "", ctxt, indent);} in write_qualified_type_def()
2624 write_pointer_type_def(const pointer_type_def_sptr& decl, in write_pointer_type_def() argument
2629 if (!decl) in write_pointer_type_def()
2635 type_base_sptr pointed_to_type = decl->get_pointed_to_type(); in write_pointer_type_def()
2637 annotate(decl->get_canonical_type(), ctxt, indent); in write_pointer_type_def()
2646 write_size_and_alignment(decl, o, in write_pointer_type_def()
2649 : decl->get_translation_unit()->get_address_size()), in write_pointer_type_def()
2654 i = ctxt.get_id_for_type(decl); in write_pointer_type_def()
2658 write_location(static_pointer_cast<decl_base>(decl), ctxt); in write_pointer_type_def()
2661 ctxt.record_type_as_emitted(decl); in write_pointer_type_def()
2676 write_pointer_type_def(const pointer_type_def_sptr& decl, in write_pointer_type_def() argument
2679 {return write_pointer_type_def(decl, "", ctxt, indent);} in write_pointer_type_def()
2699 write_reference_type_def(const reference_type_def_sptr& decl, in write_reference_type_def() argument
2704 if (!decl) in write_reference_type_def()
2707 annotate(decl->get_canonical_type(), ctxt, indent); in write_reference_type_def()
2714 if (decl->is_lvalue()) in write_reference_type_def()
2720 type_base_sptr pointed_to_type = decl->get_pointed_to_type(); in write_reference_type_def()
2725 if (function_type_sptr f = is_function_type(decl->get_pointed_to_type())) in write_reference_type_def()
2728 write_size_and_alignment(decl, o, in write_reference_type_def()
2731 : decl->get_translation_unit()->get_address_size()), in write_reference_type_def()
2736 i = ctxt.get_id_for_type(decl); in write_reference_type_def()
2739 write_location(static_pointer_cast<decl_base>(decl), ctxt); in write_reference_type_def()
2743 ctxt.record_type_as_emitted(decl); in write_reference_type_def()
2758 write_reference_type_def(const reference_type_def_sptr& decl, in write_reference_type_def() argument
2761 {return write_reference_type_def(decl, "", ctxt, indent);} in write_reference_type_def()
2773 write_array_subrange_type(const array_type_def::subrange_sptr& decl, in write_array_subrange_type() argument
2777 if (!decl) in write_array_subrange_type()
2780 annotate(decl, ctxt, indent); in write_array_subrange_type()
2788 if (!decl->get_name().empty()) in write_array_subrange_type()
2789 o << " name='" << decl->get_name() << "'"; in write_array_subrange_type()
2792 if (decl->is_infinite()) in write_array_subrange_type()
2795 o << decl->get_length(); in write_array_subrange_type()
2799 if (decl->get_lower_bound()) in write_array_subrange_type()
2801 ABG_ASSERT(decl->is_infinite() in write_array_subrange_type()
2802 || (decl->get_length() == in write_array_subrange_type()
2803 (uint64_t) (decl->get_upper_bound() in write_array_subrange_type()
2804 - decl->get_lower_bound() + 1))); in write_array_subrange_type()
2805 o << " lower-bound='" << decl->get_lower_bound() << "' upper-bound='" in write_array_subrange_type()
2806 << decl->get_upper_bound() << "'"; in write_array_subrange_type()
2809 type_base_sptr underlying_type = decl->get_underlying_type(); in write_array_subrange_type()
2818 o << " id='" << ctxt.get_id_for_type(decl) << "'"; in write_array_subrange_type()
2820 write_location(decl->get_location(), ctxt); in write_array_subrange_type()
2845 write_array_type_def(const array_type_def_sptr& decl, in write_array_type_def() argument
2850 if (!decl) in write_array_type_def()
2853 annotate(decl, ctxt, indent); in write_array_type_def()
2860 o << " dimensions='" << decl->get_dimension_count() << "'"; in write_array_type_def()
2862 type_base_sptr element_type = decl->get_element_type(); in write_array_type_def()
2867 write_array_size_and_alignment(decl, o); in write_array_type_def()
2871 i = ctxt.get_id_for_type(decl); in write_array_type_def()
2874 write_location(static_pointer_cast<decl_base>(decl), ctxt); in write_array_type_def()
2876 if (!decl->get_dimension_count()) in write_array_type_def()
2884 for (si = decl->get_subranges().begin(); in write_array_type_def()
2885 si != decl->get_subranges().end(); ++si) in write_array_type_def()
2896 ctxt.record_type_as_emitted(decl); in write_array_type_def()
2911 write_array_type_def(const array_type_def_sptr& decl, in write_array_type_def() argument
2914 {return write_array_type_def(decl, "", ctxt, indent);} in write_array_type_def()
2934 write_enum_type_decl(const enum_type_decl_sptr& decl, in write_enum_type_decl() argument
2939 if (!decl) in write_enum_type_decl()
2942 annotate(decl->get_canonical_type(), ctxt, indent); in write_enum_type_decl()
2947 o << "<enum-decl name='" << xml::escape_xml_string(decl->get_name()) << "'"; in write_enum_type_decl()
2949 write_is_anonymous(decl, o); in write_enum_type_decl()
2950 write_is_artificial(decl, o); in write_enum_type_decl()
2951 write_is_non_reachable(is_type(decl), o); in write_enum_type_decl()
2953 if (!decl->get_linkage_name().empty()) in write_enum_type_decl()
2954 o << " linkage-name='" << decl->get_linkage_name() << "'"; in write_enum_type_decl()
2956 write_location(decl, ctxt); in write_enum_type_decl()
2957 write_is_declaration_only(decl, o); in write_enum_type_decl()
2961 i = ctxt.get_id_for_type(decl); in write_enum_type_decl()
2966 << ctxt.get_id_for_type(decl->get_underlying_type()) in write_enum_type_decl()
2970 decl->get_enumerators().begin(); in write_enum_type_decl()
2971 i != decl->get_enumerators().end(); in write_enum_type_decl()
2985 ctxt.record_type_as_emitted(decl); in write_enum_type_decl()
3000 write_enum_type_decl(const enum_type_decl_sptr& decl, in write_enum_type_decl() argument
3003 {return write_enum_type_decl(decl, "", ctxt, indent);} in write_enum_type_decl()
3143 write_typedef_decl(const typedef_decl_sptr& decl, in write_typedef_decl() argument
3148 if (!decl) in write_typedef_decl()
3153 annotate(decl, ctxt, indent); in write_typedef_decl()
3158 << xml::escape_xml_string(decl->get_name()) in write_typedef_decl()
3161 type_base_sptr underlying_type = decl->get_underlying_type(); in write_typedef_decl()
3166 write_location(decl, ctxt); in write_typedef_decl()
3170 i = ctxt.get_id_for_type(decl); in write_typedef_decl()
3174 ctxt.record_type_as_emitted(decl); in write_typedef_decl()
3189 write_typedef_decl(const typedef_decl_sptr& decl, in write_typedef_decl() argument
3192 {return write_typedef_decl(decl, "", ctxt, indent);} in write_typedef_decl()
3207 write_var_decl(const var_decl_sptr& decl, write_context& ctxt, in write_var_decl() argument
3210 if (!decl) in write_var_decl()
3213 annotate(decl, ctxt, indent); in write_var_decl()
3219 o << "<var-decl name='" << xml::escape_xml_string(decl->get_name()) << "'"; in write_var_decl()
3220 type_base_sptr var_type = decl->get_type(); in write_var_decl()
3226 const string& linkage_name = decl->get_linkage_name(); in write_var_decl()
3231 write_visibility(decl, o); in write_var_decl()
3233 write_binding(decl, o); in write_var_decl()
3235 write_location(decl, ctxt); in write_var_decl()
3237 write_elf_symbol_reference(decl->get_symbol(), o); in write_var_decl()
3241 ctxt.record_decl_as_emitted(decl); in write_var_decl()
3259 write_function_decl(const function_decl_sptr& decl, write_context& ctxt, in write_function_decl() argument
3262 if (!decl) in write_function_decl()
3265 annotate(decl, ctxt, indent); in write_function_decl()
3272 << xml::escape_xml_string(decl->get_name()) in write_function_decl()
3275 if (!decl->get_linkage_name().empty()) in write_function_decl()
3277 << xml::escape_xml_string(decl->get_linkage_name()) << "'"; in write_function_decl()
3279 write_location(decl, ctxt); in write_function_decl()
3281 if (decl->is_declared_inline()) in write_function_decl()
3284 write_visibility(decl, o); in write_function_decl()
3286 write_binding(decl, o); in write_function_decl()
3288 write_size_and_alignment(decl->get_type(), o, in write_function_decl()
3291 : decl->get_translation_unit()->get_address_size()), in write_function_decl()
3293 write_elf_symbol_reference(decl->get_symbol(), o); in write_function_decl()
3299 decl->get_parameters().begin(); in write_function_decl()
3300 for ((skip_first_parm && pi != decl->get_parameters().end()) ? ++pi: pi; in write_function_decl()
3301 pi != decl->get_parameters().end(); in write_function_decl()
3331 if (shared_ptr<type_base> return_type = decl->get_return_type()) in write_function_decl()
3343 ctxt.record_decl_as_emitted(decl); in write_function_decl()
3462 write_class_decl_opening_tag(const class_decl_sptr& decl, in write_class_decl_opening_tag() argument
3468 if (!decl) in write_class_decl_opening_tag()
3475 o << "<class-decl name='" << xml::escape_xml_string(decl->get_name()) << "'"; in write_class_decl_opening_tag()
3477 write_size_and_alignment(decl, o); in write_class_decl_opening_tag()
3479 write_is_struct(decl, o); in write_class_decl_opening_tag()
3481 write_is_anonymous(decl, o); in write_class_decl_opening_tag()
3483 write_is_artificial(decl, o); in write_class_decl_opening_tag()
3485 write_is_non_reachable(is_type(decl), o); in write_class_decl_opening_tag()
3487 write_naming_typedef(decl, ctxt); in write_class_decl_opening_tag()
3489 write_visibility(decl, o); in write_class_decl_opening_tag()
3491 write_location(decl, ctxt); in write_class_decl_opening_tag()
3493 write_is_declaration_only(decl, o); in write_class_decl_opening_tag()
3495 if (decl->get_earlier_declaration()) in write_class_decl_opening_tag()
3499 << ctxt.get_id_for_type(is_type(decl->get_earlier_declaration())) in write_class_decl_opening_tag()
3505 i = ctxt.get_id_for_type(decl); in write_class_decl_opening_tag()
3508 if (prepare_to_handle_members && decl->has_no_base_nor_member()) in write_class_decl_opening_tag()
3534 write_union_decl_opening_tag(const union_decl_sptr& decl, in write_union_decl_opening_tag() argument
3540 if (!decl) in write_union_decl_opening_tag()
3547 o << "<union-decl name='" << xml::escape_xml_string(decl->get_name()) << "'"; in write_union_decl_opening_tag()
3549 if (!decl->get_is_declaration_only()) in write_union_decl_opening_tag()
3550 write_size_and_alignment(decl, o); in write_union_decl_opening_tag()
3552 write_is_anonymous(decl, o); in write_union_decl_opening_tag()
3554 write_visibility(decl, o); in write_union_decl_opening_tag()
3556 write_is_artificial(decl, o); in write_union_decl_opening_tag()
3558 write_is_non_reachable(is_type(decl), o); in write_union_decl_opening_tag()
3560 write_location(decl, ctxt); in write_union_decl_opening_tag()
3562 write_is_declaration_only(decl, o); in write_union_decl_opening_tag()
3566 i = ctxt.get_id_for_type(decl); in write_union_decl_opening_tag()
3569 if (prepare_to_handle_members && decl->has_no_member()) in write_union_decl_opening_tag()
3601 class_decl_sptr decl = is_class_type(look_through_decl_only_class(d)); in write_class_decl() local
3603 annotate(decl, ctxt, indent); in write_class_decl()
3607 write_class_decl_opening_tag(decl, id, ctxt, indent, in write_class_decl()
3610 if (!decl->has_no_base_nor_member()) in write_class_decl()
3615 decl->get_base_specifiers().begin(); in write_class_decl()
3616 base != decl->get_base_specifiers().end(); in write_class_decl()
3638 write_canonical_types_of_scope(*decl, ctxt, nb_ws, in write_class_decl()
3642 decl->get_member_types().begin(); in write_class_decl()
3643 ti != decl->get_member_types().end(); in write_class_decl()
3649 decl->get_data_members().begin(); in write_class_decl()
3650 data != decl->get_data_members().end(); in write_class_decl()
3674 decl->get_member_functions().begin(); in write_class_decl()
3675 f != decl->get_member_functions().end(); in write_class_decl()
3705 decl->get_virtual_mem_fns().begin(); in write_class_decl()
3706 f != decl->get_virtual_mem_fns().end(); in write_class_decl()
3733 decl->get_member_function_templates().begin(); in write_class_decl()
3734 fn != decl->get_member_function_templates().end(); in write_class_decl()
3752 decl->get_member_class_templates().begin(); in write_class_decl()
3753 cl != decl->get_member_class_templates().end(); in write_class_decl()
3775 if (!decl->get_is_declaration_only()) in write_class_decl()
3776 ctxt.record_type_as_emitted(decl); in write_class_decl()
3778 ctxt.record_decl_only_type_as_emitted(decl); in write_class_decl()
3793 write_class_decl(const class_decl_sptr& decl, in write_class_decl() argument
3796 {return write_class_decl(decl, "", ctxt, indent);} in write_class_decl()
3816 union_decl_sptr decl = is_union_type(look_through_decl_only_class(d)); in write_union_decl() local
3818 annotate(decl, ctxt, indent); in write_union_decl()
3822 write_union_decl_opening_tag(decl, id, ctxt, indent, in write_union_decl()
3824 if (!decl->has_no_member()) in write_union_decl()
3828 decl->get_member_types().begin(); in write_union_decl()
3829 ti != decl->get_member_types().end(); in write_union_decl()
3834 decl->get_data_members().begin(); in write_union_decl()
3835 data != decl->get_data_members().end(); in write_union_decl()
3858 decl->get_member_functions().begin(); in write_union_decl()
3859 f != decl->get_member_functions().end(); in write_union_decl()
3889 decl->get_member_function_templates().begin(); in write_union_decl()
3890 fn != decl->get_member_function_templates().end(); in write_union_decl()
3908 decl->get_member_class_templates().begin(); in write_union_decl()
3909 cl != decl->get_member_class_templates().end(); in write_union_decl()
3931 if (!decl->get_is_declaration_only()) in write_union_decl()
3932 ctxt.record_type_as_emitted(decl); in write_union_decl()
3934 ctxt.record_decl_only_type_as_emitted(decl); in write_union_decl()
3940 write_union_decl(const union_decl_sptr& decl, in write_union_decl() argument
3943 {return write_union_decl(decl, "", ctxt, indent);} in write_union_decl()
3963 decl_base_sptr decl = get_type_declaration(t); in write_member_type_opening_tag() local
3964 ABG_ASSERT(decl); in write_member_type_opening_tag()
3967 write_access(decl, o); in write_member_type_opening_tag()
4031 write_type_tparameter(const type_tparameter_sptr decl, in write_type_tparameter() argument
4035 if (!decl) in write_type_tparameter()
4042 if (ctxt.type_has_existing_id(decl)) in write_type_tparameter()
4048 << id_attr_name << "='" << ctxt.get_id_for_type(decl) << "'"; in write_type_tparameter()
4050 std::string name = xml::escape_xml_string(decl->get_name ()); in write_type_tparameter()
4054 write_location(decl, ctxt); in write_type_tparameter()
4058 ctxt.record_type_as_emitted(decl); in write_type_tparameter()
4074 const shared_ptr<non_type_tparameter> decl, in write_non_type_tparameter() argument
4077 if (!decl) in write_non_type_tparameter()
4084 << ctxt.get_id_for_type(decl->get_type()) in write_non_type_tparameter()
4087 string name = xml::escape_xml_string(decl->get_name()); in write_non_type_tparameter()
4091 write_location(decl, ctxt); in write_non_type_tparameter()
4109 write_template_tparameter (const template_tparameter_sptr decl, in write_template_tparameter() argument
4113 if (!decl) in write_template_tparameter()
4120 if (ctxt.type_has_existing_id(decl)) in write_template_tparameter()
4124 << ctxt.get_id_for_type(decl) << "'"; in write_template_tparameter()
4126 string name = xml::escape_xml_string(decl->get_name()); in write_template_tparameter()
4134 decl->get_template_parameters().begin(); in write_template_tparameter()
4135 p != decl->get_template_parameters().end(); in write_template_tparameter()
4137 write_template_parameter(decl, ctxt, nb_spaces); in write_template_tparameter()
4142 ctxt.record_type_as_emitted(decl); in write_template_tparameter()
4158 (const shared_ptr<type_composition> decl, in write_type_composition() argument
4161 if (!decl) in write_type_composition()
4172 (dynamic_pointer_cast<pointer_type_def>(decl->get_composed_type()), in write_type_composition()
4175 (dynamic_pointer_cast<reference_type_def>(decl->get_composed_type()), in write_type_composition()
4178 (dynamic_pointer_cast<array_type_def>(decl->get_composed_type()), in write_type_composition()
4181 (dynamic_pointer_cast<qualified_type_def>(decl->get_composed_type()), in write_type_composition()
4200 write_template_parameter(const shared_ptr<template_parameter> decl, in write_template_parameter() argument
4204 (dynamic_pointer_cast<type_tparameter>(decl), ctxt, indent)) in write_template_parameter()
4206 (dynamic_pointer_cast<non_type_tparameter>(decl), in write_template_parameter()
4209 (dynamic_pointer_cast<template_tparameter>(decl), in write_template_parameter()
4212 (dynamic_pointer_cast<type_composition>(decl), in write_template_parameter()
4245 write_function_tdecl(const shared_ptr<function_tdecl> decl, in write_function_tdecl() argument
4248 if (!decl) in write_function_tdecl()
4255 o << "<function-template-decl id='" << ctxt.get_id_for_fn_tmpl(decl) << "'"; in write_function_tdecl()
4257 write_location(decl, ctxt); in write_function_tdecl()
4259 write_visibility(decl, o); in write_function_tdecl()
4261 write_binding(decl, o); in write_function_tdecl()
4265 write_template_parameters(decl, ctxt, indent); in write_function_tdecl()
4267 write_function_decl(decl->get_pattern(), ctxt, in write_function_tdecl()
4290 write_class_tdecl(const shared_ptr<class_tdecl> decl, in write_class_tdecl() argument
4293 if (!decl) in write_class_tdecl()
4300 o << "<class-template-decl id='" << ctxt.get_id_for_class_tmpl(decl) << "'"; in write_class_tdecl()
4302 write_location(decl, ctxt); in write_class_tdecl()
4304 write_visibility(decl, o); in write_class_tdecl()
4308 write_template_parameters(decl, ctxt, indent); in write_class_tdecl()
4310 write_class_decl(decl->get_pattern(), ctxt, in write_class_tdecl()