proxsuite 0.6.7
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... > >
 

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:
/* NOLINT */ \
auto&& Identifier /* NOLINT */ = \
#define VEG_FWD(X)
Definition macros.hpp:569

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, \
Tuple, \
__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.