libabigail
Classes | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | Friends | List of all members
class_or_union_diff Class Reference

This is the base class of class_diff and union_diff. More...

#include <abg-comparison.h>

Inheritance diagram for class_or_union_diff:
[legend]

Classes

struct  priv
 The type of private data of class_or_union_diff. More...
 

Public Member Functions

virtual ~class_or_union_diff ()
 Destructor of class_or_union_diff. More...
 
virtual void chain_into_hierarchy ()
 Populate the vector of children node of the diff base type sub-object of this instance of class_or_union_diff. More...
 
const unsigned_var_diff_sptr_mapchanged_data_members () const
 Getter of the map of data members that got replaced by another data member. The key of the map is the offset at which the element got replaced and the value is a pointer to the var_diff representing the replacement of the data member. More...
 
const function_decl_diff_sptrs_typechanged_member_fns () const
 Getter for the virtual members functions that have had a change in a sub-type, without having a change in their symbol name. More...
 
size_t count_filtered_changed_data_members (bool local_only=false) const
 Count the number of /filtered/ data members that got replaced by another data member. More...
 
size_t count_filtered_subtype_changed_data_members (bool local_only=false) const
 Count the number of /filtered/ data members with a sub-type change. More...
 
edit_scriptdata_members_changes ()
 
const edit_scriptdata_members_changes () const
 
const string_decl_base_sptr_mapdata_members_replaced_by_adms () const
 Get the map of data members that got replaced by anonymous data members. More...
 
const string_decl_base_sptr_mapdeleted_data_members () const
 Getter for the data members that got deleted. More...
 
const string_member_function_sptr_mapdeleted_member_fns () const
 
class_or_union_sptr first_class_or_union () const
 
const class_or_union_diff::priv_ptr & get_priv () const
 Getter of the private data of the class_or_union_diff type. More...
 
virtual bool has_changes () const
 Test if the current diff node carries a change. More...
 
virtual enum change_kind has_local_changes () const
 
const string_decl_base_sptr_mapinserted_data_members () const
 Getter for the data members that got inserted. More...
 
const string_member_function_sptr_mapinserted_member_fns () const
 
edit_scriptmember_class_tmpls_changes ()
 
const edit_scriptmember_class_tmpls_changes () const
 
edit_scriptmember_fn_tmpls_changes ()
 
const edit_scriptmember_fn_tmpls_changes () const
 
edit_scriptmember_fns_changes ()
 
const edit_scriptmember_fns_changes () const
 
edit_scriptmember_types_changes ()
 
const edit_scriptmember_types_changes () const
 
const changed_var_sptrs_typeordered_data_members_replaced_by_adms () const
 Get an ordered vector of of data members that got replaced by anonymous data members. More...
 
virtual void report (ostream &, const string &indent="") const
 Report the changes carried by the current class_or_union_diff node in a textual format. More...
 
class_or_union_sptr second_class_or_union () const
 
const var_diff_sptrs_typesorted_changed_data_members () const
 Getter of the sorted vector of data members that got replaced by another data member. More...
 
const var_diff_sptrs_typesorted_subtype_changed_data_members () const
 Getter of the sorted vector of data members with a (sub-)type change. More...
 
- Public Member Functions inherited from diff
diff_category add_to_category (diff_category c)
 Adds the current diff tree node to an additional set of categories. Note that the categories include thoses inherited from the children nodes of this diff node. More...
 
void add_to_local_and_inherited_categories (diff_category c)
 Adds the current diff tree node to the categories resulting from the local and inherited changes of the current diff node. More...
 
diff_category add_to_local_category (diff_category c)
 Adds the current diff tree node to the categories resulting from the local changes of the current diff node. More...
 
void append_child_node (diff_sptr)
 Add a new child node to the vector of children nodes for the current diff node. More...
 
const vector< diff * > & children_nodes () const
 Getter for the children nodes of the current diff node. More...
 
const diff_context_sptr context () const
 Getter of the context of the current diff. More...
 
void context (diff_context_sptr c)
 Setter of the context of the current diff. More...
 
bool currently_reporting () const
 Tests if we are currently in the middle of emitting a report for this diff. More...
 
void currently_reporting (bool f) const
 Sets a flag saying if we are currently in the middle of emitting a report for this diff. More...
 
type_or_decl_base_sptr first_subject () const
 Getter of the first subject of the diff. More...
 
diffget_canonical_diff () const
 Getter for the canonical diff of the current instance of diff. More...
 
diff_category get_category () const
 Getter for the category of the current diff tree node. More...
 
diff_category get_class_of_equiv_category () const
 Getter of the category of the class of equivalence of the current diff tree node. More...
 
diff_category get_local_category () const
 Getter for the local category of the current diff tree node. More...
 
virtual const string & get_pretty_representation () const
 Get a pretty representation of the current diff node. More...
 
bool has_descendant_allowed_by_specific_negated_suppression () const
 Test if the current diff node has a descendant node which is specifically allowed by a negated suppression specification. More...
 
bool has_local_changes_to_be_reported () const
 Test if this diff tree node should be reported when considering the categories that were *NOT* inherited from its children nodes. More...
 
bool has_parent_allowed_by_specific_negated_suppression () const
 Test if the current diff node has a parent node which is specifically allowed by a negated suppression specification. More...
 
bool is_allowed_by_specific_negated_suppression () const
 Test if this diff node is allowed (prevented from being suppressed) by at least one negated suppression specification. More...
 
bool is_filtered_out () const
 Test if this diff tree node is to be filtered out for reporting purposes. More...
 
bool is_filtered_out_without_looking_at_allowed_changes () const
 Test if this diff tree node is to be filtered out for reporting purposes, but without considering the categories that can /force/ the node to be unfiltered. More...
 
bool is_filtered_out_wrt_non_inherited_categories () const
 Test if this diff tree node is to be filtered out for reporting purposes, but by considering only the categories that were *NOT* inherited from its children nodes. More...
 
bool is_suppressed () const
 Test if the current diff node has been suppressed by a user-provided suppression specification. More...
 
bool is_suppressed (bool &is_private_type) const
 Test if the current diff node has been suppressed by a user-provided suppression specification or by an auto-generated "private type" suppression specification. More...
 
bool is_traversing () const
 Tell if a given node is being traversed or not. More...
 
const diffparent_node () const
 Getter for the parent node of the current diff node. More...
 
diff_category remove_from_category (diff_category c)
 Remove the current diff tree node from an a existing sef of categories. The categories include those inherited from the children nodes of the current diff node. More...
 
diff_category remove_from_local_category (diff_category c)
 Remove the current diff tree node from the categories resulting from the local changes. More...
 
bool reported_once () const
 Tests if a report has already been emitted for the current diff. More...
 
void reported_once (bool f) const
 Sets a flag saying if a report has already been emitted for the current diff. More...
 
type_or_decl_base_sptr second_subject () const
 Getter of the second subject of the diff. More...
 
void set_category (diff_category c)
 Set the category of the current diff node. This category includes the categories inherited from the children nodes of the current diff node. More...
 
void set_local_category (diff_category c)
 Set the local category of the current diff node. More...
 
bool to_be_reported () const
 Test if this diff tree node should be reported. More...
 
virtual bool traverse (diff_node_visitor &v)
 The generic traversing code that walks a given diff sub-tree. More...
 
- Public Member Functions inherited from traversable_base
virtual ~traversable_base ()
 Destructor of the traversable_base type. More...
 

Protected Types

typedef std::unique_ptr< privpriv_ptr
 

Protected Member Functions

 class_or_union_diff (class_or_union_sptr first_scope, class_or_union_sptr second_scope, diff_context_sptr ctxt=diff_context_sptr())
 Constructor for the class_or_union_diff class. More...
 
void allocate_priv_data ()
 Allocate the memory for the priv_ pimpl data member of the class_or_union_diff class. More...
 
void clear_lookup_tables (void)
 Clear the lookup tables useful for reporting. More...
 
void ensure_lookup_tables_populated (void) const
 If the lookup tables are not yet built, walk the differences and fill them. More...
 
bool lookup_tables_empty (void) const
 Tests if the lookup tables are empty. More...
 
- Protected Member Functions inherited from type_diff_base
 type_diff_base (type_base_sptr first_subject, type_base_sptr second_subject, diff_context_sptr ctxt)
 
- Protected Member Functions inherited from diff
 diff (type_or_decl_base_sptr first_subject, type_or_decl_base_sptr second_subject)
 Constructor for the diff type. More...
 
 diff (type_or_decl_base_sptr first_subject, type_or_decl_base_sptr second_subject, diff_context_sptr ctxt)
 Constructor for the diff type. More...
 
void begin_traversing ()
 Flag a given diff node as being traversed. More...
 
bool do_log () const
 Test if logging was requested. More...
 
void do_log (bool)
 Request logging (or not) More...
 
void end_traversing ()
 Flag a given diff node as not being traversed anymore. More...
 
virtual void finish_diff_type ()
 Finish the insertion of a diff tree node into the diff graph. More...
 
void set_canonical_diff (diff *)
 Setter for the canonical diff of the current instance of diff. More...
 
- Protected Member Functions inherited from traversable_base
 traversable_base ()
 Default constructor of the traversable_base type. More...
 
bool visiting () const
 This should returns false before and after the node has been visiting. During the visiting of the node (and of its children) this should return true. More...
 
void visiting (bool f)
 The traversing code should be responsible of calling this, not the user code. More...
 

Protected Attributes

priv_ptr priv_
 
- Protected Attributes inherited from diff
std::unique_ptr< priv > priv_
 

Friends

class default_reporter
 

Detailed Description

This is the base class of class_diff and union_diff.

Definition at line 1657 of file abg-comparison.h.

Constructor & Destructor Documentation

◆ class_or_union_diff()

class_or_union_diff ( class_or_union_sptr  first_scope,
class_or_union_sptr  second_scope,
diff_context_sptr  ctxt = diff_context_sptr() 
)
protected

Constructor for the class_or_union_diff class.

Parameters
first_scopethe first class_or_union of the diff node.
second_scopethe second class_or_union of the diff node.
ctxtthe context of the diff.

Definition at line 5244 of file abg-comparison.cc.

◆ ~class_or_union_diff()

~class_or_union_diff ( )
virtual

Destructor of class_or_union_diff.

Definition at line 5280 of file abg-comparison.cc.

Member Function Documentation

◆ allocate_priv_data()

void allocate_priv_data ( )
protected

Allocate the memory for the priv_ pimpl data member of the class_or_union_diff class.

Definition at line 5231 of file abg-comparison.cc.

◆ chain_into_hierarchy()

void chain_into_hierarchy ( )
virtual

Populate the vector of children node of the diff base type sub-object of this instance of class_or_union_diff.

The children node can then later be retrieved using diff::children_node().

Reimplemented from diff.

Reimplemented in class_diff.

Definition at line 5504 of file abg-comparison.cc.

◆ changed_data_members()

const unsigned_var_diff_sptr_map & changed_data_members ( ) const

Getter of the map of data members that got replaced by another data member. The key of the map is the offset at which the element got replaced and the value is a pointer to the var_diff representing the replacement of the data member.

Returns
sorted vector of changed data member.

Definition at line 5370 of file abg-comparison.cc.

◆ changed_member_fns()

const function_decl_diff_sptrs_type & changed_member_fns ( ) const

Getter for the virtual members functions that have had a change in a sub-type, without having a change in their symbol name.

Returns
a sorted vector of virtual member functions that have a sub-type change.

Definition at line 5344 of file abg-comparison.cc.

◆ clear_lookup_tables()

void clear_lookup_tables ( void  )
protected

Clear the lookup tables useful for reporting.

This function must be updated each time a lookup table is added or removed from the class_or_union_diff::priv.

Definition at line 4824 of file abg-comparison.cc.

◆ count_filtered_changed_data_members()

size_t count_filtered_changed_data_members ( bool  local = false) const

Count the number of /filtered/ data members that got replaced by another data member.

Returns
the number of changed data member that got filtered out.

Definition at line 5386 of file abg-comparison.cc.

◆ count_filtered_subtype_changed_data_members()

size_t count_filtered_subtype_changed_data_members ( bool  local = false) const

Count the number of /filtered/ data members with a sub-type change.

Returns
the number of changed data member that got filtered out.

Definition at line 5400 of file abg-comparison.cc.

◆ data_members_changes() [1/2]

edit_script & data_members_changes ( )
Returns
the edit script of the data members of the two class_or_union.

Definition at line 5315 of file abg-comparison.cc.

◆ data_members_changes() [2/2]

const edit_script & data_members_changes ( ) const
Returns
the edit script of the data members of the two class_or_union.

Definition at line 5309 of file abg-comparison.cc.

◆ data_members_replaced_by_adms()

const string_decl_base_sptr_map & data_members_replaced_by_adms ( ) const

Get the map of data members that got replaced by anonymous data members.

The key of a map entry is the name of the replaced data member and the value is the anonymous data member that replaces it.

Returns
the map of data members replaced by anonymous data members.

Definition at line 5412 of file abg-comparison.cc.

◆ deleted_data_members()

const string_decl_base_sptr_map & deleted_data_members ( ) const

Getter for the data members that got deleted.

Returns
a map of data members that got deleted.

Definition at line 5329 of file abg-comparison.cc.

◆ deleted_member_fns()

const string_member_function_sptr_map & deleted_member_fns ( ) const
Returns
a map of member functions that got deleted.

Definition at line 5355 of file abg-comparison.cc.

◆ ensure_lookup_tables_populated()

void ensure_lookup_tables_populated ( void  ) const
protected

If the lookup tables are not yet built, walk the differences and fill them.

Definition at line 4863 of file abg-comparison.cc.

◆ first_class_or_union()

class_or_union_sptr first_class_or_union ( ) const
Returns
the first class_or_union involved in the diff.

Definition at line 5286 of file abg-comparison.cc.

◆ get_priv()

const class_or_union_diff::priv_ptr & get_priv ( ) const

Getter of the private data of the class_or_union_diff type.

Note that due to an optimization, the private data of class_or_union_diff can be shared among several instances of class_or_union_diff, so you should never try to access class_or_union_diff::priv directly.

When class_or_union_diff::priv is shared, this function returns the correct shared one.

Returns
the (possibly) shared private data of the current instance of class_or_union_diff.

Definition at line 5264 of file abg-comparison.cc.

◆ has_changes()

bool has_changes ( ) const
virtual

Test if the current diff node carries a change.

Implements diff.

Reimplemented in class_diff.

Definition at line 5470 of file abg-comparison.cc.

◆ has_local_changes()

enum change_kind has_local_changes ( ) const
virtual
Returns
the kind of local change carried by the current diff node. The value returned is zero if the current node carries no local change.

Implements type_diff_base.

Reimplemented in class_diff.

Definition at line 5470 of file abg-comparison.cc.

◆ inserted_data_members()

const string_decl_base_sptr_map & inserted_data_members ( ) const

Getter for the data members that got inserted.

Returns
a map of data members that got inserted.

Definition at line 5322 of file abg-comparison.cc.

◆ inserted_member_fns()

const string_member_function_sptr_map & inserted_member_fns ( ) const
Returns
a map of member functions that got inserted.

Definition at line 5360 of file abg-comparison.cc.

◆ lookup_tables_empty()

bool lookup_tables_empty ( void  ) const
protected

Tests if the lookup tables are empty.

Returns
true if the lookup tables are empty, false otherwise.

Definition at line 4844 of file abg-comparison.cc.

◆ member_class_tmpls_changes() [1/2]

edit_script & member_class_tmpls_changes ( )
Returns
the edit script of the member class templates of the two class_or_union.

Definition at line 5465 of file abg-comparison.cc.

◆ member_class_tmpls_changes() [2/2]

const edit_script & member_class_tmpls_changes ( ) const
Returns
the edit script of the member class templates of the two class_or_union.

Definition at line 5459 of file abg-comparison.cc.

◆ member_fn_tmpls_changes() [1/2]

edit_script & member_fn_tmpls_changes ( )
Returns
the edit script of the member function templates of the two class_or_union.

Definition at line 5453 of file abg-comparison.cc.

◆ member_fn_tmpls_changes() [2/2]

const edit_script & member_fn_tmpls_changes ( ) const
Returns
the edit script of the member function templates of the two class_or_union.

Definition at line 5447 of file abg-comparison.cc.

◆ member_fns_changes() [1/2]

edit_script & member_fns_changes ( )
Returns
the edit script of the member functions of the two classes.

Definition at line 5350 of file abg-comparison.cc.

◆ member_fns_changes() [2/2]

const edit_script & member_fns_changes ( ) const
Returns
the edit script of the member functions of the two class_or_union.

Definition at line 5335 of file abg-comparison.cc.

◆ member_types_changes() [1/2]

edit_script & member_types_changes ( )
Returns
the edit script of the member types of the two class_or_union.

Definition at line 5303 of file abg-comparison.cc.

◆ member_types_changes() [2/2]

const edit_script & member_types_changes ( ) const
Returns
the edit script of the member types of the two class_or_union.

Definition at line 5297 of file abg-comparison.cc.

◆ ordered_data_members_replaced_by_adms()

const changed_var_sptrs_type & ordered_data_members_replaced_by_adms ( ) const

Get an ordered vector of of data members that got replaced by anonymous data members.

This returns a vector of pair of two data members: the one that was replaced, and the anonymous data member that replaced it.

Returns
the sorted vector data members replaced by anonymous data members.

Definition at line 5423 of file abg-comparison.cc.

◆ report()

void report ( ostream &  out,
const string &  indent = "" 
) const
virtual

Report the changes carried by the current class_or_union_diff node in a textual format.

Parameters
outthe output stream to write the textual report to.
indentthe number of white space to use as indentation.

Implements diff.

Reimplemented in union_diff, and class_diff.

Definition at line 5493 of file abg-comparison.cc.

◆ second_class_or_union()

class_or_union_sptr second_class_or_union ( ) const
Returns
the second class_or_union involved in the diff.

Definition at line 5291 of file abg-comparison.cc.

◆ sorted_changed_data_members()

const var_diff_sptrs_type & sorted_changed_data_members ( ) const

Getter of the sorted vector of data members that got replaced by another data member.

Returns
sorted vector of changed data member.

Definition at line 5378 of file abg-comparison.cc.

◆ sorted_subtype_changed_data_members()

const var_diff_sptrs_type & sorted_subtype_changed_data_members ( ) const

Getter of the sorted vector of data members with a (sub-)type change.

Returns
sorted vector of changed data member.

Definition at line 5393 of file abg-comparison.cc.


The documentation for this class was generated from the following files: