X-Git-Url: https://sigrok.org/gitweb/?a=blobdiff_plain;f=pv%2Fview%2Frowitemowner.cpp;h=8633525eb4cd9fb2976ea4f3a97a36df7f7163e8;hb=0dda6fe595932b2e340930104fad8ac4fc574895;hp=3ef2782eb3ec62db7c2c1b46bd1a33b5e41edb38;hpb=18f7104f875a71bceeb152398b682737528a4ad7;p=pulseview.git diff --git a/pv/view/rowitemowner.cpp b/pv/view/rowitemowner.cpp index 3ef2782e..8633525e 100644 --- a/pv/view/rowitemowner.cpp +++ b/pv/view/rowitemowner.cpp @@ -18,4 +18,71 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ +#include + +#include "rowitem.h" #include "rowitemowner.h" + +using std::shared_ptr; +using std::vector; + +namespace pv { +namespace view { + +vector< shared_ptr >& RowItemOwner::child_items() +{ + return _items; +} + +const vector< shared_ptr >& RowItemOwner::child_items() const +{ + return _items; +} + +void RowItemOwner::clear_child_items() +{ + for (auto &i : _items) { + assert(i->owner() == this); + i->set_owner(nullptr); + } + _items.clear(); +} + +void RowItemOwner::add_child_item(std::shared_ptr item) +{ + assert(!item->owner()); + item->set_owner(this); + _items.push_back(item); +} + +void RowItemOwner::remove_child_item(std::shared_ptr item) +{ + assert(item->owner() == this); + item->set_owner(nullptr); + auto iter = std::find(_items.begin(), _items.end(), item); + assert(iter != _items.end()); + _items.erase(iter); +} + +RowItemOwner::iterator RowItemOwner::begin() +{ + return iterator(this, _items.begin()); +} + +RowItemOwner::iterator RowItemOwner::end() +{ + return iterator(this); +} + +RowItemOwner::const_iterator RowItemOwner::begin() const +{ + return const_iterator(this, _items.cbegin()); +} + +RowItemOwner::const_iterator RowItemOwner::end() const +{ + return const_iterator(this); +} + +} // view +} // pv