30 #include "../types.hpp"
31 #include "scalar_iterator.hpp"
36 template<
typename ATYPE>
class array_view;
78 scalar(
const array_type &s):_data(s._data) {}
82 scalar(
const value_type &r):_data(storage_type{{r}}) {}
115 if(
this == &v)
return *
this;
116 this->_data = v.
_data;
129 #pragma GCC diagnostic push
130 #pragma GCC diagnostic ignored "-Wunused-parameter"
131 operator T()
const {
return this->_data[0]; }
132 #pragma GCC diagnostic pop
169 T
at(
size_t)
const {
return this->_data[0]; }
181 T &
at(
size_t) {
return this->_data[0]; }
191 void insert(
size_t,
const T &v) { this->_data[0] = v; }
215 template<
typename ...ITYPES>
218 return this->_data[0];
232 template<
typename ...ITYPES>
235 return this->_data[0];
251 template<
typename ...>
class CTYPE,
256 return this->_data[0];
271 template<
template<
typename ...>
class CTYPE,
typename ...OTS>
274 return this->_data[0];
287 size_t size()
const {
return 1; }
297 size_t rank()
const {
return 0; }
308 template<
typename CTYPE>
309 CTYPE
shape()
const {
return CTYPE(); }
375 std::ostream &operator<<(std::ostream &os,const scalar<T> &s)
scalar_iterator< const array_type > const_iterator
const iterator
Definition: scalar.hpp:64
const_iterator begin() const
get const iterator to first element
Definition: scalar.hpp:321
size_t size() const
get size
Definition: scalar.hpp:287
array_type & operator=(const array_type &v)
assignment from Scalar
Definition: scalar.hpp:113
std::array< T, 1 > _data
static buffer holding the data value
Definition: scalar.hpp:52
std::istream & operator>>(std::istream &is, scalar< T > &s)
input strema data
Definition: scalar.hpp:393
T operator[](size_t) const
get data
Definition: scalar.hpp:144
array_type & operator=(const value_type &v)
assignment from T value
Definition: scalar.hpp:98
scalar(const array_type &s)
copy constructor
Definition: scalar.hpp:78
scalar_iterator< array_type > iterator
iterator
Definition: scalar.hpp:62
T at(size_t) const
get data value
Definition: scalar.hpp:169
T & operator()(const CTYPE< OTS...> &)
get reference to data
Definition: scalar.hpp:254
scalar()
default constructor
Definition: scalar.hpp:74
T & operator[](size_t)
get reference to data
Definition: scalar.hpp:157
CTYPE shape() const
get shape
Definition: scalar.hpp:309
Definition: add_op.hpp:29
iterator begin()
get iterator to first element
Definition: scalar.hpp:313
scalar(const value_type &r)
constructor from a scalar value
Definition: scalar.hpp:82
T & operator()(ITYPES...)
get reference to the data
Definition: scalar.hpp:216
T operator()(ITYPES...) const
get value of data
Definition: scalar.hpp:233
size_t rank() const
get rank
Definition: scalar.hpp:297
void insert(size_t, const T &v)
set data value
Definition: scalar.hpp:191
const storage_type & storage() const
get reference to the storage object
Definition: scalar.hpp:202
Scalar template for scalar values.
Definition: scalar.hpp:48
map from a type to type_id
Definition: type_id_map.hpp:55
scalar< T > array_type
type of the scalar itself
Definition: scalar.hpp:58
~scalar()
destructor
Definition: scalar.hpp:88
array_view< array_type > view_type
view type
Definition: scalar.hpp:66
T operator()(const CTYPE< OTS...> &) const
get data value
Definition: scalar.hpp:272
T value_type
native data type of the scalar
Definition: scalar.hpp:56
static const type_id_t type_id
type ID of the data type held by the scalar
Definition: scalar.hpp:70
scalar iterator
Definition: scalar_iterator.hpp:57
T & at(size_t)
get data reference
Definition: scalar.hpp:181
bool operator!=(const scalar< T > &a, const scalar< T > &b)
!= operator for scalar
Definition: scalar.hpp:359
const_iterator end() const
get const iterator to last+1 element
Definition: scalar.hpp:325
bool operator==(const scalar< T > &a, const scalar< T > &b)
== operator for scalar
Definition: scalar.hpp:341
std::array< T, 1 > storage_type
storage type
Definition: scalar.hpp:60
iterator end()
get iterator to last+1 element
Definition: scalar.hpp:317
type_id_t
type codes for PNI data types
Definition: types/types.hpp:148
type erasure for POD data
Definition: value.hpp:46
provides a view on a part of an array
Definition: add_op.hpp:32