DAW JSON Link
daw_json_parse_value_fwd.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
12#include "daw_json_value.h"
13#include "version.h"
14
15#include <ciso646>
16
17namespace daw::json {
18 inline namespace DAW_JSON_VER {
19 namespace json_details {
20 template<typename JsonMember, bool KnownBounds = false,
21 typename ParseState>
22 [[nodiscard]] constexpr json_result<JsonMember>
23 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Real> );
24
25 template<typename JsonMember, bool KnownBounds = false,
26 typename ParseState>
27 [[nodiscard]] constexpr json_result<JsonMember>
28 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Signed> );
29
30 template<typename JsonMember, bool KnownBounds = false,
31 typename ParseState>
32 [[nodiscard]] constexpr json_result<JsonMember>
33 parse_value( ParseState &parse_state,
34 ParseTag<JsonParseTypes::Unsigned> );
35
36 template<typename JsonMember, bool KnownBounds = false,
37 typename ParseState>
38 [[nodiscard]] constexpr json_result<JsonMember>
39 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Null> );
40
41 template<typename JsonMember, bool KnownBounds = false,
42 typename ParseState>
43 [[nodiscard]] constexpr json_result<JsonMember>
44 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Bool> );
45
46 template<typename JsonMember, bool KnownBounds = false,
47 typename ParseState>
48 [[nodiscard]] constexpr json_result<JsonMember>
49 parse_value( ParseState &parse_state,
50 ParseTag<JsonParseTypes::StringRaw> );
51
52 template<typename JsonMember, bool KnownBounds = false,
53 typename ParseState>
54 [[nodiscard]] constexpr json_result<JsonMember>
55 parse_value( ParseState &parse_state,
56 ParseTag<JsonParseTypes::StringEscaped> );
57
58 template<typename JsonMember, bool KnownBounds = false,
59 typename ParseState>
60 [[nodiscard]] constexpr json_result<JsonMember>
61 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Date> );
62
63 template<typename JsonMember, bool KnownBounds = false,
64 typename ParseState>
65 [[nodiscard]] constexpr json_result<JsonMember>
66 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Custom> );
67
68 template<typename JsonMember, bool KnownBounds = false,
69 typename ParseState>
70 [[nodiscard]] constexpr json_result<JsonMember>
71 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Class> );
72
73 template<typename JsonMember, bool KnownBounds = false,
74 typename ParseState>
75 [[nodiscard]] constexpr json_result<JsonMember>
76 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Array> );
77
78 template<typename JsonMember, bool KnownBounds = false,
79 typename ParseState>
80 [[nodiscard]] constexpr json_result<JsonMember>
81 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Tuple> );
82
83 template<typename JsonMember, bool KnownBounds = false,
84 typename ParseState>
85 [[nodiscard]] constexpr json_result<JsonMember>
86 parse_value( ParseState &parse_state,
87 ParseTag<JsonParseTypes::SizedArray> );
88
89 template<typename JsonMember, bool KnownBounds = false,
90 typename ParseState>
91 [[nodiscard]] constexpr json_result<JsonMember>
92 parse_value( ParseState &parse_state,
93 ParseTag<JsonParseTypes::KeyValue> );
94
95 template<typename JsonMember, bool KnownBounds = false,
96 typename ParseState>
97 [[nodiscard]] constexpr json_result<JsonMember>
98 parse_value( ParseState &parse_state,
99 ParseTag<JsonParseTypes::KeyValueArray> );
100
101 template<typename JsonMember, bool KnownBounds = false,
102 typename ParseState>
103 [[nodiscard]] constexpr json_result<JsonMember>
104 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Variant> );
105
106 template<typename JsonMember, bool KnownBounds = false,
107 typename ParseState>
108 [[nodiscard, maybe_unused]] constexpr json_result<JsonMember>
109 parse_value( ParseState &parse_state,
110 ParseTag<JsonParseTypes::VariantTagged> );
111
112 template<typename JsonMember, bool KnownBounds = false,
113 typename ParseState>
114 [[nodiscard, maybe_unused]] constexpr json_result<JsonMember>
115 parse_value( ParseState &parse_state,
116 ParseTag<JsonParseTypes::VariantIntrusive> );
117
118 template<typename JsonMember, bool KnownBounds = false, std::size_t N,
119 typename ParseState, bool B>
120 [[nodiscard]] constexpr json_result<JsonMember>
121 parse_value( ParseState &parse_state,
122 ParseTag<JsonParseTypes::VariantTagged> );
123
124 template<typename JsonMember, bool KnownBounds = false,
125 typename ParseState>
126 [[nodiscard, maybe_unused]] constexpr json_result<JsonMember>
127 parse_value( ParseState &parse_state, ParseTag<JsonParseTypes::Unknown> );
128
129#if defined( _MSC_VER ) and not defined( __clang__ )
130 // Lying to MSVC about being a random iterator causes issues I have not
131 // found yet
132 template<bool>
133 inline constexpr bool can_random_v = false;
134#else
135 template<bool IsKnown>
136 inline constexpr bool can_random_v = IsKnown;
137#endif
138 } // namespace json_details
139 } // namespace DAW_JSON_VER
140} // namespace daw::json
ParseState & parse_state
Definition: daw_json_parse_class.h:182
constexpr bool can_random_v
Definition: daw_json_parse_value_fwd.h:136
constexpr DAW_ATTRIB_INLINE json_result< JsonMember > parse_value(ParseState &parse_state, ParseTag< JsonParseTypes::Real >)
Definition: daw_json_parse_value.h:75
Definition: daw_from_json.h:22
#define DAW_JSON_VER
The version string used in namespace definitions. Must be a valid namespace name.
Definition: version.h:16