A Demo Project for the UnrealEngineSDK
Loading...
Searching...
No Matches
VaRestJsonParser.h
Go to the documentation of this file.
1// Copyright 2015-2019 Mail.Ru Group. All Rights Reserved.
2
3#pragma once
4
5#include "Json.h"
6
8{
10 static uint32 CodepointFromUtf8(const ANSICHAR*& SourceString, const uint32 SourceLengthRemaining);
11};
12
14{
15public:
16 FJsonValueNonConstArray(const TArray<TSharedPtr<FJsonValue>>& InArray)
17 : FJsonValueArray(InArray)
18 {
19 }
20
22 TArray<TSharedPtr<FJsonValue>>& AsNonConstArray() { return Value; }
23};
24
26{
27public:
29 : FJsonValueBoolean(InBool)
30 {
31 }
32
34 bool& AsNonConstBool() { return Value; }
35};
36
38{
39public:
40 FJsonValueNonConstString(const FString& InString)
41 : FJsonValueString(InString)
42 {
43 }
44
46 FString& AsNonConstString() { return Value; }
47};
48
50{
51public:
52 FJsonValueNonConstNumber(double InNumber)
53 : FJsonValueNumber(InNumber)
54 {
55 }
56
58 double& AsNonConstNumber() { return Value; }
59};
60
61enum class EJSONNotation
62{
63 NONE,
64 STRING,
66 SKIP,
67 NUMBER,
68 ARRAY,
69 OBJECT,
70};
71
72enum class EJSONToken
73{
78 COMMA,
79 COLON,
80 ROOT,
81 ERROR,
82};
83
85{
87 FString Key;
88
90 FString Data;
91
93 TSharedPtr<FJsonObject> Root;
94
96 TArray<TSharedPtr<FJsonValue>> Objects;
97
99 TArray<EJSONToken> Tokens;
100
103
106
108 int32 bError;
109
111 TCHAR Quote;
112
114 int32 Size;
115
117 FJSONState();
118
119 EJSONToken GetToken(int32 Index = 0);
120
121 FORCEINLINE bool CheckTokens(EJSONToken T1);
122
123 FORCEINLINE bool CheckTokens(EJSONToken T1, EJSONToken T2);
124
125 FORCEINLINE bool CheckTokens(EJSONToken T1, EJSONToken T2, EJSONToken T3);
126
127 FORCEINLINE void PopToken(int32 Num);
128
129 FORCEINLINE void PopObject();
130
131 FORCEINLINE void PopArray();
132
133 FORCEINLINE void PopValue(bool bCheckType = true);
134
135 FORCEINLINE FJsonValue* GetLast();
136
137 FORCEINLINE FJsonValueObject* GetObject();
138
139 FORCEINLINE FJsonValueNonConstArray* GetArray();
140
141 FORCEINLINE TSharedPtr<FJsonValueObject> PushObject();
142
143 FORCEINLINE TSharedPtr<FJsonValueObject> PushObject(TSharedPtr<FJsonObject> Object);
144
145 FORCEINLINE TSharedPtr<FJsonValueNonConstArray> PushArray();
146
147 FORCEINLINE TSharedPtr<FJsonValueNonConstBoolean> PushBoolean();
148
149 FORCEINLINE TSharedPtr<FJsonValueNull> PushNull();
150
151 FORCEINLINE TSharedPtr<FJsonValueNonConstNumber> PushNumber();
152
153 FORCEINLINE TSharedPtr<FJsonValueNonConstString> PushString();
154
155 FORCEINLINE void ClearData();
156
157 FORCEINLINE void ClearKey();
158
159 FORCEINLINE void DataToKey();
160
161 FORCEINLINE void Error();
162};
163
165{
168
170 FJSONReader();
171
172private:
173 FORCEINLINE bool IsNewLine(const TCHAR& Char);
174
175 FORCEINLINE bool IsSpace(const TCHAR& Char);
176
177 FORCEINLINE bool FindToken(const TCHAR& Char);
178
179 FORCEINLINE void UpdateNotation();
180
181 FORCEINLINE void ReadAsString(const TCHAR& Char);
182
183 FORCEINLINE void ReadAsStringSpecial(const TCHAR& Char);
184
185 FORCEINLINE void ReadAsNumber(const TCHAR& Char);
186
187 FORCEINLINE void ReadBasicValue(const TCHAR& Char);
188
189 FORCEINLINE void ReadAsArray(const TCHAR& Char);
190
191 FORCEINLINE void ReadAsObject(const TCHAR& Char);
192
193 FORCEINLINE void Skip(const TCHAR& Char);
194
195public:
196 bool Read(const TCHAR Char); // @Pushkin
197};
198
200{
201 FJSONWriter();
202
203 FORCEINLINE bool GetStartChar(const TSharedPtr<FJsonValue>& JsonValue, FString& Char);
204
205 FORCEINLINE bool GetEndChar(const TSharedPtr<FJsonValue>& JsonValue, FString& Char);
206
207public:
208 void Write(TSharedPtr<FJsonValue> JsonValue, FArchive* Writer, bool IsLastElement); // @Pushkin
209};
EJSONToken
EJSONNotation
TArray< TSharedPtr< FJsonValue > > & AsNonConstArray()
FJsonValueNonConstArray(const TArray< TSharedPtr< FJsonValue > > &InArray)
FJsonValueNonConstBoolean(bool InBool)
FJsonValueNonConstNumber(double InNumber)
FJsonValueNonConstString(const FString &InString)
FORCEINLINE bool IsNewLine(const TCHAR &Char)
FORCEINLINE void Skip(const TCHAR &Char)
FORCEINLINE void UpdateNotation()
bool Read(const TCHAR Char)
FORCEINLINE void ReadAsArray(const TCHAR &Char)
FJSONState State
FORCEINLINE void ReadBasicValue(const TCHAR &Char)
FORCEINLINE bool FindToken(const TCHAR &Char)
FORCEINLINE void ReadAsObject(const TCHAR &Char)
FORCEINLINE void ReadAsStringSpecial(const TCHAR &Char)
FORCEINLINE bool IsSpace(const TCHAR &Char)
FORCEINLINE void ReadAsNumber(const TCHAR &Char)
FORCEINLINE void ReadAsString(const TCHAR &Char)
FORCEINLINE void Error()
TSharedPtr< FJsonObject > Root
FORCEINLINE void PopValue(bool bCheckType=true)
FORCEINLINE TSharedPtr< FJsonValueNonConstBoolean > PushBoolean()
FORCEINLINE void PopToken(int32 Num)
FORCEINLINE TSharedPtr< FJsonValueObject > PushObject()
FORCEINLINE FJsonValueObject * GetObject()
FORCEINLINE TSharedPtr< FJsonValueNonConstString > PushString()
EJSONToken GetToken(int32 Index=0)
FORCEINLINE void PopArray()
TArray< TSharedPtr< FJsonValue > > Objects
FORCEINLINE FJsonValueNonConstArray * GetArray()
FORCEINLINE TSharedPtr< FJsonValueNonConstArray > PushArray()
EJSONNotation Notation
FORCEINLINE bool CheckTokens(EJSONToken T1)
FORCEINLINE void ClearData()
FORCEINLINE FJsonValue * GetLast()
FORCEINLINE void DataToKey()
FORCEINLINE void ClearKey()
FORCEINLINE void PopObject()
FORCEINLINE TSharedPtr< FJsonValueNull > PushNull()
TArray< EJSONToken > Tokens
FORCEINLINE TSharedPtr< FJsonValueNonConstNumber > PushNumber()
FORCEINLINE bool GetStartChar(const TSharedPtr< FJsonValue > &JsonValue, FString &Char)
void Write(TSharedPtr< FJsonValue > JsonValue, FArchive *Writer, bool IsLastElement)
FORCEINLINE bool GetEndChar(const TSharedPtr< FJsonValue > &JsonValue, FString &Char)
static uint32 CodepointFromUtf8(const ANSICHAR *&SourceString, const uint32 SourceLengthRemaining)