Skip to content
Snippets Groups Projects
Commit 85fe26b5 authored by Brad King's avatar Brad King
Browse files

cmLinkedTree: Add Pop method

Add a method to increment an iterator (follow the "up" pointer) to the
previous level in the stack of scopes and free storage of the top of the
stack if possible.  This will allow short-lived scopes to be created and
destroyed by matching Push/Pop pairs without accumulating storage.
parent 518d6b22
No related branches found
No related tags found
No related merge requests found
......@@ -152,6 +152,27 @@ public:
return Push_impl(it, t);
}
bool IsLast(iterator it)
{
return it.Position == this->Data.size();
}
iterator Pop(iterator it)
{
assert(!this->Data.empty());
assert(this->UpPositions.size() == this->Data.size());
bool const isLast = this->IsLast(it);
++it;
// If this is the last entry then no other entry can refer
// to it so we can drop its storage.
if (isLast)
{
this->Data.pop_back();
this->UpPositions.pop_back();
}
return it;
}
iterator Truncate()
{
assert(this->UpPositions.size() > 0);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment