5#ifndef TILESON_IJSON_HPP
6#define TILESON_IJSON_HPP
15 virtual IJson &
at(std::string_view key) = 0;
21 [[nodiscard]]
virtual std::vector<std::unique_ptr<IJson>>
array() = 0;
22 [[nodiscard]]
virtual std::vector<std::unique_ptr<IJson>> &
array(std::string_view key) = 0;
28 [[nodiscard]]
virtual size_t size()
const = 0;
29 [[nodiscard]]
virtual bool parse(
const fs::path &path) = 0;
30 [[nodiscard]]
virtual bool parse(
const void *data,
size_t size) = 0;
33 [[nodiscard]] T
get(std::string_view key);
35 [[nodiscard]] T
get();
36 [[nodiscard]]
virtual size_t count(std::string_view key)
const = 0;
37 [[nodiscard]]
virtual bool any(std::string_view key)
const = 0;
38 [[nodiscard]]
virtual bool isArray()
const = 0;
39 [[nodiscard]]
virtual bool isObject()
const = 0;
40 [[nodiscard]]
virtual bool isNull()
const = 0;
47 [[nodiscard]]
virtual fs::path
directory()
const = 0;
53 virtual std::unique_ptr<IJson>
create() = 0;
62 [[nodiscard]]
virtual int32_t
getInt32(std::string_view key) = 0;
63 [[nodiscard]]
virtual uint32_t
getUInt32(std::string_view key) = 0;
64 [[nodiscard]]
virtual int64_t
getInt64(std::string_view key) = 0;
65 [[nodiscard]]
virtual uint64_t
getUInt64(std::string_view key) = 0;
66 [[nodiscard]]
virtual double getDouble(std::string_view key) = 0;
67 [[nodiscard]]
virtual float getFloat(std::string_view key) = 0;
68 [[nodiscard]]
virtual std::string
getString(std::string_view key) = 0;
69 [[nodiscard]]
virtual bool getBool(std::string_view key) = 0;
84 if constexpr (std::is_same<T, double>::value)
86 if constexpr (std::is_same<T, float>::value)
88 else if constexpr (std::is_same<T, int32_t>::value)
90 else if constexpr (std::is_same<T, uint32_t>::value)
92 else if constexpr (std::is_same<T, int64_t>::value)
94 else if constexpr (std::is_same<T, uint64_t>::value)
96 else if constexpr (std::is_same<T, std::string>::value)
98 else if constexpr (std::is_same<T, bool>::value)
107 if constexpr (std::is_same<T, double>::value)
109 if constexpr (std::is_same<T, float>::value)
111 else if constexpr (std::is_same<T, int32_t>::value)
113 else if constexpr (std::is_same<T, uint32_t>::value)
115 else if constexpr (std::is_same<T, int64_t>::value)
117 else if constexpr (std::is_same<T, uint64_t>::value)
119 else if constexpr (std::is_same<T, std::string>::value)
121 else if constexpr (std::is_same<T, bool>::value)
virtual bool any(std::string_view key) const =0
virtual std::string getString(std::string_view key)=0
virtual float getFloat(std::string_view key)=0
virtual std::unique_ptr< IJson > create()=0
virtual bool getBool(std::string_view key)=0
virtual bool parse(const fs::path &path)=0
T get()
Definition IJson.hpp:105
virtual float getFloat()=0
virtual std::vector< std::unique_ptr< IJson > > & array(std::string_view key)=0
virtual bool isArray() const =0
virtual uint32_t getUInt32()=0
virtual double getDouble()=0
virtual int64_t getInt64(std::string_view key)=0
virtual fs::path directory() const =0
virtual double getDouble(std::string_view key)=0
virtual uint32_t getUInt32(std::string_view key)=0
virtual std::string getString()=0
virtual IJson & at(size_t pos)=0
virtual uint64_t getUInt64()=0
virtual IJson & operator[](std::string_view key)=0
virtual uint64_t getUInt64(std::string_view key)=0
virtual void directory(const fs::path &directory)=0
virtual size_t size() const =0
virtual bool isNull() const =0
virtual size_t count(std::string_view key) const =0
virtual int32_t getInt32()=0
virtual bool isObject() const =0
virtual bool parse(const void *data, size_t size)=0
virtual IJson & at(std::string_view key)=0
virtual std::vector< std::unique_ptr< IJson > > array()=0
virtual int64_t getInt64()=0
virtual int32_t getInt32(std::string_view key)=0