Cogs.Core
JsonParser.h
1#pragma once
2
3#include "Base.h"
4
5#include "Foundation/StringView.h"
6
7#include "rapidjson/document.h"
8
9#include <memory>
10
11using namespace rapidjson;
12
13namespace Cogs
14{
15 struct FileContents;
16
17 namespace Core
18 {
19 enum class JsonParseFlags
20 {
21 None = 0,
22 NoCachedContent = 1 << 0,
23 Compressed = 1 << 1,
25 };
26
27 ENABLE_ENUM_FLAGS(JsonParseFlags);
28
29 COGSCORE_DLL_API Document parseJson(const StringView & content, JsonParseFlags flags);
30 COGSCORE_DLL_API Document parseJson(class Context * context, const StringView & fileName, JsonParseFlags flags = JsonParseFlags::None);
31 COGSCORE_DLL_API Document parseJson(class Context* context, std::unique_ptr<FileContents> contents, JsonParseFlags flags = JsonParseFlags::None);
32
33 inline Cogs::StringView toKey(const Value & v)
34 {
35 return Cogs::StringView(v.GetString(), v.GetStringLength());
36 }
37
38 inline Cogs::StringView toView(const Value& v)
39 {
40 return Cogs::StringView(v.GetString(), v.GetStringLength());
41 }
42
43
44 inline std::string toString(const Value & v)
45 {
46 return std::string(v.GetString(), v.GetStringLength());
47 }
48 }
49}
Provides a weakly referenced view over the contents of a string.
Definition: StringView.h:24
@ PreferUncachedContent
Try fetching data before resorting to cached data.
@ NoCachedContent
Never use cached data.
Contains all Cogs related functionality.
Definition: FieldSetter.h:23