Skip to content

Commit 4b6f6d9

Browse files
committed
Handle includeDeprecated arguments
1 parent 7f5f44d commit 4b6f6d9

File tree

1 file changed

+30
-9
lines changed

1 file changed

+30
-9
lines changed

Introspection.cpp

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)