libabigail/include
Dodji Seketeli 7ac2fe072d Make class_decl pimpl and harden comparison infloop prevention
* include/abg-ir.h (class_decl::{priv}): New private data member.
	(class_decl::{get_is_declaration_only, set_is_declaration_only,
	is_struct, get_definition_of_declaration, get_earlier_declaration,
	add_base_specifier, get_base_specifiers, get_member_types,
	get_data_members, get_member_functions,
	get_member_function_templates, get_member_class_templates}): Move
	these methods out-of-line.
	(class_decl::{comparison_started_,
	declaration_,is_declaration_only_, definition_of_declaration,
	is_struct_, bases_, member_types_, data_members_,
	member_functions_, member_function_template,
	member_class_templates_}): Move these data members into the pimpl
	in ...
	* src/abg-ir.cc
	(class_decl::priv::{declaration_,is_declaration_only_,
	definition_of_declaration, is_struct_, bases_, member_types_,
	data_members_, member_functions_, member_function_template,
	member_class_templates_}): ... here.
	(class_decl::priv::classes_being_compared_): New data member.
	(class_decl::priv::priv): Initialize the data members.
	(class_decl::priv::{mark_as_being_compared,
	unmark_as_being_compared, comparison_started): New methods.
	(class_decl::{get_is_declaration_only, set_is_declaration_only,
	is_struct, get_definition_of_declaration, add_base_specifier,
	get_base_specifiers, get_member_types, get_data_members,
	get_member_functions, get_member_function_templates,
	get_member_class_templates}): Move these out-of-line in here.
	(class_decl::{class_decl, set_definition_of_declaration,
	set_earlier_declaration, insert_member_type, add_member_type,
	add_data_member, add_member_function,
	add_member_function_template, add_member_class_template,
	has_no_base_nor_member}): Adjust.
	(class_decl::operator==): Harden inf-loop prevention during class
	comparison using the new priv::mark/unmark_as_being_compared()
	functions.  Now comparison of a class really compares member
	functions again.  And it is *slooow*.  I should probably change
	this to compare only virtual member functions.  But at least this
	should be correct and robust for now.
	* tests/data/test-diff-filter/test0-report.txt: Adjust.
	* test01-report.txt: Adjust.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
2014-04-13 22:09:24 +02:00
..
abg-comp-filter.h Initial implementation of diff tree node filtering 2014-03-27 13:01:18 +01:00
abg-comparison.h Remove the parent member of the diff node 2014-04-11 22:14:21 +02:00
abg-config.h Doxygen markup fixes final. 2013-08-14 15:07:18 +02:00
abg-corpus.h Add --drop/--keep options to bidiff 2014-02-28 17:59:39 +01:00
abg-diff-utils.h Add missing headers double inclusion guards 2014-03-27 13:01:18 +01:00
abg-dwarf-reader.h Misc Doxygen API doc fixes 2014-01-17 15:44:25 +01:00
abg-fwd.h Represent a removed+added data member at a given offset as changed 2014-04-11 21:55:08 +02:00
abg-hash.h Misc style fixes 2014-02-10 15:51:10 +01:00
abg-ir.h Make class_decl pimpl and harden comparison infloop prevention 2014-04-13 22:09:24 +02:00
abg-libxml-utils.h Add --drop/--keep options to bidiff 2014-02-28 17:59:39 +01:00
abg-libzip-utils.h Initial writing/reading of an ABI corpus to an archive 2013-08-27 16:20:41 +02:00
abg-reader.h Misc Doxygen API doc fixes 2014-01-17 15:44:25 +01:00
abg-sptr-utils.h Add --drop/--keep options to bidiff 2014-02-28 17:59:39 +01:00
abg-traverse.h Make tree walking preemptive 2014-03-27 13:01:17 +01:00
abg-version.h.in Collapse subdir of include to include. 2013-08-14 15:07:18 +02:00
abg-viz-common.h Forward decls for abg-ir.h, doxygen fixups, restyle. 2013-08-14 15:07:18 +02:00
abg-viz-dot.h Forward decls for abg-ir.h, doxygen fixups, restyle. 2013-08-14 15:07:18 +02:00
abg-viz-svg.h Forward decls for abg-ir.h, doxygen fixups, restyle. 2013-08-14 15:07:18 +02:00
abg-writer.h Misc Doxygen API doc fixes 2014-01-17 15:44:25 +01:00
Makefile.am Initial implementation of diff tree node filtering 2014-03-27 13:01:18 +01:00