Esempio n. 1
0
Store::const_iterator
Store::children_end(SharedPtr<const GraphObject> o) const
{
	const_iterator parent = find(o->path());
	assert(parent != end());
	return find_descendants_end(parent);
}
Esempio n. 2
0
void
Store::remove(const iterator top, Objects& removed)
{
	if (top != end()) {
		const iterator descendants_end = find_descendants_end(top);
		removed.insert(top, descendants_end);
		erase(top, descendants_end);
	}
}
Esempio n. 3
0
Store::const_range
Store::children_range(SPtr<const Node> o) const
{
	const const_iterator parent = find(o->path());
	if (parent != end()) {
		const_iterator first_child = parent;
		++first_child;
		return std::make_pair(first_child, find_descendants_end(parent));
	}
	return make_pair(end(), end());
}
Esempio n. 4
0
SharedPtr<GraphObject>
Store::find_child(SharedPtr<const GraphObject> parent,
                  const string&                child_name) const
{
	const_iterator pi = find(parent->path());
	assert(pi != end());
	const_iterator children_end = find_descendants_end(pi);
	const_iterator child = find(pi, children_end, parent->path().base() + child_name);
	if (child != end())
		return child->second;
	else
		return SharedPtr<GraphObject>();
}