#pragma once
#include "JsonNode.hpp"
#include "UniquePtr.hpp"
#include "JsonArray.hpp"
#include "JsonBool.hpp"
#include "JsonFloat.hpp"
#include "JsonInt.hpp"
#include "JsonNull.hpp"
#include "JsonObject.hpp"
#include "JsonString.hpp"
NAMESPACE_SOUP
{
struct json
{
[[nodiscard]] static UniquePtr<JsonNode> decode(const std::string& data, int max_depth = 100);
[[nodiscard]] static UniquePtr<JsonNode> decode(const char*& c, int max_depth);
[[nodiscard]] static UniquePtr<JsonNode> binaryDecode(Reader& r);
static void handleLeadingSpace(const char*& c);
static void handleComment(const char*& c);
};
}