13#ifndef __ABG_REPORTER_H__
14#define __ABG_REPORTER_H__
31class qualified_type_diff;
39class class_or_union_diff;
44class function_type_diff;
45class function_decl_diff;
47class translation_unit_diff;
63 virtual bool diff_has_net_changes(
const corpus_diff *d)
const = 0;
67 const std::string& indent =
"")
const = 0;
70 report(
const enum_diff& d, std::ostream& out,
71 const std::string& indent =
"")
const = 0;
75 const std::string& indent =
"")
const = 0;
79 const std::string& indent =
"")
const = 0;
83 const std::string& indent =
"")
const = 0;
87 const std::string& indent =
"")
const = 0;
91 const std::string& indent =
"")
const = 0;
95 const std::string& indent =
"")
const = 0;
99 const std::string& indent =
"")
const = 0;
103 const std::string& indent =
"")
const = 0;
106 report(
const base_diff& d, std::ostream& out,
107 const std::string& indent =
"")
const = 0;
111 const std::string& indent =
"")
const = 0;
114 report(
const class_diff& d, std::ostream& out,
115 const std::string& indent =
"")
const = 0;
118 report(
const union_diff& d, std::ostream& out,
119 const std::string& indent =
"")
const = 0;
122 report(
const scope_diff& d, std::ostream& out,
123 const std::string& indent =
"")
const = 0;
127 const std::string& indent =
"")
const = 0;
131 const std::string& indent =
"")
const = 0;
135 const std::string& indent =
"")
const = 0;
138 report(
const var_diff& d, std::ostream& out,
139 const std::string& indent =
"")
const = 0;
143 const std::string& indent =
"")
const = 0;
147 const std::string& indent =
"")
const = 0;
166 const std::string& indent =
"")
const;
169 report(
const enum_diff& d, std::ostream& out,
170 const std::string& indent =
"")
const;
175 const std::string& indent)
const;
179 const std::string& indent =
"")
const;
184 const std::string& indent)
const;
189 const string& indent)
const;
193 const std::string& indent =
"")
const;
197 const std::string& indent =
"")
const;
202 const std::string& indent)
const;
206 const std::string& indent =
"")
const;
211 const std::string& indent =
"")
const;
215 const std::string& indent =
"")
const;
219 const std::string& indent =
"")
const;
224 const std::string& indent)
const;
228 const std::string& indent =
"")
const;
232 const std::string& indent =
"")
const;
235 report(
const array_diff& d, std::ostream& out,
236 const std::string& indent =
"")
const;
239 report(
const base_diff& d, std::ostream& out,
240 const std::string& indent =
"")
const;
243 report(
const scope_diff& d, std::ostream& out,
244 const std::string& indent =
"")
const;
248 const std::string& indent =
"")
const;
251 report(
const class_diff& d, std::ostream& out,
252 const std::string& indent =
"")
const;
255 report(
const union_diff& d, std::ostream& out,
256 const std::string& indent =
"")
const;
260 const std::string& indent =
"")
const;
264 const std::string& indent =
"")
const;
267 report(
const var_diff& d, std::ostream& out,
268 const std::string& indent =
"")
const;
272 const std::string& indent =
"")
const;
276 const std::string& indent =
"")
const;
290 const std::string& indent)
const;
294 const std::string& indent =
"")
const;
298 const std::string& indent =
"")
const;
302 const std::string& indent =
"")
const;
306 const std::string& indent =
"")
const;
310 const std::string& indent =
"")
const;
314 const std::string& indent =
"")
const;
318 const std::string& indent =
"")
const;
322 const std::string& indent =
"")
const;
325 report(
const array_diff& d, std::ostream& out,
326 const std::string& indent =
"")
const;
329 report(
const scope_diff& d, std::ostream& out,
330 const std::string& indent =
"")
const;
334 const std::string& indent =
"")
const;
337 report(
const class_diff& d, std::ostream& out,
338 const std::string& indent =
"")
const;
341 report(
const union_diff& d, std::ostream& out,
342 const std::string& indent =
"")
const;
346 const std::string& indent =
"")
const;
350 const std::string& indent =
"")
const;
353 report(
const var_diff& d, std::ostream& out,
354 const std::string& indent =
"")
const;
358 const std::string& indent =
"")
const;
362 const std::string& indent =
"")
const;
The abstraction of a diff between two arrays.
An abstraction of a diff between two instances of class_decl::base_spec.
This type abstracts changes for a class_decl.
This is the base class of class_diff and union_diff.
An abstraction of a diff between between two abi corpus.
The default, initial, reporter of the libabigail comparison engine.
bool report_local_ptr_to_mbr_type_changes(const ptr_to_mbr_diff &d, std::ostream &out, const std::string &indent="") const
Report the local changes carried by a ptr_to_mbr_diff diff node.
bool report_local_qualified_type_changes(const qualified_type_diff &d, std::ostream &out, const std::string &indent) const
For a qualified_type_diff node, report the changes that are local.
void report_local_function_type_changes(const function_type_diff &d, std::ostream &out, const std::string &indent) const
For a function_type_diff node, report the local changes carried by the diff node.
void report_underlying_changes_of_qualified_type(const qualified_type_diff &d, ostream &out, const string &indent) const
For a qualified_type_diff node, report the changes of its underlying type.
virtual bool diff_has_net_changes(const corpus_diff *d) const
Test if a given instance of corpus_diff carries changes whose reports are not suppressed by any suppr...
void report_local_reference_type_changes(const reference_diff &d, std::ostream &out, const std::string &indent) const
For a @reference_diff node, report the local changes carried by the diff node.
void report_non_type_typedef_changes(const typedef_diff &d, std::ostream &out, const std::string &indent) const
For a typedef_diff node, report the local changes to the typedef rather the changes to its underlying...
This type contains maps. Each map associates a type name to a diff of that type. Not all kinds of dif...
The abstraction of a change between two ABI artifacts, a.k.a an artifact change.
An abstraction of a diff between entities that are of a different kind (disctinct).
Abstraction of a diff between two enums.
Abstraction of a diff between two function parameters.
Abstraction of a diff between two function_decl.
Abstraction of a diff between two function types.
A reporter that only reports leaf changes.
virtual bool diff_has_net_changes(const corpus_diff *d) const
Test if a given instance of corpus_diff carries changes whose reports are not suppressed by any suppr...
void report_changes_from_diff_maps(const diff_maps &, std::ostream &out, const std::string &indent) const
Report the changes carried by an instance of diff_maps.
virtual bool diff_to_be_reported(const diff *d) const
Test if a diff node is to be reported by the current instance of leaf_reporter.
The abstraction of a diff between two pointers.
The abstraction of a diff between two ptr_to_mbr_type.
Abstraction of a diff between two qualified types.
The abstraction of a diff between two references.
The base class of all the reporting classes.
virtual bool diff_to_be_reported(const diff *d) const
Tests if the diff node is to be reported.
An abstractions of the changes between two scopes.
The abstraction of the diff between two subrange types.
An abstraction of a diff between two translation units.
Abstraction of a diff between two basic type declarations.
Abstraction of a diff between two typedef_decl.
Abstracts a diff between two instances of var_decl.
shared_ptr< reporter_base > reporter_base_sptr
A convenience typedef for a shared pointer to a reporter_base.
shared_ptr< default_reporter > default_reporter_sptr
A convenience typedef for a shared_ptr to a default_reporter.
Toplevel namespace for libabigail.