summaryrefslogtreecommitdiffstats
path: root/include/abg-comparison.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/abg-comparison.h')
-rw-r--r--include/abg-comparison.h44
1 files changed, 43 insertions, 1 deletions
diff --git a/include/abg-comparison.h b/include/abg-comparison.h
index 1350608a..595528a5 100644
--- a/include/abg-comparison.h
+++ b/include/abg-comparison.h
@@ -887,7 +887,44 @@ public:
887 diff_context_sptr ctxt); 887 diff_context_sptr ctxt);
888};//end struct diff_context. 888};//end struct diff_context.
889 889
890/// The abstraction of a change between two ABI artifacts. 890/// The abstraction of a change between two ABI artifacts, a.k.a an
891/// artifact change.
892///
893/// In the grand scheme of things, a diff is strongly typed; for
894/// instance, a change between two enums is represented by an
895/// enum_diff type. A change between two function_type is represented
896/// by a function_type_diff type and a change between two class_decl
897/// is represented by a class_diff type. All of these types derive
898/// from the @ref diff parent class.
899///
900/// An artifact change D can have one (or more) details named D'. A
901/// detail is an artifact change that "belongs" to another one. Here,
902/// D' belongs to D. Or said otherwise, D' is a child change of D.
903/// Said otherwise, D and D' are related, and the relation is a
904/// "child relation".
905///
906/// For instance, if we consider a change carried by a class_diff, the
907/// detail change might be a change on one data member of the class.
908/// In other word, the class_diff change might have a child diff node
909/// that would be a var_diff node.
910///
911/// There are two ways to get the child var_diff node (for the data
912/// member change detail) of the class_diff.
913///
914/// The first way is through the typed API, that is, through the
915/// class_diff::sorted_changed_data_members() member function which
916/// returns var_diff nodes.
917///
918/// The second way is through the generic API, that is, through the
919/// diff::children_nodes() member function which returns generic diff
920/// nodes. This second way enables us to walk the diff nodes graph in
921/// a generic way, regardless of the types of the diff nodes.
922///
923/// Said otherwise, there are two views for a given diff node. There
924/// is typed view, and there is the generic view. In the typed view,
925/// the details are accessed through the typed API. In the generic
926/// view, the details are gathered through the generic view.
927///
891/// 928///
892/// Please read more about the @ref DiffNode "IR" of the comparison 929/// Please read more about the @ref DiffNode "IR" of the comparison
893/// engine to learn more about this. 930/// engine to learn more about this.
@@ -1015,6 +1052,11 @@ public:
1015 virtual const string& 1052 virtual const string&
1016 get_pretty_representation() const; 1053 get_pretty_representation() const;
1017 1054
1055 /// This constructs the relation between this diff node and its
1056 /// detail diff nodes, in the generic view of the diff node.
1057 ///
1058 /// Each specific typed diff node should implement how the typed
1059 /// view "links" itself to its detail nodes in the generic sense.
1018 virtual void 1060 virtual void
1019 chain_into_hierarchy(); 1061 chain_into_hierarchy();
1020 1062