Wizard
Software Engineering Project - Wizard
Loading...
Searching...
No Matches
src
common
serialization
serializable_value.h
1
//
2
// Created by Manuel on 04.02.2021.
3
//
4
// A serializable value. Supported value types are:
5
// bool
6
// int
7
// unsigned int
8
// int64_t
9
// uint64_t
10
// float
11
// double
12
// string
13
14
#ifndef WIZARD_SERIALIZABLE_VALUE_H
15
#define WIZARD_SERIALIZABLE_VALUE_H
16
17
18
#include <vector>
19
#include <iostream>
20
#include <functional>
21
22
#include "unique_serializable.h"
23
#include "value_type_helpers.h"
24
#include "../../../rapidjson/include/rapidjson/document.h"
25
26
template
<
class
T>
27
class
serializable_value
:
public
serializable
{
28
29
private
:
30
T _value;
31
32
33
public
:
34
35
serializable_value
(T val) :
serializable
(), _value(val) { }
36
37
T get_value()
const
{
return
this->_value; }
38
39
void
set_value(T val) {
40
if
(this->_value != val) {
41
this->_value = val;
42
}
43
}
44
45
// serializable interface
46
virtual
void
write_into_json(rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator)
const override
{
47
json.AddMember(
"value"
, value_type_helpers::get_json_value<
decltype
(_value)>(_value, allocator), allocator);
48
}
49
50
static
serializable_value<T>
* from_json(
const
rapidjson::Value& json) {
51
if
(json.HasMember(
"value"
)) {
52
T val = json[
"value"
].Get<T>();
53
return
new
serializable_value<T>
(val);
54
}
55
return
nullptr
;
56
}
57
};
58
59
60
61
#endif
//WIZARD_SERIALIZABLE_VALUE_H
serializable_value
Definition
serializable_value.h:27
serializable
Definition
serializable.h:11
Generated by
1.12.0