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:
2025-12-06 10:55:46 -05:00
parent 2b5abeae58
commit ec13264050
365 changed files with 63946 additions and 357 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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