index.h File Reference
|
CPP API
|
index.h File Reference
#include "memilio/io/io.h"#include "memilio/utils/compiler_diagnostics.h"#include "memilio/utils/metaprogramming.h"#include "memilio/utils/type_safe.h"#include <cstddef>#include <tuple>#include <type_traits>#include <utility>
Include dependency graph for index.h:
This graph shows which files directly or indirectly include this file:
Go to the source code of this file.
Classes | |
| class | mio::Index< CategoryTag > |
| An Index with more than one template parameter combines several Index objects. More... | |
| class | mio::Index< CategoryTag > |
| An Index with a single template parameter is a typesafe wrapper for size_t that is associated with a Tag. More... | |
| struct | mio::index_of_type< Index< CategoryTags... >, Index< CategoryTags... > > |
| Specialization of index_of_type for Index. Resolves ambiguity when using Indexs as items. More... | |
| struct | mio::index_of_type< Tag, ::mio::Index< CategoryTags... > > |
| Specialization of index_of_type for Index. More... | |
| struct | mio::type_at_index< Tag, ::mio::Index< CategoryTags... > > |
| Specialization of type_at_index for Index. More... | |
Namespaces | |
| mio | |
| A collection of classes to simplify handling of matrix shapes in meta programming. | |
| mio::details | |
Functions | |
| template<class... IndexArgs> | |
| decltype(auto) | mio::concatenate_indices (IndexArgs &&... args) |
| Combine several Indexs into one MultiIndex. More... | |
| template<class SuperIndex , class SubIndex > | |
| SuperIndex | mio::extend_index (const SubIndex &index, size_t fill_value=0) |
| Create a SuperIndex by copying values from SubIndex, filling new categories with fill_value. More... | |
| template<class... CategoryTags, class... Subset> | |
| Index< CategoryTags... > | mio::details::extend_index_impl (const Index< Subset... > &i, const size_t fill_value, mio::Tag< Index< CategoryTags... >>) |
| Creates and returns a SuperIndex from SubIndex, using entries from the given SubIndex or fill_value. More... | |
| template<size_t I, typename... CategoryTags> | |
| constexpr std::tuple_element< I, std::tuple< Index< CategoryTags >... > >::type & | mio::get (Index< CategoryTags... > &i) noexcept |
| Retrieves the Index (by reference) at the Ith position of a MultiIndex. More... | |
| template<typename Tag , typename... CategoryTags> | |
| constexpr Index< Tag > & | mio::get (Index< CategoryTags... > &i) noexcept |
| Retrieves the Index (by reference) by its Tag in a MultiIndex. Requires unique tags. More... | |
| template<size_t I, typename... CategoryTags> | |
| constexpr std::tuple_element< I, std::tuple< Index< CategoryTags >... > >::type const & | mio::get (Index< CategoryTags... > const &i) noexcept |
| Retrieves the Index (by const reference) at the Ith position of a MultiIndex. More... | |
| template<typename Tag , typename... CategoryTags> | |
| constexpr Index< Tag > const & | mio::get (Index< CategoryTags... > const &i) noexcept |
| Retrieves the Index (by const reference) by its Tag in a MultiIndex. Requires unique tags. More... | |
| template<class... Tags> | |
| std::tuple< Index< Tags >... > | mio::details::get_tuple (const Index< Tags... > &i) |
| Obtain a tuple of single-category indices from a Index or MultiIndex. More... | |
| template<class Enum > | |
| std::tuple< Index< Enum > > | mio::details::get_tuple (Enum i) requires std |
| Obtain a tuple of one single-category index from an enum value. More... | |
| template<class... T> | |
| void | mio::details::is_multi_index_impl (Index< T... >) |
| Function definition that accepts a MultiIndex, used for the definition of IsMultiIndex. More... | |
| template<class... CategoryTags, class SuperIndex > | |
| Index< CategoryTags... > | mio::details::reduce_index_impl (const SuperIndex &i, mio::Tag< Index< CategoryTags... >>) |
| Extracts CategoryTags from the tagged Index and returns a subindex of SuperIndex with the given categories. More... | |
| template<class... T> | |
| Index< T... > | mio::details::tuple_to_index (std::tuple< Index< T >... >) |
| Function declaration that allows type conversion from a tuple of single-category indices to MultiIndex. More... | |
| template<class SubIndex , class SuperIndex > | |
| decltype(auto) | mio::reduce_index (const SuperIndex &index) |
| Create a SubIndex by copying values from SuperIndex. More... | |
| template<class Enum , class SuperIndex > | |
| requires std::is_enum_v< Enum > Index< Enum > | mio::reduce_index (const SuperIndex &index) |
| Create a SubIndex by copying values from SuperIndex. More... | |
Variables | |
| template<typename... CategoryTags> | |
| concept | mio::IsMultiIndex = requires(Index<CategoryTags...> i) { details::is_multi_index_impl(i); } |
| A MultiIndex is an Index with any number of categories. Does accept empty or single category indices. More... | |
Generated by