X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Frowitemowner.h;h=98df5ff7221bd69cf68517d9615e7546a2918d9a;hb=0dda6fe595932b2e340930104fad8ac4fc574895;hp=d961d6b9eeb9098ef0f4f271ada681fabe8c6baf;hpb=18f7104f875a71bceeb152398b682737528a4ad7;p=pulseview.git diff --git a/pv/view/rowitemowner.h b/pv/view/rowitemowner.h index d961d6b9..98df5ff7 100644 --- a/pv/view/rowitemowner.h +++ b/pv/view/rowitemowner.h @@ -24,6 +24,8 @@ #include #include +#include "rowitemiterator.h" + namespace pv { class SigSession; @@ -35,6 +37,11 @@ class View; class RowItemOwner { +public: + typedef std::vector< std::shared_ptr > item_list; + typedef RowItemIterator iterator; + typedef RowItemIterator const_iterator; + public: /** * Returns the session of the onwer. @@ -61,10 +68,55 @@ public: /** * Returns a list of row items owned by this object. */ - virtual std::vector< std::shared_ptr > child_items() const = 0; + virtual item_list& child_items(); + + /** + * Returns a list of row items owned by this object. + */ + virtual const item_list& child_items() const; + + /** + * Clears the list of child items. + */ + void clear_child_items(); + + /** + * Adds a child item to this object. + */ + void add_child_item(std::shared_ptr item); + + /** + * Removes a child item from this object. + */ + void remove_child_item(std::shared_ptr item); + + /** + * Returns a depth-first iterator at the beginning of the child RowItem + * tree. + */ + iterator begin(); + + /** + * Returns a depth-first iterator at the end of the child RowItem tree. + */ + iterator end(); + + /** + * Returns a constant depth-first iterator at the beginning of the + * child RowItem tree. + */ + const_iterator begin() const; + + /** + * Returns a constant depth-first iterator at the end of the child + * RowItem tree. + */ + const_iterator end() const; -protected: virtual void update_viewport() = 0; + +private: + item_list _items; }; } // view