blitz_query_cpp

Форк
0
/
directive_target.cpp 
108 строк · 3.9 Кб
1
#include <syntax/directive_target.hpp>
2
#include <util/crc_hash.hpp>
3

4
namespace blitz_query_cpp
5
{
6
    std::string_view enum_name(directive_target_t target)
7
    {
8
        switch (target)
9
        {
10
        case directive_target_t::None:
11
            return "None";
12
        case directive_target_t::Query:
13
            return "QUERY";
14
        case directive_target_t::Mutation:
15
            return "MUTATION";
16
        case directive_target_t::Subscription:
17
            return "SUBSCRIPTION";
18
        case directive_target_t::Field:
19
            return "FIELD";
20
        case directive_target_t::FragmentDefinition:
21
            return "FRAGMENT_DEFINITION";
22
        case directive_target_t::FragmentSpread:
23
            return "FRAGMENT_SPREAD";
24
        case directive_target_t::InlineFragment:
25
            return "INLINE_FRAGMENT";
26
        case directive_target_t::VariableDefinition:
27
            return "VARIABLE_DEFINITION";
28

29
        case directive_target_t::Schema:
30
            return "SCHEMA";
31
        case directive_target_t::Scalar:
32
            return "SCALAR";
33
        case directive_target_t::Object:
34
            return "OBJECT";
35
        case directive_target_t::FieldDefinition:
36
            return "FIELD_DEFINITION";
37
        case directive_target_t::ArgumentDefinition:
38
            return "ARGUMENT_DEFINITION";
39
        case directive_target_t::Interface:
40
            return "INTERFACE";
41
        case directive_target_t::Union:
42
            return "UNION";
43
        case directive_target_t::Enum:
44
            return "ENUM";
45
        case directive_target_t::EnumValue:
46
            return "ENUM_VALUE";
47
        case directive_target_t::InputObject:
48
            return "INPUT_OBJECT";
49
        case directive_target_t::InputFieldDefinition:
50
            return "INPUT_FIELD_DEFINITION";
51
        case directive_target_t::IsRepeatable:
52
        case directive_target_t::Executable:
53
        case directive_target_t::TypeSystem:
54
        case directive_target_t::Operation:
55
        case directive_target_t::Fragment:
56
        default:
57
            return "Unknown";
58
        }
59
        return "Unknown";
60
    }
61

62
    directive_target_t parse_directive_target(std::string_view str)
63
    {
64
        switch (hash_crc32(str))
65
        {
66
        case "QUERY"_crc32:
67
            return directive_target_t::Query;
68
        case "MUTATION"_crc32:
69
            return directive_target_t::Mutation;
70
        case "SUBSCRIPTION"_crc32:
71
            return directive_target_t::Subscription;
72
        case "FIELD"_crc32:
73
            return directive_target_t::Field;
74
        case "FRAGMENT_DEFINITION"_crc32:
75
            return directive_target_t::FragmentDefinition;
76
        case "FRAGMENT_SPREAD"_crc32:
77
            return directive_target_t::FragmentSpread;
78
        case "INLINE_FRAGMENT"_crc32:
79
            return directive_target_t::InlineFragment;
80
        case "VARIABLE_DEFINITION"_crc32:
81
            return directive_target_t::VariableDefinition;
82

83
        case "SCHEMA"_crc32:
84
            return directive_target_t::Schema;
85
        case "SCALAR"_crc32:
86
            return directive_target_t::Scalar;
87
        case "OBJECT"_crc32:
88
            return directive_target_t::Object;
89
        case "FIELD_DEFINITION"_crc32:
90
            return directive_target_t::FieldDefinition;
91
        case "ARGUMENT_DEFINITION"_crc32:
92
            return directive_target_t::ArgumentDefinition;
93
        case "INTERFACE"_crc32:
94
            return directive_target_t::Interface;
95
        case "UNION"_crc32:
96
            return directive_target_t::Union;
97
        case "ENUM"_crc32:
98
            return directive_target_t::Enum;
99
        case "ENUM_VALUE"_crc32:
100
            return directive_target_t::EnumValue;
101
        case "INPUT_OBJECT"_crc32:
102
            return directive_target_t::InputObject;
103
        case "INPUT_FIELD_DEFINITION"_crc32:
104
            return directive_target_t::InputFieldDefinition;
105
        }
106
        return directive_target_t::None;
107
    }
108
}

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.