#ifndef COLLECTION_HPP #define COLLECTION_HPP #include "matador/object/collection_proxy.hpp" namespace matador::object { template < class Type > class collection { public: using value_type = Type; using iterator = typename std::vector::iterator; using const_iterator = typename std::vector::const_iterator; void push_back(const value_type& value) { proxy_->items().push_back(value); } iterator begin() { return proxy_->items().begin(); } iterator end() { return proxy_->items().end(); } const_iterator begin() const { return proxy_->items().begin(); } const_iterator end() const { return proxy_->items().end(); } [[nodiscard]] size_t size() const { return proxy_->items().size(); } [[nodiscard]] bool empty() const { return proxy_->items_.empty(); } void reset(std::shared_ptr> proxy) { proxy_ = std::move(proxy); } private: std::shared_ptr> proxy_; }; } #endif //COLLECTION_HPP