Logo Pico-Framework A web-first embedded framework for C++
Loading...
Searching...
No Matches
IJsonImpl.h
Go to the documentation of this file.
1#pragma once
2#include <string>
3#include <memory>
4#include <initializer_list>
5#include <map>
6#include <vector>
7
8namespace Framework {
9
10class json; // forward declaration
11
12class IJsonImpl {
13public:
14 virtual ~IJsonImpl() = default;
15
16 // Cloning
17 virtual std::shared_ptr<IJsonImpl> clone() const = 0;
18
19 // Serialization
20 virtual std::string dump(int indent = -1) const = 0;
21
22 // Access / mutation
23 virtual json at(const std::string& key) const = 0;
24 virtual json& refAt(const std::string& key) = 0;
25
26 // Object/array construction
27 virtual bool is_object() const = 0;
28 virtual bool is_array() const = 0;
29 virtual size_t size() const = 0;
30 virtual bool empty() const = 0;
31
32 // Primitive getters
33 virtual bool is_string() const = 0;
34 virtual bool is_boolean() const = 0;
35 virtual bool is_number() const = 0;
36 virtual bool is_null() const = 0;
37
38 template<typename T> T get() const;
39 template<typename T> void get_to(T&) const;
40
41 // Key-value helper
42 virtual bool contains(const std::string& key) const = 0;
43};
44
45} // namespace Framework
virtual bool is_number() const =0
void get_to(T &) const
virtual ~IJsonImpl()=default
virtual bool contains(const std::string &key) const =0
virtual bool is_null() const =0
virtual json & refAt(const std::string &key)=0
virtual bool empty() const =0
virtual std::string dump(int indent=-1) const =0
virtual std::shared_ptr< IJsonImpl > clone() const =0
virtual bool is_boolean() const =0
virtual bool is_array() const =0
virtual json at(const std::string &key) const =0
virtual size_t size() const =0
virtual bool is_string() const =0
virtual bool is_object() const =0