Lines Matching refs:decl

277 		       decl_base_sptr decl)
280 get_xml_node_decl_map()[node]= decl;
426 // The current decl is a scope_decl, so it's our lexical scope.
429 // The current decl is not a scope_decl, so our lexical scope is
430 // the scope of this decl.
670 /// Record the sub-types of a fn-decl as being used by the fn-decl.
672 /// @param fn the function decl to consider.
689 /// Record the sub-types of a function decl as being used by it.
691 /// @param fn the function decl to consider.
698 /// @param fn_type the function decl to consider.
718 /// @param fn_type the function decl to consider.
728 /// @param decl the newly created declaration.
730 push_decl_to_current_scope(decl_base_sptr decl,
733 ABG_ASSERT(decl);
736 add_decl_to_scope(decl, get_cur_scope());
737 if (!decl->get_translation_unit())
738 decl->set_translation_unit(get_translation_unit());
739 ABG_ASSERT(decl->get_translation_unit());
740 push_decl(decl);
743 /// This function must be called on each type decl that is created
744 /// during the parsing. It adds the type decl to the current scope
757 shared_ptr<decl_base> decl = dynamic_pointer_cast<decl_base>(t);
758 ABG_ASSERT(decl);
760 push_decl_to_current_scope(decl, add_to_current_scope);
1448 /// @param node the XML for which to return the scope decl. If its
2239 type_or_decl_base_sptr decl;
2241 return decl;
2243 ((decl = handle_namespace_decl(rdr, node, add_to_current_scope))
2244 ||(decl = handle_type_decl(rdr, node, add_to_current_scope))
2245 ||(decl = handle_qualified_type_decl(rdr, node,
2247 ||(decl = handle_pointer_type_def(rdr, node,
2249 || (decl = handle_reference_type_def(rdr, node, add_to_current_scope))
2250 || (decl = handle_function_type(rdr, node, add_to_current_scope))
2251 || (decl = handle_array_type_def(rdr, node, add_to_current_scope))
2252 || (decl = handle_enum_type_decl(rdr, node,
2254 || (decl = handle_typedef_decl(rdr, node,
2256 || (decl = handle_var_decl(rdr, node,
2258 || (decl = handle_function_decl(rdr, node,
2260 || (decl = handle_class_decl(rdr, node,
2262 || (decl = handle_union_decl(rdr, node,
2264 || (decl = handle_function_tdecl(rdr, node,
2266 || (decl = handle_class_tdecl(rdr, node,
2274 if (type_base_sptr t = is_type(decl))
2285 return decl;
2949 /// Set the naming typedef to a given decl depending on the content of
2956 /// @param decl the decl to set the naming typedef to.
2960 const decl_base_sptr& decl)
2969 decl->set_naming_typedef(naming_typedef);
2974 /// "namespace-decl". Note that this function recursively reads the
2994 if (!node || !xmlStrEqual(node->name, BAD_CAST("namespace-decl")))
3012 namespace_decl_sptr decl(new namespace_decl(env, name, loc));
3013 maybe_set_artificial_location(rdr, node, decl);
3014 rdr.push_decl_to_current_scope(decl, add_to_current_scope);
3015 rdr.map_xml_node_to_decl(node, decl);
3022 rdr.pop_scope_or_abort(decl);
3024 return decl;
3313 /// Build a function_decl from a 'function-decl' xml node.
3320 /// means that the 'function-decl' xml node should be parsed as a
3321 /// method_decl. The class_decl pointer is the class decl to which
3339 if (!xmlStrEqual(node->name, BAD_CAST("function-decl")))
3433 /// Build a function_decl from a 'function-decl' xml node if it's not
3442 /// it means that the 'function-decl' xml node should be parsed as a
3602 /// Build pointer to var_decl from a 'var-decl' xml Node
3617 if (!xmlStrEqual(node->name, BAD_CAST("var-decl")))
3644 var_decl_sptr decl(new var_decl(name, underlying_type,
3647 maybe_set_artificial_location(rdr, node, decl);
3651 decl->set_symbol(sym);
3653 rdr.push_decl_to_current_scope(decl, add_to_current_scope);
3658 RECORD_ARTIFACT_AS_USED_BY(rdr, underlying_type, decl);
3661 if (decl->get_symbol() && decl->get_symbol()->is_public())
3662 decl->set_is_in_public_symbol_table(true);
3664 return decl;
3667 /// Build a type_decl from a "type-decl" XML Node.
3685 if (!xmlStrEqual(node->name, BAD_CAST("type-decl")))
3735 type_decl_sptr decl(new type_decl(env, name, size_in_bits,
3737 maybe_set_artificial_location(rdr, node, decl);
3738 decl->set_is_anonymous(is_anonymous);
3739 decl->set_is_declaration_only(is_decl_only);
3740 if (rdr.push_and_key_type_decl(decl, id, add_to_current_scope))
3742 rdr.map_xml_node_to_decl(node, decl);
3743 return decl;
3818 qualified_type_def_sptr decl;
3821 decl = is_qualified_type(t);
3822 ABG_ASSERT(decl);
3826 decl.reset(new qualified_type_def(underlying_type, cv, loc));
3827 maybe_set_artificial_location(rdr, node, decl);
3828 rdr.push_and_key_type_decl(decl, id, add_to_current_scope);
3829 RECORD_ARTIFACT_AS_USED_BY(rdr, underlying_type, decl);
3832 rdr.map_xml_node_to_decl(node, decl);
3834 return decl;
4378 /// Build an enum_type_decl from an 'enum-type-decl' xml node.
4396 if (!xmlStrEqual(node->name, BAD_CAST("enum-decl")))
4493 /// Build a typedef_decl from a 'typedef-decl' xml node.
4508 if (!xmlStrEqual(node->name, BAD_CAST("typedef-decl")))
4599 /// Build a class_decl from a 'class-decl' xml node.
4618 if (!xmlStrEqual(node->name, BAD_CAST("class-decl")))
4653 class_decl_sptr decl;
4716 decl = previous_definition;
4721 decl.reset(new class_decl(env, name, is_struct));
4723 decl->set_size_in_bits(size_in_bits);
4725 decl->set_is_anonymous(is_anonymous);
4726 decl->set_location(loc);
4729 decl.reset(new class_decl(env, name, size_in_bits, alignment_in_bits,
4734 maybe_set_artificial_location(rdr, node, decl);
4735 decl->set_is_artificial(is_artificial);
4739 if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "def-of-decl-id"))
4748 decl->set_earlier_declaration(d);
4749 d->set_definition_of_declaration(decl);
4754 && decl
4755 && !decl->get_is_declaration_only()
4758 // decl is the definition of the previous declaration
4762 decl->set_earlier_declaration(is_decl(previous_declaration));
4772 previous_declaration->set_definition_of_declaration(decl);
4780 // decl is a declaration of the previous definition
4782 ABG_ASSERT(decl->get_is_declaration_only()
4783 && !decl->get_definition_of_declaration());
4784 decl->set_definition_of_declaration(previous_definition);
4789 rdr.push_decl_to_current_scope(decl, add_to_current_scope);
4791 rdr.map_xml_node_to_decl(node, decl);
4792 rdr.key_type_decl(decl, id);
4795 maybe_set_naming_typedef(rdr, node, decl);
4817 if (decl->find_base_class(b->get_qualified_name()))
4835 decl->add_base_specifier(base);
4845 rdr.map_xml_node_to_decl(n, decl);
4868 rdr.map_xml_node_to_decl(n, decl);
4891 if (decl->find_data_member(v))
4904 if (!variable_is_suppressed(rdr, decl.get(), *v))
4906 decl->add_data_member(v, access,
4921 RECORD_ARTIFACT_AS_USED_BY(rdr, v->get_type(), decl);
4925 RECORD_ARTIFACT_AS_USED_BY(rdr, v, decl);
4933 rdr.map_xml_node_to_decl(n, decl);
4961 build_function_decl_if_not_suppressed(rdr, p, decl,
4980 rdr.map_xml_node_to_decl(n, decl);
5006 decl->add_member_function_template(m);
5016 decl->add_member_class_template(m);
5022 rdr.pop_scope_or_abort(decl);
5024 return decl;
5027 /// Build a union_decl from a 'union-decl' xml node.
5046 if (!xmlStrEqual(node->name, BAD_CAST("union-decl")))
5080 union_decl_sptr decl;
5132 decl = previous_definition;
5136 decl.reset(new union_decl(env, name));
5138 decl.reset(new union_decl(env, name,
5146 maybe_set_artificial_location(rdr, node, decl);
5147 decl->set_is_artificial(is_artificial);
5151 if (xml_char_sptr s = XML_NODE_GET_ATTRIBUTE(node, "def-of-decl-id"))
5161 decl->set_earlier_declaration(d);
5162 d->set_definition_of_declaration(decl);
5167 && decl
5168 && !decl->get_is_declaration_only()
5171 // decl is the definition of the previous declaration
5175 decl->set_earlier_declaration(previous_declaration);
5185 previous_declaration->set_definition_of_declaration(decl);
5193 // decl is a declaration of the previous definition
5195 ABG_ASSERT(decl->get_is_declaration_only()
5196 && !decl->get_definition_of_declaration());
5197 decl->set_definition_of_declaration(previous_definition);
5202 rdr.push_decl_to_current_scope(decl, add_to_current_scope);
5204 rdr.map_xml_node_to_decl(node, decl);
5205 rdr.key_type_decl(decl, id);
5207 maybe_set_naming_typedef(rdr, node, decl);
5218 rdr.map_xml_node_to_decl(n, decl);
5241 rdr.map_xml_node_to_decl(n, decl);
5258 if (decl->find_data_member(v))
5271 || !variable_is_suppressed(rdr, decl.get(), *v))
5273 decl->add_data_member(v, access,
5286 RECORD_ARTIFACT_AS_USED_BY(rdr, v->get_type(), decl);
5290 RECORD_ARTIFACT_AS_USED_BY(rdr, v, decl);
5298 rdr.map_xml_node_to_decl(n, decl);
5314 build_function_decl_if_not_suppressed(rdr, p, decl,
5330 rdr.map_xml_node_to_decl(n, decl);
5353 decl->add_member_function_template(m);
5363 decl->add_member_class_template(m);
5369 rdr.pop_scope_or_abort(decl);
5371 return decl;
5375 /// 'function-template-decl' xml element node.
5393 if (!xmlStrEqual(node->name, BAD_CAST("function-template-decl")))
5441 /// 'class-template-decl' xml element node.
5459 if (!xmlStrEqual(node->name, BAD_CAST("class-template-decl")))
5823 /// Parses 'type-decl' xml element.
5833 type_decl_sptr decl = build_type_decl(rdr, node, add_to_current_scope);
5834 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5835 if (decl && decl->get_scope())
5836 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5837 return decl;
5840 /// Parses 'namespace-decl' xml element.
5865 qualified_type_def_sptr decl =
5868 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5869 if (decl && decl->get_scope())
5870 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5871 return decl;
5874 /// Parse a pointer-type-decl element.
5884 pointer_type_def_sptr decl = build_pointer_type_def(rdr, node,
5886 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5887 if (decl && decl->get_scope())
5888 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5889 return decl;
5902 reference_type_def_sptr decl = build_reference_type_def(rdr, node,
5904 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5905 if (decl && decl->get_scope())
5906 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5907 return decl;
5937 array_type_def_sptr decl = build_array_type_def(rdr, node,
5939 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5940 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5941 return decl;
5944 /// Parse an enum-decl element.
5952 enum_type_decl_sptr decl =
5955 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5956 if (decl && decl->get_scope())
5957 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5958 return decl;
5961 /// Parse a typedef-decl element.
5969 typedef_decl_sptr decl = build_typedef_decl(rdr, node,
5971 MAYBE_MAP_TYPE_WITH_TYPE_ID(decl, node);
5972 if (decl && decl->get_scope())
5973 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
5974 return decl;
5977 /// Parse a var-decl element.
5990 decl_base_sptr decl = build_var_decl_if_not_suppressed(rdr, node,
5992 rdr.maybe_add_var_to_exported_decls(is_var_decl(decl).get());
5993 return decl;
5996 /// Parse a function-decl element.
6011 /// Parse a 'class-decl' xml element.
6022 class_decl_sptr decl =
6024 MAYBE_MAP_TYPE_WITH_TYPE_ID(is_type(decl), node);
6025 if (decl && decl->get_scope())
6026 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
6027 return decl;
6030 /// Parse a 'union-decl' xml element.
6041 union_decl_sptr decl =
6043 MAYBE_MAP_TYPE_WITH_TYPE_ID(is_type(decl), node);
6044 if (decl && decl->get_scope())
6045 rdr.maybe_canonicalize_type(decl, /*force_delay=*/false);
6046 return decl;
6049 /// Parse a 'function-template-decl' xml element.
6065 /// Parse a 'class-template-decl' xml element.
6075 class_tdecl_sptr decl = build_class_tdecl(rdr, node,
6077 return decl;