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