mirror of
git://sourceware.org/git/libabigail.git
synced 2025-02-19 15:26:58 +00:00
Make abg-fwd.h use *_sptr typedefs
Until now, the abg-fwd.h where the necessary forward generic declarations where put didn't contain the convenience typedefs of the form foo_sptr that designate a shared pointer to type foo. This patch moves these convenience typedefs as well as the missing forward declarations from abg-ir.h to abg-fwd.h. The patch also adjusts the function declarations in abg-fwd.h to make them use these convenience typedefs. * include/abg-ir.h: Move convience typedef declarations and some necessary forward declarations to ... * include/abg-fwd.h: ... here. (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. (lookup_type_in_scope): Return a type_base_sptr. (lookup_type_through_scopes): Introduce this to later replace the overload of lookup_type_in_translation_unit that takes a list of strings. (lookup_type_in_scope): Return a type_base_sptr, not a decl_base_sptr. * src/abg-ir.cc (lookup_type_in_scope, lookup_node_in_scope) (lookup_var_decl_in_scope): Adjust. (is_enum_type, is_var_decl): Take a pointer to type_or_decl_base. (lookup_node_in_scope): Return a type_or_decl_base_sptr. (lookup_type_in_scope): Return a type_base_sptr. (lookup_node_in_translation_unit): Return a type_or_decl_base_sptr. (lookup_type_through_scopes): Replace lookup_type_in_translation_unit. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
parent
6167026544
commit
bca3f9d163
File diff suppressed because it is too large
Load Diff
159
include/abg-ir.h
159
include/abg-ir.h
@ -107,29 +107,6 @@ namespace ir
|
||||
// Inject some std::tr1 types in here.
|
||||
using std::tr1::unordered_map;
|
||||
|
||||
/// Convenience typedef for a shared pointer to a @ref corpus.
|
||||
typedef shared_ptr<corpus> corpus_sptr;
|
||||
|
||||
/// Convenience typedef for a weak pointer to a @ref corpus.
|
||||
typedef weak_ptr<corpus> corpus_wptr;
|
||||
|
||||
/// A convenience typedef for a shared_ptr to @ref type_or_decl_base.
|
||||
typedef shared_ptr<type_or_decl_base> type_or_decl_base_sptr;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref type_base
|
||||
typedef shared_ptr<type_base> type_base_sptr;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref type_decl.
|
||||
typedef shared_ptr<type_decl> type_decl_sptr;
|
||||
|
||||
class class_or_union;
|
||||
|
||||
typedef shared_ptr<class_or_union> class_or_union_sptr;
|
||||
typedef weak_ptr<class_or_union> class_or_union_wptr;
|
||||
|
||||
/// Convenience typedef for a shared pointer to an @ref environment
|
||||
typedef shared_ptr<environment> environment_sptr;
|
||||
|
||||
/// This is an abstraction of the set of resources necessary to manage
|
||||
/// several aspects of the internal representations of the Abigail
|
||||
/// library.
|
||||
@ -321,40 +298,6 @@ public:
|
||||
unsigned& line, unsigned& column) const;
|
||||
};
|
||||
|
||||
struct ir_node_visitor;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref
|
||||
/// translation_unit type.
|
||||
typedef shared_ptr<translation_unit> translation_unit_sptr;
|
||||
|
||||
/// Convenience typedef for a vector of @ref translation_unit_sptr.
|
||||
typedef std::vector<translation_unit_sptr> translation_units;
|
||||
|
||||
/// Convenience typedef for a weak pointer on a @ref type_base
|
||||
typedef weak_ptr<type_base> type_base_wptr;
|
||||
|
||||
/// Convenience typedef for a smart pointer on @ref decl_base.
|
||||
typedef shared_ptr<decl_base> decl_base_sptr;
|
||||
|
||||
class function_type;
|
||||
|
||||
class function_decl;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref function_type
|
||||
typedef shared_ptr<function_type> function_type_sptr;
|
||||
|
||||
/// Convenience typedef fo a vector of @ref function_type_sptr
|
||||
typedef vector<function_type_sptr> function_types_type;
|
||||
|
||||
/// Convenience typedef for a weak pointer on a @ref function_type
|
||||
typedef weak_ptr<function_type> function_type_wptr;
|
||||
|
||||
struct ir_traversable_base;
|
||||
|
||||
/// Convenience typedef for a shared pointer to @ref
|
||||
/// ir_traversable_base.
|
||||
typedef shared_ptr<ir_traversable_base> ir_traversable_base_sptr;
|
||||
|
||||
/// The base of an entity of the intermediate representation that is
|
||||
/// to be traversed.
|
||||
struct ir_traversable_base : public traversable_base
|
||||
@ -925,17 +868,6 @@ public:
|
||||
virtual ~context_rel();
|
||||
};// end class context_rel
|
||||
|
||||
class class_decl;
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref class_decl
|
||||
typedef shared_ptr<class_decl> class_decl_sptr;
|
||||
|
||||
/// Convenience typedef for a vector of @ref class_decl_sptr
|
||||
typedef vector<class_decl_sptr> classes_type;
|
||||
|
||||
/// Convenience typedef for a weak pointer on a @ref class_decl.
|
||||
typedef weak_ptr<class_decl> class_decl_wptr;
|
||||
|
||||
/// A bitfield that gives callers of abigail::ir::equals() some
|
||||
/// insight about how different two internal representation artifacts
|
||||
/// are.
|
||||
@ -1265,9 +1197,6 @@ operator<<(std::ostream&, decl_base::binding);
|
||||
bool
|
||||
equals(const scope_decl&, const scope_decl&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref scope_decl.
|
||||
typedef shared_ptr<scope_decl> scope_decl_sptr;
|
||||
|
||||
/// A declaration that introduces a scope.
|
||||
class scope_decl : public virtual decl_base
|
||||
{
|
||||
@ -1369,9 +1298,6 @@ struct scope_decl::hash
|
||||
operator()(const scope_decl* d) const;
|
||||
};
|
||||
|
||||
/// Convenience typedef for shared pointer on @ref global_scope.
|
||||
typedef shared_ptr<global_scope> global_scope_sptr;
|
||||
|
||||
/// This abstracts the global scope of a given translation unit.
|
||||
///
|
||||
/// Only one instance of this class must be present in a given
|
||||
@ -1604,9 +1530,6 @@ public:
|
||||
virtual ~scope_type_decl();
|
||||
};
|
||||
|
||||
/// Convenience typedef for a shared pointer on namespace_decl.
|
||||
typedef shared_ptr<namespace_decl> namespace_decl_sptr;
|
||||
|
||||
/// The abstraction of a namespace declaration
|
||||
class namespace_decl : public scope_decl
|
||||
{
|
||||
@ -1632,8 +1555,6 @@ public:
|
||||
bool
|
||||
equals(const qualified_type_def&, const qualified_type_def&, change_kind*);
|
||||
|
||||
typedef shared_ptr<qualified_type_def> qualified_type_def_sptr;
|
||||
|
||||
/// The abstraction of a qualified type.
|
||||
class qualified_type_def : public virtual type_base, public virtual decl_base
|
||||
{
|
||||
@ -1722,9 +1643,6 @@ operator<<(std::ostream&, qualified_type_def::CV);
|
||||
bool
|
||||
equals(const pointer_type_def&, const pointer_type_def&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref pointer_type_def
|
||||
typedef shared_ptr<pointer_type_def> pointer_type_def_sptr;
|
||||
|
||||
/// The abstraction of a pointer type.
|
||||
class pointer_type_def : public virtual type_base, public virtual decl_base
|
||||
{
|
||||
@ -1780,8 +1698,6 @@ operator!=(const pointer_type_def_sptr&, const pointer_type_def_sptr&);
|
||||
bool
|
||||
equals(const reference_type_def&, const reference_type_def&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref reference_type_def
|
||||
typedef shared_ptr<reference_type_def> reference_type_def_sptr;
|
||||
|
||||
/// Abstracts a reference type.
|
||||
class reference_type_def : public virtual type_base, public virtual decl_base
|
||||
@ -1838,9 +1754,6 @@ operator!=(const reference_type_def_sptr&, const reference_type_def_sptr&);
|
||||
bool
|
||||
equals(const array_type_def&, const array_type_def&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref array_type_def
|
||||
typedef shared_ptr<array_type_def> array_type_def_sptr;
|
||||
|
||||
/// The abstraction of an array type.
|
||||
class array_type_def : public virtual type_base, public virtual decl_base
|
||||
{
|
||||
@ -1974,9 +1887,6 @@ public:
|
||||
bool
|
||||
equals(const enum_type_decl&, const enum_type_decl&, change_kind*);
|
||||
|
||||
/// Convenience typedef for shared pointer on enum_type_decl.
|
||||
typedef shared_ptr<enum_type_decl> enum_type_decl_sptr;
|
||||
|
||||
/// Abstracts a declaration for an enum type.
|
||||
class enum_type_decl : public virtual type_base, public virtual decl_base
|
||||
{
|
||||
@ -2104,12 +2014,6 @@ public:
|
||||
bool
|
||||
equals(const typedef_decl&, const typedef_decl&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref typedef_decl.
|
||||
typedef shared_ptr<typedef_decl> typedef_decl_sptr;
|
||||
|
||||
/// Convenience typedef for a weak pointer on a @ref typedef_decl.
|
||||
typedef weak_ptr<typedef_decl> typedef_decl_wptr;
|
||||
|
||||
/// The abstraction of a typedef declaration.
|
||||
class typedef_decl : public virtual type_base, public virtual decl_base
|
||||
{
|
||||
@ -2156,11 +2060,6 @@ public:
|
||||
virtual ~typedef_decl();
|
||||
};// end class typedef_decl
|
||||
|
||||
class dm_context_rel;
|
||||
|
||||
/// A convenience typedef for a shared pointer to dm_context_rel.
|
||||
typedef shared_ptr<dm_context_rel> dm_context_rel_sptr;
|
||||
|
||||
/// The abstraction for a data member context relationship. This
|
||||
/// relates a data member to its parent class.
|
||||
///
|
||||
@ -2231,9 +2130,6 @@ public:
|
||||
bool
|
||||
equals(const var_decl&, const var_decl&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref var_decl
|
||||
typedef shared_ptr<var_decl> var_decl_sptr;
|
||||
|
||||
/// Abstracts a variable declaration.
|
||||
class var_decl : public virtual decl_base
|
||||
{
|
||||
@ -2321,9 +2217,6 @@ public:
|
||||
bool
|
||||
equals(const function_decl&, const function_decl&, change_kind*);
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref function_decl
|
||||
typedef shared_ptr<function_decl> function_decl_sptr;
|
||||
|
||||
/// Abstraction for a function declaration.
|
||||
class function_decl : public virtual decl_base
|
||||
{
|
||||
@ -2646,8 +2539,6 @@ struct function_type::hash
|
||||
operator()(const function_type_sptr t) const;
|
||||
};// end struct function_type::hash
|
||||
|
||||
/// Convenience typedef for shared pointer to @ref method_type.
|
||||
typedef shared_ptr<method_type> method_type_sptr;
|
||||
/// Abstracts the type of a class member function.
|
||||
class method_type : public function_type
|
||||
{
|
||||
@ -2704,15 +2595,6 @@ public:
|
||||
get_method_type_name(const method_type& fn_type, bool internal);
|
||||
};// end class method_type.
|
||||
|
||||
/// Convenience typedef for shared pointer to template parameter
|
||||
typedef shared_ptr<template_parameter> template_parameter_sptr;
|
||||
|
||||
/// Convenience typedef for a shared pointer to @ref template_decl
|
||||
typedef shared_ptr<template_decl> template_decl_sptr;
|
||||
|
||||
/// Convenience typedef for a weak pointer to template_decl
|
||||
typedef weak_ptr<template_decl> template_decl_wptr;
|
||||
|
||||
/// The base class of templates.
|
||||
class template_decl : public virtual decl_base
|
||||
{
|
||||
@ -2744,9 +2626,6 @@ public:
|
||||
virtual ~template_decl();
|
||||
};//end class template_decl
|
||||
|
||||
/// Convenience typedef for a shared_ptr to @ref template_parameter
|
||||
typedef shared_ptr<template_parameter> template_parameter_sptr;
|
||||
|
||||
/// Base class for a template parameter. Client code should use the
|
||||
/// more specialized type_template_parameter,
|
||||
/// non_type_template_parameter and template_template_parameter below.
|
||||
@ -2796,9 +2675,6 @@ struct template_decl::hash
|
||||
operator()(const template_decl& t) const;
|
||||
};// end struct template_decl::hash
|
||||
|
||||
/// Convenience typedef for a shared pointer to @ref type_tparameter.
|
||||
typedef shared_ptr<type_tparameter> type_tparameter_sptr;
|
||||
|
||||
/// Abstracts a type template parameter.
|
||||
class type_tparameter : public template_parameter, public virtual type_decl
|
||||
{
|
||||
@ -2832,10 +2708,6 @@ public:
|
||||
virtual ~type_tparameter();
|
||||
};// end class type_tparameter.
|
||||
|
||||
/// Convenience typedef for shared pointer to @ref
|
||||
/// non_type_template_parameter
|
||||
typedef shared_ptr<non_type_tparameter> non_type_tparameter_sptr;
|
||||
|
||||
/// Abstracts non type template parameters.
|
||||
class non_type_tparameter : public template_parameter, public virtual decl_base
|
||||
{
|
||||
@ -2885,9 +2757,6 @@ struct non_type_tparameter::hash
|
||||
|
||||
class template_tparameter;
|
||||
|
||||
/// Convenience typedef for a shared_ptr to @ref template_tparameter.
|
||||
typedef shared_ptr<template_tparameter> template_tparameter_sptr;
|
||||
|
||||
/// Abstracts a template template parameter.
|
||||
class template_tparameter : public type_tparameter, public template_decl
|
||||
{
|
||||
@ -2920,9 +2789,6 @@ public:
|
||||
virtual ~template_tparameter();
|
||||
};
|
||||
|
||||
/// Convenience typedef for shared pointer to type_composition
|
||||
typedef shared_ptr<type_composition> type_composition_sptr;
|
||||
|
||||
/// This abstracts a composition of types based on template type
|
||||
/// parameters. The result of the composition is a type that can be
|
||||
/// referred to by a template non-type parameter. Instances of this
|
||||
@ -2967,9 +2833,6 @@ struct type_composition::hash
|
||||
|
||||
}; //struct type_composition::hash
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref function_tdecl
|
||||
typedef shared_ptr<function_tdecl> function_tdecl_sptr;
|
||||
|
||||
/// Abstract a function template declaration.
|
||||
class function_tdecl : public template_decl, public scope_decl
|
||||
{
|
||||
@ -3021,9 +2884,6 @@ public:
|
||||
virtual ~function_tdecl();
|
||||
}; // end class function_tdecl.
|
||||
|
||||
/// Convenience typedef for a shared pointer on a @ref class_tdecl
|
||||
typedef shared_ptr<class_tdecl> class_tdecl_sptr;
|
||||
|
||||
/// Abstract a class template.
|
||||
class class_tdecl : public template_decl, public scope_decl
|
||||
{
|
||||
@ -3121,9 +2981,6 @@ public:
|
||||
operator==(const member_base& o) const;
|
||||
};// end class member_base
|
||||
|
||||
class method_decl;
|
||||
typedef shared_ptr<method_decl> method_decl_sptr;
|
||||
|
||||
/// Abstraction of the declaration of a method.
|
||||
class method_decl : public function_decl
|
||||
{
|
||||
@ -3217,14 +3074,6 @@ public:
|
||||
virtual ~method_decl();
|
||||
};// end class method_decl
|
||||
|
||||
class member_function_template;
|
||||
typedef shared_ptr<member_function_template> member_function_template_sptr;
|
||||
typedef vector<member_function_template_sptr> member_function_templates;
|
||||
|
||||
class member_class_template;
|
||||
typedef shared_ptr<member_class_template> member_class_template_sptr;
|
||||
typedef vector<member_class_template_sptr> member_class_templates;
|
||||
|
||||
/// The base type of @ref class_decl and @ref union_decl
|
||||
class class_or_union : public scope_type_decl
|
||||
{
|
||||
@ -3672,8 +3521,6 @@ is_class_base_spec(type_or_decl_base*);
|
||||
class_decl::base_spec_sptr
|
||||
is_class_base_spec(type_or_decl_base_sptr);
|
||||
|
||||
typedef shared_ptr<union_decl> union_decl_sptr;
|
||||
|
||||
/// Abstracts a union type declaration.
|
||||
class union_decl : public class_or_union
|
||||
{
|
||||
@ -3723,12 +3570,6 @@ method_decl_sptr
|
||||
copy_member_function(const union_decl_sptr& union_type,
|
||||
const method_decl* f);
|
||||
|
||||
class mem_fn_context_rel;
|
||||
|
||||
/// A convenience typedef for a shared pointer to @ref
|
||||
/// mem_fn_context_rel.
|
||||
typedef shared_ptr<mem_fn_context_rel> mem_fn_context_rel_sptr;
|
||||
|
||||
/// Abstraction of a member function context relationship. This
|
||||
/// relates a member function to its parent class.
|
||||
class mem_fn_context_rel : public context_rel
|
||||
|
@ -5858,18 +5858,9 @@ is_typedef(type_base* t)
|
||||
///
|
||||
/// @return the enum_type_decl_sptr if @p d is an enum, nil otherwise.
|
||||
enum_type_decl_sptr
|
||||
is_enum_type(const decl_base_sptr& d)
|
||||
is_enum_type(const type_or_decl_base_sptr& d)
|
||||
{return dynamic_pointer_cast<enum_type_decl>(d);}
|
||||
|
||||
/// Test if a type is an enum_type_decl
|
||||
///
|
||||
/// @param t the type to test for.
|
||||
///
|
||||
/// @return the enum_type_decl_sptr if @p t is an enum, nil otherwise.
|
||||
enum_type_decl_sptr
|
||||
is_enum_type(const type_base_sptr& t)
|
||||
{return dynamic_pointer_cast<enum_type_decl>(t);}
|
||||
|
||||
/// Test if a type is a class. This function looks through typedefs.
|
||||
///
|
||||
/// @parm t the type to consider.
|
||||
@ -6138,7 +6129,7 @@ is_var_decl(const type_or_decl_base* tod)
|
||||
/// @return the var_decl_sptr iff decl is a variable declaration; nil
|
||||
/// otherwise.
|
||||
var_decl_sptr
|
||||
is_var_decl(const shared_ptr<decl_base> decl)
|
||||
is_var_decl(const type_or_decl_base_sptr& decl)
|
||||
{return dynamic_pointer_cast<var_decl>(decl);}
|
||||
|
||||
/// Tests if a declaration is a namespace declaration.
|
||||
@ -6588,7 +6579,7 @@ synthesize_function_type_from_translation_unit(const function_type& fn_type,
|
||||
/// @param skope the scope to look into.
|
||||
///
|
||||
/// @return the declaration of the type if found, NULL otherwise.
|
||||
const decl_base_sptr
|
||||
const type_base_sptr
|
||||
lookup_type_in_scope(const string& fqn,
|
||||
const scope_decl_sptr& skope)
|
||||
{
|
||||
@ -6710,11 +6701,11 @@ convert_node_to_decl(var_decl_sptr node)
|
||||
/// @return the declaration of the looked up node, or NULL if it
|
||||
/// wasn't found.
|
||||
template<typename NodeKind>
|
||||
static const decl_base_sptr
|
||||
static const type_or_decl_base_sptr
|
||||
lookup_node_in_scope(const list<string>& fqn,
|
||||
const scope_decl_sptr& skope)
|
||||
{
|
||||
decl_base_sptr resulting_decl;
|
||||
type_or_decl_base_sptr resulting_decl;
|
||||
shared_ptr<NodeKind> node;
|
||||
bool it_is_last = false;
|
||||
scope_decl_sptr cur_scope = skope, new_scope, scope;
|
||||
@ -6749,7 +6740,7 @@ lookup_node_in_scope(const list<string>& fqn,
|
||||
if (cl->get_is_declaration_only()
|
||||
&& !cl->get_definition_of_declaration())
|
||||
continue;
|
||||
resulting_decl = convert_node_to_decl(node);
|
||||
resulting_decl = node;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -6770,10 +6761,10 @@ lookup_node_in_scope(const list<string>& fqn,
|
||||
/// @param skope the scope to look into.
|
||||
///
|
||||
/// @return the declaration of the type found.
|
||||
const decl_base_sptr
|
||||
const type_base_sptr
|
||||
lookup_type_in_scope(const list<string>& comps,
|
||||
const scope_decl_sptr& scope)
|
||||
{return lookup_node_in_scope<type_base>(comps, scope);}
|
||||
{return is_type(lookup_node_in_scope<type_base>(comps, scope));}
|
||||
|
||||
/// lookup a type in a scope.
|
||||
///
|
||||
@ -6872,7 +6863,7 @@ lookup_type_in_scope(const type_base_sptr type,
|
||||
const decl_base_sptr
|
||||
lookup_var_decl_in_scope(const std::list<string>& comps,
|
||||
const scope_decl_sptr& skope)
|
||||
{return lookup_node_in_scope<var_decl>(comps, skope);}
|
||||
{return is_var_decl(lookup_node_in_scope<var_decl>(comps, skope));}
|
||||
|
||||
/// Lookup an IR node from a translation unit.
|
||||
///
|
||||
@ -6886,7 +6877,7 @@ lookup_var_decl_in_scope(const std::list<string>& comps,
|
||||
///
|
||||
/// @return the declaration of the IR node found, NULL otherwise.
|
||||
template<typename NodeKind>
|
||||
static const decl_base_sptr
|
||||
static const type_or_decl_base_sptr
|
||||
lookup_node_in_translation_unit(const list<string>& fqn,
|
||||
const translation_unit& tu)
|
||||
{return lookup_node_in_scope<NodeKind>(fqn, tu.get_global_scope());}
|
||||
@ -6899,10 +6890,10 @@ lookup_node_in_translation_unit(const list<string>& fqn,
|
||||
/// @param tu the translation unit to perform lookup from.
|
||||
///
|
||||
/// @return the declaration of the IR node found, NULL otherwise.
|
||||
const decl_base_sptr
|
||||
lookup_type_in_translation_unit(const list<string>& fqn,
|
||||
const translation_unit& tu)
|
||||
{return lookup_node_in_translation_unit<type_base>(fqn, tu);}
|
||||
type_base_sptr
|
||||
lookup_type_through_scopes(const list<string>& fqn,
|
||||
const translation_unit& tu)
|
||||
{return is_type(lookup_node_in_translation_unit<type_base>(fqn,tu));}
|
||||
|
||||
/// Lookup a class type from a translation unit.
|
||||
///
|
||||
|
Loading…
Reference in New Issue
Block a user