Skip to content

Commit 360fced

Browse files
authored
Removing now unused make_map code (#1513)
* Remove now unused make_map * MSVC unique_per_length_info support * Revert "MSVC unique_per_length_info support" This reverts commit d38ffcf. * remove now unused make_reflection_map_impl
1 parent bdfd07f commit 360fced

File tree

1 file changed

+0
-160
lines changed

1 file changed

+0
-160
lines changed

include/glaze/core/reflect.hpp

-160
Original file line numberDiff line numberDiff line change
@@ -399,79 +399,6 @@ namespace glz::detail
399399
}
400400
}
401401

402-
namespace glz::detail
403-
{
404-
template <class T, size_t I>
405-
constexpr auto key_value = pair<sv, value_variant_t<T>>{reflect<T>::keys[I], get<I>(reflect<T>::values)};
406-
407-
template <class T, size_t I>
408-
constexpr sv key_v = reflect<T>::keys[I];
409-
410-
template <class T, bool use_hash_comparison, size_t... I>
411-
constexpr auto make_map_impl(std::index_sequence<I...>)
412-
{
413-
using value_t = value_variant_t<T>;
414-
constexpr auto n = reflect<T>::size;
415-
416-
if constexpr (n == 0) {
417-
return nullptr; // Hack to fix MSVC
418-
// static_assert(false_v<T>, "Empty object map is illogical. Handle empty upstream.");
419-
}
420-
else if constexpr (n == 1) {
421-
return micro_map1<value_t, key_v<T, I>...>{key_value<T, I>...};
422-
}
423-
else if constexpr (n == 2) {
424-
return micro_map2<value_t, key_v<T, I>...>{key_value<T, I>...};
425-
}
426-
else if constexpr (n < 64) // don't even attempt a first character hash if we have too many keys
427-
{
428-
constexpr auto& keys = reflect<T>::keys;
429-
constexpr auto front_desc = single_char_hash<n>(keys);
430-
431-
if constexpr (front_desc.valid) {
432-
return make_single_char_map<value_t, front_desc>({key_value<T, I>...});
433-
}
434-
else {
435-
constexpr single_char_hash_opts rear_hash{.is_front_hash = false};
436-
constexpr auto back_desc = single_char_hash<n, rear_hash>(keys);
437-
438-
if constexpr (back_desc.valid) {
439-
return make_single_char_map<value_t, back_desc>({key_value<T, I>...});
440-
}
441-
else {
442-
constexpr single_char_hash_opts sum_hash{.is_front_hash = true, .is_sum_hash = true};
443-
constexpr auto sum_desc = single_char_hash<n, sum_hash>(keys);
444-
445-
if constexpr (sum_desc.valid) {
446-
return make_single_char_map<value_t, sum_desc>({key_value<T, I>...});
447-
}
448-
else {
449-
if constexpr (n <= naive_map_max_size) {
450-
constexpr auto naive_desc = naive_map_hash<use_hash_comparison, n>(keys);
451-
return glz::detail::make_naive_map<value_t, naive_desc>(std::array{key_value<T, I>...});
452-
}
453-
else {
454-
return glz::detail::normal_map<sv, value_t, n, use_hash_comparison>(
455-
std::array{key_value<T, I>...});
456-
}
457-
}
458-
}
459-
}
460-
}
461-
else {
462-
return glz::detail::normal_map<sv, value_t, n, use_hash_comparison>(std::array{key_value<T, I>...});
463-
}
464-
}
465-
466-
template <class T, bool use_hash_comparison = false>
467-
requires(!reflectable<T>)
468-
constexpr auto make_map()
469-
{
470-
constexpr auto indices = std::make_index_sequence<reflect<T>::size>{};
471-
return make_map_impl<decay_keep_volatile_t<T>, use_hash_comparison>(indices);
472-
}
473-
}
474-
475402
namespace glz
476403
{
477404
template <auto Enum>
@@ -552,93 +479,6 @@ namespace glz
552479
// add the folllwing constructor to your type:
553480
// my_struct(glz::make_reflectable) {}
554481
using make_reflectable = std::initializer_list<dummy>;
555-
556-
namespace detail
557-
{
558-
template <class Tuple>
559-
using reflection_value_tuple_variant_t = typename tuple_ptr_variant<Tuple>::type;
560-
561-
template <class T, size_t I>
562-
struct named_member
563-
{
564-
static constexpr sv value = glz::get<I>(member_names<T>);
565-
};
566-
567-
template <class T, bool use_hash_comparison, size_t... I>
568-
constexpr auto make_reflection_map_impl(std::index_sequence<I...>)
569-
{
570-
using V = decltype(to_tuple(std::declval<T>()));
571-
constexpr auto n = glz::tuple_size_v<V>;
572-
constexpr auto members = member_names<T>;
573-
static_assert(members.size() == n);
574-
575-
using value_t = reflection_value_tuple_variant_t<V>;
576-
577-
if constexpr (n == 0) {
578-
return nullptr; // Hack to fix MSVC
579-
// static_assert(false_v<T>, "Empty object map is illogical. Handle empty upstream.");
580-
}
581-
else if constexpr (n == 1) {
582-
return micro_map1<value_t, named_member<T, I>::value...>{
583-
pair<sv, value_t>{glz::get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...};
584-
}
585-
else if constexpr (n == 2) {
586-
return micro_map2<value_t, named_member<T, I>::value...>{
587-
pair<sv, value_t>{glz::get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...};
588-
}
589-
else if constexpr (n < 64) // don't even attempt a first character hash if we have too many keys
590-
{
591-
constexpr auto& keys = member_names<T>;
592-
constexpr auto front_desc = single_char_hash<n>(keys);
593-
594-
if constexpr (front_desc.valid) {
595-
return make_single_char_map<value_t, front_desc>(
596-
{{glz::get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
597-
}
598-
else {
599-
constexpr single_char_hash_opts rear_hash{.is_front_hash = false};
600-
constexpr auto back_desc = single_char_hash<n, rear_hash>(keys);
601-
602-
if constexpr (back_desc.valid) {
603-
return make_single_char_map<value_t, back_desc>(
604-
{{get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
605-
}
606-
else {
607-
constexpr single_char_hash_opts sum_hash{.is_front_hash = true, .is_sum_hash = true};
608-
constexpr auto sum_desc = single_char_hash<n, sum_hash>(keys);
609-
610-
if constexpr (sum_desc.valid) {
611-
return make_single_char_map<value_t, sum_desc>(
612-
{{get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
613-
}
614-
else {
615-
if constexpr (n <= naive_map_max_size) {
616-
constexpr auto naive_desc = naive_map_hash<use_hash_comparison, n>(keys);
617-
return glz::detail::make_naive_map<value_t, naive_desc>(std::array{
618-
pair<sv, value_t>{get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
619-
}
620-
else {
621-
return glz::detail::normal_map<sv, value_t, n, use_hash_comparison>(std::array{
622-
pair<sv, value_t>{get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
623-
}
624-
}
625-
}
626-
}
627-
}
628-
else {
629-
return glz::detail::normal_map<sv, value_t, n, use_hash_comparison>(
630-
std::array{pair<sv, value_t>{get<I>(members), std::add_pointer_t<glz::tuple_element_t<I, V>>{}}...});
631-
}
632-
}
633-
634-
template <reflectable T, bool use_hash_comparison = false>
635-
constexpr auto make_map()
636-
requires(!glaze_t<T> && !array_t<T> && std::is_aggregate_v<std::remove_cvref_t<T>>)
637-
{
638-
constexpr auto indices = std::make_index_sequence<count_members<T>>{};
639-
return make_reflection_map_impl<decay_keep_volatile_t<T>, use_hash_comparison>(indices);
640-
}
641-
}
642482
}
643483

644484
namespace glz::detail

0 commit comments

Comments
 (0)