26 #ifndef __TERRALIB_COMMON_INTERNAL_COUNTEDTREEITEM_H
27 #define __TERRALIB_COMMON_INTERNAL_COUNTEDTREEITEM_H
37 #include <boost/intrusive_ptr.hpp>
66 typedef std::list<TreeItemPtr>::iterator
iterator;
85 explicit TreeItem(
const TreeItemPtr& parent);
95 bool hasChildren()
const;
111 const std::list<TreeItemPtr>& getChildren()
const;
120 const TreeItemPtr& getChild(std::size_t i)
const;
129 const TreeItemPtr& operator[](std::size_t i)
const;
141 void add(
const TreeItemPtr& childItem);
154 void insert(std::size_t i,
const TreeItemPtr& childItem);
165 TreeItemPtr
remove(std::size_t i);
176 std::list<TreeItemPtr>
remove(std::size_t i, std::size_t count);
187 TreeItemPtr replace(std::size_t i,
const TreeItemPtr& childItem);
196 bool isSibling(
const TreeItem* item)
const;
203 std::size_t getChildrenCount()
const;
215 void getDescendantsCount(std::size_t& count)
const;
226 std::size_t getIndex()
const;
234 void swap(
const TreeItemPtr& firstChild,
const TreeItemPtr& secondChild);
241 void swap(
const TreeItemPtr& sibling);
248 const_iterator begin()
const;
262 const_iterator end()
const;
296 #endif // __TERRALIB_COMMON_INTERNAL_COUNTEDTREEITEM_H
This abstract class describes a basic item to be organized in a tree-oriented way.
Configuration flags for the TerraLib Common Runtime module.
TreeItem * m_parent
A pointer to the parent node.
std::list< TreeItemPtr >::iterator iterator
boost::intrusive_ptr< TreeItem > TreeItemPtr
mydialect insert("+", new te::da::BinaryOpEncoder("+"))
#define TECOMMONEXPORT
You can use this macro in order to export/import classes and functions from this module.
std::list< TreeItemPtr > m_children
Pointers to the items that are children.
A counted class keeps track of how many abstract instances are pointing to it.
static const std::size_t npos
A value to indicate no match.
A counted class keeps track of how many abstract instances are pointing to it.
std::list< TreeItemPtr >::const_iterator const_iterator