mirror of
git://sourceware.org/git/libabigail.git
synced 2025-03-06 14:47:32 +00:00
corpus: is_empty: consider actual translation unit contents
A corpus with completely filtered out symbols (exhaustive whitelist), still contains compilation units, but they are empty. A list of empty translation units shall be considered empty as no entries need to be considered. That is useful to skip empty corpora when writing out the xml for them. Hence, teach is_empty() to have a look at the actual translation units. * src/abg-corpus.cc (corpus::is_empty): consider a list of empty members to be empty. Reviewed-by: Dodji Seketeli <dodji@seketeli.org> Signed-off-by: Matthias Maennich <maennich@google.com>
This commit is contained in:
parent
53d10a789d
commit
750b652b69
@ -849,13 +849,30 @@ void
|
||||
corpus::set_architecture_name(const string& arch)
|
||||
{priv_->architecture_name = arch;}
|
||||
|
||||
/// Tests if the corpus contains no translation unit.
|
||||
/// Tests if the corpus is empty from an ABI surface perspective. I.e. if all
|
||||
/// of these criteria are true:
|
||||
/// - all translation units (members) are empty
|
||||
/// - the maps function and variable symbols are not having entries
|
||||
/// - for shared libraries:
|
||||
/// - the soname is empty
|
||||
/// - there are no DT_NEEDED entries
|
||||
///
|
||||
/// @return true if the corpus contains no translation unit.
|
||||
bool
|
||||
corpus::is_empty() const
|
||||
{
|
||||
return (priv_->members.empty()
|
||||
bool members_empty = true;
|
||||
for (translation_units::const_iterator i = priv_->members.begin(),
|
||||
e = priv_->members.end();
|
||||
i != e; ++i)
|
||||
{
|
||||
if (!(*i)->is_empty())
|
||||
{
|
||||
members_empty = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return (members_empty
|
||||
&& priv_->fun_symbol_map
|
||||
&& priv_->fun_symbol_map->empty()
|
||||
&& priv_->var_symbol_map
|
||||
|
Loading…
Reference in New Issue
Block a user