Robotsystem of the Robot Group Leipzig: Configurable Class Reference

- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages
- Examples

- Search for |

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Configurable Class Reference

Abstact class for configurable objects. More...

`#include <configurable.h>`

Inherited by AbstractController, AbstractModel, AbstractRobot, OdeConfig, Simulation, and QLearning.

Inheritance diagram for Configurable:

[legend]
List of all members.

## Public Types
typedef std::string | paramkey
typedef double | paramval
typedef std::list< std::pair< paramkey, paramval > > | paramlist
typedef std::map< paramkey, paramval * > | parammap
## Public Member Functions
| Configurable ()
| Configurable (const std::string &name, const std::string &revision)
| intialise with name and revision (use "$ID$")
virtual | ~Configurable ()
int | getId () const
| return the id of the configurable objects, which is created by random on initialisation
virtual paramkey | getName () const
| return the name of the object
virtual paramkey | getRevision () const
| returns the revision of the object
virtual void | setName (const paramkey &name)
| stes the name of the object
virtual void | getRevision (const paramkey &revision)
| sets the revision Hint: { return "$ID$"; }
virtual paramval | getParam (const paramkey &key) const
| returns the value of the requested parameter or 0 (+ error message to stderr) if unknown.
virtual bool | setParam (const paramkey &key, paramval val)
| sets the value of the given parameter or does nothing if unknown.
virtual paramlist | getParamList () const
| The list of all parameters with there value as allocated lists.
virtual void | addParameter (const paramkey &key, paramval *val)
| This is the new style for adding configurable parameters.
virtual void | addParameterDef (const paramkey &key, paramval *val, paramval def)
| This function is only provided for convenience.
bool | storeCfg (const char *filenamestem, const std::list< std::string > &comments=std::list< std::string >())
| stores the key values paires into the file : filenamestem.cfg including the comments given in the list
bool | restoreCfg (const char *filenamestem)
| restores the key values paires from the file : filenamestem.cfg
void | print (FILE *f, const char *prefix) const
void | parse (FILE *f)
## Static Public Member Functions
static void | insertCVSInfo (paramkey &str, const char *file, const char *revision)
| This is a utility function for inserting the filename and the revision number at the beginning of the given string buffer str and terminates it.
## Classes
struct | matchId
| nice predicate function for finding by ID More...

## Detailed Description

Abstact class for configurable objects.

Sort of Hashmap interface. Parameters are double values

The Configurator is a (planned) external tool that can be used for changing the values of configurable objects.

Protocoll for Configurator:

    To Configurator (BNF notation):
    Conf         := <Comp>*
    Comp         := <CompName> <Pair>*
    CompName     := [<string>][<int>]<newline>
    Pair         := <alphanum>=<double><newline>

the remaining tags are self explanatory

Example

    [Component name which can contain spaces and digits and .,- ][ID1]
    key1 = value1
    key2 = value2
    .
    .
    [Other Component name which can contain spaces and digits and .,- ][ID2]
    key3 = value3

Answer: (from Communicator to Simulation environment)
1. On change of a parameter:

    [ID] key=newvalue

or

    key=newvalue

the latter one means that the parameter is changed in all components

2. Request of the description as defined above.

    #Something I don\'t care

## Member Typedef Documentation

typedef std::string paramkey

typedef std::list< std::pair<paramkey, paramval> > paramlist

typedef std::map< paramkey, paramval* > parammap

typedef double paramval

## Constructor & Destructor Documentation

Configurable | ( |  | ) | `[inline]`

Configurable | ( | const std::string & | name,
|  | const std::string & | revision |
| ) |  |  | `[inline]`

intialise with name and revision (use "$ID$")

virtual ~Configurable | ( |  | ) | `[inline, virtual]`

## Member Function Documentation

virtual void addParameter | ( | const paramkey & | key,
|  | paramval * | val |
| ) |  |  | `[inline, virtual]`

This is the new style for adding configurable parameters.

Just call this function for each parameter and you are done. If you need to do some special treatment for setting (or getting) of the parameter you can handle this by overloading getParam and setParam

virtual void addParameterDef | ( | const paramkey & | key,
|  | paramval * | val,
|  | paramval | def |
| ) |  |  | `[inline, virtual]`

This function is only provided for convenience.

It does the same as addParameter but set the variable to the default value

int getId | ( |  | ) | const`[inline]`

return the id of the configurable objects, which is created by random on initialisation

virtual paramkey getName | ( |  | ) | const`[inline, virtual]`

return the name of the object

Reimplemented in Elman, InvertNChannelController, OneLayerFFNN, and Arm.

virtual paramval getParam | ( | const paramkey & | key | ) | const`[inline, virtual]`

returns the value of the requested parameter or 0 (+ error message to stderr) if unknown.

Examples:
  integration/main.cpp.

virtual paramlist getParamList | ( |  | ) | const`[inline, virtual]`

The list of all parameters with there value as allocated lists.

Returns:
  list of key-value pairs

Reimplemented in ClassicReinforce, FFNNController, InvertController, InvertMotorBigModel, InvertMotorController, MutualInformationController, OneLayerFFNN, SineController, use_java_controller, MyRobot, OdeConfig, Arm, Arm2Segm, DefaultCaterPillar, DefaultWheelie, Hand, HurlingSnake, MuscledArm, Schlange, SliderWheelie, Uwo, and VierBeiner.

virtual void getRevision | ( | const paramkey & | revision | ) | `[inline, virtual]`

sets the revision Hint: { return "$ID$"; }

virtual paramkey getRevision | ( |  | ) | const`[inline, virtual]`

returns the revision of the object

void insertCVSInfo | ( | paramkey & | str,
|  | const char * | file,
|  | const char * | revision |
| ) |  |  | `[static]`

This is a utility function for inserting the filename and the revision number at the beginning of the given string buffer str and terminates it.

Parameters:

  | str | buffer (call by reference) that should have space for file+revision+2 characters
  | file | filename given by CVS i.e. RCSfile configurable.h,v
  | revision | revision number given by CVS i.e. Revision 1.4

void parse | ( | FILE * | f | ) |

void print | ( | FILE * | f,
|  | const char * | prefix |
| ) |  |  | const

Examples:
  directconnect/directconnect.cpp.

bool restoreCfg | ( | const char * | filenamestem | ) |

restores the key values paires from the file : filenamestem.cfg

virtual void setName | ( | const paramkey & | name | ) | `[inline, virtual]`

stes the name of the object

virtual bool setParam | ( | const paramkey & | key,
|  | paramval | val |
| ) |  |  | `[inline, virtual]`

sets the value of the given parameter or does nothing if unknown.

Examples:
  directconnect/directconnect.cpp, integration/main.cpp, and template_sphererobot/main.cpp.

bool storeCfg | ( | const char * | filenamestem,
|  | const std::list< std::string > & | comments = `std::list< std::string >()` |
| ) |  |  |

stores the key values paires into the file : filenamestem.cfg including the comments given in the list

The documentation for this class was generated from the following files:

- configurable.h
- configurable.cpp