Enrollment 28.2.0
Loading...
Searching...
No Matches
JsonWriter.h
Go to the documentation of this file.
1
9
10#pragma once
11
12#include "enrollment/Export.h"
15
16namespace inno
17{
18 extern "C"
19 {
20 struct inno_JsonWriterImpl;
21
22 // Functions suitable for DLL interface
23 INNO_ENROLLMENT_API void inno_JsonWriter_WriteNull(inno_JsonWriterImpl* impl, const char* name);
24 INNO_ENROLLMENT_API void inno_JsonWriter_WriteInt(inno_JsonWriterImpl* impl, const char* name, int value);
25 INNO_ENROLLMENT_API void inno_JsonWriter_WriteString(inno_JsonWriterImpl* impl,
26 const char* name,
27 const char* value);
28 INNO_ENROLLMENT_API void inno_JsonWriter_WriteUInt(inno_JsonWriterImpl* impl,
29 const char* name,
30 unsigned int value);
31 INNO_ENROLLMENT_API void inno_JsonWriter_WriteDouble(inno_JsonWriterImpl* impl, const char* name, double value);
32 INNO_ENROLLMENT_API void inno_JsonWriter_WriteLongInt(inno_JsonWriterImpl* impl,
33 const char* name,
34 int64_t value);
35 INNO_ENROLLMENT_API void inno_JsonWriter_WriteLongUint(inno_JsonWriterImpl* impl,
36 const char* name,
37 uint64_t value);
38 INNO_ENROLLMENT_API void inno_JsonWriter_StartArray(inno_JsonWriterImpl* impl, const char* name);
39 INNO_ENROLLMENT_API void inno_JsonWriter_EndArray(inno_JsonWriterImpl* impl);
40 INNO_ENROLLMENT_API void inno_JsonWriter_StartObject(inno_JsonWriterImpl* impl, const char* name);
41 INNO_ENROLLMENT_API void inno_JsonWriter_EndObject(inno_JsonWriterImpl* impl);
42 INNO_ENROLLMENT_API const char* inno_JsonWriter_Output(inno_JsonWriterImpl* impl);
43 INNO_ENROLLMENT_API inno_JsonWriterImpl* inno_JsonWriter_Construct();
44 INNO_ENROLLMENT_API void inno_JsonWriter_Destruct(inno_JsonWriterImpl* impl);
45 }
46
51 */
52 class JsonWriter final : public Writer
53 {
54 public:
58 */
59 [[nodiscard]] const char* Output() const
60 {
61 return inno_JsonWriter_Output(impl.get());
62 }
64 void Write(const char* name, const Serializable& s) final
65 {
66 StartObject(name);
67 s.WriteTo(*this);
68 EndObject();
69 }
71 void WriteRoot(Serializable& s) final
72 {
73 StartObject("");
74 s.WriteTo(*this);
75 EndObject();
76 }
77 void WriteNull(const char* name) final
78 {
79 inno_JsonWriter_WriteNull(impl.get(), name);
80 }
81 void Write(const char* name, const char* value) final
82 {
83 inno_JsonWriter_WriteString(impl.get(), name, value);
84 }
85 void Write(const char* name, int value) final
86 {
87 inno_JsonWriter_WriteInt(impl.get(), name, value);
88 }
89 void Write(const char* name, unsigned int value) final
90 {
91 inno_JsonWriter_WriteUInt(impl.get(), name, value);
92 }
93 void Write(const char* name, double value) final
94 {
95 inno_JsonWriter_WriteDouble(impl.get(), name, value);
96 }
97 void Write(const char* name, int64_t value) final
98 {
99 inno_JsonWriter_WriteLongInt(impl.get(), name, value);
101 void Write(const char* name, uint64_t value) final
102 {
103 inno_JsonWriter_WriteLongUint(impl.get(), name, value);
105 void Write(const char* name, const std::shared_ptr<Image>& image) final
106 {
107 if (image != nullptr)
108 {
109 auto encoder = image->OriginalEncoder();
110 WriteArray(name, encoder->Encode(image->AsRawImage()));
111 }
112 else
113 {
114 WriteNull(name);
115 }
116 }
119 */
120 JsonWriter()
121 : impl(inno_JsonWriter_Construct(), inno_JsonWriter_Destruct)
122 {
123 }
124 JsonWriter(const JsonWriter&) = delete;
125 JsonWriter(JsonWriter&&) = delete;
126 JsonWriter& operator=(const JsonWriter&) = delete;
127 JsonWriter& operator=(JsonWriter&&) = delete;
128 virtual ~JsonWriter() = default;
129
130 private:
131 std::unique_ptr<inno_JsonWriterImpl, void (*)(inno_JsonWriterImpl*)> impl;
132
133 void StartObject(const char* name)
134 {
135 inno_JsonWriter_StartObject(impl.get(), name);
136 }
137 void EndObject()
138 {
139 inno_JsonWriter_EndObject(impl.get());
140 }
141 void StartArray(const char* name) final
142 {
143 inno_JsonWriter_StartArray(impl.get(), name);
144 }
145 void EndArray() final
146 {
147 inno_JsonWriter_EndArray(impl.get());
148 }
149 };
150} // namespace inno
JSON implementation of Writer abstraction.
Definition JsonWriter.h:52
JsonWriter()
Constructor sets up serialization backend.
Definition JsonWriter.h:119
void Write(const char *name, unsigned int value) final
Serialize unsigned int.
Definition JsonWriter.h:88
void Write(const char *name, uint64_t value) final
Serialize uint64_t integer.
Definition JsonWriter.h:100
void WriteRoot(Serializable &s) final
Serialize serializable as root object.
Definition JsonWriter.h:70
void Write(const char *name, int value) final
Serialize int.
Definition JsonWriter.h:84
void Write(const char *name, int64_t value) final
Serialize int64_t integer.
Definition JsonWriter.h:96
void Write(const char *name, const std::shared_ptr< Image > &image) final
Serialize Image.
Definition JsonWriter.h:104
void Write(const char *name, double value) final
Serialize double.
Definition JsonWriter.h:92
void WriteNull(const char *name) final
Serialize null object.
Definition JsonWriter.h:76
const char * Output() const
Provides serialization output.
Definition JsonWriter.h:58
void Write(const char *name, const Serializable &s) final
Serialize serializable.
Definition JsonWriter.h:63
void Write(const char *name, const char *value) final
Serialize string.
Definition JsonWriter.h:80
Interface that MUST be implemented by all classes those want to be serialized.
Definition Writer.h:27
void WriteArray(const char *name, const std::vector< uint8_t > &value)
Serialize bytes from vector.
Definition Writer.h:233