mirror of
git://sourceware.org/git/libabigail.git
synced 2025-01-29 21:02:48 +00:00
99a6fce808
It's this time of the year again. This patch updates the copyright years notice in the preamble of each source code file to include year 2025. This is done by updating and executing the shell script update-copyright.sh. * include/abg-btf-reader.h: Update copyright year to include 2025. * include/abg-comp-filter.h: Likewise. * include/abg-comparison.h: Likewise. * include/abg-config.h: Likewise. * include/abg-corpus.h: Likewise. * include/abg-ctf-reader.h: Likewise. * include/abg-cxx-compat.h: Likewise. * include/abg-diff-utils.h: Likewise. * include/abg-dwarf-reader.h: Likewise. * include/abg-elf-based-reader.h: Likewise. * include/abg-elf-reader.h: Likewise. * include/abg-fe-iface.h: Likewise. * include/abg-fwd.h: Likewise. * include/abg-hash.h: Likewise. * include/abg-ini.h: Likewise. * include/abg-interned-str.h: Likewise. * include/abg-ir.h: Likewise. * include/abg-libxml-utils.h: Likewise. * include/abg-reader.h: Likewise. * include/abg-regex.h: Likewise. * include/abg-reporter.h: Likewise. * include/abg-sptr-utils.h: Likewise. * include/abg-suppression.h: Likewise. * include/abg-tools-utils.h: Likewise. * include/abg-traverse.h: Likewise. * include/abg-viz-common.h: Likewise. * include/abg-viz-dot.h: Likewise. * include/abg-viz-svg.h: Likewise. * include/abg-workers.h: Likewise. * include/abg-writer.h: Likewise. * src/abg-btf-reader.cc: Likewise. * src/abg-comp-filter.cc: Likewise. * src/abg-comparison-priv.h: Likewise. * src/abg-comparison.cc: Likewise. * src/abg-config.cc: Likewise. * src/abg-corpus-priv.h: Likewise. * src/abg-corpus.cc: Likewise. * src/abg-ctf-reader.cc: Likewise. * src/abg-default-reporter.cc: Likewise. * src/abg-diff-utils.cc: Likewise. * src/abg-dwarf-reader.cc: Likewise. * src/abg-elf-based-reader.cc: Likewise. * src/abg-elf-helpers.cc: Likewise. * src/abg-elf-helpers.h: Likewise. * src/abg-elf-reader.cc: Likewise. * src/abg-fe-iface.cc: Likewise. * src/abg-hash.cc: Likewise. * src/abg-ini.cc: Likewise. * src/abg-internal.h: Likewise. * src/abg-ir-priv.h: Likewise. * src/abg-ir.cc: Likewise. * src/abg-leaf-reporter.cc: Likewise. * src/abg-libxml-utils.cc: Likewise. * src/abg-reader.cc: Likewise. * src/abg-regex.cc: Likewise. * src/abg-reporter-priv.cc: Likewise. * src/abg-reporter-priv.h: Likewise. * src/abg-suppression-priv.h: Likewise. * src/abg-suppression.cc: Likewise. * src/abg-symtab-reader.cc: Likewise. * src/abg-symtab-reader.h: Likewise. * src/abg-tools-utils.cc: Likewise. * src/abg-traverse.cc: Likewise. * src/abg-viz-common.cc: Likewise. * src/abg-viz-dot.cc: Likewise. * src/abg-viz-svg.cc: Likewise. * src/abg-workers.cc: Likewise. * src/abg-writer.cc: Likewise. * tests/print-diff-tree.cc: Likewise. * tests/test-abicompat.cc: Likewise. * tests/test-abidiff-exit.cc: Likewise. * tests/test-abidiff.cc: Likewise. * tests/test-alt-dwarf-file.cc: Likewise. * tests/test-core-diff.cc: Likewise. * tests/test-cxx-compat.cc: Likewise. * tests/test-diff-dwarf-abixml.cc: Likewise. * tests/test-diff-dwarf.cc: Likewise. * tests/test-diff-filter.cc: Likewise. * tests/test-diff-pkg.cc: Likewise. * tests/test-diff-suppr.cc: Likewise. * tests/test-diff2.cc: Likewise. * tests/test-dot.cc: Likewise. * tests/test-elf-helpers.cc: Likewise. * tests/test-ini.cc: Likewise. * tests/test-ir-walker.cc: Likewise. * tests/test-kmi-whitelist.cc: Likewise. * tests/test-lookup-syms.cc: Likewise. * tests/test-read-btf.cc: Likewise. * tests/test-read-ctf.cc: Likewise. * tests/test-read-dwarf.cc: Likewise. * tests/test-read-write.cc: Likewise. * tests/test-svg.cc: Likewise. * tests/test-symtab-reader.cc: Likewise. * tests/test-symtab.cc: Likewise. * tests/test-tools-utils.cc: Likewise. * tests/test-types-stability.cc: Likewise. * tests/test-utils.cc: Likewise. * tests/test-utils.h: Likewise. * tools/abicompat.cc: Likewise. * tools/abidiff.cc: Likewise. * tools/abidw.cc: Likewise. * tools/abilint.cc: Likewise. * tools/abipkgdiff.cc: Likewise. * tools/abisym.cc: Likewise. * tools/binilint.cc: Likewise. * tools/kmidiff.cc: Likewise. * update-copyright.sh: Likewise. Signed-off-by: Dodji Seketeli <dodji@redhat.com>
369 lines
9.5 KiB
C++
369 lines
9.5 KiB
C++
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
// -*- Mode: C++ -*-
|
|
//
|
|
// Copyright (C) 2017-2025 Red Hat, Inc.
|
|
//
|
|
// Author: Dodji Seketeli
|
|
|
|
/// @file
|
|
///
|
|
/// The declaration of the reporting types of libabigail's diff
|
|
/// engine.
|
|
|
|
#ifndef __ABG_REPORTER_H__
|
|
#define __ABG_REPORTER_H__
|
|
|
|
#include <memory>
|
|
#include <ostream>
|
|
#include <string>
|
|
|
|
namespace abigail
|
|
{
|
|
|
|
using std::shared_ptr;
|
|
|
|
namespace comparison
|
|
{
|
|
class diff;
|
|
class type_decl_diff;
|
|
class enum_diff;
|
|
class typedef_diff;
|
|
class qualified_type_diff;
|
|
class distinct_diff;
|
|
class pointer_diff;
|
|
class reference_diff;
|
|
class ptr_to_mbr_diff;
|
|
class subrange_diff;
|
|
class array_diff;
|
|
class base_diff;
|
|
class class_or_union_diff;
|
|
class class_diff;
|
|
class union_diff;
|
|
class scope_diff;
|
|
class fn_parm_diff;
|
|
class function_type_diff;
|
|
class function_decl_diff;
|
|
class var_diff;
|
|
class translation_unit_diff;
|
|
class corpus_diff;
|
|
class diff_maps;
|
|
class reporter_base;
|
|
|
|
/// A convenience typedef for a shared pointer to a @ref
|
|
/// reporter_base.
|
|
typedef shared_ptr<reporter_base> reporter_base_sptr;
|
|
|
|
/// The base class of all the reporting classes.
|
|
class reporter_base
|
|
{
|
|
public:
|
|
|
|
virtual bool diff_to_be_reported(const diff *d) const;
|
|
|
|
virtual bool diff_has_net_changes(const corpus_diff *d) const = 0;
|
|
|
|
virtual void
|
|
report(const type_decl_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const enum_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const typedef_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const qualified_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const distinct_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const pointer_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const reference_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const ptr_to_mbr_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const array_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const subrange_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const base_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const class_or_union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const class_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const scope_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const fn_parm_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const function_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const function_decl_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const var_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const translation_unit_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual void
|
|
report(const corpus_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const = 0;
|
|
|
|
virtual ~reporter_base() {}
|
|
}; //end class reporter_base
|
|
|
|
class default_reporter;
|
|
|
|
/// A convenience typedef for a shared_ptr to a @ref default_reporter.
|
|
typedef shared_ptr<default_reporter> default_reporter_sptr;
|
|
|
|
/// The default, initial, reporter of the libabigail comparison engine.
|
|
class default_reporter : public reporter_base
|
|
{
|
|
public:
|
|
|
|
virtual bool diff_has_net_changes(const corpus_diff *d) const;
|
|
|
|
virtual void
|
|
report(const type_decl_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const enum_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
void
|
|
report_non_type_typedef_changes(const typedef_diff &d,
|
|
std::ostream& out,
|
|
const std::string& indent) const;
|
|
|
|
virtual void
|
|
report(const typedef_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
bool
|
|
report_local_qualified_type_changes(const qualified_type_diff& d,
|
|
std::ostream& out,
|
|
const std::string& indent) const;
|
|
|
|
void
|
|
report_underlying_changes_of_qualified_type (const qualified_type_diff& d,
|
|
ostream& out,
|
|
const string& indent) const;
|
|
|
|
virtual void
|
|
report(const qualified_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const pointer_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
void
|
|
report_local_reference_type_changes(const reference_diff& d,
|
|
std::ostream& out,
|
|
const std::string& indent) const;
|
|
|
|
virtual void
|
|
report(const reference_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
bool
|
|
report_local_ptr_to_mbr_type_changes(const ptr_to_mbr_diff& d,
|
|
std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const ptr_to_mbr_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const fn_parm_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
void
|
|
report_local_function_type_changes(const function_type_diff& d,
|
|
std::ostream& out,
|
|
const std::string& indent) const;
|
|
|
|
virtual void
|
|
report(const function_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const subrange_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const array_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const base_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const scope_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const class_or_union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const class_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const distinct_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const function_decl_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const var_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const translation_unit_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const corpus_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
}; // end class default_reporter
|
|
|
|
/// A reporter that only reports leaf changes
|
|
class leaf_reporter : public default_reporter
|
|
{
|
|
public:
|
|
|
|
virtual bool diff_to_be_reported(const diff *d) const;
|
|
|
|
virtual bool diff_has_net_changes(const corpus_diff *d) const;
|
|
|
|
void
|
|
report_changes_from_diff_maps(const diff_maps&, std::ostream& out,
|
|
const std::string& indent) const;
|
|
|
|
virtual void
|
|
report(const typedef_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const qualified_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const pointer_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const reference_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const ptr_to_mbr_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const fn_parm_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const function_type_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const subrange_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const array_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const scope_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const class_or_union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const class_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const union_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const distinct_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const function_decl_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const var_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const translation_unit_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
|
|
virtual void
|
|
report(const corpus_diff& d, std::ostream& out,
|
|
const std::string& indent = "") const;
|
|
}; // end class leaf_reporter
|
|
|
|
} // end namespace comparison
|
|
} // end namespace abigail
|
|
|
|
#endif // __ABG_REPORTER_H__
|