32 enum class JsonFileType {
40 {cloe::utility::JsonFileType::JSON_GZIP ,
"json.gz" },
41 {cloe::utility::JsonFileType::JSON_ZIP ,
"json.zip" },
42 {cloe::utility::JsonFileType::JSON ,
"json" },
46 class AbstractJsonSerializerBase {
48 static const std::string json_array_open;
49 static const std::string json_array_close;
52 template <
typename... TSerializerArgs>
54 public AbstractJsonSerializerBase {
59 std::string make_default_filename(
const std::string& default_filename)
override {
60 return default_filename +
".json";
62 void start_array()
override { base::write(json_array_open); }
63 void end_array()
override { base::write(json_array_close); }
69 using json_base::json_base;
70 void serialize(
const Json& j,
bool write_delim)
override {
87 virtual bool open_file(
const std::string& filename) = 0;
89 virtual void serialize(
const Json& j) = 0;
90 virtual void close_file() = 0;
93 static const std::string default_filename;
94 bool prepend_delimiter{
false};
98 template <
typename TOutputStream>
108 using file_base::open_file;
111 bool open_file(
const std::string& filename)
override {
112 std::string default_name = this->outputstream_.make_default_filename(
113 this->serializer_.make_default_filename(default_filename));
114 return file_base::open_file(filename, default_name);
117 using file_base::serialize;
118 void serialize(
const Json& j)
override {
119 file_base::serialize(j, prepend_delimiter);
120 prepend_delimiter =
true;
122 void close_file()
override { file_base::close_file(); }
125 void on_file_opened()
override { this->serializer_.start_array(); }
126 void on_file_closing()
override { this->serializer_.end_array(); }
133 std::unique_ptr<JsonFileSerializer> make_json_file_serializer(JsonFileType type, Logger log);
Definition: output_serializer_json.hpp:54
Definition: output_serializer_json.hpp:101
Definition: output_serializer_json.hpp:82
SequentialFileSerializer is a FileSerializer for sequences of objects of the same type.
Definition: output_serializer.hpp:199
Definition: output_serializer.hpp:60
Definition: output_serializer_json.hpp:66
#define ENUM_SERIALIZATION(xType, xMap)
Definition: enum.hpp:51