libabigail
|
This is the base class of class_diff and union_diff. More...
#include <abg-comparison.h>
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_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. More... | |
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. 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_script & | data_members_changes () |
const edit_script & | data_members_changes () const |
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. More... | |
const string_decl_base_sptr_map & | deleted_data_members () const |
Getter for the data members that got deleted. More... | |
const string_member_function_sptr_map & | deleted_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_map & | inserted_data_members () const |
Getter for the data members that got inserted. More... | |
const string_member_function_sptr_map & | inserted_member_fns () const |
edit_script & | member_class_tmpls_changes () |
const edit_script & | member_class_tmpls_changes () const |
edit_script & | member_fn_tmpls_changes () |
const edit_script & | member_fn_tmpls_changes () const |
edit_script & | member_fns_changes () |
const edit_script & | member_fns_changes () const |
edit_script & | member_types_changes () |
const edit_script & | member_types_changes () const |
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. 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_type & | sorted_changed_data_members () const |
Getter of the sorted vector of data members that got replaced by another data member. More... | |
const var_diff_sptrs_type & | sorted_subtype_changed_data_members () const |
Getter of the sorted vector of data members with a (sub-)type change. More... | |
virtual enum change_kind | has_local_changes () const =0 |
Pure interface to know if the current instance of @diff carries a local change. A local change is a change that is on the diff object itself, as opposed to a change that is carried by some of its children nodes. More... | |
![]() | |
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... | |
virtual void | chain_into_hierarchy () |
This constructs the relation between this diff node and its detail diff nodes, in the generic view of the 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... | |
diff * | get_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... | |
virtual bool | has_changes () const =0 |
Pure interface to get the length of the changes encapsulated by this diff. A length of zero means that the current instance of diff doesn't carry any change. 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... | |
virtual enum change_kind | has_local_changes () const =0 |
Pure interface to know if the current instance of @diff carries a local change. A local change is a change that is on the diff object itself, as opposed to a change that is carried by some of its children nodes. 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_categorized_as_suppressed () const |
Test if the current diff node has been suppressed by a suppression specification or it has been categorized as suppressed due to category propagation. 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 diff * | parent_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... | |
virtual void | report (ostream &out, const string &indent="") const =0 |
Pure interface to report the diff in a serialized form that is legible for the user. 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... | |
virtual bool | traverse (diff_node_visitor &v) |
The default traverse function. More... | |
![]() | |
virtual | ~traversable_base () |
Destructor of the traversable_base type. More... | |
Protected Types | |
typedef std::unique_ptr< priv > | priv_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... | |
![]() | |
type_diff_base (type_base_sptr first_subject, type_base_sptr second_subject, diff_context_sptr ctxt) | |
![]() | |
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... | |
![]() | |
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_ |
![]() | |
std::unique_ptr< priv > | priv_ |
Friends | |
class | default_reporter |
This is the base class of class_diff and union_diff.
Definition at line 1742 of file abg-comparison.h.
|
protected |
Definition at line 1746 of file abg-comparison.h.
|
protected |
Constructor for the class_or_union_diff class.
first_scope | the first class_or_union of the diff node. |
second_scope | the second class_or_union of the diff node. |
ctxt | the context of the diff. |
Definition at line 5757 of file abg-comparison.cc.
|
virtual |
Destructor of class_or_union_diff.
Definition at line 5793 of file abg-comparison.cc.
|
protected |
Allocate the memory for the priv_ pimpl data member of the class_or_union_diff class.
Definition at line 5744 of file abg-comparison.cc.
|
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 6017 of file abg-comparison.cc.
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.
Definition at line 5883 of file abg-comparison.cc.
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.
Definition at line 5857 of file abg-comparison.cc.
|
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 5284 of file abg-comparison.cc.
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.
Definition at line 5899 of file abg-comparison.cc.
size_t count_filtered_subtype_changed_data_members | ( | bool | local = false | ) | const |
Count the number of /filtered/ data members with a sub-type change.
Definition at line 5913 of file abg-comparison.cc.
edit_script & data_members_changes | ( | ) |
Definition at line 5828 of file abg-comparison.cc.
const edit_script & data_members_changes | ( | ) | const |
Definition at line 5822 of file abg-comparison.cc.
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.
Definition at line 5925 of file abg-comparison.cc.
const string_decl_base_sptr_map & deleted_data_members | ( | ) | const |
Getter for the data members that got deleted.
Definition at line 5842 of file abg-comparison.cc.
const string_member_function_sptr_map & deleted_member_fns | ( | ) | const |
Definition at line 5868 of file abg-comparison.cc.
|
protected |
If the lookup tables are not yet built, walk the differences and fill them.
Definition at line 5323 of file abg-comparison.cc.
class_or_union_sptr first_class_or_union | ( | ) | const |
Definition at line 5799 of file abg-comparison.cc.
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.
Definition at line 5777 of file abg-comparison.cc.
|
virtual |
Test if the current diff node carries a change.
Implements diff.
Reimplemented in class_diff.
Definition at line 5983 of file abg-comparison.cc.
|
virtual |
Implements type_diff_base.
Reimplemented in class_diff.
Definition at line 5990 of file abg-comparison.cc.
const string_decl_base_sptr_map & inserted_data_members | ( | ) | const |
Getter for the data members that got inserted.
Definition at line 5835 of file abg-comparison.cc.
const string_member_function_sptr_map & inserted_member_fns | ( | ) | const |
Definition at line 5873 of file abg-comparison.cc.
|
protected |
Tests if the lookup tables are empty.
Definition at line 5304 of file abg-comparison.cc.
edit_script & member_class_tmpls_changes | ( | ) |
Definition at line 5978 of file abg-comparison.cc.
const edit_script & member_class_tmpls_changes | ( | ) | const |
Definition at line 5972 of file abg-comparison.cc.
edit_script & member_fn_tmpls_changes | ( | ) |
Definition at line 5966 of file abg-comparison.cc.
const edit_script & member_fn_tmpls_changes | ( | ) | const |
Definition at line 5960 of file abg-comparison.cc.
edit_script & member_fns_changes | ( | ) |
Definition at line 5863 of file abg-comparison.cc.
const edit_script & member_fns_changes | ( | ) | const |
Definition at line 5848 of file abg-comparison.cc.
edit_script & member_types_changes | ( | ) |
Definition at line 5816 of file abg-comparison.cc.
const edit_script & member_types_changes | ( | ) | const |
Definition at line 5810 of file abg-comparison.cc.
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.
Definition at line 5936 of file abg-comparison.cc.
|
virtual |
Report the changes carried by the current class_or_union_diff node in a textual format.
out | the output stream to write the textual report to. |
indent | the number of white space to use as indentation. |
Implements diff.
Reimplemented in class_diff, and union_diff.
Definition at line 6006 of file abg-comparison.cc.
class_or_union_sptr second_class_or_union | ( | ) | const |
Definition at line 5804 of file abg-comparison.cc.
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.
Definition at line 5891 of file abg-comparison.cc.
const var_diff_sptrs_type & sorted_subtype_changed_data_members | ( | ) | const |
Getter of the sorted vector of data members with a (sub-)type change.
Definition at line 5906 of file abg-comparison.cc.
|
friend |
Definition at line 1859 of file abg-comparison.h.
|
protected |
Definition at line 1747 of file abg-comparison.h.