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/genericMapper.hpp"
32#include "json/constants.hpp"
33#include "json/readerContext.hpp"
34#include "json/mappingOptions.hpp"
35
36
37namespace anch::json {
38
39 // JSON mapper early declaration
40 template<typename T>
41 class Factory;
42
54 template<typename T>
55 class PrimitiveMapper: public anch::json::GenericMapper<PrimitiveMapper<T>, T> {
57
58 // Constructors +
59 private:
63 PrimitiveMapper();
64
65 public:
71 PrimitiveMapper(const PrimitiveMapper& other) = delete;
72
78 PrimitiveMapper(PrimitiveMapper&& other) = delete;
79 // Constructors -
80
81 // Destructor +
82 private:
86 virtual ~PrimitiveMapper();
87 // Destructor -
88
89 // Methods +
90 public:
97
108 bool serialize(const T& value,
109 std::ostream& out,
110 const anch::json::MappingOptions& options,
111 const std::optional<std::string>& field = EMPTY_FIELD);
112
123 bool serialize(const T* const value,
124 std::ostream& out,
125 const anch::json::MappingOptions& options,
126 const std::optional<std::string>& field = EMPTY_FIELD);
127
138 bool serialize(const std::optional<T>& value,
139 std::ostream& out,
140 const anch::json::MappingOptions& options,
141 const std::optional<std::string>& field = EMPTY_FIELD);
142
153 bool serialize(const std::vector<T>& value,
154 std::ostream& out,
155 const anch::json::MappingOptions& options,
156 const std::optional<std::string>& field = EMPTY_FIELD);
157
168 bool serialize(const std::list<T>& value,
169 std::ostream& out,
170 const anch::json::MappingOptions& options,
171 const std::optional<std::string>& field = EMPTY_FIELD);
172
183 bool serialize(const std::set<T>& value,
184 std::ostream& out,
185 const anch::json::MappingOptions& options,
186 const std::optional<std::string>& field = EMPTY_FIELD);
187
198 bool serialize(const std::map<std::string,T>& value,
199 std::ostream& out,
200 const anch::json::MappingOptions& options,
201 const std::optional<std::string>& field = EMPTY_FIELD);
202
211 bool deserialize(T& value, anch::json::ReaderContext& context) const;
212 // Methods -
213
214 };
215
216} // anch::json
217
218#include "json/impl/primitiveMapper.hpp"
JSON mapper factory.
Definition factory.hpp:52
Generic mapper.
Definition genericMapper.hpp:45
bool serialize(const 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) const
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 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 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
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 reader 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