Concepts | |
concept | tagged::tag |
Any tag used to specify a dimension. | |
concept | tagged::selector_tag |
A bare tag used to select a dimension. | |
Classes | |
struct | tagged::tag_list< TL > |
A wrapped list of tags. More... | |
class | tagged::index_class< T > |
A tagged index. More... | |
class | tagged::range_class< T > |
A range generating tagged index values. More... | |
class | tagged::index_class< TL > |
A list of tagged indexes (a position in an N-dimensional space) More... | |
class | tagged::range_class< TL > |
A list of tagged ranges (an N-dimensional box) More... | |
class | tagged::tensor_view< E, TL > |
A reference to a sub-space of a tensor. More... | |
class | tagged::tensor_class< E, TL > |
A tensor - a multi-dimensional tagged generalization of vector/matrix. More... | |
Typedefs | |
template<tag T> | |
using | tagged::selector = typename impl::tag_traits<T>::selector |
Extract selector tag from any tag. | |
template<typename E, tag ... TL> | |
using | tagged::extract_tensor_view = typename impl::tensor_view_creator< E, typename impl::mixer_list_traits< range_class< TL...>, impl::multiplier_list< TL...>>::type>::type |
The type of a tensor_view acting as a reference to the complete tensor_class with the given tag list. | |
template<typename P, typename E, tag ... TL> | |
using | tagged::permute_tensor_class = impl::permute_t< P, impl::permutator_tensor_class<E, TL...>> |
Provide a tensor_class for the selected dimensions with layout specified by a tagged::tag_list. | |
template<tag T> | |
using | tagged::co = retag< typename impl::co_traits<selector<T>>::co, T> |
Provide a co-tag for a given tag. | |
template<typename X> | |
using | tagged::co_list = typename impl::co_list_traits< X>::co_list |
Co-tag every element of a tag_list. | |
Functions | |
template<tag ... TL1, tag ... TL2> | |
index_class< TL1 ..., TL2 ... > | tagged::operator& (const index_class< TL1 ... > &ia, const index_class< TL2 ... > &ib) |
Concatenate two (multi-dimensional) indexes together. | |
template<tag ... TL1, tag ... TL2> | |
range_class< TL1 ..., TL2 ... > | tagged::operator& (const range_class< TL1 ... > &rnga, const range_class< TL2 ... > &rngb) |
Concatenate two (multi-dimensional) ranges. | |
template<tag T> | |
constexpr range_class< co< T > > | tagged::operator~ (const range_class< T > &r) |
Return a co-tagged range with the same extent. | |
template<tag T> | |
index_class< co< T > > | tagged::operator~ (const index_class< T > &r) |
Return a co-tagged index with the same value. | |
using tagged::co = retag< typename impl::co_traits<selector<T>>::co, T> |
Provide a co-tag for a given tag.
Co-tagging is a self-inverse operation, i.e. co<co<T>>==T
The purpose of co-tagging is the conversion between covariant and contravariant indices.
Co-tagging preserves any static information that may be attached to the tag.
T | A tag |
using tagged::co_list = typename impl::co_list_traits< X>::co_list |
using tagged::extract_tensor_view = typename impl::tensor_view_creator< E, typename impl::mixer_list_traits< range_class< TL...>, impl::multiplier_list< TL...>>::type>::type |
The type of a tensor_view acting as a reference to the complete tensor_class with the given tag list.
E | Element type (possibly const ) |
...TL | Tag list |
using tagged::permute_tensor_class = impl::permute_t< P, impl::permutator_tensor_class<E, TL...>> |
Provide a tensor_class for the selected dimensions with layout specified by a tagged::tag_list.
P | A tagged::tag_list of selector tags |
E | An element type |
...TL | A tag list, possibly containing tags carrying static range information |
using tagged::selector = typename impl::tag_traits<T>::selector |
Extract selector tag from any tag.
T |
index_class< TL1 ..., TL2 ... > tagged::operator& | ( | const index_class< TL1 ... > & | ia, |
const index_class< TL2 ... > & | ib ) |
Concatenate two (multi-dimensional) indexes together.
...TL1 | Tag list 1 |
...TL2 | Tag list 2 |
ia | (Multi-)tagged index 1 |
ib | (Multi-)tagged index 2 |
range_class< TL1 ..., TL2 ... > tagged::operator& | ( | const range_class< TL1 ... > & | rnga, |
const range_class< TL2 ... > & | rngb ) |
Concatenate two (multi-dimensional) ranges.
...TL1 | Tag list 1 |
...TL2 | Tag list 2 |
rnga | (Multi-)tagged range 1 |
rngb | (Multi-)tagged range 2 |
|
inline |
Return a co-tagged index with the same value.
T | Tag |
r | Tagged index |
|
inlineconstexpr |
Return a co-tagged range with the same extent.
T | Tag |
r | Range |