21 #include "atlas/library/config.h" 28 template <
typename BaseIterator>
31 using value_type =
typename BaseIterator::value_type::element_type;
32 using pointer = value_type*;
33 using reference = value_type&;
37 reference operator*()
const {
return *( this->BaseIterator::operator*() ); }
38 pointer operator->()
const {
return this->BaseIterator::operator*().get(); }
39 reference operator[](
size_t n )
const {
return *( this->BaseIterator::operator[]( n ) ); }
44 template <
typename Iterator>
51 template <
typename Abstract>
54 using value_type = Abstract;
55 using container_type = std::vector<std::unique_ptr<value_type> >;
56 using const_reference =
const value_type&;
57 using reference = const_reference;
64 const_iterator begin()
const {
return make_dereference_iterator( container_.begin() ); }
65 const_iterator end()
const {
return make_dereference_iterator( container_.end() ); }
66 const_reference operator[](
idx_t i )
const {
return *container_[i]; }
67 const_reference at(
idx_t i )
const {
return *container_[i]; }
68 idx_t size()
const {
return container_.size(); }
69 void reserve(
size_t size ) { container_.reserve( size ); }
70 template <
typename... Args>
71 void emplace_back( Args&&... args ) {
72 container_.emplace_back( std::forward<Args>( args )... );
74 container_type&
get() {
return container_; }
75 void clear() {
return container_.clear(); }
78 container_type container_;
Definition: VectorOfAbstract.h:29
Definition: VectorOfAbstract.h:52
Contains all atlas classes and methods.
Definition: atlas-grids.cc:33
long idx_t
Integer type for indices in connectivity tables.
Definition: config.h:42