26 #include "../algorithms.hpp"
27 #include "array_holder_interface.hpp"
41 template<
typename ATYPE>
44 return (
void *)(a.data());
79 _object(
std::move(o._object))
100 virtual size_t rank()
const {
return _object.rank(); }
106 return _object.template shape<shape_t>();
111 virtual size_t size()
const {
return _object.size(); }
128 return value(_object[i]);
161 return value(_object.at(i));
177 return value_ref(std::ref(_object.at(i)));
196 virtual std::ostream &
write(std::ostream &os)
const
204 virtual std::istream &
read(std::istream &is)
214 return typeid(OT).name();
219 virtual const void *
ptr()
const
OT _object
the original object
Definition: array_holder.hpp:60
array_holder(array_holder< OT > &&o)
move constructor
Definition: array_holder.hpp:78
virtual std::ostream & write(std::ostream &os) const
write data to output stream
Definition: array_holder.hpp:196
virtual value_ref operator()(const element_index &index)
return element reference
Definition: array_holder.hpp:189
virtual std::istream & read(std::istream &is)
read data from input stream
Definition: array_holder.hpp:204
const void * get_pointer(const ATYPE &a)
get array pointer
Definition: array_holder.hpp:42
array holder template
Definition: array_holder.hpp:57
array_holder(const OT &o)
construct by copying o
Definition: array_holder.hpp:64
virtual value_ref operator[](size_t i)
get value reference
Definition: array_holder.hpp:143
array_holder(OT &&o)
construct by moving o
Definition: array_holder.hpp:68
Definition: add_op.hpp:29
virtual type_id_t type_id() const
return type ID of the held array
Definition: array_holder.hpp:96
virtual value_ref at(size_t i)
get reference
Definition: array_holder.hpp:175
virtual string type_name() const
return the name of the type
Definition: array_holder.hpp:212
type_id_t type_id(const array_view< ATYPE > &)
specialization for type_id
Definition: array_view.hpp:821
virtual const void * ptr() const
return pointer to data
Definition: array_holder.hpp:219
virtual value operator()(const element_index &index) const
return element value
Definition: array_holder.hpp:182
std::vector< size_t > element_index
single element index type
Definition: array_holder_interface.hpp:43
array_holder(const array_holder< OT > &o)
copy constructor
Definition: array_holder.hpp:72
array holder interface
Definition: array_holder_interface.hpp:39
type_id_t
type codes for PNI data types
Definition: types/types.hpp:148
type erasure for references to POD data
Definition: value_ref.hpp:43
virtual array_holder_interface * clone() const
clone the holder
Definition: array_holder.hpp:89
type erasure for POD data
Definition: value.hpp:46
virtual value operator[](size_t i) const
get value
Definition: array_holder.hpp:126
virtual size_t rank() const
return the rank of the held array
Definition: array_holder.hpp:100
virtual value at(size_t i) const
get value
Definition: array_holder.hpp:159
virtual size_t size() const
return the total number of elements in the array
Definition: array_holder.hpp:111
virtual shape_t shape() const
return the shape of the held array
Definition: array_holder.hpp:104