Skip to content

Commit 7c3e3a8

Browse files
committed
feat(ranges): start adopting ranges
1 parent 87258e0 commit 7c3e3a8

19 files changed

+166
-237
lines changed

include/graphqlservice/GraphQLClient.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include <algorithm>
1414
#include <iterator>
1515
#include <optional>
16+
#include <ranges>
1617
#include <stdexcept>
1718
#include <vector>
1819

@@ -167,7 +168,7 @@ struct ModifiedVariable
167168
response::Value result { response::Type::List };
168169

169170
result.reserve(listValue.size());
170-
std::for_each(listValue.begin(), listValue.end(), [&result](auto& value) {
171+
std::ranges::for_each(listValue, [&result](auto& value) {
171172
result.emplace_back(serialize<Other...>(std::move(value)));
172173
});
173174
listValue.clear();
@@ -218,7 +219,7 @@ struct ModifiedVariable
218219
{
219220
typename VariableTraits<Type, Modifier, Other...>::type result(listValue.size());
220221

221-
std::transform(listValue.cbegin(), listValue.cend(), result.begin(), duplicate<Other...>);
222+
std::ranges::transform(listValue, result.begin(), duplicate<Other...>);
222223

223224
return result;
224225
}
@@ -322,8 +323,7 @@ struct ModifiedResponse
322323
auto listValue = response.release<response::ListType>();
323324

324325
result.reserve(listValue.size());
325-
std::transform(listValue.begin(),
326-
listValue.end(),
326+
std::ranges::transform(listValue,
327327
std::back_inserter(result),
328328
[](response::Value& value) {
329329
return parse<Other...>(std::move(value));

include/graphqlservice/GraphQLService.h

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
#include <memory>
2323
#include <mutex>
2424
#include <optional>
25+
#include <ranges>
2526
#include <sstream>
2627
#include <stdexcept>
2728
#include <string>
@@ -758,8 +759,8 @@ struct ModifiedArgument
758759
typename ArgumentTraits<Type, Modifier, Other...>::type result(values.size());
759760
const auto& elements = values.get<response::ListType>();
760761

761-
std::transform(elements.cbegin(),
762-
elements.cend(),
762+
std::transform(elements.begin(),
763+
elements.end(),
763764
result.begin(),
764765
[name](const response::Value& element) {
765766
response::Value single(response::Type::Map);
@@ -831,7 +832,7 @@ struct ModifiedArgument
831832
{
832833
typename ArgumentTraits<Type, Modifier, Other...>::type result(listValue.size());
833834

834-
std::transform(listValue.cbegin(), listValue.cend(), result.begin(), duplicate<Other...>);
835+
std::ranges::transform(listValue, result.begin(), duplicate<Other...>);
835836

836837
return result;
837838
}

samples/client/benchmark.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
#include <iostream>
88
#include <iterator>
99
#include <numeric>
10+
#include <ranges>
1011
#include <stdexcept>
1112
#include <string>
1213
#include <string_view>
@@ -45,7 +46,7 @@ void outputOverview(
4546
void outputSegment(
4647
std::string_view name, std::vector<std::chrono::steady_clock::duration>& durations) noexcept
4748
{
48-
std::sort(durations.begin(), durations.end());
49+
std::ranges::sort(durations);
4950

5051
const auto count = durations.size();
5152
const auto total =

samples/learn/DroidData.cpp

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,15 @@ void Droid::addFriends(
2121
{
2222
friends_.resize(friends.size());
2323

24-
std::transform(friends.begin(),
25-
friends.end(),
26-
friends_.begin(),
27-
[](const auto& spFriend) noexcept {
28-
return std::visit(
29-
[](const auto& hero) noexcept {
30-
return WeakHero {
31-
std::weak_ptr<typename std::decay_t<decltype(hero)>::element_type> { hero }
32-
};
33-
},
34-
spFriend);
35-
});
24+
std::ranges::transform(friends, friends_.begin(), [](const auto& spFriend) noexcept {
25+
return std::visit(
26+
[](const auto& hero) noexcept {
27+
return WeakHero {
28+
std::weak_ptr<typename std::decay_t<decltype(hero)>::element_type> { hero }
29+
};
30+
},
31+
spFriend);
32+
});
3633
}
3734

3835
const response::IdType& Droid::getId() const noexcept
@@ -49,12 +46,9 @@ std::optional<std::vector<std::shared_ptr<object::Character>>> Droid::getFriends
4946
{
5047
std::vector<std::shared_ptr<object::Character>> result(friends_.size());
5148

52-
std::transform(friends_.begin(),
53-
friends_.end(),
54-
result.begin(),
55-
[](const auto& wpFriend) noexcept {
56-
return make_hero(wpFriend);
57-
});
49+
std::ranges::transform(friends_, result.begin(), [](const auto& wpFriend) noexcept {
50+
return make_hero(wpFriend);
51+
});
5852
result.erase(std::remove(result.begin(), result.end(), std::shared_ptr<object::Character> {}),
5953
result.end());
6054

@@ -65,12 +59,9 @@ std::optional<std::vector<std::optional<Episode>>> Droid::getAppearsIn() const n
6559
{
6660
std::vector<std::optional<Episode>> result(appearsIn_.size());
6761

68-
std::transform(appearsIn_.begin(),
69-
appearsIn_.end(),
70-
result.begin(),
71-
[](const auto& entry) noexcept {
72-
return std::make_optional(entry);
73-
});
62+
std::ranges::transform(appearsIn_, result.begin(), [](const auto& entry) noexcept {
63+
return std::make_optional(entry);
64+
});
7465

7566
return result.empty() ? std::nullopt : std::make_optional(std::move(result));
7667
}

samples/learn/HumanData.cpp

Lines changed: 15 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,15 @@ void Human::addFriends(std::vector<SharedHero> friends) noexcept
2020
{
2121
friends_.resize(friends.size());
2222

23-
std::transform(friends.begin(),
24-
friends.end(),
25-
friends_.begin(),
26-
[](const auto& spFriend) noexcept {
27-
return std::visit(
28-
[](const auto& hero) noexcept {
29-
return WeakHero {
30-
std::weak_ptr<typename std::decay_t<decltype(hero)>::element_type> { hero }
31-
};
32-
},
33-
spFriend);
34-
});
23+
std::ranges::transform(friends, friends_.begin(), [](const auto& spFriend) noexcept {
24+
return std::visit(
25+
[](const auto& hero) noexcept {
26+
return WeakHero {
27+
std::weak_ptr<typename std::decay_t<decltype(hero)>::element_type> { hero }
28+
};
29+
},
30+
spFriend);
31+
});
3532
}
3633

3734
const response::IdType& Human::getId() const noexcept
@@ -48,12 +45,9 @@ std::optional<std::vector<std::shared_ptr<object::Character>>> Human::getFriends
4845
{
4946
std::vector<std::shared_ptr<object::Character>> result(friends_.size());
5047

51-
std::transform(friends_.begin(),
52-
friends_.end(),
53-
result.begin(),
54-
[](const auto& wpFriend) noexcept {
55-
return make_hero(wpFriend);
56-
});
48+
std::ranges::transform(friends_, result.begin(), [](const auto& wpFriend) noexcept {
49+
return make_hero(wpFriend);
50+
});
5751
result.erase(std::remove(result.begin(), result.end(), std::shared_ptr<object::Character> {}),
5852
result.end());
5953

@@ -64,12 +58,9 @@ std::optional<std::vector<std::optional<Episode>>> Human::getAppearsIn() const n
6458
{
6559
std::vector<std::optional<Episode>> result(appearsIn_.size());
6660

67-
std::transform(appearsIn_.begin(),
68-
appearsIn_.end(),
69-
result.begin(),
70-
[](const auto& entry) noexcept {
71-
return std::make_optional(entry);
72-
});
61+
std::ranges::transform(appearsIn_, result.begin(), [](const auto& entry) noexcept {
62+
return std::make_optional(entry);
63+
});
7364

7465
return result.empty() ? std::nullopt : std::make_optional(std::move(result));
7566
}

samples/today/TodayMock.cpp

Lines changed: 24 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
#include <chrono>
1616
#include <iostream>
1717
#include <mutex>
18+
#include <ranges>
1819

1920
namespace graphql::today {
2021

@@ -24,7 +25,7 @@ const response::IdType& getFakeAppointmentId() noexcept
2425
std::string_view fakeIdString { "fakeAppointmentId" };
2526
response::IdType result(fakeIdString.size());
2627

27-
std::copy(fakeIdString.cbegin(), fakeIdString.cend(), result.begin());
28+
std::ranges::copy(fakeIdString, result.begin());
2829

2930
return response::IdType { std::move(result) };
3031
}();
@@ -38,7 +39,7 @@ const response::IdType& getFakeTaskId() noexcept
3839
std::string_view fakeIdString { "fakeTaskId" };
3940
response::IdType result(fakeIdString.size());
4041

41-
std::copy(fakeIdString.cbegin(), fakeIdString.cend(), result.begin());
42+
std::ranges::copy(fakeIdString, result.begin());
4243

4344
return response::IdType { std::move(result) };
4445
}();
@@ -52,7 +53,7 @@ const response::IdType& getFakeFolderId() noexcept
5253
std::string_view fakeIdString { "fakeFolderId" };
5354
response::IdType result(fakeIdString.size());
5455

55-
std::copy(fakeIdString.cbegin(), fakeIdString.cend(), result.begin());
56+
std::ranges::copy(fakeIdString, result.begin());
5657

5758
return response::IdType { std::move(result) };
5859
}();
@@ -198,8 +199,7 @@ std::optional<std::vector<std::shared_ptr<object::AppointmentEdge>>> Appointment
198199
auto result = std::make_optional<std::vector<std::shared_ptr<object::AppointmentEdge>>>(
199200
_appointments.size());
200201

201-
std::transform(_appointments.cbegin(),
202-
_appointments.cend(),
202+
std::ranges::transform(_appointments,
203203
result->begin(),
204204
[](const std::shared_ptr<Appointment>& node) {
205205
return std::make_shared<object::AppointmentEdge>(
@@ -268,12 +268,9 @@ std::optional<std::vector<std::shared_ptr<object::TaskEdge>>> TaskConnection::ge
268268
{
269269
auto result = std::make_optional<std::vector<std::shared_ptr<object::TaskEdge>>>(_tasks.size());
270270

271-
std::transform(_tasks.cbegin(),
272-
_tasks.cend(),
273-
result->begin(),
274-
[](const std::shared_ptr<Task>& node) {
275-
return std::make_shared<object::TaskEdge>(std::make_shared<TaskEdge>(node));
276-
});
271+
std::ranges::transform(_tasks, result->begin(), [](const std::shared_ptr<Task>& node) {
272+
return std::make_shared<object::TaskEdge>(std::make_shared<TaskEdge>(node));
273+
});
277274

278275
return result;
279276
}
@@ -338,12 +335,9 @@ std::optional<std::vector<std::shared_ptr<object::FolderEdge>>> FolderConnection
338335
auto result =
339336
std::make_optional<std::vector<std::shared_ptr<object::FolderEdge>>>(_folders.size());
340337

341-
std::transform(_folders.cbegin(),
342-
_folders.cend(),
343-
result->begin(),
344-
[](const std::shared_ptr<Folder>& node) {
345-
return std::make_shared<object::FolderEdge>(std::make_shared<FolderEdge>(node));
346-
});
338+
std::ranges::transform(_folders, result->begin(), [](const std::shared_ptr<Folder>& node) {
339+
return std::make_shared<object::FolderEdge>(std::make_shared<FolderEdge>(node));
340+
});
347341

348342
return result;
349343
}
@@ -708,12 +702,9 @@ std::vector<std::shared_ptr<object::Appointment>> Query::getAppointmentsById(
708702
{
709703
std::vector<std::shared_ptr<object::Appointment>> result(ids.size());
710704

711-
std::transform(ids.cbegin(),
712-
ids.cend(),
713-
result.begin(),
714-
[this, &params](const response::IdType& id) {
715-
return std::make_shared<object::Appointment>(findAppointment(params, id));
716-
});
705+
std::ranges::transform(ids, result.begin(), [this, &params](const response::IdType& id) {
706+
return std::make_shared<object::Appointment>(findAppointment(params, id));
707+
});
717708

718709
return result;
719710
}
@@ -723,12 +714,9 @@ std::vector<std::shared_ptr<object::Task>> Query::getTasksById(
723714
{
724715
std::vector<std::shared_ptr<object::Task>> result(ids.size());
725716

726-
std::transform(ids.cbegin(),
727-
ids.cend(),
728-
result.begin(),
729-
[this, &params](const response::IdType& id) {
730-
return std::make_shared<object::Task>(findTask(params, id));
731-
});
717+
std::ranges::transform(ids, result.begin(), [this, &params](const response::IdType& id) {
718+
return std::make_shared<object::Task>(findTask(params, id));
719+
});
732720

733721
return result;
734722
}
@@ -738,12 +726,9 @@ std::vector<std::shared_ptr<object::Folder>> Query::getUnreadCountsById(
738726
{
739727
std::vector<std::shared_ptr<object::Folder>> result(ids.size());
740728

741-
std::transform(ids.cbegin(),
742-
ids.cend(),
743-
result.begin(),
744-
[this, &params](const response::IdType& id) {
745-
return std::make_shared<object::Folder>(findUnreadCount(params, id));
746-
});
729+
std::ranges::transform(ids, result.begin(), [this, &params](const response::IdType& id) {
730+
return std::make_shared<object::Folder>(findUnreadCount(params, id));
731+
});
747732

748733
return result;
749734
}
@@ -777,13 +762,10 @@ std::vector<std::shared_ptr<object::UnionType>> Query::getAnyType(
777762

778763
std::vector<std::shared_ptr<object::UnionType>> result(_appointments.size());
779764

780-
std::transform(_appointments.cbegin(),
781-
_appointments.cend(),
782-
result.begin(),
783-
[](const auto& appointment) noexcept {
784-
return std::make_shared<object::UnionType>(
785-
std::make_shared<object::Appointment>(appointment));
786-
});
765+
std::ranges::transform(_appointments, result.begin(), [](const auto& appointment) noexcept {
766+
return std::make_shared<object::UnionType>(
767+
std::make_shared<object::Appointment>(appointment));
768+
});
787769

788770
return result;
789771
}

samples/today/benchmark.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
#include <iostream>
77
#include <iterator>
88
#include <numeric>
9+
#include <ranges>
910
#include <stdexcept>
1011
#include <string>
1112
#include <string_view>
@@ -43,7 +44,7 @@ void outputOverview(
4344
void outputSegment(
4445
std::string_view name, std::vector<std::chrono::steady_clock::duration>& durations) noexcept
4546
{
46-
std::sort(durations.begin(), durations.end());
47+
std::ranges::sort(durations);
4748

4849
const auto count = durations.size();
4950
const auto total =

src/ClientGenerator.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,18 +1120,15 @@ response::Value Variable<)cpp"
11201120
std::vector<std::pair<std::string_view, std::string_view>> sortedValues(
11211121
enumValues.size());
11221122

1123-
std::transform(enumValues.cbegin(),
1124-
enumValues.cend(),
1123+
std::ranges::transform(enumValues,
11251124
sortedValues.begin(),
11261125
[](const auto& value) noexcept {
11271126
return std::make_pair(value->name(),
11281127
SchemaLoader::getSafeCppName(value->name()));
11291128
});
1130-
std::sort(sortedValues.begin(),
1131-
sortedValues.end(),
1132-
[](const auto& lhs, const auto& rhs) noexcept {
1133-
return internal::shorter_or_less {}(lhs.first, rhs.first);
1134-
});
1129+
std::ranges::sort(sortedValues, [](const auto& lhs, const auto& rhs) noexcept {
1130+
return internal::shorter_or_less {}(lhs.first, rhs.first);
1131+
});
11351132

11361133
bool firstValue = true;
11371134

0 commit comments

Comments
 (0)