in src/SchemaLoader.cpp [463:535]
void SchemaLoader::visitDefinition(const peg::ast_node& definition)
{
if (definition.is_type<peg::schema_definition>())
{
visitSchemaDefinition(definition);
}
else if (definition.is_type<peg::schema_extension>())
{
visitSchemaExtension(definition);
}
else if (definition.is_type<peg::scalar_type_definition>())
{
visitScalarTypeDefinition(definition);
}
else if (definition.is_type<peg::scalar_type_extension>())
{
visitScalarTypeExtension(definition);
}
else if (definition.is_type<peg::enum_type_definition>())
{
visitEnumTypeDefinition(definition);
}
else if (definition.is_type<peg::enum_type_extension>())
{
visitEnumTypeExtension(definition);
}
else if (definition.is_type<peg::input_object_type_definition>())
{
visitInputObjectTypeDefinition(definition);
}
else if (definition.is_type<peg::input_object_type_extension>())
{
visitInputObjectTypeExtension(definition);
}
else if (definition.is_type<peg::union_type_definition>())
{
visitUnionTypeDefinition(definition);
}
else if (definition.is_type<peg::union_type_extension>())
{
visitUnionTypeExtension(definition);
}
else if (definition.is_type<peg::interface_type_definition>())
{
visitInterfaceTypeDefinition(definition);
}
else if (definition.is_type<peg::interface_type_extension>())
{
visitInterfaceTypeExtension(definition);
}
else if (definition.is_type<peg::object_type_definition>())
{
visitObjectTypeDefinition(definition);
}
else if (definition.is_type<peg::object_type_extension>())
{
visitObjectTypeExtension(definition);
}
else if (definition.is_type<peg::directive_definition>())
{
visitDirectiveDefinition(definition);
}
else
{
const auto position = definition.begin();
std::ostringstream error;
error << "Unexpected executable definition line: " << position.line
<< " column: " << position.column;
throw std::runtime_error(error.str());
}
}