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 |