5#ifndef TILESON_TILESON_PARSER_HPP
6#define TILESON_TILESON_PARSER_HPP
9#if _MSC_VER && !__INTEL_COMPILER
11 namespace fs = std::filesystem;
13 #if __MINGW64_VERSION_MAJOR > 6
15 namespace fs = std::filesystem;
17 #include <experimental/filesystem>
18 namespace fs = std::experimental::filesystem;
21 #if __clang_major__ < 8
22 #include <experimental/filesystem>
23 namespace fs = std::experimental::filesystem;
26 namespace fs = std::filesystem;
30 #include <experimental/filesystem>
31 namespace fs = std::experimental::filesystem;
34 namespace fs = std::filesystem;
58 #ifdef JSON11_IS_DEFINED
59 inline explicit Tileson(std::unique_ptr<tson::IJson> jsonParser = std::make_unique<tson::Json11>(),
bool includeBase64Decoder =
true);
60 inline explicit Tileson(
tson::Project *project, std::unique_ptr<tson::IJson> jsonParser = std::make_unique<tson::Json11>(),
bool includeBase64Decoder =
true);
62 inline explicit Tileson(std::unique_ptr<tson::IJson> jsonParser,
bool includeBase64Decoder =
true);
63 inline explicit Tileson(
tson::Project *project, std::unique_ptr<tson::IJson> jsonParser,
bool includeBase64Decoder =
true);
66 inline std::unique_ptr<tson::Map>
parse(
const fs::path &path, std::unique_ptr<
IDecompressor<std::vector<uint8_t>, std::vector<uint8_t>>> decompressor =
nullptr);
67 inline std::unique_ptr<tson::Map>
parse(
const void * data,
size_t size, std::unique_ptr<
IDecompressor<std::vector<uint8_t>, std::vector<uint8_t>>> decompressor =
nullptr);
71 inline std::unique_ptr<tson::Map> parseJson();
72 std::unique_ptr<tson::IJson> m_json;
83tson::Tileson::Tileson(std::unique_ptr<tson::IJson> jsonParser,
bool includeBase64Decoder) : m_json {std::move(jsonParser)}
85 if(includeBase64Decoder)
92 if(includeBase64Decoder)
106 if(decompressor !=
nullptr)
108 std::vector<uint8_t> decompressed = decompressor->
decompressFile(path);
109 result = (decompressed.empty()) ?
false :
true;
113 result = m_json->parse(&decompressed[0], decompressed.size());
118 else if(m_json->parse(path))
123 std::string msg =
"File not found: ";
124 msg += std::string(path.generic_string());
138 if(decompressor !=
nullptr)
140 std::vector<uint8_t> decompressed = decompressor->decompress(data, size);
141 result = (decompressed.empty()) ?
false :
true;
144 result = m_json->parse(&decompressed[0], decompressed.size());
147 result = m_json->parse(data, size);
161std::unique_ptr<tson::Map> tson::Tileson::parseJson()
163 std::unique_ptr<tson::Map> map = std::make_unique<tson::Map>();
165 if(map->parse(*m_json, &m_decompressors, m_project))
180 return &m_decompressors;
Definition Base64Decompressor.hpp:15
std::string decompressFile(const fs::path &path) override
Definition Base64Decompressor.hpp:95
Definition DecompressorContainer.hpp:16
void add(Args &&... args)
Definition DecompressorContainer.hpp:34
Definition IDecompressor.hpp:14
Definition Project.hpp:20
Definition tileson_parser.hpp:56
tson::DecompressorContainer * decompressors()
Definition tileson_parser.hpp:178
Tileson(std::unique_ptr< tson::IJson > jsonParser, bool includeBase64Decoder=true)
Definition tileson_parser.hpp:83
std::unique_ptr< tson::Map > parse(const fs::path &path, std::unique_ptr< IDecompressor< std::vector< uint8_t >, std::vector< uint8_t > > > decompressor=nullptr)
Definition tileson_parser.hpp:101