Skip to content

Commit bbd0ebe

Browse files
committed
Make field arguments use move semantics as well
1 parent 93d25f3 commit bbd0ebe

File tree

7 files changed

+51
-54
lines changed

7 files changed

+51
-54
lines changed

Introspection.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ std::unique_ptr<std::string> BaseType::getDescription() const
9292
return nullptr;
9393
}
9494

95-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> BaseType::getFields(std::unique_ptr<bool> /*includeDeprecated*/) const
95+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> BaseType::getFields(std::unique_ptr<bool>&& /*includeDeprecated*/) const
9696
{
9797
return nullptr;
9898
}
@@ -107,7 +107,7 @@ std::unique_ptr<std::vector<std::shared_ptr<object::__Type>>> BaseType::getPossi
107107
return nullptr;
108108
}
109109

110-
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> BaseType::getEnumValues(std::unique_ptr<bool> /*includeDeprecated*/) const
110+
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> BaseType::getEnumValues(std::unique_ptr<bool>&& /*includeDeprecated*/) const
111111
{
112112
return nullptr;
113113
}
@@ -166,7 +166,7 @@ std::unique_ptr<std::string> ObjectType::getName() const
166166
return result;
167167
}
168168

169-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> ObjectType::getFields(std::unique_ptr<bool> /*includeDeprecated*/) const
169+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> ObjectType::getFields(std::unique_ptr<bool>&& /*includeDeprecated*/) const
170170
{
171171
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result(new std::vector<std::shared_ptr<object::__Field>>(_fields.size()));
172172

@@ -206,7 +206,7 @@ std::unique_ptr<std::string> InterfaceType::getName() const
206206
return result;
207207
}
208208

209-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> InterfaceType::getFields(std::unique_ptr<bool> /*includeDeprecated*/) const
209+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> InterfaceType::getFields(std::unique_ptr<bool>&& /*includeDeprecated*/) const
210210
{
211211
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result(new std::vector<std::shared_ptr<object::__Field>>(_fields.size()));
212212

@@ -273,7 +273,7 @@ std::unique_ptr<std::string> EnumType::getName() const
273273
return result;
274274
}
275275

276-
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> EnumType::getEnumValues(std::unique_ptr<bool> includeDeprecated) const
276+
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> EnumType::getEnumValues(std::unique_ptr<bool>&& /*includeDeprecated*/) const
277277
{
278278
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> result(new std::vector<std::shared_ptr<object::__EnumValue>>(_enumValues.size()));
279279

Introspection.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ class BaseType : public object::__Type
5454
// Accessors
5555
std::unique_ptr<std::string> getName() const override;
5656
std::unique_ptr<std::string> getDescription() const override;
57-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool> includeDeprecated) const override;
57+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool>&& includeDeprecated) const override;
5858
std::unique_ptr<std::vector<std::shared_ptr<object::__Type>>> getInterfaces() const override;
5959
std::unique_ptr<std::vector<std::shared_ptr<object::__Type>>> getPossibleTypes() const override;
60-
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> getEnumValues(std::unique_ptr<bool> includeDeprecated) const override;
60+
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> getEnumValues(std::unique_ptr<bool>&& includeDeprecated) const override;
6161
std::unique_ptr<std::vector<std::shared_ptr<object::__InputValue>>> getInputFields() const override;
6262
std::shared_ptr<object::__Type> getOfType() const override;
6363

@@ -89,7 +89,7 @@ class ObjectType : public BaseType
8989
// Accessors
9090
__TypeKind getKind() const override;
9191
std::unique_ptr<std::string> getName() const override;
92-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool> includeDeprecated) const override;
92+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool>&& includeDeprecated) const override;
9393
std::unique_ptr<std::vector<std::shared_ptr<object::__Type>>> getInterfaces() const override;
9494

9595
private:
@@ -109,7 +109,7 @@ class InterfaceType : public BaseType
109109
// Accessors
110110
__TypeKind getKind() const override;
111111
std::unique_ptr<std::string> getName() const override;
112-
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool> includeDeprecated) const override;
112+
std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> getFields(std::unique_ptr<bool>&& includeDeprecated) const override;
113113

114114
private:
115115
const std::string _name;
@@ -145,7 +145,7 @@ class EnumType : public BaseType
145145
// Accessors
146146
__TypeKind getKind() const override;
147147
std::unique_ptr<std::string> getName() const override;
148-
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> getEnumValues(std::unique_ptr<bool> includeDeprecated) const override;
148+
std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> getEnumValues(std::unique_ptr<bool>&& includeDeprecated) const override;
149149

150150
private:
151151
const std::string _name;

SchemaGenerator.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1050,7 +1050,8 @@ std::string Generator::getFieldDeclaration(const OutputField& outputField) const
10501050
}
10511051

10521052
firstArgument = false;
1053-
output << getFieldDeclaration(argument);
1053+
output << getInputCppType(argument) << R"cpp(&& )cpp"
1054+
<< argument.name;
10541055
}
10551056

10561057
output << R"cpp() const = 0;

Today.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,29 +10,29 @@ namespace facebook {
1010
namespace graphql {
1111
namespace today {
1212

13-
Appointment::Appointment(std::vector<unsigned char> id, std::string when, std::string subject, bool isNow)
13+
Appointment::Appointment(std::vector<unsigned char>&& id, std::string&& when, std::string&& subject, bool isNow)
1414
: _id(std::move(id))
1515
, _when(std::move(when))
1616
, _subject(std::move(subject))
1717
, _isNow(isNow)
1818
{
1919
}
2020

21-
Task::Task(std::vector<unsigned char> id, std::string title, bool isComplete)
21+
Task::Task(std::vector<unsigned char>&& id, std::string&& title, bool isComplete)
2222
: _id(std::move(id))
2323
, _title(std::move(title))
2424
, _isComplete(isComplete)
2525
{
2626
}
2727

28-
Folder::Folder(std::vector<unsigned char> id, std::string name, int unreadCount)
28+
Folder::Folder(std::vector<unsigned char>&& id, std::string&& name, int unreadCount)
2929
: _id(std::move(id))
3030
, _name(std::move(name))
3131
, _unreadCount(unreadCount)
3232
{
3333
}
3434

35-
Query::Query(appointmentsLoader getAppointments, tasksLoader getTasks, unreadCountsLoader getUnreadCounts)
35+
Query::Query(appointmentsLoader&& getAppointments, tasksLoader&& getTasks, unreadCountsLoader&& getUnreadCounts)
3636
: _getAppointments(std::move(getAppointments))
3737
, _getTasks(std::move(getTasks))
3838
, _getUnreadCounts(getUnreadCounts)
@@ -117,7 +117,7 @@ std::shared_ptr<Folder> Query::findUnreadCount(const std::vector<unsigned char>&
117117
return nullptr;
118118
}
119119

120-
std::shared_ptr<service::Object> Query::getNode(std::vector<unsigned char> id) const
120+
std::shared_ptr<service::Object> Query::getNode(std::vector<unsigned char>&& id) const
121121
{
122122
auto appointment = findAppointment(id);
123123

@@ -241,7 +241,7 @@ struct EdgeConstraints
241241
const vec_type& _objects;
242242
};
243243

244-
std::shared_ptr<object::AppointmentConnection> Query::getAppointments(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const
244+
std::shared_ptr<object::AppointmentConnection> Query::getAppointments(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const
245245
{
246246
loadAppointments();
247247

@@ -251,7 +251,7 @@ std::shared_ptr<object::AppointmentConnection> Query::getAppointments(std::uniqu
251251
return std::static_pointer_cast<object::AppointmentConnection>(connection);
252252
}
253253

254-
std::shared_ptr<object::TaskConnection> Query::getTasks(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const
254+
std::shared_ptr<object::TaskConnection> Query::getTasks(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const
255255
{
256256
loadTasks();
257257

@@ -261,7 +261,7 @@ std::shared_ptr<object::TaskConnection> Query::getTasks(std::unique_ptr<int> fir
261261
return std::static_pointer_cast<object::TaskConnection>(connection);
262262
}
263263

264-
std::shared_ptr<object::FolderConnection> Query::getUnreadCounts(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const
264+
std::shared_ptr<object::FolderConnection> Query::getUnreadCounts(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const
265265
{
266266
loadUnreadCounts();
267267

@@ -271,7 +271,7 @@ std::shared_ptr<object::FolderConnection> Query::getUnreadCounts(std::unique_ptr
271271
return std::static_pointer_cast<object::FolderConnection>(connection);
272272
}
273273

274-
std::vector<std::shared_ptr<object::Appointment>> Query::getAppointmentsById(std::vector<std::vector<unsigned char>> ids) const
274+
std::vector<std::shared_ptr<object::Appointment>> Query::getAppointmentsById(std::vector<std::vector<unsigned char>>&& ids) const
275275
{
276276
std::vector<std::shared_ptr<object::Appointment>> result(ids.size());
277277

@@ -284,7 +284,7 @@ std::vector<std::shared_ptr<object::Appointment>> Query::getAppointmentsById(std
284284
return result;
285285
}
286286

287-
std::vector<std::shared_ptr<object::Task>> Query::getTasksById(std::vector<std::vector<unsigned char>> ids) const
287+
std::vector<std::shared_ptr<object::Task>> Query::getTasksById(std::vector<std::vector<unsigned char>>&& ids) const
288288
{
289289
std::vector<std::shared_ptr<object::Task>> result(ids.size());
290290

@@ -297,7 +297,7 @@ std::vector<std::shared_ptr<object::Task>> Query::getTasksById(std::vector<std::
297297
return result;
298298
}
299299

300-
std::vector<std::shared_ptr<object::Folder>> Query::getUnreadCountsById(std::vector<std::vector<unsigned char>> ids) const
300+
std::vector<std::shared_ptr<object::Folder>> Query::getUnreadCountsById(std::vector<std::vector<unsigned char>>&& ids) const
301301
{
302302
std::vector<std::shared_ptr<object::Folder>> result(ids.size());
303303

@@ -310,12 +310,12 @@ std::vector<std::shared_ptr<object::Folder>> Query::getUnreadCountsById(std::vec
310310
return result;
311311
}
312312

313-
Mutation::Mutation(completeTaskMutation mutateCompleteTask)
313+
Mutation::Mutation(completeTaskMutation&& mutateCompleteTask)
314314
: _mutateCompleteTask(std::move(mutateCompleteTask))
315315
{
316316
}
317317

318-
std::shared_ptr<object::CompleteTaskPayload> Mutation::getCompleteTask(CompleteTaskInput input) const
318+
std::shared_ptr<object::CompleteTaskPayload> Mutation::getCompleteTask(CompleteTaskInput&& input) const
319319
{
320320
return _mutateCompleteTask(std::move(input));
321321
}

Today.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ class Query : public object::Query
2020
using tasksLoader = std::function<std::vector<std::shared_ptr<Task>>()>;
2121
using unreadCountsLoader = std::function<std::vector<std::shared_ptr<Folder>>()>;
2222

23-
explicit Query(appointmentsLoader getAppointments, tasksLoader getTasks, unreadCountsLoader getUnreadCounts);
23+
explicit Query(appointmentsLoader&& getAppointments, tasksLoader&& getTasks, unreadCountsLoader&& getUnreadCounts);
2424

25-
std::shared_ptr<service::Object> getNode(std::vector<unsigned char> id) const override;
26-
std::shared_ptr<object::AppointmentConnection> getAppointments(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const override;
27-
std::shared_ptr<object::TaskConnection> getTasks(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const override;
28-
std::shared_ptr<object::FolderConnection> getUnreadCounts(std::unique_ptr<int> first, std::unique_ptr<web::json::value> after, std::unique_ptr<int> last, std::unique_ptr<web::json::value> before) const override;
29-
std::vector<std::shared_ptr<object::Appointment>> getAppointmentsById(std::vector<std::vector<unsigned char>> ids) const override;
30-
std::vector<std::shared_ptr<object::Task>> getTasksById(std::vector<std::vector<unsigned char>> ids) const override;
31-
std::vector<std::shared_ptr<object::Folder>> getUnreadCountsById(std::vector<std::vector<unsigned char>> ids) const override;
25+
std::shared_ptr<service::Object> getNode(std::vector<unsigned char>&& id) const override;
26+
std::shared_ptr<object::AppointmentConnection> getAppointments(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const override;
27+
std::shared_ptr<object::TaskConnection> getTasks(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const override;
28+
std::shared_ptr<object::FolderConnection> getUnreadCounts(std::unique_ptr<int>&& first, std::unique_ptr<web::json::value>&& after, std::unique_ptr<int>&& last, std::unique_ptr<web::json::value>&& before) const override;
29+
std::vector<std::shared_ptr<object::Appointment>> getAppointmentsById(std::vector<std::vector<unsigned char>>&& ids) const override;
30+
std::vector<std::shared_ptr<object::Task>> getTasksById(std::vector<std::vector<unsigned char>>&& ids) const override;
31+
std::vector<std::shared_ptr<object::Folder>> getUnreadCountsById(std::vector<std::vector<unsigned char>>&& ids) const override;
3232

3333
private:
3434
std::shared_ptr<Appointment> findAppointment(const std::vector<unsigned char>& id) const;
@@ -76,7 +76,7 @@ class PageInfo : public object::PageInfo
7676
class Appointment : public object::Appointment
7777
{
7878
public:
79-
explicit Appointment(std::vector<unsigned char> id, std::string when, std::string subject, bool isNow);
79+
explicit Appointment(std::vector<unsigned char>&& id, std::string&& when, std::string&& subject, bool isNow);
8080

8181
std::vector<unsigned char> getId() const override { return _id; }
8282
std::unique_ptr<web::json::value> getWhen() const override{ return std::unique_ptr<web::json::value>(new web::json::value(web::json::value::string(utility::conversions::to_string_t(_when)))); }
@@ -147,7 +147,7 @@ class AppointmentConnection : public object::AppointmentConnection
147147
class Task : public object::Task
148148
{
149149
public:
150-
explicit Task(std::vector<unsigned char> id, std::string title, bool isComplete);
150+
explicit Task(std::vector<unsigned char>&& id, std::string&& title, bool isComplete);
151151

152152
std::vector<unsigned char> getId() const override { return _id; }
153153
std::unique_ptr<std::string> getTitle() const override { return std::unique_ptr<std::string>(new std::string(_title)); }
@@ -217,7 +217,7 @@ class TaskConnection : public object::TaskConnection
217217
class Folder : public object::Folder
218218
{
219219
public:
220-
explicit Folder(std::vector<unsigned char> id, std::string name, int unreadCount);
220+
explicit Folder(std::vector<unsigned char>&& id, std::string&& name, int unreadCount);
221221

222222
std::vector<unsigned char> getId() const override { return _id; }
223223
std::unique_ptr<std::string> getName() const override { return std::unique_ptr<std::string>(new std::string(_name)); }
@@ -286,7 +286,7 @@ class FolderConnection : public object::FolderConnection
286286
class CompleteTaskPayload : public object::CompleteTaskPayload
287287
{
288288
public:
289-
explicit CompleteTaskPayload(std::shared_ptr<Task> task, std::unique_ptr<std::string> clientMutationId)
289+
explicit CompleteTaskPayload(std::shared_ptr<Task> task, std::unique_ptr<std::string>&& clientMutationId)
290290
: _task(std::move(task))
291291
, _clientMutationId(std::move(clientMutationId))
292292
{
@@ -312,11 +312,11 @@ class CompleteTaskPayload : public object::CompleteTaskPayload
312312
class Mutation : public object::Mutation
313313
{
314314
public:
315-
using completeTaskMutation = std::function<std::shared_ptr<CompleteTaskPayload>(CompleteTaskInput)>;
315+
using completeTaskMutation = std::function<std::shared_ptr<CompleteTaskPayload>(CompleteTaskInput&&)>;
316316

317-
explicit Mutation(completeTaskMutation mutateCompleteTask);
317+
explicit Mutation(completeTaskMutation&& mutateCompleteTask);
318318

319-
std::shared_ptr<object::CompleteTaskPayload> getCompleteTask(CompleteTaskInput input) const override;
319+
std::shared_ptr<object::CompleteTaskPayload> getCompleteTask(CompleteTaskInput&& input) const override;
320320

321321
private:
322322
completeTaskMutation _mutateCompleteTask;

test_today.cpp

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -33,25 +33,23 @@ int main(int argc, char** argv)
3333
[&binAppointmentId]() -> std::vector<std::shared_ptr<today::Appointment>>
3434
{
3535
std::cout << "Called getAppointments..." << std::endl;
36-
return { std::make_shared<today::Appointment>(binAppointmentId, "tomorrow", "Lunch?", false) };
36+
return { std::make_shared<today::Appointment>(std::move(binAppointmentId), "tomorrow", "Lunch?", false) };
3737
}, [&binTaskId]() -> std::vector<std::shared_ptr<today::Task>>
3838
{
3939
std::cout << "Called getTasks..." << std::endl;
40-
return { std::make_shared<today::Task>(binTaskId, "Don't forget", true) };
40+
return { std::make_shared<today::Task>(std::move(binTaskId), "Don't forget", true) };
4141
}, [&binFolderId]() -> std::vector<std::shared_ptr<today::Folder>>
4242
{
4343
std::cout << "Called getUnreadCounts..." << std::endl;
44-
return { std::make_shared<today::Folder>(binFolderId, "\"Fake\" Inbox", 3) };
44+
return { std::make_shared<today::Folder>(std::move(binFolderId), "\"Fake\" Inbox", 3) };
4545
});
4646
auto mutation = std::make_shared<today::Mutation>(
47-
[](today::CompleteTaskInput input) -> std::shared_ptr<today::CompleteTaskPayload>
47+
[](today::CompleteTaskInput&& input) -> std::shared_ptr<today::CompleteTaskPayload>
4848
{
4949
return std::make_shared<today::CompleteTaskPayload>(
5050
std::make_shared<today::Task>(std::move(input.id), "Mutated Task!", *(input.isComplete)),
51-
std::unique_ptr<std::string>(input.clientMutationId
52-
? new std::string(*input.clientMutationId)
53-
: nullptr)
54-
);
51+
std::move(input.clientMutationId)
52+
);
5553
});
5654
auto subscription = std::make_shared<today::Subscription>();
5755
auto service = std::make_shared<today::Operations>(query, mutation, subscription);

tests.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,24 +30,22 @@ class TodayServiceCase : public ::testing::Test
3030
[this]() -> std::vector<std::shared_ptr<today::Appointment>>
3131
{
3232
++_getAppointmentsCount;
33-
return { std::make_shared<today::Appointment>(_fakeAppointmentId, "tomorrow", "Lunch?", false) };
33+
return { std::make_shared<today::Appointment>(std::vector<unsigned char>(_fakeAppointmentId), "tomorrow", "Lunch?", false) };
3434
}, [this]() -> std::vector<std::shared_ptr<today::Task>>
3535
{
3636
++_getTasksCount;
37-
return { std::make_shared<today::Task>(_fakeTaskId, "Don't forget", true) };
37+
return { std::make_shared<today::Task>(std::vector<unsigned char>(_fakeTaskId), "Don't forget", true) };
3838
}, [this]() -> std::vector<std::shared_ptr<today::Folder>>
3939
{
4040
++_getUnreadCountsCount;
41-
return { std::make_shared<today::Folder>(_fakeFolderId, "\"Fake\" Inbox", 3) };
41+
return { std::make_shared<today::Folder>(std::vector<unsigned char>(_fakeFolderId), "\"Fake\" Inbox", 3) };
4242
});
4343
auto mutation = std::make_shared<today::Mutation>(
44-
[](today::CompleteTaskInput input) -> std::shared_ptr<today::CompleteTaskPayload>
44+
[](today::CompleteTaskInput&& input) -> std::shared_ptr<today::CompleteTaskPayload>
4545
{
4646
return std::make_shared<today::CompleteTaskPayload>(
4747
std::make_shared<today::Task>(std::move(input.id), "Mutated Task!", *(input.isComplete)),
48-
std::unique_ptr<std::string>(input.clientMutationId
49-
? new std::string(*input.clientMutationId)
50-
: nullptr)
48+
std::move(input.clientMutationId)
5149
);
5250
});
5351
auto subscription = std::make_shared<today::Subscription>();

0 commit comments

Comments
 (0)