@@ -178,11 +178,18 @@ std::unique_ptr<std::string> ObjectType::getName() const
178178 return result;
179179}
180180
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
182182{
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>>());
184185
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+ });
186193
187194 return result;
188195}
@@ -219,11 +226,18 @@ std::unique_ptr<std::string> InterfaceType::getName() const
219226 return result;
220227}
221228
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
223230{
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>>());
225233
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+ });
227241
228242 return result;
229243}
@@ -301,11 +315,18 @@ std::unique_ptr<std::string> EnumType::getName() const
301315 return result;
302316}
303317
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
305319{
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>>());
307322
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+ });
309330
310331 return result;
311332}
0 commit comments