Go to the documentation of this file.
14 #include <msgpack.hpp>
27 typedef ARILES2_SHARED_PTR< ::msgpack::packer<std::ostream> >
PackerPtr;
32 void operator=(
const Writer &);
48 explicit Writer(
const std::string &file_name)
51 output_stream_ = &config_ofs_;
52 packer_ =
PackerPtr(new ::msgpack::packer<std::ostream>(*output_stream_));
54 nameless_counter_ = 0;
58 explicit Writer(std::ostream &output_stream)
60 output_stream_ = &output_stream;
61 packer_ =
PackerPtr(new ::msgpack::packer<std::ostream>(*output_stream_));
63 nameless_counter_ = 0;
89 ARILES2_TRACE_FUNCTION;
90 impl_->packer_->pack_map(num_entries);
95 ARILES2_TRACE_FUNCTION;
96 ARILES2_TRACE_VALUE(map_name);
97 impl_->packer_->pack(map_name);
103 ARILES2_TRACE_FUNCTION;
104 impl_->output_stream_->flush();
110 ARILES2_TRACE_FUNCTION;
111 ARILES2_ASSERT(size <= std::numeric_limits<uint32_t>::max(),
"Vector is too long.");
113 impl_->packer_->pack_array(size);
119 ARILES2_TRACE_FUNCTION;
120 if (
true == name.empty())
123 0 ==
impl_->nameless_counter_,
124 "Multiple nameless root entries are not supported, specify root names explicitly.");
125 ++
impl_->nameless_counter_;
126 impl_->packer_->pack_map(1);
131 impl_->packer_->pack_map(1);
138 ARILES2_TRACE_FUNCTION;
143 #define ARILES2_BASIC_TYPE(type) \
144 void Writer::writeElement(const type &element, const Parameters &) \
146 ARILES2_TRACE_FUNCTION; \
147 impl_->packer_->pack(element); \
152 #undef ARILES2_BASIC_TYPE
#define ARILES2_BASIC_TYPES_LIST
Writer(const std::string &file_name)
Constructor.
virtual void endMapEntry()
void startArray(const std::size_t size, const bool=false)
void startMap(const Parameters &, const std::size_t num_entries)
Starts a nested map in the configuration file.
ARILES2_SHARED_PTR< ::msgpack::packer< std::ostream > > PackerPtr
std::size_t nameless_counter_
Writer(std::ostream &output_stream)
void flush()
Flush the configuration to the output.
class ARILES2_VISIBILITY_ATTRIBUTE Writer
Writer(const std::string &file_name)
#define ARILES2_VISIBILITY_ATTRIBUTE
void startRoot(const std::string &name, const Parameters &)
ARILES2_MACRO_SUBSTITUTE(ARILES2_BASIC_INTEGER_TYPES_LIST) ARILES2_MACRO_SUBSTITUTE(ARILES2_BASIC_REAL_TYPES_LIST) void Writer
void startMapEntry(const std::string &map_name)
Starts a nested map in the configuration file.
std::ofstream config_ofs_
output file stream
static void openFile(std::ofstream &config_ofs, const std::string &file_name)
open configuration file
std::ostream * output_stream_
output stream
void endRoot(const std::string &name)
ARILES2_SHARED_PTR< impl::Writer > ImplPtr