proxsuite 0.7.2
The Advanced Proximal Optimization Toolbox
Loading...
Searching...
No Matches
tuple.hpp File Reference
Include dependency graph for tuple.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  proxsuite::linalg::veg::tuple::nb::tuplify
struct  proxsuite::linalg::veg::tuple::IndexedTuple< ISeq, Ts >
struct  proxsuite::linalg::veg::tuple::TupleLeafImpl< T, true >
struct  proxsuite::linalg::veg::tuple::TupleLeafImpl< T, false >
struct  proxsuite::linalg::veg::tuple::TupleLeaf< I, T >
struct  proxsuite::linalg::veg::tuple::nb::unpack
struct  proxsuite::linalg::veg::tuple::nb::for_each_i
struct  proxsuite::linalg::veg::tuple::nb::for_each
struct  proxsuite::linalg::veg::tuple::nb::map_i
struct  proxsuite::linalg::veg::tuple::nb::map
struct  proxsuite::linalg::veg::tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... >
struct  proxsuite::linalg::veg::tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... >::_
struct  proxsuite::linalg::veg::_detail::meta_::NonTupleBaseInfoImpl
struct  proxsuite::linalg::veg::_detail::meta_::TupleBaseInfoImpl< Ts >
struct  proxsuite::linalg::veg::_detail::meta_::is_tuple_helper
struct  proxsuite::linalg::veg::_detail::meta_::IndexedToTuple< tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... > >
struct  proxsuite::linalg::veg::Tuple< Ts >
struct  proxsuite::linalg::veg::tuple::nb::with
struct  proxsuite::linalg::veg::tuple::nb::zip
struct  proxsuite::linalg::veg::tuple::nb::cat
struct  proxsuite::linalg::veg::tuple::nb::deref_assign
struct  proxsuite::linalg::veg::cpo::is_trivially_relocatable< tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... > >
struct  proxsuite::linalg::veg::cpo::is_trivially_constructible< tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... > >
struct  proxsuite::linalg::veg::cpo::is_trivially_relocatable< tuple::Tuple< Ts... > >
struct  proxsuite::linalg::veg::cpo::is_trivially_constructible< tuple::Tuple< Ts... > >
struct  std::tuple_size< proxsuite::linalg::veg::Tuple< Ts... > >
struct  std::tuple_element< I, proxsuite::linalg::veg::Tuple< Ts... > >
struct  proxsuite::linalg::veg::tuple::Tuple< Ts >

Namespaces

namespace  proxsuite
namespace  proxsuite::linalg
namespace  proxsuite::linalg::veg
namespace  proxsuite::linalg::veg::tuple
namespace  proxsuite::linalg::veg::tuple::nb
namespace  proxsuite::linalg::veg::tags
namespace  proxsuite::linalg::veg::_detail
namespace  proxsuite::linalg::veg::_detail::meta_
namespace  proxsuite::linalg::veg::tuple::meta
namespace  proxsuite::linalg::veg::concepts
namespace  proxsuite::linalg::veg::concepts::tuple
namespace  proxsuite::linalg::veg::_detail::_tuple
namespace  proxsuite::linalg::veg::cpo

Macros

#define __VEG_IMPL_BIND(I, Tuple, Identifier)
#define __VEG_IMPL_BIND_ID_SEQ(CV_Auto, Identifiers, Tuple, Tuple_Size, TupleId)
#define VEG_BIND(CV_Auto, Identifiers, Tuple)
#define __VEG_IMPL_LEAF(Tuple, I, ...)
#define __VEG_IMPL_LEAF_MUT(Tuple, I, ...)
#define __VEG_IMPL_LEAF_ONCE(Tuple, I, ...)

Typedefs

template<typename T, usize I>
using proxsuite::linalg::veg::inner_ith = decltype(VEG_DECLVAL(T)[Fix<isize{ I }>{}])
using proxsuite::linalg::veg::tags::Tuplify = tuple::nb::tuplify
template<typename T>
using proxsuite::linalg::veg::tuple::meta::TupleBaseInfo
template<typename T>
using proxsuite::linalg::veg::tuple::meta::is_tuple
template<typename T>
using proxsuite::linalg::veg::tuple::meta::tuple_size
template<usize I, typename T>
using proxsuite::linalg::veg::tuple::meta::tuple_element = typename TupleBaseInfo<T>::template ith<I>

Functions

 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (tuplify)
 proxsuite::linalg::veg::concepts::tuple::VEG_DEF_CONCEPT (typename T, tuple, proxsuite::linalg::veg::tuple::meta::is_tuple< T >::value)
template<usize I, usize... Is, typename... Ts>
VEG_NODISCARD VEG_INLINE constexpr auto proxsuite::linalg::veg::tuple::get (tuple::IndexedTuple< proxsuite::linalg::veg::meta::index_sequence< Is... >, Ts... > const &tup) VEG_NOEXCEPT -> ith< I, Ts... > const &
template<usize I, usize... Is, typename... Ts>
VEG_NODISCARD VEG_INLINE constexpr auto proxsuite::linalg::veg::tuple::get (tuple::IndexedTuple< proxsuite::linalg::veg::meta::index_sequence< Is... >, Ts... > &tup) VEG_NOEXCEPT -> ith< I, Ts... > &
template<usize I, usize... Is, typename... Ts>
VEG_NODISCARD VEG_INLINE constexpr auto proxsuite::linalg::veg::tuple::get (tuple::IndexedTuple< proxsuite::linalg::veg::meta::index_sequence< Is... >, Ts... > const &&tup) VEG_NOEXCEPT -> ith< I, Ts... > const &&
template<usize I, usize... Is, typename... Ts>
VEG_NODISCARD VEG_INLINE constexpr auto proxsuite::linalg::veg::tuple::get (tuple::IndexedTuple< proxsuite::linalg::veg::meta::index_sequence< Is... >, Ts... > &&tup) VEG_NOEXCEPT -> ith< I, Ts... > &&
template<usize... Is, typename... Ts>
static VEG_INLINE constexpr auto proxsuite::linalg::veg::_detail::_tuple::tuple_fwd (tuple::IndexedTuple< meta::index_sequence< Is... >, Ts... > &&tup) VEG_NOEXCEPT -> Tuple< Ts &&... >
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (with)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (zip)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (cat)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (unpack)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (for_each)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (for_each_i)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (map)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (map_i)
 proxsuite::linalg::veg::tuple::VEG_NIEBLOID (deref_assign)

Macro Definition Documentation

◆ __VEG_IMPL_BIND

#define __VEG_IMPL_BIND(I,
Tuple,
Identifier )
Value:

Definition at line 25 of file tuple.hpp.

◆ __VEG_IMPL_BIND_ID_SEQ

#define __VEG_IMPL_BIND_ID_SEQ(CV_Auto,
Identifiers,
Tuple,
Tuple_Size,
TupleId )
Value:
CV_Auto TupleId = Tuple; \
static_assert( \
::std::tuple_size<typename ::proxsuite::linalg::veg::meta::uncvref_t< \
decltype(TupleId)>>::value == (Tuple_Size), \
"wrong number of identifiers"); \
__VEG_PP_TUPLE_FOR_EACH_I(__VEG_IMPL_BIND, TupleId, Identifiers) \
#define VEG_NOM_SEMICOLON
Definition macros.hpp:600
#define __VEG_IMPL_BIND(I, Tuple, Identifier)
Definition tuple.hpp:25

Definition at line 29 of file tuple.hpp.

◆ VEG_BIND

#define VEG_BIND(CV_Auto,
Identifiers,
Tuple )
Value:
Identifiers, \
__VEG_PP_TUPLE_SIZE(Identifiers), \
__VEG_PP_CAT(_dummy_tuple_variable_id_, __LINE__))
#define __VEG_PP_TUPLE_SIZE(Tuple)
#define __VEG_PP_CAT(A,...)
#define __VEG_IMPL_BIND_ID_SEQ(CV_Auto, Identifiers, Tuple, Tuple_Size, TupleId)
Definition tuple.hpp:29

Definition at line 53 of file tuple.hpp.

◆ __VEG_IMPL_LEAF

#define __VEG_IMPL_LEAF(Tuple,
I,
... )
Value:
/* NOLINT */ \
(static_cast<__VA_ARGS__ const&>( \
static_cast< \
(Tuple).inner) \
.leaf_get()))

Definition at line 122 of file tuple.hpp.

◆ __VEG_IMPL_LEAF_MUT

#define __VEG_IMPL_LEAF_MUT(Tuple,
I,
... )
Value:
/* NOLINT */ \
(Tuple).inner) \
.leaf_get())

Definition at line 129 of file tuple.hpp.

◆ __VEG_IMPL_LEAF_ONCE

#define __VEG_IMPL_LEAF_ONCE(Tuple,
I,
... )
Value:
/* NOLINT */ \
(static_cast<__VA_ARGS__&&>( \
(Tuple).inner) \
.leaf_get()))

Definition at line 134 of file tuple.hpp.