>xabsl   The Extensible Agent Behavior Specification Language

XabslEngine Class Library Reference

 

XabslParameters.h

Go to the documentation of this file.
00001 /**
00002 * @file XabslParameters.h
00003 *
00004 * Definition of class Parameters
00005 *
00006 * @author <a href="http://www.sim.informatik.tu-darmstadt.de/pers/card/risler.html">Max Risler</a>
00007 */
00008 
00009 #ifndef __XabslParameters_h_
00010 #define __XabslParameters_h_
00011 
00012 #include "XabslTools.h"
00013 
00014 namespace xabsl 
00015 {
00016 
00017 // class prototypes needed for declaration of Parameters
00018 class Symbols;
00019 class Enumeration;
00020 class Option;
00021 class State;
00022 class DecimalExpression;
00023 class BooleanExpression;
00024 class EnumeratedExpression;
00025 
00026 /**
00027 * @class Parameters
00028 *
00029 * Represents the current set of parameters of a behavior or an input symbol
00030 */
00031 class Parameters
00032 {
00033 public:
00034   /** 
00035   * Constructor.
00036   * @param errorHandler A reference to a ErrorHandler instance
00037   */
00038   Parameters(ErrorHandler& errorHandler)
00039                   : errorHandler(errorHandler), pEnumerations(0)
00040   {}
00041 
00042   /**
00043   * Destructor
00044   */
00045   virtual ~Parameters() {};
00046 
00047 
00048   /** Reset all parameters to default values (=0) */
00049   void reset();
00050 
00051   /** The decimal parameters */
00052   NamedArray<double*> decimal;
00053 
00054   /** The boolean parameters */
00055   NamedArray<bool*> boolean;
00056 
00057   /** The enumerated parameters */
00058   NamedArray<int*> enumerated;
00059 
00060   /** The enumeration domain of the enumerated parameters */
00061   NamedArray<const Enumeration*> enumerations;
00062 
00063   /**
00064   * Registers a reference to the enumerations of the engine
00065   * This is only required when registerEnumerated is called afterwards
00066   */
00067   void registerEnumerations(NamedArray<Enumeration*>& enumerations);
00068 
00069   /** 
00070   * Registers a reference to a decimal parameter at the parameters array.
00071   * @param name The name of the parameter
00072   * @param parameter The reference to a parameter
00073   */
00074   void registerDecimal(const char* name, double& parameter);
00075   
00076   /** 
00077   * Registers a reference to a boolean parameter at the parameters array.
00078   * @param name The name of the parameter
00079   * @param parameter The reference to a parameter
00080   */
00081   void registerBoolean(const char* name, bool& parameter);
00082 
00083   /** 
00084   * Registers a reference to an enumerated parameter at the parameters array.
00085   * @param name The name of the parameter
00086   * @param enumName The name of the corresponding enumeration
00087   * @param parameter The reference to a parameter
00088   */
00089   void registerEnumerated(const char* name, const char* enumName, int& parameter);
00090 
00091 protected:
00092   /** Used for error handling */
00093   ErrorHandler& errorHandler;
00094 
00095 private:
00096   /** Pointer to the enumerations of the engine */
00097   NamedArray<Enumeration*>* pEnumerations;
00098 };
00099 
00100 /**
00101 * @class ParameterAssignment
00102 *
00103 * Represents the assignment of parameters of a subsequent basic behaviors or an option or an input symbol
00104 */
00105 class ParameterAssignment : public Parameters
00106 {
00107 public:
00108   /** Constructor.
00109   * @param refParameters The referenced set of parameters
00110   * @param errorHandler A reference to a ErrorHandler instance
00111   */
00112   ParameterAssignment(
00113     Parameters* refParameters,
00114     ErrorHandler& errorHandler
00115     );
00116 
00117   /** 
00118   * Creates the parameter assignment.
00119   * @param input An input source for the intermediate code. It must be opened and read until 
00120   *              A position where a state starts.
00121   * @param symbols All available symbols
00122   * @param option The current option
00123   * @param state The current state
00124   */
00125   void create(
00126     InputSource& input,    
00127     Symbols& symbols,
00128     Option& option,
00129     State& state);
00130   
00131   /** Destructor */
00132   ~ParameterAssignment();
00133 
00134   /** Adds a decimal parameter assignment 
00135   * @param param name of the parameter
00136   * @param exp expression to be set to the parameter value when executing
00137   * @return False, if an error occurred
00138   */
00139   bool setDecimalParameter(const char* param, const DecimalExpression* exp);
00140   /** Adds a decimal parameter assignment 
00141   * @param param name of the parameter
00142   * @param value value to be set to the parameter value when executing
00143   * @return False, if an error occurred
00144   */
00145   bool setDecimalParameter(const char* param, double value);
00146 
00147   /** Adds a boolean parameter assignment 
00148   * @param param name of the parameter
00149   * @param exp expression to be set to the parameter value when executing
00150   * @return False, if an error occurred
00151   */
00152   bool setBooleanParameter(const char* param, const BooleanExpression* exp);
00153   /** Adds a boolean parameter assignment 
00154   * @param param name of the parameter
00155   * @param value value to be set to the parameter value when executing
00156   * @return False, if an error occurred
00157   */
00158   bool setBooleanParameter(const char* param, bool value);
00159 
00160   /** Adds an enumerated parameter assignment 
00161   * @param param name of the parameter
00162   * @param exp expression to be set to the parameter value when executing
00163   * @return False, if an error occurred
00164   */
00165   bool setEnumeratedParameter(const char* param, const EnumeratedExpression* exp);
00166   /** Adds an enumerated parameter assignment 
00167   * @param param name of the parameter
00168   * @param value value to be set to the parameter value when executing
00169   * @return False, if an error occurred
00170   */
00171   bool setEnumeratedParameter(const char* param, const Enumeration* enumeration, int value);
00172   /** Adds an enumerated parameter assignment 
00173   * @param param name of the parameter
00174   * @param value value to be set to the parameter value when executing
00175   * @return False, if an error occurred
00176   */
00177   bool setEnumeratedParameter(const char* param, const char* value);
00178 
00179   /** Current parameter values, these are stored just for debugging purposes */
00180   NamedArray<double> decimalValues;
00181   NamedArray<bool> booleanValues;
00182   NamedArray<int> enumeratedValues;
00183 
00184   /** Decimal expressions for the parameters */
00185   NamedArray<const DecimalExpression*> decimalExpressions;
00186   /** Boolean expressions for the parameters */
00187   NamedArray<const BooleanExpression*> booleanExpressions;
00188   /** Enumerated expressions for the parameters */
00189   NamedArray<const EnumeratedExpression*> enumeratedExpressions;
00190 
00191   /**
00192   * sets parameter variables to current expression values
00193   * returns true when parameter values have been changed
00194   */
00195   bool set();
00196 };
00197 
00198 } // namespace
00199 
00200 #endif // __XabslParameters_h_
00201 
00202 

Up | Main Page | Generated at Wed Aug 19 17:32:29 2009.