31#ifndef DRAIN_BEANLIKE_H_
32#define DRAIN_BEANLIKE_H_
41#include <drain/StringBuilder.h>
44#include "ReferenceMap.h"
72 BeanLike(
const std::string & name,
const std::string & description=
"") : name(name), description(description) {
80 const std::string &
getName()
const {
return name; };
91 bool hasParameters()
const {
92 return !parameters.empty();
98 if (parameters.hasKey(p))
101 throw std::runtime_error(p +
": no such parameter (BeanLike::getParameter)");
106 const map_t & getParameters()
const {
return parameters; };
109 map_t & getParameters() {
return parameters; };
114 void setParametersFromEntries(
const F & args){
116 map_t & parameters = getParameters();
117 std::stringstream sstr;
119 for (
const auto & entry: args){
120 parameters[entry.first] = entry.second;
126 sstr << entry.first <<
'=' << entry.second;
144 setParametersFromEntries(args);
175 void setParameters(
const std::string &p,
char assignmentSymbol=
'=',
char separatorSymbol=0){
176 parameters.setValues(p, assignmentSymbol, separatorSymbol);
187 setParametersFromEntries(args);
200 setParametersFromEntries(args);
210 parameters[p].assignCastable(value);
220 parameters[p].assignCastable(value);
238 parameters[p] = value;
247 void setParameter(
const std::string &p, std::initializer_list<F> value){
248 parameters[p] = value;
257 parameters.importMap(b.getParameters());
264 std::ostream & toStream(std::ostream & ostr,
bool compact =
true)
const;
281 const std::string name;
283 const std::string description;
302std::ostream & operator<<(std::ostream &ostr,
const BeanLike & bean){
Something which has a name, a description and possibly some parameters of varying type.
Definition BeanLike.h:58
virtual const std::string & getName() const
Return the name of an instance.
Definition BeanLike.h:80
virtual const std::string & getDescription() const
Return a brief description.
Definition BeanLike.h:85
F getParameter(const std::string &p) const
Gets a single parameter.
Definition BeanLike.h:97
void setParameter(const std::string &p, const VariableT< T > &value)
Definition BeanLike.h:219
void setParameters(const std::map< std::string, T > &args)
Set parameters.
Definition BeanLike.h:186
void setParameter(const std::string &p, std::initializer_list< F > value)
Sets a single parameter.
Definition BeanLike.h:247
virtual void setParameters(const std::string &p, char assignmentSymbol='=', char separatorSymbol=0)
Sets comma-separated parameters in a predetermined order "a,b,c" or by specifing them "b=2".
Definition BeanLike.h:175
void setParameters(std::initializer_list< Variable::init_pair_t > args)
Grants access to (if above hidden)
Definition BeanLike.h:142
void setParameters(const SmartMap< T > &args)
Set parameters.
Definition BeanLike.h:199
void setParameter(const std::string &p, const F &value)
Sets a single parameter.
Definition BeanLike.h:237
void setParameter(const std::string &p, const Castable &value)
Sets a single parameter.
Definition BeanLike.h:209
virtual void storeLastArguments(const std::string &p)
Called after setParameters()
Definition BeanLike.h:290
virtual void updateBean() const
Called after setParameters()
Definition BeanLike.h:294
Definition ReferenceMap.h:215
void copyStruct(const ReferenceMap &m, const T &src, T &dst, extLinkPolicy policy=RESERVE)
Experimental. Copies references and values of a structure to another.
Definition ReferenceMap.h:415
@ RESERVE
Definition ReferenceMap.h:401
A base class for smart maps providing methods for importing and exporting values, among others.
Definition SmartMap.h:62
Definition StringBuilder.h:58
VariableT is a final class applied through typedefs Variable, Reference and FlexibleVariable.
Definition VariableT.h:87
Definition DataSelector.cpp:1277