@@ -178,11 +178,18 @@ std::unique_ptr<std::string> ObjectType::getName() const
178
178
return result;
179
179
}
180
180
181
- std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> ObjectType::getFields (std::unique_ptr<bool >&& /* includeDeprecated*/ ) const
181
+ std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> ObjectType::getFields (std::unique_ptr<bool >&& includeDeprecated) const
182
182
{
183
- std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result (new std::vector<std::shared_ptr<object::__Field>>(_fields.size ()));
183
+ const bool deprecated = includeDeprecated && *includeDeprecated;
184
+ std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result (new std::vector<std::shared_ptr<object::__Field>>());
184
185
185
- std::copy (_fields.cbegin (), _fields.cend (), result->begin ());
186
+ result->reserve (_fields.size ());
187
+ std::copy_if (_fields.cbegin (), _fields.cend (), std::back_inserter (*result),
188
+ [deprecated](const std::shared_ptr<Field>& field)
189
+ {
190
+ return deprecated
191
+ || !field->getIsDeprecated ();
192
+ });
186
193
187
194
return result;
188
195
}
@@ -219,11 +226,18 @@ std::unique_ptr<std::string> InterfaceType::getName() const
219
226
return result;
220
227
}
221
228
222
- std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> InterfaceType::getFields (std::unique_ptr<bool >&& /* includeDeprecated*/ ) const
229
+ std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> InterfaceType::getFields (std::unique_ptr<bool >&& includeDeprecated) const
223
230
{
224
- std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result (new std::vector<std::shared_ptr<object::__Field>>(_fields.size ()));
231
+ const bool deprecated = includeDeprecated && *includeDeprecated;
232
+ std::unique_ptr<std::vector<std::shared_ptr<object::__Field>>> result (new std::vector<std::shared_ptr<object::__Field>>());
225
233
226
- std::copy (_fields.cbegin (), _fields.cend (), result->begin ());
234
+ result->reserve (_fields.size ());
235
+ std::copy_if (_fields.cbegin (), _fields.cend (), std::back_inserter (*result),
236
+ [deprecated](const std::shared_ptr<Field>& field)
237
+ {
238
+ return deprecated
239
+ || !field->getIsDeprecated ();
240
+ });
227
241
228
242
return result;
229
243
}
@@ -301,11 +315,18 @@ std::unique_ptr<std::string> EnumType::getName() const
301
315
return result;
302
316
}
303
317
304
- std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> EnumType::getEnumValues (std::unique_ptr<bool >&& /* includeDeprecated*/ ) const
318
+ std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> EnumType::getEnumValues (std::unique_ptr<bool >&& includeDeprecated) const
305
319
{
306
- std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> result (new std::vector<std::shared_ptr<object::__EnumValue>>(_enumValues.size ()));
320
+ const bool deprecated = includeDeprecated && *includeDeprecated;
321
+ std::unique_ptr<std::vector<std::shared_ptr<object::__EnumValue>>> result (new std::vector<std::shared_ptr<object::__EnumValue>>());
307
322
308
- std::copy (_enumValues.cbegin (), _enumValues.cend (), result->begin ());
323
+ result->reserve (_enumValues.size ());
324
+ std::copy_if (_enumValues.cbegin (), _enumValues.cend (), std::back_inserter (*result),
325
+ [deprecated](const std::shared_ptr<object::__EnumValue>& value)
326
+ {
327
+ return deprecated
328
+ || !value->getIsDeprecated ();
329
+ });
309
330
310
331
return result;
311
332
}
0 commit comments