feat(reflect-cpp): Switched from glaze -> reflect cpp
A bug was discovered in glaze which prevented valid toml output. We have switched to toml++ and reflect-cpp. The interface has remained the same so this should not break any code
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
#ifndef RFL_INTERNAL_VARIANT_FIND_MAX_SIZE_HPP_
|
||||
#define RFL_INTERNAL_VARIANT_FIND_MAX_SIZE_HPP_
|
||||
|
||||
namespace rfl::internal::variant {
|
||||
|
||||
template <class T>
|
||||
struct SizeWrapper {
|
||||
using Type = T;
|
||||
static constexpr unsigned long size_ = sizeof(T);
|
||||
};
|
||||
|
||||
template <class T1, class T2>
|
||||
consteval auto operator|(const SizeWrapper<T1>& _s1,
|
||||
const SizeWrapper<T2>& _s2) {
|
||||
if constexpr (sizeof(T2) > sizeof(T1)) {
|
||||
return _s2;
|
||||
} else {
|
||||
return _s1;
|
||||
}
|
||||
}
|
||||
|
||||
template <class Head, class... Tail>
|
||||
consteval auto find_max_size() {
|
||||
return (SizeWrapper<Head>{} | ... | SizeWrapper<Tail>{});
|
||||
}
|
||||
|
||||
} // namespace rfl::internal::variant
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,19 @@
|
||||
#ifndef RFL_INTERNAL_VARIANT_IS_ALTERNATIVE_TYPE_HPP_
|
||||
#define RFL_INTERNAL_VARIANT_IS_ALTERNATIVE_TYPE_HPP_
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "../element_index.hpp"
|
||||
|
||||
namespace rfl::internal::variant {
|
||||
|
||||
template <class T, class... AlternativeTypes>
|
||||
static constexpr bool is_alternative_type() {
|
||||
return internal::element_index<std::remove_cvref_t<T>,
|
||||
std::remove_cvref_t<AlternativeTypes>...>() !=
|
||||
-1;
|
||||
}
|
||||
|
||||
} // namespace rfl::internal::variant
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,17 @@
|
||||
#ifndef RFL_INTERNAL_VARIANT_IS_CONVERTIBLE_TO_HPP_
|
||||
#define RFL_INTERNAL_VARIANT_IS_CONVERTIBLE_TO_HPP_
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "../element_index.hpp"
|
||||
|
||||
namespace rfl::internal::variant {
|
||||
|
||||
template <class T, class... AlternativeTypes>
|
||||
static constexpr bool is_convertible_to() {
|
||||
return std::disjunction_v<std::is_convertible<T, AlternativeTypes>...>;
|
||||
}
|
||||
|
||||
} // namespace rfl::internal::variant
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,16 @@
|
||||
#ifndef RFL_INTERNAL_VARIANT_RESULT_T_HPP_
|
||||
#define RFL_INTERNAL_VARIANT_RESULT_T_HPP_
|
||||
|
||||
#include <type_traits>
|
||||
|
||||
#include "../nth_element_t.hpp"
|
||||
|
||||
namespace rfl::internal::variant {
|
||||
|
||||
template <class F, class... AlternativeTypes>
|
||||
using result_t = std::remove_cv_t<std::invoke_result_t<
|
||||
std::remove_cvref_t<F>, internal::nth_element_t<0, AlternativeTypes...>&>>;
|
||||
|
||||
} // namespace rfl::internal::variant
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user