|
dune-common 2.12-git
|
Loading...
Searching...
No Matches
hybridmultiindex.hh
Go to the documentation of this file.
3// SPDX-FileCopyrightInfo: Copyright © DUNE Project contributors, see file LICENSE.md in module root
51 "HybridMultiIndex indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>");
59 "HybridMultiIndex indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>");
61 "HybridMultiIndex indices must be convertible to std::size_t or std::integral_constant<std::size_t,v>");
238 [[nodiscard]] constexpr HybridMultiIndex<T...,std::size_t> push_back(const HybridMultiIndex<T...>& tp, std::size_t i)
262 [[nodiscard]] constexpr HybridMultiIndex<T...,index_constant<i>> push_back(const HybridMultiIndex<T...>& tp, index_constant<i> iConstant = {})
276 [[nodiscard]] constexpr HybridMultiIndex<std::size_t,T...> push_front(const HybridMultiIndex<T...>& tp, std::size_t i)
300 [[nodiscard]] constexpr HybridMultiIndex<index_constant<i>,T...> push_front(const HybridMultiIndex<T...>& tp, index_constant<i> iConstant = {})
355 [[nodiscard]] constexpr auto join(const HybridMultiIndex<Head...>& head, const Other&... tail) {
503 struct tuple_size<Dune::HybridMultiIndex<T...>> : public std::integral_constant<std::size_t,sizeof...(T)> {};
Traits for type conversions and type information.
HybridMultiIndex(I... i) -> HybridMultiIndex< decltype(Impl::castToHybridSizeT(i))... >
constexpr auto reverse(const HybridMultiIndex< T... > &tp)
Reverses the order of the elements in the multi-index.
Definition hybridmultiindex.hh:364
constexpr auto back(const HybridMultiIndex< T... > &tp) -> decltype(tp.back())
Returns a copy of the last element of the HybridMultiIndex.
Definition hybridmultiindex.hh:210
constexpr HybridMultiIndex< std::size_t, T... > push_front(const HybridMultiIndex< T... > &tp, std::size_t i)
Prepends a run time index to a HybridMultiIndex.
Definition hybridmultiindex.hh:276
constexpr HybridMultiIndex< T..., std::size_t > push_back(const HybridMultiIndex< T... > &tp, std::size_t i)
Appends a run time index to a HybridMultiIndex.
Definition hybridmultiindex.hh:238
constexpr bool operator==(const HybridMultiIndex< S... > &lhs, const HybridMultiIndex< T... > &rhs)
Compare two HybridMultiIndexs for value equality.
Definition hybridmultiindex.hh:413
std::ostream & operator<<(std::ostream &os, const HybridMultiIndex< T... > &tp)
Dumps a HybridMultiIndex to a stream.
Definition hybridmultiindex.hh:482
constexpr auto accumulate_front(const HybridMultiIndex< T... > &tp, I i)
Hybrid utility that accumulates to the front of a multi-index.
Definition hybridmultiindex.hh:345
constexpr auto pop_back(const HybridMultiIndex< T... > &tp)
Removes last index on a HybridMultiIndex.
Definition hybridmultiindex.hh:394
constexpr auto accumulate_back(const HybridMultiIndex< T... > &tp, I i)
Hybrid utility that accumulates to the back of a multi-index.
Definition hybridmultiindex.hh:323
constexpr auto front(const HybridMultiIndex< T... > &tp) -> decltype(tp.front())
Returns a copy of the first element of the HybridMultiIndex.
Definition hybridmultiindex.hh:225
decltype(auto) constexpr unpackIntegerSequence(F &&f, std::integer_sequence< I, i... > sequence)
Unpack an std::integer_sequence<I,i...> to std::integral_constant<I,i>...
Definition indices.hh:124
constexpr HybridMultiIndex< T..., index_constant< i > > push_back(const HybridMultiIndex< T... > &tp, index_constant< i > iConstant={})
Appends a compile time index to a HybridMultiIndex.
Definition hybridmultiindex.hh:262
constexpr auto join(const HybridMultiIndex< Head... > &head, const Other &... tail)
Join two hybrid multi-indices into one.
Definition hybridmultiindex.hh:355
constexpr auto operator!=(const HybridMultiIndex< std::integral_constant< S, lhs >... > &, const HybridMultiIndex< std::integral_constant< T, rhs >... > &)
Compare two static HybridMultiIndexs for inequality.
Definition hybridmultiindex.hh:467
constexpr auto operator==(const HybridMultiIndex< std::integral_constant< S, lhs >... > &, const HybridMultiIndex< std::integral_constant< T, rhs >... > &)
Overload for purely static HybridMultiIndexs.
Definition hybridmultiindex.hh:439
constexpr HybridMultiIndex< index_constant< i >, T... > push_front(const HybridMultiIndex< T... > &tp, index_constant< i > iConstant={})
Prepends a compile time index to a HybridMultiIndex.
Definition hybridmultiindex.hh:300
constexpr auto operator!=(const HybridMultiIndex< S... > &lhs, const HybridMultiIndex< T... > &rhs)
Compare two HybridMultiIndexs for inequality.
Definition hybridmultiindex.hh:455
constexpr auto pop_front(const HybridMultiIndex< T... > &tp)
Removes first index on a HybridMultiIndex.
Definition hybridmultiindex.hh:379
constexpr void forEach(Range &&range, F &&f)
Range based for loop.
Definition hybridutilities.hh:261
STL namespace.
constexpr std::integer_sequence< T, II..., T(IN)> push_back(std::integer_sequence< T, II... >, std::integral_constant< T, IN >={})
Append an index IN to the back of the sequence.
Definition integersequence.hh:69
constexpr std::integral_constant< std::size_t, sizeof...(II)> size(std::integer_sequence< T, II... >)
Return the size of the sequence.
Definition integersequence.hh:75
constexpr std::integer_sequence< T, T(I0), II... > push_front(std::integer_sequence< T, II... >, std::integral_constant< T, I0 >={})
Append an index I0 to the front of the sequence.
Definition integersequence.hh:64
constexpr std::integral_constant< T, I0 > front(std::integer_sequence< T, I0, II... >)
Return the first entry of the sequence.
Definition integersequence.hh:39
constexpr std::integer_sequence< T, II... > tail(std::integer_sequence< T, I0, II... >)
For a sequence [head,tail...) return the tail sequence.
Definition integersequence.hh:58
constexpr auto back(std::integer_sequence< T, II... > seq)
Return the last entry of the sequence.
Definition integersequence.hh:44
constexpr std::integral_constant< T, I0 > head(std::integer_sequence< T, I0, II... >)
For a sequence [head,tail...) return the single head element.
Definition integersequence.hh:53
A hybrid multi-index class that supports both compile time and run time indices.
Definition hybridmultiindex.hh:85
static constexpr std::size_t size()
Get the size (length) of this multi-index.
Definition hybridmultiindex.hh:126
constexpr auto operator[](Dune::index_constant< i >) const
Get the index value at position pos.
Definition hybridmultiindex.hh:153
static constexpr std::size_t max_size()
Get the size (length) of this multi-index.
Definition hybridmultiindex.hh:132
constexpr HybridMultiIndex()=default
constexpr auto front() const
Get the first index value. Only available in non-empty multi-indices.
Definition hybridmultiindex.hh:172
constexpr HybridMultiIndex(const HybridMultiIndex &tp)=default
static constexpr index_sequence enumerate()
Returns an index_sequence for enumerating the components of this HybridMultiIndex.
Definition hybridmultiindex.hh:120
constexpr HybridMultiIndex(HybridMultiIndex &&tp)=default
friend constexpr auto join(const HybridMultiIndex< Head... > &, const Other &...)
constexpr auto get() const
Get the index value at position pos.
Definition hybridmultiindex.hh:145
constexpr HybridMultiIndex(std::tuple< T... > t)
Constructor from a std::tuple
Definition hybridmultiindex.hh:107
constexpr auto back() const
Get the last index value. Only available in non-empty multi-indices.
Definition hybridmultiindex.hh:180
constexpr HybridMultiIndex & operator=(HybridMultiIndex &&tp)=default
constexpr HybridMultiIndex & operator=(const HybridMultiIndex &tp)=default
constexpr std::size_t operator[](std::size_t pos) const
Get the index value at position pos.
Definition hybridmultiindex.hh:159
constexpr HybridMultiIndex(I... i)
Constructor from arguments.
Definition hybridmultiindex.hh:115
T is_same_v
T make_tuple(T... args)
T tuple_cat(T... args)
Legal Statements / Impressum | Hosted by TU Dresden & Uni Heidelberg | Generated by
1.9.8