26 #ifndef TILEDARRAY_TENSOR_TENSOR_MAP_H__INCLUDED 27 #define TILEDARRAY_TENSOR_TENSOR_MAP_H__INCLUDED 29 #include <initializer_list> 30 #include <type_traits> 38 template <
typename,
typename>
class TensorInterface;
42 template <
typename T,
typename Range_ = Range>
46 template <
typename T,
typename Range_ = Range>
50 template <
typename T,
typename Index>
52 const Index& upper_bound)
57 const std::initializer_list<std::size_t>& lower_bound,
58 const std::initializer_list<std::size_t>& upper_bound)
61 template <
typename T,
typename Range_>
65 template <
typename T,
typename Index>
67 const Index& upper_bound)
73 const std::initializer_list<std::size_t>& lower_bound,
74 const std::initializer_list<std::size_t>& upper_bound)
77 template <
typename T,
typename Range_>
82 template <
typename T,
typename Index>
84 const Index& upper_bound)
90 const std::initializer_list<std::size_t>& lower_bound,
91 const std::initializer_list<std::size_t>& upper_bound)
98 template <
typename T,
typename Index>
100 const Index& upper_bound)
104 template <
typename T>
106 const std::initializer_list<std::size_t>& lower_bound,
107 const std::initializer_list<std::size_t>& upper_bound)
110 template <
typename T,
typename Range_>
115 template <
typename T,
typename Index>
117 const Index &upper_bound)
119 map.range_.resize(lower_bound, upper_bound);
123 template <
typename T,
typename Index>
125 const Index& upper_bound) {
126 map.range_.resize(lower_bound, upper_bound);
127 map.data_ =
const_cast<const T*
>(
data);
130 template <
typename T>
132 const std::initializer_list<std::size_t> &lower_bound,
133 const std::initializer_list<std::size_t> &upper_bound)
135 map.range_.resize(lower_bound, upper_bound);
139 template <
typename T>
141 const std::initializer_list<std::size_t>& lower_bound,
142 const std::initializer_list<std::size_t>& upper_bound) {
143 map.range_.resize(lower_bound, upper_bound);
144 map.data_ =
const_cast<const T*
>(
data);
149 #endif // TILEDARRAY_TENSOR_TENSOR_MAP_H__INCLUDED A (hyperrectangular) interval on , space of integer n-indices.
auto data(T &t)
Container data pointer accessor.
TensorMap< T > make_map(T *const data, const Index &lower_bound, const Index &upper_bound)
TensorConstMap< T > make_const_map(const T *const data, const Index &lower_bound, const Index &upper_bound)
Tensor interface for external data.
void remap(detail::TensorInterface< T, Range > &, T *const, const Index &, const Index &)
detail::TensorInterface< T, Range_ > TensorMap