23 #ifndef CLOE_UTILITY_OUTPUT_SERIALIZER_JSON_HPP_ 24 #define CLOE_UTILITY_OUTPUT_SERIALIZER_JSON_HPP_ 34 enum class JsonFileType {
42 {cloe::utility::JsonFileType::JSON_GZIP ,
"json.gz" },
43 {cloe::utility::JsonFileType::JSON_ZIP ,
"json.zip" },
44 {cloe::utility::JsonFileType::JSON ,
"json" },
48 class AbstractJsonSerializerBase {
50 static const std::string json_array_open;
51 static const std::string json_array_close;
54 template <
typename... TSerializerArgs>
56 public AbstractJsonSerializerBase {
61 std::string make_default_filename(
const std::string& default_filename)
override {
62 return default_filename +
".json";
64 void start_array()
override { base::write(json_array_open); }
65 void end_array()
override { base::write(json_array_close); }
71 using json_base::json_base;
72 void serialize(
const Json& j,
bool write_delim)
override {
87 virtual void open_file(
const std::string& filename) = 0;
88 virtual void serialize(
const Json& j) = 0;
89 virtual void close_file() = 0;
92 static const std::string default_filename;
93 bool prepend_delimiter{
false};
97 template <
typename TOutputStream>
107 using file_base::open_file;
108 void open_file(
const std::string& filename)
override {
109 std::string default_name = this->outputstream_.make_default_filename(
110 this->serializer_.make_default_filename(default_filename));
111 file_base::open_file(filename, default_name);
113 using file_base::serialize;
114 void serialize(
const Json& j)
override {
115 file_base::serialize(j, prepend_delimiter);
116 prepend_delimiter =
true;
118 void close_file()
override { file_base::close_file(); }
121 void on_file_opened()
override { this->serializer_.start_array(); }
122 void on_file_closing()
override { this->serializer_.end_array(); }
129 std::unique_ptr<JsonFileSerializer> make_json_file_serializer(JsonFileType type, Logger log);
134 #endif // CLOE_UTILITY_OUTPUT_SERIALIZER_JSON_HPP_ Definition: output_serializer_json.hpp:68
SequentialFileSerializer is a FileSerializer for sequences of objects of the same type...
Definition: output_serializer.hpp:191
Definition: output_serializer_json.hpp:84
Definition: coordinator.hpp:36
Definition: output_serializer_json.hpp:55
Definition: output_serializer_json.hpp:98
Definition: enum_test.cpp:29
#define ENUM_SERIALIZATION(xType, xMap)
Definition: enum.hpp:52
Definition: output_serializer.hpp:62