libabigail
Classes | Namespaces | Typedefs | Enumerations | Functions
abg-ir.h File Reference

Types of the main internal representation of libabigail. More...

#include <assert.h>
#include <stdint.h>
#include <cstdlib>
#include <functional>
#include <set>
#include <unordered_map>
#include "abg-cxx-compat.h"
#include "abg-fwd.h"
#include "abg-hash.h"
#include "abg-traverse.h"
#include "abg-config.h"
Include dependency graph for abg-ir.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  array_type_def
 The abstraction of an array type. More...
 
class  array_type_def::subrange_type
 Abstraction for an array range type, like in Ada, or just for an array dimension like in C or C++. More...
 
class  array_type_def::subrange_type::bound_value
 This class is to hold the value of the bound of a subrange. The value can be either signed or unsigned, at least when it comes from DWARF. The class keeps the sign information, but allows users to access the value as signed or unsigned as they see fit. More...
 
struct  canonical_type_hash
 Functor to hash a canonical type by using its pointer value. More...
 
class  class_decl
 Abstracts a class declaration. More...
 
class  class_decl::base_spec
 Abstraction of a base specifier in a class declaration. More...
 
struct  class_decl::base_spec::hash
 The hashing functor for class_decl::base_spec. More...
 
struct  class_decl::hash
 Hasher for the class_decl type. More...
 
class  class_or_union
 The base type of class_decl and union_decl. More...
 
struct  class_or_union::hash
 Hasher for the class_or_union type. More...
 
class  class_tdecl
 Abstract a class template. More...
 
struct  class_tdecl::hash
 
struct  class_tdecl::shared_ptr_hash
 
class  context_rel
 The abstraction of the relationship between an entity and its containing scope (its context). That relationship can carry properties like access rights (if the parent is a class_decl), etc. More...
 
class  decl_base
 The base type of all declarations. More...
 
class  dm_context_rel
 The abstraction for a data member context relationship. This relates a data member to its parent class. More...
 
class  elf_symbol
 Abstraction of an elf symbol. More...
 
class  elf_symbol::version
 The abstraction of the version of an ELF symbol. More...
 
class  enum_type_decl
 Abstracts a declaration for an enum type. More...
 
class  enum_type_decl::enumerator
 The abstraction of an enumerator. More...
 
class  environment
 This is an abstraction of the set of resources necessary to manage several aspects of the internal representations of the Abigail library. More...
 
class  function_decl
 Abstraction for a function declaration. More...
 
struct  function_decl::hash
 A hashing functor fo instances and pointers of function_decl. More...
 
class  function_decl::parameter
 Abstraction of a function parameter. More...
 
struct  function_decl::parameter::hash
 A hashing functor for a function_decl::parameter. More...
 
struct  function_decl::ptr_equal
 Equality functor for instances of function_decl. More...
 
class  function_tdecl
 Abstract a function template declaration. More...
 
struct  function_tdecl::hash
 
struct  function_tdecl::shared_ptr_hash
 
class  function_type
 Abstraction of a function type. More...
 
struct  function_type::hash
 The hashing functor for function_type. More...
 
class  global_scope
 This abstracts the global scope of a given translation unit. More...
 
class  ir_node_visitor
 The base class for the visitor type hierarchy used for traversing a translation unit. More...
 
struct  ir_traversable_base
 The base of an entity of the intermediate representation that is to be traversed. More...
 
class  location
 The source location of a token. More...
 
class  location_manager
 The entry point to manage locations. More...
 
class  mem_fn_context_rel
 Abstraction of a member function context relationship. This relates a member function to its parent class. More...
 
class  member_base
 The base class for member types, data members and member functions. Its purpose is mainly to carry the access specifier (and possibly other properties that might be shared by all class members) for the member. More...
 
struct  member_base::hash
 The hashing functor for member_base. More...
 
class  member_class_template
 Abstracts a member class template template. More...
 
struct  member_class_template::hash
 The hashing functor for member_class_template. More...
 
class  member_function_template
 Abstract a member function template. More...
 
struct  member_function_template::hash
 The hashing functor for member_function_template. More...
 
class  method_decl
 Abstraction of the declaration of a method. More...
 
class  method_type
 Abstracts the type of a class member function. More...
 
class  namespace_decl
 The abstraction of a namespace declaration. More...
 
class  non_type_tparameter
 Abstracts non type template parameters. More...
 
struct  non_type_tparameter::hash
 Hasher for the non_type_tparameter type. More...
 
class  pointer_type_def
 The abstraction of a pointer type. More...
 
class  ptr_to_mbr_type
 The abstraction of a pointer-to-member type. More...
 
class  qualified_type_def
 The abstraction of a qualified type. More...
 
class  reference_type_def
 Abstracts a reference type. More...
 
class  scope_decl
 A declaration that introduces a scope. More...
 
struct  scope_decl::hash
 Hasher for the scope_decl type. More...
 
class  scope_type_decl
 A type that introduces a scope. More...
 
struct  shared_translation_unit_comp
 A comparison functor to compare translation units based on their absolute paths. More...
 
class  template_decl
 The base class of templates. More...
 
struct  template_decl::hash
 
class  template_parameter
 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. More...
 
class  template_tparameter
 Abstracts a template template parameter. More...
 
class  translation_unit
 This is the abstraction of the set of relevant artefacts (types, variable declarations, functions, templates, etc) bundled together into a translation unit. More...
 
class  type_base
 An abstraction helper for type declarations. More...
 
struct  type_base::dynamic_hash
 
struct  type_base::hash
 Hash functor for instances of type_base. More...
 
struct  type_base::shared_ptr_hash
 
class  type_composition
 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 type can appear at the same level as template parameters, in the scope of a template_decl. More...
 
struct  type_composition::hash
 Hasher for the type_composition type. More...
 
class  type_decl
 A basic type declaration that introduces no scope. More...
 
class  type_maps
 This is a type that aggregates maps of all the kinds of types that are supported by libabigail. More...
 
class  type_or_decl_base
 The base class of both types and declarations. More...
 
struct  type_or_decl_base_comp
 A comparison functor to compare pointer to instances of type_or_decl_base. More...
 
struct  type_or_decl_equal
 The comparison functor for using instances of type_or_decl_base as values in a hash map or set. More...
 
struct  type_or_decl_hash
 The hashing functor for using instances of type_or_decl_base as values in a hash map or set. More...
 
struct  type_ptr_equal
 A predicate for deep equality of instances of type_base*. More...
 
struct  type_shared_ptr_equal
 A predicate for deep equality of instances of shared_ptr<type_base> More...
 
class  type_tparameter
 Abstracts a type template parameter. More...
 
class  typedef_decl
 The abstraction of a typedef declaration. More...
 
class  union_decl
 Abstracts a union type declaration. More...
 
class  var_decl
 Abstracts a variable declaration. More...
 
struct  var_decl::hash
 A hashing functor for instances and pointers of var_decl. More...
 
struct  var_decl::ptr_equal
 A comparison functor for pointers to var_decl. More...
 

Namespaces

 abigail
 Toplevel namespace for libabigail.
 
 abigail::ir
 The namespace of the internal representation of ABI artifacts like types and decls.
 

Typedefs

typedef unordered_set< const type_or_decl_base *, type_or_decl_hash, type_or_decl_equal > artifact_ptr_set_type
 A convenience typedef for a hash set of const type_or_decl_base*. More...
 
typedef unordered_set< type_or_decl_base_sptr, type_or_decl_hash, type_or_decl_equal > artifact_sptr_set_type
 A convenience typedef for a hash set of type_or_decl_base_sptr. More...
 
typedef unordered_set< type_base_sptr, canonical_type_hash > canonical_type_sptr_set_type
 Helper typedef for an unordered set of type_base_sptr which uses pointer value to tell its members appart, because the members are canonical types. More...
 
typedef shared_ptr< context_rel > context_rel_sptr
 A convenience typedef for shared pointers to context_rel. More...
 
typedef shared_ptr< elf_symbol > elf_symbol_sptr
 A convenience typedef for a shared pointer to elf_symbol. More...
 
typedef weak_ptr< elf_symbol > elf_symbol_wptr
 A convenience typedef for a weak pointer to elf_symbol. More...
 
typedef std::vector< elf_symbol_sptr > elf_symbols
 Convenience typedef for a vector of elf_symbol. More...
 
typedef unordered_map< interned_string, const function_decl *, hash_interned_string > istring_function_decl_ptr_map_type
 
typedef unordered_map< interned_string, type_base_wptr, hash_interned_string > istring_type_base_wptr_map_type
 A convenience typedef for a map which key is an interned_string and which value is a type_base_wptr. More...
 
typedef unordered_map< interned_string, type_or_decl_base_sptr, hash_interned_string > istring_type_or_decl_base_sptr_map_type
 A convenience typedef for a map which key is an interned_string and which value is a type_base_wptr. More...
 
typedef unordered_map< interned_string, const var_decl *, hash_interned_string > istring_var_decl_ptr_map_type
 
typedef vector< namespace_decl_sptr > namespaces_type
 A convenience typedef for vectors of namespace_decl_sptr. More...
 
typedef unordered_set< uintptr_t > pointer_set
 A convenience typedef for an unordered set of pointer values. More...
 
typedef shared_ptr< string_elf_symbol_sptr_map_type > string_elf_symbol_sptr_map_sptr
 Convenience typedef for a shared pointer to an string_elf_symbol_sptr_map_type. More...
 
typedef std::unordered_map< string, elf_symbol_sptr > string_elf_symbol_sptr_map_type
 Convenience typedef for a map which key is a string and which value if the elf symbol of the same name. More...
 
typedef shared_ptr< string_elf_symbols_map_type > string_elf_symbols_map_sptr
 Convenience typedef for a shared pointer to string_elf_symbols_map_type. More...
 
typedef std::unordered_map< string, elf_symbols > string_elf_symbols_map_type
 Convenience typedef for a map which key is a string and which value is a vector of elf_symbol. More...
 
typedef unordered_map< string, type_base_sptr > string_type_base_sptr_map_type
 A convenience typedef for a map which key is a string and which value is a type_base_sptr. More...
 
typedef unordered_map< string, type_base_wptr > string_type_base_wptr_map_type
 A convenience typedef for a map which key is a string and which value is a type_base_wptr. More...
 
typedef std::set< translation_unit_sptr, shared_translation_unit_comp > translation_units
 Convenience typedef for an ordered set of translation_unit_sptr. More...
 
typedef vector< type_base * > type_base_ptrs_type
 Helper typedef for a vector of pointer to type_base. More...
 
typedef vector< type_base_sptr > type_base_sptrs_type
 Helper typedef for a vector of shared pointer to a type_base. More...
 

Enumerations

enum  access_specifier { no_access , public_access , protected_access , private_access }
 Access specifier for class members. More...
 
enum  change_kind {
  NO_CHANGE_KIND , LOCAL_TYPE_CHANGE_KIND , LOCAL_NON_TYPE_CHANGE_KIND , ALL_LOCAL_CHANGES_MASK ,
  SUBTYPE_CHANGE_KIND
}
 A bitfield that gives callers of abigail::ir::equals() some insight about how different two internal representation artifacts are. More...
 

Functions

void compute_aliases_for_elf_symbol (const elf_symbol &sym, const string_elf_symbols_map_type &symtab, vector< elf_symbol_sptr > &aliases)
 
method_decl_sptr copy_member_function (const class_decl_sptr &clazz, const method_decl *f)
 Copy a method of a class into a new class. More...
 
method_decl_sptr copy_member_function (const class_decl_sptr &clazz, const method_decl_sptr &f)
 Copy a method of a class into a new class. More...
 
method_decl_sptr copy_member_function (const class_or_union_sptr &t, const method_decl *method)
 Copy a method of a class_or_union into a new class_or_union. More...
 
method_decl_sptr copy_member_function (const class_or_union_sptr &t, const method_decl_sptr &method)
 Copy a method of a class_or_union into a new class_or_union. More...
 
method_decl_sptr copy_member_function (const union_decl_sptr &union_type, const method_decl *f)
 Copy a method of a union_decl into a new union_decl. More...
 
method_decl_sptr copy_member_function (const union_decl_sptr &union_type, const method_decl_sptr &f)
 Copy a method of a union_decl into a new union_decl. More...
 
bool elf_symbol_is_function (elf_symbol::type t)
 Test if the type of an ELF symbol denotes a function symbol. More...
 
bool elf_symbol_is_variable (elf_symbol::type t)
 Test if the type of an ELF symbol denotes a function symbol. More...
 
bool elf_symbols_alias (const elf_symbol &s1, const elf_symbol &s2)
 Test if two symbols alias. More...
 
bool enum_has_non_name_change (const enum_type_decl &l, const enum_type_decl &r, change_kind *k)
 Test if two enums differ, but not by a name change. More...
 
bool equals (const array_type_def &l, const array_type_def &r, change_kind *k)
 Compares two instances of array_type_def. More...
 
bool equals (const array_type_def::subrange_type &l, const array_type_def::subrange_type &r, change_kind *k)
 Compares two isntances of array_type_def::subrange_type. More...
 
bool equals (const class_decl &l, const class_decl &r, change_kind *k)
 Compares two instances of class_decl. More...
 
bool equals (const class_decl::base_spec &l, const class_decl::base_spec &r, change_kind *k)
 Compares two instances of class_decl::base_spec. More...
 
bool equals (const decl_base &l, const decl_base &r, change_kind *k)
 Compares two instances of decl_base. More...
 
bool equals (const enum_type_decl &l, const enum_type_decl &r, change_kind *k)
 Compares two instances of enum_type_decl. More...
 
bool equals (const function_decl &l, const function_decl &r, change_kind *k)
 Compares two instances of function_decl. More...
 
bool equals (const function_decl::parameter &l, const function_decl::parameter &r, change_kind *k)
 Compares two instances of function_decl::parameter. More...
 
bool equals (const function_type &l, const function_type &r, change_kind *k)
 Compare two function types. More...
 
bool equals (const pointer_type_def &l, const pointer_type_def &r, change_kind *k)
 Compares two instances of pointer_type_def. More...
 
bool equals (const ptr_to_mbr_type &l, const ptr_to_mbr_type &r, change_kind *k)
 Compares two instances of ptr_to_mbr_type. More...
 
bool equals (const qualified_type_def &l, const qualified_type_def &r, change_kind *k)
 Compares two instances of qualified_type_def. More...
 
bool equals (const reference_type_def &l, const reference_type_def &r, change_kind *k)
 Compares two instances of reference_type_def. More...
 
bool equals (const scope_decl &l, const scope_decl &r, change_kind *k)
 Compares two instances of scope_decl. More...
 
bool equals (const scope_type_decl &l, const scope_type_decl &r, change_kind *k)
 Compares two instances of scope_type_decl. More...
 
bool equals (const type_base &l, const type_base &r, change_kind *k)
 Compares two instances of type_base. More...
 
bool equals (const type_decl &l, const type_decl &r, change_kind *k)
 Compares two instances of type_decl. More...
 
bool equals (const typedef_decl &l, const typedef_decl &r, change_kind *k)
 Compares two instances of typedef_decl. More...
 
bool equals (const union_decl &l, const union_decl &r, change_kind *k)
 Compares two instances of union_decl. More...
 
bool equals (const var_decl &l, const var_decl &r, change_kind *k)
 Compares two instances of var_decl. More...
 
bool equals_modulo_cv_qualifier (const array_type_def *l, const array_type_def *r)
 Test if two variables are equals modulo CV qualifiers. More...
 
void fixup_virtual_member_function (method_decl_sptr method)
 When a virtual member function has seen its virtualness set by set_member_function_is_virtual(), this function ensures that the member function is added to the specific vectors and maps of virtual member function of its class. More...
 
void fns_to_str (vector< function_decl * >::const_iterator a_begin, vector< function_decl * >::const_iterator a_end, vector< function_decl * >::const_iterator b_begin, vector< function_decl * >::const_iterator b_end, std::ostream &o)
 For each sequence of functions given in argument, generate a sequence of string that matches a given sequence of function. In the resulting sequence, each function is "uniquely representated" by a string. For instance, if the same function "foo" appears at indexes 1 and 3, then the same string 'schmurf' (okay, we don't care about the actual string) would appear at index 1 and 3. More...
 
bool function_decls_alias (const function_decl &f1, const function_decl &f2)
 Test if two function declarations are aliases. More...
 
const function_decl::parameter * get_function_parameter (const decl_base *fun, unsigned parm_index)
 Get the function parameter designated by its index. More...
 
access_specifier get_member_access_specifier (const decl_base &d)
 Gets the access specifier for a class member. More...
 
access_specifier get_member_access_specifier (const decl_base_sptr &d)
 Gets the access specifier for a class member. More...
 
interned_string get_name_of_qualified_type (const type_base_sptr &underlying_type, qualified_type_def::CV quals, bool qualified, bool internal)
 Get the name of a qualified type, given the underlying type and its qualifiers. More...
 
string get_string_representation_of_cv_quals (const qualified_type_def::CV cv_quals)
 Get the string representation of a CV qualifier bitmap. More...
 
bool is_ada_language (translation_unit::language l)
 Test if a language enumerator designates the Ada language. More...
 
bool is_c_language (translation_unit::language l)
 Test if a language enumerator designates the C language. More...
 
class_decl::base_spec * is_class_base_spec (type_or_decl_base *)
 
class_decl::base_spec_sptr is_class_base_spec (type_or_decl_base_sptr tod)
 Test if an ABI artifact is a class base specifier. More...
 
bool is_cplus_plus_language (translation_unit::language l)
 Test if a language enumerator designates the C++ language. More...
 
bool is_enumerator_present_in_enum (const enum_type_decl::enumerator &enr, const enum_type_decl &enom)
 Test if a given enumerator is found present in an enum. More...
 
function_decl::parameter * is_function_parameter (const type_or_decl_base *tod)
 Test whether a declaration is a function_decl. More...
 
function_decl::parameter_sptr is_function_parameter (const type_or_decl_base_sptr tod)
 Test whether an ABI artifact is a function_decl. More...
 
bool is_java_language (translation_unit::language l)
 Test if a language enumerator designates the Java language. More...
 
method_decl * is_method_decl (const type_or_decl_base &d)
 Test if a function_decl is actually a method_decl. More...
 
method_decl * is_method_decl (const type_or_decl_base *d)
 Test if a function_decl is actually a method_decl. More...
 
method_decl_sptr is_method_decl (const type_or_decl_base_sptr &d)
 Test if a function_decl is actually a method_decl. More...
 
array_type_def::subrange_type * is_subrange_type (const type_or_decl_base *type)
 Test if a type is an array_type_def::subrange_type. More...
 
array_type_def::subrange_sptr is_subrange_type (const type_or_decl_base_sptr &type)
 Test if a type is an array_type_def::subrange_type. More...
 
const var_decl * lookup_data_member (const type_base *type, const char *dm_name)
 Look for a data member of a given class, struct or union type and return it. More...
 
const var_decl_sptr lookup_data_member (const type_base_sptr &type, const var_decl_sptr &dm)
 Look for a data member of a given class, struct or union type and return it. More...
 
qualified_type_def_sptr lookup_qualified_type (const type_base_sptr &underlying_type, qualified_type_def::CV quals, const translation_unit &tu)
 Lookup a qualified type from a translation unit. More...
 
bool maybe_compare_as_member_decls (const decl_base &l, const decl_base &r, change_kind *k)
 Compare the properties that belong to the "is-a-member-relation" of a decl. More...
 
bool operator!= (const class_decl::base_spec_sptr &l, const class_decl::base_spec_sptr &r)
 Inequality operator for smart pointers to class_decl::base_specs. More...
 
bool operator!= (const class_decl_sptr &l, const class_decl_sptr &r)
 Turn inequality of shared_ptr of class_decl into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator!= (const class_or_union_sptr &l, const class_or_union_sptr &r)
 Turn inequality of shared_ptr of class_or_union into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator!= (const decl_base_sptr &l, const decl_base_sptr &r)
 Inequality operator of shared_ptr of decl_base. More...
 
bool operator!= (const elf_symbol_sptr &lhs, const elf_symbol_sptr &rhs)
 Inequality operator for smart pointers to elf_symbol. More...
 
bool operator!= (const enum_type_decl_sptr &l, const enum_type_decl_sptr &r)
 Inequality operator for enum_type_decl_sptr. More...
 
bool operator!= (const function_decl_sptr &l, const function_decl_sptr &r)
 A deep inequality operator for smart pointers to functions. More...
 
bool operator!= (const member_class_template_sptr &l, const member_class_template_sptr &r)
 Inequality operator for the member_class_template type. More...
 
bool operator!= (const member_function_template_sptr &l, const member_function_template_sptr &r)
 Inequality operator for smart pointers to member_function_template. This is compares the pointed-to instances. More...
 
bool operator!= (const method_decl_sptr &l, const method_decl_sptr &r)
 Inequality operator for method_decl_sptr. More...
 
bool operator!= (const pointer_type_def_sptr &l, const pointer_type_def_sptr &r)
 Turn inequality of shared_ptr of pointer_type_def into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator!= (const qualified_type_def_sptr &l, const qualified_type_def_sptr &r)
 Non-member inequality operator for qualified_type_def. More...
 
bool operator!= (const reference_type_def_sptr &l, const reference_type_def_sptr &r)
 Turn inequality of shared_ptr of reference_type_def into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator!= (const scope_decl_sptr &l, const scope_decl_sptr &r)
 Inequality operator for scope_decl_sptr. More...
 
bool operator!= (const translation_unit_sptr &l, const translation_unit_sptr &r)
 A deep inequality operator for pointers to translation units. More...
 
bool operator!= (const type_base_sptr &l, const type_base_sptr &r)
 Turn inequality of shared_ptr of type_base into a deep equality; that is, make it compare the pointed to objects.. More...
 
bool operator!= (const type_decl_sptr &l, const type_decl_sptr &r)
 Inequality operator for type_decl_sptr. More...
 
bool operator!= (const type_or_decl_base_sptr &l, const type_or_decl_base_sptr &r)
 Non-member inequality operator for the @type_or_decl_base type. More...
 
bool operator!= (const union_decl_sptr &l, const union_decl_sptr &r)
 Turn inequality of shared_ptr of union_decl into a deep equality; that is, make it compare the pointed to objects too. More...
 
change_kind operator& (change_kind l, change_kind r)
 
qualified_type_def::CV operator& (qualified_type_def::CV lhs, qualified_type_def::CV rhs)
 Overloaded bitwise AND operator for CV qualifiers. More...
 
type_or_decl_base::type_or_decl_kind operator& (type_or_decl_base::type_or_decl_kind l, type_or_decl_base::type_or_decl_kind r)
 bitwise "AND" operator for the type_or_decl_base::type_or_decl_kind bitmap type. More...
 
change_kind & operator&= (change_kind &l, change_kind r)
 
qualified_type_def::CV & operator&= (qualified_type_def::CV &l, qualified_type_def::CV r)
 Overloaded bitwise &= operator for cv qualifiers. More...
 
type_or_decl_base::type_or_decl_kind & operator&= (type_or_decl_base::type_or_decl_kind &l, type_or_decl_base::type_or_decl_kind r)
 bitwise "A&=" operator for the type_or_decl_base::type_or_decl_kind bitmap type. More...
 
std::ostream & operator<< (std::ostream &o, access_specifier a)
 Streaming operator for class_decl::access_specifier. More...
 
std::ostream & operator<< (std::ostream &o, decl_base::binding b)
 Streaming operator for decl_base::binding. More...
 
std::ostream & operator<< (std::ostream &o, decl_base::visibility v)
 Streaming operator for the decl_base::visibility. More...
 
std::ostream & operator<< (std::ostream &o, elf_symbol::binding b)
 Serialize an instance of symbol_binding and stream it to a given output stream. More...
 
std::ostream & operator<< (std::ostream &o, elf_symbol::type t)
 Serialize an instance of symbol_type and stream it to a given output stream. More...
 
std::ostream & operator<< (std::ostream &o, elf_symbol::visibility v)
 Serialize an instance of elf_symbol::visibility and stream it to a given output stream. More...
 
std::ostream & operator<< (std::ostream &o, qualified_type_def::CV cv)
 Streaming operator for qualified_type_decl::CV. More...
 
bool operator== (const class_decl::base_spec_sptr &l, const class_decl::base_spec_sptr &r)
 Equality operator for smart pointers to class_decl::base_specs. More...
 
bool operator== (const class_decl_sptr &l, const class_decl_sptr &r)
 Turn equality of shared_ptr of class_decl into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator== (const class_or_union_sptr &l, const class_or_union_sptr &r)
 Turn equality of shared_ptr of class_or_union into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator== (const decl_base_sptr &l, const decl_base_sptr &r)
 Turn equality of shared_ptr of decl_base into a deep equality; that is, make it compare the pointed to objects, not just the pointers. More...
 
bool operator== (const elf_symbol_sptr &lhs, const elf_symbol_sptr &rhs)
 Equality operator for smart pointers to elf_symbol. More...
 
bool operator== (const enum_type_decl_sptr &l, const enum_type_decl_sptr &r)
 Equality operator for enum_type_decl_sptr. More...
 
bool operator== (const function_decl::parameter_sptr &l, const function_decl::parameter_sptr &r)
 Non-member equality operator for function_decl::parameter. More...
 
bool operator== (const function_decl_sptr &l, const function_decl_sptr &r)
 A deep comparison operator for a shared pointer to function_decl. More...
 
bool operator== (const member_class_template_sptr &l, const member_class_template_sptr &r)
 Comparison operator for the member_class_template type. More...
 
bool operator== (const member_function_template_sptr &l, const member_function_template_sptr &r)
 Equality operator for smart pointers to member_function_template. This is compares the pointed-to instances. More...
 
bool operator== (const method_decl_sptr &l, const method_decl_sptr &r)
 Equality operator for method_decl_sptr. More...
 
bool operator== (const pointer_type_def_sptr &l, const pointer_type_def_sptr &r)
 Turn equality of shared_ptr of pointer_type_def into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator== (const qualified_type_def_sptr &l, const qualified_type_def_sptr &r)
 Non-member equality operator for qualified_type_def. More...
 
bool operator== (const reference_type_def_sptr &l, const reference_type_def_sptr &r)
 Turn equality of shared_ptr of reference_type_def into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator== (const scope_decl_sptr &l, const scope_decl_sptr &r)
 Equality operator for scope_decl_sptr. More...
 
bool operator== (const translation_unit_sptr &l, const translation_unit_sptr &r)
 A deep comparison operator for pointers to translation units. More...
 
bool operator== (const type_base_sptr &l, const type_base_sptr &r)
 Turn equality of shared_ptr of type_base into a deep equality; that is, make it compare the pointed to objects too. More...
 
bool operator== (const type_decl_sptr &l, const type_decl_sptr &r)
 Equality operator for type_decl_sptr. More...
 
bool operator== (const type_or_decl_base &lr, const type_or_decl_base &rr)
 Non-member equality operator for the @type_or_decl_base type. More...
 
bool operator== (const type_or_decl_base_sptr &l, const type_or_decl_base_sptr &r)
 Non-member equality operator for the @type_or_decl_base type. More...
 
bool operator== (const union_decl_sptr &l, const union_decl_sptr &r)
 Turn equality of shared_ptr of union_decl into a deep equality; that is, make it compare the pointed to objects too. More...
 
change_kind operator| (change_kind l, change_kind r)
 
qualified_type_def::CV operator| (qualified_type_def::CV lhs, qualified_type_def::CV rhs)
 Overloaded bitwise OR operator for cv qualifiers. More...
 
type_or_decl_base::type_or_decl_kind operator| (type_or_decl_base::type_or_decl_kind l, type_or_decl_base::type_or_decl_kind r)
 bitwise "OR" operator for the type_or_decl_base::type_or_decl_kind bitmap type. More...
 
change_kind & operator|= (change_kind &l, change_kind r)
 
qualified_type_def::CV & operator|= (qualified_type_def::CV &l, qualified_type_def::CV r)
 Overloaded bitwise |= operator for cv qualifiers. More...
 
type_or_decl_base::type_or_decl_kind & operator|= (type_or_decl_base::type_or_decl_kind &l, type_or_decl_base::type_or_decl_kind r)
 bitwise "|=" operator for the type_or_decl_base::type_or_decl_kind bitmap type. More...
 
qualified_type_def::CV operator~ (qualified_type_def::CV q)
 Overloaded bitwise inverting operator for CV qualifiers. More...
 
void set_member_access_specifier (const decl_base_sptr &d, access_specifier a)
 Sets the access specifier for a class member. More...
 
void set_member_access_specifier (decl_base &d, access_specifier a)
 Sets the access specifier for a class member. More...
 
void sort_types (const canonical_type_sptr_set_type &types, vector< type_base_sptr > &result)
 Sort types in a hopefully stable manner. More...
 
bool string_to_elf_symbol_binding (const string &s, elf_symbol::binding &b)
 Convert a string representing a an elf symbol binding into an elf_symbol::binding. More...
 
bool string_to_elf_symbol_type (const string &s, elf_symbol::type &t)
 Convert a string representing a symbol type into an elf_symbol::type. More...
 
bool string_to_elf_symbol_visibility (const string &s, elf_symbol::visibility &v)
 Convert a string representing a an elf symbol visibility into an elf_symbol::visibility. More...
 
translation_unit::language string_to_translation_unit_language (const string &l)
 Parse a string representing a language into a translation_unit::language enumerator into a string. More...
 
string translation_unit_language_to_string (translation_unit::language l)
 Converts a translation_unit::language enumerator into a string. More...
 
bool var_equals_modulo_types (const var_decl &l, const var_decl &r, change_kind *k)
 Compares two instances of var_decl without taking their type into account. More...
 

Detailed Description

Types of the main internal representation of libabigail.

This file contains the declarations of the Internal Representation of libabigail.

This internal representation abstracts the artifacts that make up an application binary interface.

Definition in file abg-ir.h.