1 #ifndef DataFormats_Portable_interface_PortableCollectionCommon_h 2 #define DataFormats_Portable_interface_PortableCollectionCommon_h 11 template <std::
size_t Start, std::
size_t End, std::
size_t Inc = 1,
typename F>
14 f(std::integral_constant<std::size_t, Start>());
15 constexpr_for<Start + Inc, End, Inc>(std::forward<F>(
f));
19 template <std::
size_t Idx,
typename T>
23 template <std::
size_t N>
26 static_assert(
N >=
Idx);
37 template <std::size_t
Idx,
typename T,
typename... Args>
42 template <std::
size_t N>
48 template <std::
size_t Idx,
typename T>
53 template <std::
size_t N>
55 static_assert(
N ==
Idx + 1);
59 template <
typename... Args>
63 template <std::size_t
Idx,
typename... Args>
67 template <
typename T,
typename... Args>
71 template <
typename... Args>
76 template <
typename T,
typename Tuple>
79 template <
typename T,
typename... Args>
81 static_assert(typeCount<T, Args...> == 0,
"the requested type appears more than once among the arguments");
85 template <
typename T,
typename U,
typename... Args>
87 static_assert(not std::is_same_v<T, U>);
88 static_assert(typeCount<T, Args...> == 1,
"the requested type does not appear among the arguments");
94 template <
typename T,
typename... Args>
98 template <
typename T,
typename... Args>
103 #endif // DataFormats_Portable_interface_PortableCollectionCommon_h typename Layout::ConstView ConstView
typename std::tuple_element< Idx, std::tuple< Args... > >::type TypeResolver
CollectionImpl(std::byte *buffer, std::array< int32_t, N > const &sizes)
constexpr std::size_t typeCount
CollectionImpl(std::byte *buffer, int32_t elements)
constexpr std::size_t membersCount
typename Layout::View View
CollectionLeaf(std::byte *buffer, std::array< int32_t, N > const &sizes)
CollectionLeaf(std::byte *buffer, int32_t elements)
constexpr void constexpr_for(F &&f)
constexpr std::size_t typeIndex
static uInt32 F(BLOWFISH_CTX *ctx, uInt32 x)
CollectionImpl(std::byte *buffer, int32_t elements)
CollectionImpl(std::byte *buffer, std::array< int32_t, N > const &sizes)