blitz_query_cpp
108 строк · 3.9 Кб
1#include <syntax/directive_target.hpp>
2#include <util/crc_hash.hpp>
3
4namespace blitz_query_cpp
5{
6std::string_view enum_name(directive_target_t target)
7{
8switch (target)
9{
10case directive_target_t::None:
11return "None";
12case directive_target_t::Query:
13return "QUERY";
14case directive_target_t::Mutation:
15return "MUTATION";
16case directive_target_t::Subscription:
17return "SUBSCRIPTION";
18case directive_target_t::Field:
19return "FIELD";
20case directive_target_t::FragmentDefinition:
21return "FRAGMENT_DEFINITION";
22case directive_target_t::FragmentSpread:
23return "FRAGMENT_SPREAD";
24case directive_target_t::InlineFragment:
25return "INLINE_FRAGMENT";
26case directive_target_t::VariableDefinition:
27return "VARIABLE_DEFINITION";
28
29case directive_target_t::Schema:
30return "SCHEMA";
31case directive_target_t::Scalar:
32return "SCALAR";
33case directive_target_t::Object:
34return "OBJECT";
35case directive_target_t::FieldDefinition:
36return "FIELD_DEFINITION";
37case directive_target_t::ArgumentDefinition:
38return "ARGUMENT_DEFINITION";
39case directive_target_t::Interface:
40return "INTERFACE";
41case directive_target_t::Union:
42return "UNION";
43case directive_target_t::Enum:
44return "ENUM";
45case directive_target_t::EnumValue:
46return "ENUM_VALUE";
47case directive_target_t::InputObject:
48return "INPUT_OBJECT";
49case directive_target_t::InputFieldDefinition:
50return "INPUT_FIELD_DEFINITION";
51case directive_target_t::IsRepeatable:
52case directive_target_t::Executable:
53case directive_target_t::TypeSystem:
54case directive_target_t::Operation:
55case directive_target_t::Fragment:
56default:
57return "Unknown";
58}
59return "Unknown";
60}
61
62directive_target_t parse_directive_target(std::string_view str)
63{
64switch (hash_crc32(str))
65{
66case "QUERY"_crc32:
67return directive_target_t::Query;
68case "MUTATION"_crc32:
69return directive_target_t::Mutation;
70case "SUBSCRIPTION"_crc32:
71return directive_target_t::Subscription;
72case "FIELD"_crc32:
73return directive_target_t::Field;
74case "FRAGMENT_DEFINITION"_crc32:
75return directive_target_t::FragmentDefinition;
76case "FRAGMENT_SPREAD"_crc32:
77return directive_target_t::FragmentSpread;
78case "INLINE_FRAGMENT"_crc32:
79return directive_target_t::InlineFragment;
80case "VARIABLE_DEFINITION"_crc32:
81return directive_target_t::VariableDefinition;
82
83case "SCHEMA"_crc32:
84return directive_target_t::Schema;
85case "SCALAR"_crc32:
86return directive_target_t::Scalar;
87case "OBJECT"_crc32:
88return directive_target_t::Object;
89case "FIELD_DEFINITION"_crc32:
90return directive_target_t::FieldDefinition;
91case "ARGUMENT_DEFINITION"_crc32:
92return directive_target_t::ArgumentDefinition;
93case "INTERFACE"_crc32:
94return directive_target_t::Interface;
95case "UNION"_crc32:
96return directive_target_t::Union;
97case "ENUM"_crc32:
98return directive_target_t::Enum;
99case "ENUM_VALUE"_crc32:
100return directive_target_t::EnumValue;
101case "INPUT_OBJECT"_crc32:
102return directive_target_t::InputObject;
103case "INPUT_FIELD_DEFINITION"_crc32:
104return directive_target_t::InputFieldDefinition;
105}
106return directive_target_t::None;
107}
108}