Added has_xdata() methods for journal_t and xact_t
This commit is contained in:
parent
0068ac8fc0
commit
48dc654eda
8 changed files with 45 additions and 2 deletions
|
|
@ -327,16 +327,25 @@ bool account_t::valid() const
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool account_t::children_with_xdata() const
|
||||||
|
{
|
||||||
|
foreach (const accounts_map::value_type& pair, accounts)
|
||||||
|
if (pair.second->has_xdata() ||
|
||||||
|
pair.second->children_with_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
std::size_t account_t::children_with_flags(xdata_t::flags_t flags) const
|
std::size_t account_t::children_with_flags(xdata_t::flags_t flags) const
|
||||||
{
|
{
|
||||||
std::size_t count = 0;
|
std::size_t count = 0;
|
||||||
bool grandchildren_visited = false;
|
bool grandchildren_visited = false;
|
||||||
|
|
||||||
foreach (const accounts_map::value_type& pair, accounts) {
|
foreach (const accounts_map::value_type& pair, accounts)
|
||||||
if (pair.second->has_xflags(flags) ||
|
if (pair.second->has_xflags(flags) ||
|
||||||
pair.second->children_with_flags(flags))
|
pair.second->children_with_flags(flags))
|
||||||
count++;
|
count++;
|
||||||
}
|
|
||||||
|
|
||||||
// Although no immediately children were visited, if any progeny at all were
|
// Although no immediately children were visited, if any progeny at all were
|
||||||
// visited, it counts as one.
|
// visited, it counts as one.
|
||||||
|
|
|
||||||
|
|
@ -241,6 +241,7 @@ public:
|
||||||
bool has_xflags(xdata_t::flags_t flags) const {
|
bool has_xflags(xdata_t::flags_t flags) const {
|
||||||
return xdata_ && xdata_->has_flags(flags);
|
return xdata_ && xdata_->has_flags(flags);
|
||||||
}
|
}
|
||||||
|
bool children_with_xdata() const;
|
||||||
std::size_t children_with_flags(xdata_t::flags_t flags) const;
|
std::size_t children_with_flags(xdata_t::flags_t flags) const;
|
||||||
|
|
||||||
#if defined(HAVE_BOOST_SERIALIZATION)
|
#if defined(HAVE_BOOST_SERIALIZATION)
|
||||||
|
|
|
||||||
|
|
@ -211,6 +211,26 @@ std::size_t journal_t::read(const path& pathname,
|
||||||
return count;
|
return count;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool journal_t::has_xdata()
|
||||||
|
{
|
||||||
|
foreach (xact_t * xact, xacts)
|
||||||
|
if (xact->has_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
foreach (auto_xact_t * xact, auto_xacts)
|
||||||
|
if (xact->has_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
foreach (period_xact_t * xact, period_xacts)
|
||||||
|
if (xact->has_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (master->has_xdata() || master->children_with_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void journal_t::clear_xdata()
|
void journal_t::clear_xdata()
|
||||||
{
|
{
|
||||||
foreach (xact_t * xact, xacts)
|
foreach (xact_t * xact, xacts)
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,7 @@ public:
|
||||||
const path * original_file = NULL,
|
const path * original_file = NULL,
|
||||||
bool strict = false);
|
bool strict = false);
|
||||||
|
|
||||||
|
bool has_xdata();
|
||||||
void clear_xdata();
|
void clear_xdata();
|
||||||
|
|
||||||
bool valid() const;
|
bool valid() const;
|
||||||
|
|
|
||||||
|
|
@ -197,6 +197,7 @@ void export_journal()
|
||||||
|
|
||||||
.def("read", py_read)
|
.def("read", py_read)
|
||||||
|
|
||||||
|
.def("has_xdata", &journal_t::has_xdata)
|
||||||
.def("clear_xdata", &journal_t::clear_xdata)
|
.def("clear_xdata", &journal_t::clear_xdata)
|
||||||
|
|
||||||
.def("valid", &journal_t::valid)
|
.def("valid", &journal_t::valid)
|
||||||
|
|
|
||||||
|
|
@ -122,6 +122,7 @@ void export_xact()
|
||||||
|
|
||||||
.def("lookup", &xact_t::lookup)
|
.def("lookup", &xact_t::lookup)
|
||||||
|
|
||||||
|
.def("has_xdata", &xact_t::has_xdata)
|
||||||
.def("clear_xdata", &xact_t::clear_xdata)
|
.def("clear_xdata", &xact_t::clear_xdata)
|
||||||
|
|
||||||
.def("valid", &xact_t::valid)
|
.def("valid", &xact_t::valid)
|
||||||
|
|
|
||||||
|
|
@ -76,6 +76,15 @@ bool xact_base_t::remove_post(post_t * post)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool xact_base_t::has_xdata()
|
||||||
|
{
|
||||||
|
foreach (post_t * post, posts)
|
||||||
|
if (post->has_xdata())
|
||||||
|
return true;
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void xact_base_t::clear_xdata()
|
void xact_base_t::clear_xdata()
|
||||||
{
|
{
|
||||||
foreach (post_t * post, posts)
|
foreach (post_t * post, posts)
|
||||||
|
|
|
||||||
|
|
@ -80,6 +80,7 @@ public:
|
||||||
bool finalize();
|
bool finalize();
|
||||||
bool verify();
|
bool verify();
|
||||||
|
|
||||||
|
bool has_xdata();
|
||||||
void clear_xdata();
|
void clear_xdata();
|
||||||
|
|
||||||
virtual bool valid() const {
|
virtual bool valid() const {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue