00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef ARMODULE_H
00028 #define ARMODULE_H
00029
00030
00031 #include "ariaTypedefs.h"
00032 #include "ArRobot.h"
00033
00034
00036
00075 class ArModule
00076 {
00077 public:
00078
00080 ArModule();
00082 virtual ~ArModule();
00083
00085
00094 virtual bool init(ArRobot *robot,
00095 void *argument = NULL) = 0;
00096
00098 virtual bool exit() = 0;
00099
00101 ArRobot * getRobot() {return(myRobot);}
00102
00104 void setRobot(ArRobot *robot) {myRobot=robot;}
00105
00106 protected:
00107
00109 ArRobot *myRobot;
00110 };
00111
00112
00113
00114
00115
00116
00117
00118 #ifdef ARIA_STATIC
00119
00120 #define ARDEF_MODULE(mod)
00121
00122 #else
00123
00124 #ifdef WIN32
00125
00126 #define ARDEF_MODULE(mod) \
00127 extern "C" {\
00128 ArModule *__AriaModule__=&mod; \
00129 _declspec(dllexport) bool \
00130 ariaInitModule(ArRobot *robot, void *argument = NULL) \
00131 { \
00132 if (__AriaModule__) \
00133 { \
00134 __AriaModule__->setRobot(robot); \
00135 return(__AriaModule__->init(robot, argument)); \
00136 } \
00137 else \
00138 return(false); \
00139 } \
00140 _declspec(dllexport) bool ariaExitModule() \
00141 { \
00142 if (__AriaModule__) \
00143 return(__AriaModule__->exit()); \
00144 return(false); \
00145 } \
00146 }
00147 #else // WIN32
00148
00149 #define ARDEF_MODULE(mod) \
00150 ArModule *__AriaModule__=&mod; \
00151 extern "C" {\
00152 bool ariaInitModule(ArRobot *robot, void *argument = NULL) \
00153 { \
00154 if (__AriaModule__) \
00155 { \
00156 __AriaModule__->setRobot(robot); \
00157 return(__AriaModule__->init(robot, argument)); \
00158 } \
00159 else \
00160 return(false); \
00161 } \
00162 bool ariaExitModule() \
00163 { \
00164 if (__AriaModule__) \
00165 return(__AriaModule__->exit()); \
00166 return(false); \
00167 } \
00168 }
00169
00170 #endif // WIN32
00171
00172 #endif // ARIA_STATIC
00173
00174
00175 #endif // ARMODULE_H