AnCH Framework 0.1
Another C++ Hack Framework
 
Loading...
Searching...
No Matches
primitiveMapper.hpp
1/*
2 ANCH Framework: ANother C++ Hack is a C++ framework based on C++11 standard
3 Copyright (C) 2020 Vincent Lachenal
4
5 This file is part of ANCH Framework.
6
7 ANCH Framework is free software: you can redistribute it and/or modify
8 it under the terms of the GNU Lesser General Public License as published by
9 the Free Software Foundation, either version 3 of the License, or
10 (at your option) any later version.
11
12 ANCH Framework is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU Lesser General Public License for more details.
16
17 You should have received a copy of the GNU Lesser General Public License
18 along with ANCH Framework. If not, see <http://www.gnu.org/licenses/>.
19*/
20#pragma once
21
22#include <string>
23#include <vector>
24#include <map>
25#include <ostream>
26#include <functional>
27#include <list>
28#include <set>
29#include <map>
30
31#include "json/constants.hpp"
32#include "json/readerContext.hpp"
33#include "json/mappingOptions.hpp"
34
35
36namespace anch::json {
37
38 // JSON mapper early declaration
39 template<typename T>
40 class Factory;
41
53 template<typename T>
54 class PrimitiveMapper {
56
57 // Constructors +
58 private:
62 PrimitiveMapper();
63
64 public:
70 PrimitiveMapper(const PrimitiveMapper& other) = delete;
71
77 PrimitiveMapper(PrimitiveMapper&& other) = delete;
78 // Constructors -
79
80 private:
81 // Destructors +
85 virtual ~PrimitiveMapper();
86 // Destructors -
87
88 // Methods +
89 public:
100 bool serialize(const T& value,
101 std::ostream& out,
102 const anch::json::MappingOptions& options,
103 const std::optional<std::string>& field = EMPTY_FIELD);
104
115 bool serialize(const T* const value,
116 std::ostream& out,
117 const anch::json::MappingOptions& options,
118 const std::optional<std::string>& field = EMPTY_FIELD);
119
130 bool serialize(const std::optional<T>& value,
131 std::ostream& out,
132 const anch::json::MappingOptions& options,
133 const std::optional<std::string>& field = EMPTY_FIELD);
134
145 bool serialize(const std::vector<T>& value,
146 std::ostream& out,
147 const anch::json::MappingOptions& options,
148 const std::optional<std::string>& field = EMPTY_FIELD);
149
160 bool serialize(const std::list<T>& value,
161 std::ostream& out,
162 const anch::json::MappingOptions& options,
163 const std::optional<std::string>& field = EMPTY_FIELD);
164
175 bool serialize(const std::set<T>& value,
176 std::ostream& out,
177 const anch::json::MappingOptions& options,
178 const std::optional<std::string>& field = EMPTY_FIELD);
179
190 bool serialize(const std::map<std::string,T>& value,
191 std::ostream& out,
192 const anch::json::MappingOptions& options,
193 const std::optional<std::string>& field = EMPTY_FIELD);
194
203 bool deserialize(T& value, anch::json::ReaderContext& context);
204
213 bool deserialize(std::optional<T>& value, anch::json::ReaderContext& context);
214
223 bool deserialize(T* value, anch::json::ReaderContext& context);
224
231 bool deserialize(std::vector<T>& value, anch::json::ReaderContext& context);
232
239 bool deserialize(std::list<T>& value, anch::json::ReaderContext& context);
240
247 bool deserialize(std::set<T>& value, anch::json::ReaderContext& context);
248
255 bool deserialize(std::map<std::string,T>& value, anch::json::ReaderContext& context);
256 // Methods -
257
258 };
259
260} // anch::json
261
262#include "json/impl/primitiveMapper.hpp"
JSON mapper factory.
Definition factory.hpp:52
bool serialize(const T &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
bool deserialize(std::optional< T > &value, anch::json::ReaderContext &context)
bool deserialize(std::list< T > &value, anch::json::ReaderContext &context)
bool deserialize(T &value, anch::json::ReaderContext &context)
bool serialize(const std::list< T > &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
bool serialize(const std::vector< T > &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
bool deserialize(std::set< T > &value, anch::json::ReaderContext &context)
bool serialize(const std::set< T > &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
bool serialize(const std::optional< T > &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
bool deserialize(T *value, anch::json::ReaderContext &context)
bool deserialize(std::vector< T > &value, anch::json::ReaderContext &context)
bool serialize(const std::map< std::string, T > &value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
PrimitiveMapper(PrimitiveMapper &&other)=delete
bool deserialize(std::map< std::string, T > &value, anch::json::ReaderContext &context)
PrimitiveMapper(const PrimitiveMapper &other)=delete
bool serialize(const T *const value, std::ostream &out, const anch::json::MappingOptions &options, const std::optional< std::string > &field=EMPTY_FIELD)
JSON mapper context.
Definition readerContext.hpp:42
JSON namespace.
Definition constants.hpp:25
const std::optional< std::string > EMPTY_FIELD
JSON mapping options.
Definition mappingOptions.hpp:35