36 explicit Parameters(
const bool override_parameters =
true) : serialization::
Parameters(override_parameters)
44 template <
class t_Derived,
class t_Parameters>
56 virtual void endRoot(
const std::string &name)
118 virtual void startArray(
const std::size_t size,
const bool compact =
false) = 0;
157 const std::size_t cols,
158 const std::size_t rows,
162 if (param.flat_matrices_)
164 if (dynamic or param.explicit_matrix_size_)
189 if (not param.flat_matrices_)
208 if (not param.flat_matrices_)
217 if (param.flat_matrices_)
221 if (dynamic or param.explicit_matrix_size_)
263 template <
class t_Scalar>
277 writeElement<float>(entry, param);
281 writeElement<double>(entry, param);
285 #define ARILES2_BASIC_TYPE(type) virtual void writeElement(const type &entry, const t_Parameters ¶m) = 0;
289 #undef ARILES2_BASIC_TYPE
291 template <
typename t_Entry>
296 apply_write(
static_cast<t_Derived &
>(*
this), entry, param);
301 template <
typename t_Entry>
308 if (param.allow_missing_entries_ and
isMissing(entry))
314 apply_write(
static_cast<t_Derived &
>(*
this), entry, param);
318 template <
typename t_Element>
325 apply_write(
static_cast<t_Derived &
>(*
this), element, param);
329 template <
typename t_Element>
339 template <
typename t_Element>
358 template <
class t_Entry>
361 std::size_t map_size = ariles2::apply<ariles2::Count>(entry);
362 if (parameters.allow_missing_entries_)
364 map_size -= ariles2::apply<ariles2::CountMissing>(entry);
405 config_ofs_.good(),
"Could not open configuration file for writing: ", file_name.c_str());
413 #define ARILES2_NAMED_ENTRY_write(v, entry, name) visitor.visitMapEntry(entry, #name, parameters);
414 #define ARILES2_PARENT_write(v, entry)
415 #define ARILES2_VISIT_write \
416 template <class t_Visitor> \
418 t_Visitor &visitor, \
419 const typename t_Visitor::Parameters ¶meters, \
420 ARILES2_IS_BASE_ENABLER(ariles2::write::Visitor, t_Visitor)) const \
422 CPPUT_TRACE_FUNCTION; \
423 CPPUT_UNUSED_ARG(visitor); \
424 CPPUT_UNUSED_ARG(parameters); \
425 arilesVisitParents(visitor, parameters); \
426 ARILES2_ENTRIES(write) \
429 #define ARILES2_METHODS_write ARILES2_METHODS(write, ARILES2_EMPTY_MACRO, const)
430 #define ARILES2_BASE_METHODS_write ARILES2_BASE_METHODS(write)
std::ostream * output_stream_
output stream
std::ofstream config_ofs_
output file stream
FileVisitorImplementation(std::ostream &output_stream)
FileVisitorImplementation(const std::string &file_name)
void openFile(const std::string &file_name)
open configuration file
Parameters(const bool override_parameters=true)
virtual void writeElement(const std::complex< double > &entry, const t_Parameters ¶m)
virtual void startArrayElement()
void visitMatrixElement(const t_Element &element, const t_Parameters ¶m)
virtual void startArray(const std::size_t size, const bool compact=false)=0
virtual void startRoot(const std::string &name, const t_Parameters &)
virtual void startMatrix(const bool dynamic, const std::size_t cols, const std::size_t rows, const t_Parameters ¶m)
virtual void startVectorElement()
virtual void endArrayElement()
virtual void endIteratedMapElement()
virtual void writeElement(const std::complex< float > &entry, const t_Parameters ¶m)
virtual void endMap()
Ends a nested map in the configuration file.
void visitMapEntry(const t_Entry &entry, const std::string &entry_name, const t_Parameters ¶m)
virtual void startMatrixRow(const std::size_t cols, const t_Parameters ¶m)
virtual void startMatrixElement()
virtual void flush()=0
Flush the configuration to the output.
virtual void endMatrixElement()
virtual void endMatrixRow(const t_Parameters ¶m)
ARILES2_BASIC_TYPES_LIST void visit(const t_Entry &entry, const std::string &entry_name, const t_Parameters ¶m)
void visitArrayElement(const t_Element &element, const t_Parameters ¶m)
virtual void startMapEntry(const std::string &map_name)
Starts a nested map in the configuration file.
virtual void startIteratedMapElement(const std::string &map_name)
virtual bool startIteratedMap(const std::size_t num_entries, const t_Parameters ¶m)
virtual void endMapEntry()
void startPointer(const bool is_null, const t_Parameters ¶m)
virtual void endRoot(const std::string &name)
void endPointer(const bool is_null)
virtual void endMatrix(const bool dynamic, const t_Parameters ¶m)
virtual void startVector(const std::size_t size)
virtual void endIteratedMap()
virtual void endVectorElement()
void visitVectorElement(const t_Element &element, const t_Parameters ¶m)
virtual void startMap(const t_Parameters &, const std::size_t)
Starts a nested map in the configuration file.
void writeElement(const std::complex< t_Scalar > &entry, const t_Parameters ¶m)
void startMap(t_Entry &entry, const Parameters ¶meters)
#define CPPUT_PERSISTENT_ASSERT(condition,...)
#define ARILES2_BASIC_TYPES_LIST
#define CPPUT_UNUSED_ARG(parameter)
void apply_write(t_Visitor &writer, const t_Entry &entry, const typename t_Visitor::Parameters ¶meters, ARILES2_IS_BASE_ENABLER(ariles2::write::Base, t_Entry))
bool isMissing(const ARILES2_POINTER_TYPE< t_Entry > &entry)
#define CPPUT_TRACE_FUNCTION
#define CPPUT_TRACE_TYPE(type)
#define CPPUT_TRACE_VALUE(value)