DAW JSON Link
Loading...
Searching...
No Matches
daw_json_enums.h
Go to the documentation of this file.
1// Copyright (c) Darrell Wright
2//
3// Distributed under the Boost Software License, Version 1.0. (See accompanying
4// file LICENSE or copy at http://www.boost.org/LICENSE_1_0.txt)
5//
6// Official repository: https://github.com/beached/daw_json_link
7//
8
9#pragma once
10
11#include "version.h"
12
13#include <daw/daw_constant.h>
14
15#include <cstdint>
16#include <string_view>
17
18namespace daw::json {
19 inline namespace DAW_JSON_VER {
21 enum class JsonParseTypes : std::uint_fast8_t {
22 Real,
23 Signed,
24 Unsigned,
25 Bool,
26 StringRaw,
27 StringEscaped,
28 Date,
29 Class,
30 Array,
31 SizedArray,
33 Null,
34 KeyValue,
36 KeyValueArray,
37 Custom,
39 Variant,
41 VariantTagged,
44 VariantIntrusive,
46 Tuple,
48 Unknown,
49#if defined( DAW_JSON_HAS_REFLECTION )
50 ReflectedClass,
52#endif
53 };
54
56 enum class JsonBaseParseTypes : std::uint_fast8_t {
57 Number,
58 Bool,
59 String,
60 Class,
61 Array,
62 Null,
63 None
64 };
65
66 constexpr std::string_view to_string( JsonBaseParseTypes pt ) {
67 switch( pt ) {
68 case JsonBaseParseTypes::Number:
69 return "Number";
70 case JsonBaseParseTypes::Bool:
71 return "Bool";
72 case JsonBaseParseTypes::String:
73 return "String";
74 case JsonBaseParseTypes::Class:
75 return "Class";
76 case JsonBaseParseTypes::Array:
77 return "Array";
78 case JsonBaseParseTypes::Null:
79 return "Null";
80 case JsonBaseParseTypes::None:
81 default:
82 return "None";
83 }
84 }
85
88 enum class JsonNullable : unsigned {
91 Nullable,
94 NullVisible
95 };
96
100 template<JsonParseTypes v>
101 using ParseTag = daw::constant<v>;
102
103 } // namespace DAW_JSON_VER
104} // namespace daw::json
constexpr std::string_view to_string(JsonBaseParseTypes pt)
JsonParseTypes
The tags used by the parser to determine what parser to call.
JsonNullable
Control how json_nullable members are serialized.
Customization point traits.
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition version.h:20