Skip to content

Commit 56d453d

Browse files
committed
Simplify reverse tuple iteration
1 parent f4af812 commit 56d453d

File tree

3 files changed

+4
-64
lines changed

3 files changed

+4
-64
lines changed

dev/functional/index_sequence_util.h

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -17,37 +17,6 @@ namespace sqlite_orm {
1717
return I;
1818
}
1919

20-
#ifdef SQLITE_ORM_RELAXED_CONSTEXPR_SUPPORTED
21-
/**
22-
* Reorder the values of an index_sequence according to the positions from a second sequence.
23-
*/
24-
template<size_t... Value, size_t... IdxOfValue>
25-
SQLITE_ORM_CONSTEVAL auto reorder_index_sequence(std::index_sequence<Value...>,
26-
std::index_sequence<IdxOfValue...>) {
27-
constexpr std::array<size_t, sizeof...(Value)> values{Value...};
28-
return std::index_sequence<values[sizeof...(Value) - 1u - IdxOfValue]...>{};
29-
}
30-
31-
template<size_t Value, size_t IdxOfValue>
32-
SQLITE_ORM_CONSTEVAL std::index_sequence<Value> reorder_index_sequence(std::index_sequence<Value>,
33-
std::index_sequence<IdxOfValue>) {
34-
return {};
35-
}
36-
37-
inline SQLITE_ORM_CONSTEVAL std::index_sequence<> reorder_index_sequence(std::index_sequence<>,
38-
std::index_sequence<>) {
39-
return {};
40-
}
41-
42-
/**
43-
* Reverse the values of an index_sequence.
44-
*/
45-
template<size_t... Idx>
46-
SQLITE_ORM_CONSTEVAL auto reverse_index_sequence(std::index_sequence<Idx...>) {
47-
return reorder_index_sequence(std::index_sequence<Idx...>{}, std::make_index_sequence<sizeof...(Idx)>{});
48-
}
49-
#endif
50-
5120
template<class... Seq>
5221
struct flatten_idxseq {
5322
using type = std::index_sequence<>;

dev/tuple_helper/tuple_iteration.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ namespace sqlite_orm {
3333
template<bool reversed = false, class Tpl, size_t... Idx, class L>
3434
void iterate_tuple(const Tpl& tpl, std::index_sequence<Idx...>, L&& lambda) {
3535
if constexpr(reversed) {
36-
iterate_tuple(tpl, reverse_index_sequence(std::index_sequence<Idx...>{}), std::forward<L>(lambda));
36+
int sink;
37+
((lambda(std::get<Idx>(tpl)), sink) = ... = 0);
3738
} else {
3839
(lambda(std::get<Idx>(tpl)), ...);
3940
}

include/sqlite_orm/sqlite_orm.h

Lines changed: 2 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1065,37 +1065,6 @@ namespace sqlite_orm {
10651065
return I;
10661066
}
10671067

1068-
#ifdef SQLITE_ORM_RELAXED_CONSTEXPR_SUPPORTED
1069-
/**
1070-
* Reorder the values of an index_sequence according to the positions from a second sequence.
1071-
*/
1072-
template<size_t... Value, size_t... IdxOfValue>
1073-
SQLITE_ORM_CONSTEVAL auto reorder_index_sequence(std::index_sequence<Value...>,
1074-
std::index_sequence<IdxOfValue...>) {
1075-
constexpr std::array<size_t, sizeof...(Value)> values{Value...};
1076-
return std::index_sequence<values[sizeof...(Value) - 1u - IdxOfValue]...>{};
1077-
}
1078-
1079-
template<size_t Value, size_t IdxOfValue>
1080-
SQLITE_ORM_CONSTEVAL std::index_sequence<Value> reorder_index_sequence(std::index_sequence<Value>,
1081-
std::index_sequence<IdxOfValue>) {
1082-
return {};
1083-
}
1084-
1085-
inline SQLITE_ORM_CONSTEVAL std::index_sequence<> reorder_index_sequence(std::index_sequence<>,
1086-
std::index_sequence<>) {
1087-
return {};
1088-
}
1089-
1090-
/**
1091-
* Reverse the values of an index_sequence.
1092-
*/
1093-
template<size_t... Idx>
1094-
SQLITE_ORM_CONSTEVAL auto reverse_index_sequence(std::index_sequence<Idx...>) {
1095-
return reorder_index_sequence(std::index_sequence<Idx...>{}, std::make_index_sequence<sizeof...(Idx)>{});
1096-
}
1097-
#endif
1098-
10991068
template<class... Seq>
11001069
struct flatten_idxseq {
11011070
using type = std::index_sequence<>;
@@ -10049,7 +10018,8 @@ namespace sqlite_orm {
1004910018
template<bool reversed = false, class Tpl, size_t... Idx, class L>
1005010019
void iterate_tuple(const Tpl& tpl, std::index_sequence<Idx...>, L&& lambda) {
1005110020
if constexpr(reversed) {
10052-
iterate_tuple(tpl, reverse_index_sequence(std::index_sequence<Idx...>{}), std::forward<L>(lambda));
10021+
int sink;
10022+
((lambda(std::get<Idx>(tpl)), sink) = ... = 0);
1005310023
} else {
1005410024
(lambda(std::get<Idx>(tpl)), ...);
1005510025
}

0 commit comments

Comments
 (0)