Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Tools/Xabsl2/Xabsl2Engine/Xabsl2BasicBehavior.h

Go to the documentation of this file.
00001 /** 
00002 * @file Xabsl2BasicBehavior.h
00003 *
00004 * Declaration class Xabsl2BasicBehavior
00005 *
00006 * @author Matthias Jüngel
00007 * @author Martin Lötzsch
00008 */
00009 
00010 #ifndef __Xabsl2BasicBehavior_h_
00011 #define __Xabsl2BasicBehavior_h_
00012 
00013 #include "Xabsl2Tools.h"
00014 
00015 /**
00016 * The base class for basic behaviors that are used by the XabslEngine
00017 *
00018 * @author Matthias Jüngel
00019 * @author Martin Lötzsch
00020 *
00021 */
00022 class Xabsl2BasicBehavior : public Xabsl2NamedItem
00023 {
00024 public:
00025   /** 
00026   * Constructor 
00027   * @param name The name of the basic behavior
00028   * @param errorHandler A reference 
00029   */
00030   Xabsl2BasicBehavior(const char* name, Xabsl2ErrorHandler& errorHandler)
00031     : Xabsl2NamedItem(name), errorHandler(errorHandler),
00032     basicBehaviorWasActiveDuringLastExecutionOfEngine(false)
00033   {};
00034   
00035   /** 
00036   * executes the basic behavior
00037   */
00038   virtual void execute() = 0;
00039   
00040   /** sets all parameter values to 0 */
00041   void reset() 
00042   { for (int i=0; i<parameters.getSize(); i++) parameters[i]=0; }
00043   
00044   /** The parameters of the basic behavior */
00045   Xabsl2Array<double&> parameters;
00046 
00047   /** Determines if the basic behavior was active during the last execution of the engine */
00048   bool basicBehaviorWasActiveDuringLastExecutionOfEngine;
00049 
00050 /** 
00051 * Registeres a reference to a parameter at the parameters array.
00052 * @param name The name of the parameter
00053 * @param parameter The reference to a parameter of the basic behavior
00054   */
00055   void registerParameter(const char* name, double& parameter)
00056   {
00057     XABSL2_DEBUG_INIT(errorHandler.message("registering parameter \"%s\" of basic behavior \"%s\"",name,n));
00058     
00059     if (parameters.exists(name))
00060     {
00061       errorHandler.error("registerParameter(): parameter \"%s\" was already registered",name);
00062       return;
00063     }
00064     parameters.append(name,parameter);
00065     parameter = 0;
00066   };
00067   
00068 protected:
00069   /** Is invoked when a errors occur */
00070   Xabsl2ErrorHandler& errorHandler;
00071 };
00072 
00073 
00074 #endif // __Xabsl2BasicBehavior_h_
00075 
00076 /*
00077 * Change Log
00078 * 
00079 * $Log: Xabsl2BasicBehavior.h,v $
00080 * Revision 1.1.1.1  2004/05/22 17:37:53  cvsadm
00081 * created new repository GT2004_WM
00082 *
00083 * Revision 1.1  2003/10/07 10:13:25  cvsadm
00084 * Created GT2004 (M.J.)
00085 *
00086 * Revision 1.3  2003/09/30 10:51:10  dueffert
00087 * typos fixed
00088 *
00089 * Revision 1.2  2003/09/20 16:34:15  loetzsch
00090 * renamed "following-option-..." to "subsequent-option-.." and
00091 * "following-basic-behavior-.." to "subsequent-basic-behavior-.."
00092 * for consistency with publications
00093 *
00094 * Revision 1.1.1.1  2003/07/02 09:40:29  cvsadm
00095 * created new repository for the competitions in Padova from the 
00096 * tamara CVS (Tuesday 2:00 pm)
00097 *
00098 * removed unused solutions
00099 *
00100 * Revision 1.14  2003/05/06 07:38:08  risler
00101 * registerParameter public
00102 *
00103 * Revision 1.13  2003/05/05 17:47:55  loetzsch
00104 * added in Xabsl2:
00105 * - marking of states as target-states with attribute is-target-state="true"
00106 * - common-decision-tree
00107 *
00108 * Revision 1.12  2003/04/14 16:18:51  loetzsch
00109 * ATH after GermanOpen CVS merge
00110 * added basicBehaviorWasActiveDuringLastExecutionOfEngine
00111 *
00112 * Revision 1.2  2003/04/09 17:01:06  loetzsch
00113 * added the boolean basicBehaviorWasActiveDuringLastExecutionOfEngine
00114 *
00115 * Revision 1.1.1.1  2003/04/09 14:23:22  loetzsch
00116 * started Aibo Team Humboldt's GermanOpen CVS
00117 *
00118 * Revision 1.11  2003/03/06 11:45:42  dueffert
00119 * re-order warning removed
00120 *
00121 * Revision 1.10  2003/02/20 15:55:02  dueffert
00122 * bug fixed
00123 *
00124 * Revision 1.9  2003/01/13 22:39:38  loetzsch
00125 * implemented the execution of the engine.
00126 *
00127 * Revision 1.8  2003/01/13 21:59:08  timrie
00128 * corrected doxygen comments
00129 *
00130 * Revision 1.7  2003/01/11 14:41:06  loetzsch
00131 * The name of the basic behavior must be specified in the constructor
00132 *
00133 * Revision 1.6  2003/01/03 14:43:55  dueffert
00134 * doxygen docu corrected
00135 *
00136 * Revision 1.5  2002/12/11 12:23:31  loetzsch
00137 * basic behaviors register their parameters in their constructor
00138 * the parameters array contains only references to doubles in the basic behavior
00139 *
00140 * Revision 1.4  2002/12/06 21:13:37  loetzsch
00141 * Decimal input symbols can now be registered at the engine
00142 *
00143 * Revision 1.3  2002/12/02 19:56:32  loetzsch
00144 * - Xabsl2Array now seems to work for more than 1 element
00145 * - Basic behaviors now can be registered at the engine
00146 * - Basic behaviors have access to their parameters
00147 *
00148 * Revision 1.2  2002/12/01 17:54:30  loetzsch
00149 * continued Xabsl2Engine: Xabsl2Array seems to work now
00150 *
00151 * Revision 1.1  2002/12/01 13:45:58  loetzsch
00152 * first version of Xabsl2Engine
00153 *
00154 */
00155 

Generated on Thu Sep 23 19:57:42 2004 for GT2004 by doxygen 1.3.6