16 #include <boost/lexical_cast.hpp>
21 namespace ns_namevalue
26 template <
class t_NameValuePair>
51 template <
class t_NameValuePair>
123 void reset(
const bool initialize_structure =
true)
125 if (initialize_structure)
153 if (
back().isArray())
157 boost::lexical_cast<std::string>(
back().
index_),
188 virtual void startArray(
const std::size_t size,
const bool =
false)
193 if (
back().isArray())
223 #define ARILES2_BASIC_TYPE(type) \
224 void writeElement(const type &element, const Parameters &) \
227 if (initialize_structure_) \
229 NameValuePairHandler<t_NameValuePair>::name((*name_value_pairs_)[index_]) = back().node_; \
230 if (back().isArray()) \
232 NameValuePairHandler<t_NameValuePair>::name((*name_value_pairs_)[index_]) += "_"; \
233 NameValuePairHandler<t_NameValuePair>::name((*name_value_pairs_)[index_]) += \
234 boost::lexical_cast<std::string>(back().index_); \
237 NameValuePairHandler<t_NameValuePair>::value((*name_value_pairs_)[index_]) = element; \
243 #undef ARILES2_BASIC_TYPE
Configuration writer class.
CPPUT_MACRO_SUBSTITUTE(ARILES2_BASIC_NUMERIC_TYPES_LIST) void writeElement(const std
virtual void endMapEntry()
virtual void startArray(const std::size_t size, const bool=false)
virtual void endArrayElement()
void expandReserve(const std::size_t size)
const std::string bracket_left_
const std::string separator_
const std::string bracket_right_
virtual void startMapEntry(const std::string &map_name)
Starts a nested map in the configuration file.
bool initialize_structure_
std::vector< t_NameValuePair > buffer_name_value_pairs_
std::vector< t_NameValuePair > * name_value_pairs_
void reset(const bool initialize_structure=true)
virtual void startMap(const Parameters &, const std::size_t num_entries)
Starts a nested map in the configuration file.
GenericWriter(std::vector< t_NameValuePair > *name_value_pairs, const std::size_t reserve=0)
void flush()
Flush the configuration to the output.
virtual void endMap()
Ends a nested map in the configuration file.
virtual bool startIteratedMap(const std::size_t, const Parameters &)
GenericWriter(const std::size_t reserve=0)
static std::string & name(NameValuePair &pair)
static double & value(NameValuePair &pair)
serialization::Node< std::string > & back()
std::string concatWithNode(t_String &&...strings) const
void emplace(t_Args &&...args)
void concatWithNodeAndEmplace(t_String &&...strings)
void writeElement(const std::complex< t_Scalar > &entry, const Parameters ¶m)
#define ARILES2_BASIC_NUMERIC_TYPES_LIST
std::pair< std::string, double > NameValuePair
std::string reserve(t_String &&...strings)