2024-05-31 22:59:00 -04:00
|
|
|
#ifndef RFL_INTERNAL_DEFINENAMEDTUPLE_HPP_
|
|
|
|
#define RFL_INTERNAL_DEFINENAMEDTUPLE_HPP_
|
|
|
|
|
|
|
|
#include "../NamedTuple.hpp"
|
|
|
|
|
|
|
|
namespace rfl {
|
2024-06-08 14:10:59 -04:00
|
|
|
namespace internal {
|
|
|
|
|
|
|
|
template <class... FieldTypes>
|
|
|
|
struct define_named_tuple;
|
|
|
|
|
|
|
|
/// Allows you to combine several named tuples and/or additional fields.
|
|
|
|
/// Recursive case - all types are fields.
|
|
|
|
template <class Head, class... Tail>
|
|
|
|
struct define_named_tuple<Head, Tail...> {
|
|
|
|
using type = typename define_named_tuple<NamedTuple<Head>, Tail...>::type;
|
|
|
|
};
|
|
|
|
|
|
|
|
/// Allows you to combine several named tuples and/or additional fields.
|
|
|
|
/// Recursive case - first type is NamedTuple, second type is field.
|
|
|
|
template <class Head, class... TupContent, class... Tail>
|
|
|
|
struct define_named_tuple<NamedTuple<TupContent...>, Head, Tail...> {
|
2024-06-16 00:13:15 -04:00
|
|
|
using type = typename define_named_tuple<NamedTuple<TupContent..., Head>, Tail...>::type;
|
2024-06-08 14:10:59 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
/// Allows you to combine several named tuples and/or additional fields.
|
|
|
|
/// Recursive case - first type is NamedTuple, second type is also
|
|
|
|
/// NamedTuple.
|
|
|
|
template <class... TupContent, class... TupContent2, class... Tail>
|
2024-06-16 00:13:15 -04:00
|
|
|
struct define_named_tuple<NamedTuple<TupContent...>, NamedTuple<TupContent2...>, Tail...> {
|
|
|
|
using type =
|
|
|
|
typename define_named_tuple<NamedTuple<TupContent..., TupContent2...>, Tail...>::type;
|
2024-06-08 14:10:59 -04:00
|
|
|
};
|
|
|
|
|
|
|
|
/// Allows you to combine several named tuples and/or additional fields.
|
|
|
|
template <class... TupContent>
|
|
|
|
struct define_named_tuple<NamedTuple<TupContent...>> {
|
|
|
|
using type = NamedTuple<TupContent...>;
|
|
|
|
};
|
|
|
|
|
|
|
|
} // namespace internal
|
|
|
|
} // namespace rfl
|
2024-05-31 22:59:00 -04:00
|
|
|
|
|
|
|
#endif
|