31#ifndef DRAIN_BEANLIKE_H_ 
   32#define DRAIN_BEANLIKE_H_ 
   43#include <drain/StringBuilder.h> 
   46#include "ReferenceMap.h" 
   74    BeanLike(
const std::string & name, 
const std::string & description=
"") : name(name), description(description) {
 
   82    const std::string & 
getName()
 const { 
return name; };
 
   93    bool hasParameters()
 const {
 
   94        return !parameters.empty();
 
  100        if (parameters.hasKey(p))
 
  101            return parameters[p];
 
  103            throw std::runtime_error(p + 
": no such parameter (BeanLike::getParameter)");
 
 
  108    const map_t & getParameters()
 const { 
return parameters; };
 
  111    map_t & getParameters() { 
return parameters; };
 
  116    void setParametersFromEntries(
const F & args){
 
  118        map_t & parameters = getParameters();
 
  119        std::stringstream sstr;
 
  121        for (
const auto & entry: args){
 
  122            parameters[entry.first] = entry.second;
 
  128            sstr << entry.first << 
'=' << entry.second;
 
  146        setParametersFromEntries(args);
 
 
  177    void setParameters(
const std::string &p, 
char assignmentSymbol=
'=', 
char separatorSymbol=0){
 
  178        parameters.setValues(p, assignmentSymbol, separatorSymbol);
 
 
  189        setParametersFromEntries(args);
 
 
  202        setParametersFromEntries(args);
 
 
  212        parameters[p].assignCastable(value);
 
 
  222        parameters[p].assignCastable(value);
 
 
  240        parameters[p] = value;
 
 
  249    void setParameter(
const std::string &p, std::initializer_list<F> value){
 
  250        parameters[p] = value;
 
 
  259        parameters.importMap(b.getParameters()); 
 
  266    std::ostream & toStream(std::ostream & ostr, 
bool compact = 
true) 
const;
 
  283    const std::string name;  
 
  285    const std::string description; 
 
 
  304std::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:60
virtual const std::string & getName() const
Return the name of an instance.
Definition BeanLike.h:82
virtual const std::string & getDescription() const
Return a brief description.
Definition BeanLike.h:87
F getParameter(const std::string &p) const
Gets a single parameter.
Definition BeanLike.h:99
void setParameter(const std::string &p, const VariableT< T > &value)
Definition BeanLike.h:221
void setParameters(const std::map< std::string, T > &args)
Set parameters.
Definition BeanLike.h:188
void setParameter(const std::string &p, std::initializer_list< F > value)
Sets a single parameter.
Definition BeanLike.h:249
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:177
void setParameters(std::initializer_list< Variable::init_pair_t > args)
Grants access to (if above hidden)
Definition BeanLike.h:144
void setParameters(const SmartMap< T > &args)
Set parameters.
Definition BeanLike.h:201
void setParameter(const std::string &p, const F &value)
Sets a single parameter.
Definition BeanLike.h:239
void setParameter(const std::string &p, const Castable &value)
Sets a single parameter.
Definition BeanLike.h:211
virtual void storeLastArguments(const std::string &p)
Called after setParameters()
Definition BeanLike.h:292
virtual void updateBean() const
Called after setParameters()
Definition BeanLike.h:296
Definition ReferenceMap.h:207
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:407
@ RESERVE
Definition ReferenceMap.h:393
A base class for smart maps providing methods for importing and exporting values, among others.
Definition SmartMap.h:66
Definition StringBuilder.h:58
VariableT is a final class applied through typedefs Variable, Reference and FlexibleVariable.
Definition VariableT.h:87
Definition DataSelector.cpp:1277