libabigail
Classes | Public Member Functions | Protected Member Functions | Friends | List of all members
function_type_diff Class Reference

Abstraction of a diff between two function types. More...

#include <abg-comparison.h>

Inheritance diagram for function_type_diff:
[legend]

Classes

struct  priv
 

Public Member Functions

const string_parm_mapadded_parms () const
 Getter for the map of parameters that got added. More...
 
virtual void chain_into_hierarchy ()
 Populate the vector of children node of the diff base type sub-object of this instance of function_type_diff. More...
 
const function_type_sptr first_function_type () const
 Getter for the first subject of the diff. More...
 
virtual const string & get_pretty_representation () const
 Build and return a copy of a pretty representation of the current instance of function_type_diff. More...
 
virtual bool has_changes () const
 Test if the current diff node carries changes. More...
 
virtual enum change_kind has_local_changes () const
 Test if the current diff node carries local changes. More...
 
const string_parm_mapremoved_parms () const
 Getter for the map of parameters that got removed. More...
 
virtual void report (ostream &, const string &indent="") const
 Build and emit a textual report about the current function_type_diff instance. More...
 
const diff_sptr return_type_diff () const
 Getter for the diff of the return types of the two function types of the current diff. More...
 
const function_type_sptr second_function_type () const
 Getter for the second subject of the diff. More...
 
const vector< function_decl::parameter_sptr > & sorted_added_parms () const
 Getter for the sorted vector of added parameters . More...
 
const vector< function_decl::parameter_sptr > & sorted_deleted_parms () const
 Getter for the sorted vector of deleted parameters. More...
 
const string_fn_parm_diff_sptr_mapsubtype_changed_parms () const
 Getter for the map of function parameter changes of the current diff. 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...
 
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 Member Functions

 function_type_diff (const function_type_sptr first, const function_type_sptr second, diff_context_sptr ctxt)
 Consutrctor of the function_type type. 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...
 

Friends

function_type_diff_sptr compute_diff (const function_type_sptr first, const function_type_sptr second, diff_context_sptr ctxt)
 Compute the diff between two instances of function_type. More...
 
class default_reporter
 
class leaf_reporter
 

Additional Inherited Members

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

Detailed Description

Abstraction of a diff between two function types.

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

Constructor & Destructor Documentation

◆ function_type_diff()

function_type_diff ( const function_type_sptr  first,
const function_type_sptr  second,
diff_context_sptr  ctxt 
)
protected

Consutrctor of the function_type type.

Parameters
firstthe first function_type subject of the diff to create.
secondthe second function_type subject of the diff to create.
ctxtthe diff context to be used by the newly created instance of function_type_diff. Note that this context object must stay alive at least during the life time of the current instance of function_type_diff. Otherwise memory corruption issues occur.

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

Member Function Documentation

◆ added_parms()

const string_parm_map & added_parms ( ) const

Getter for the map of parameters that got added.

Returns
the map of parameters that got added.

Definition at line 7591 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 function_type_diff.

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

Reimplemented from diff.

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

◆ first_function_type()

const function_type_sptr first_function_type ( ) const

Getter for the first subject of the diff.

Returns
the first function type involved in the diff.

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

◆ get_pretty_representation()

const string & get_pretty_representation ( ) const
virtual

Build and return a copy of a pretty representation of the current instance of function_type_diff.

Returns
a copy of the pretty representation of the current instance of function_type_diff.

Reimplemented from diff.

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

◆ has_changes()

bool has_changes ( ) const
virtual

Test if the current diff node carries changes.

Returns
true iff the current diff node carries changes.

Implements diff.

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

◆ has_local_changes()

enum change_kind has_local_changes ( ) const
virtual

Test if the current diff node carries local changes.

A local change is a change that is carried by this diff node, not by any of its children nodes.

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.

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

◆ removed_parms()

const string_parm_map & removed_parms ( ) const

Getter for the map of parameters that got removed.

Returns
the map of parameters that got removed.

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

◆ report()

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

Build and emit a textual report about the current function_type_diff instance.

Parameters
outthe output stream.
indentthe indentation string to use.

Implements diff.

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

◆ return_type_diff()

const diff_sptr return_type_diff ( ) const

Getter for the diff of the return types of the two function types of the current diff.

Returns
the diff of the return types of the two function types of the current diff.

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

◆ second_function_type()

const function_type_sptr second_function_type ( ) const

Getter for the second subject of the diff.

Returns
the second function type involved in the diff.

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

◆ sorted_added_parms()

const vector< function_decl::parameter_sptr > & sorted_added_parms ( ) const

Getter for the sorted vector of added parameters .

Returns
the sorted vector of added parameters.

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

◆ sorted_deleted_parms()

const vector< function_decl::parameter_sptr > & sorted_deleted_parms ( ) const

Getter for the sorted vector of deleted parameters.

Returns
the sorted vector of deleted parameters.

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

◆ subtype_changed_parms()

const string_fn_parm_diff_sptr_map & subtype_changed_parms ( ) const

Getter for the map of function parameter changes of the current diff.

Returns
a map of function parameter changes of the current diff.

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

Friends And Related Function Documentation

◆ compute_diff

function_type_diff_sptr compute_diff ( const function_type_sptr  first,
const function_type_sptr  second,
diff_context_sptr  ctxt 
)
friend

Compute the diff between two instances of function_type.

Note that the two types must have been created in the same environment, otherwise, this function aborts.

Parameters
firstthe first function_type to consider for the diff.
secondthe second function_type to consider for the diff.
ctxtthe diff context to use.
Returns
the resulting diff between the two function_type.

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


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