![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 1999 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: simTask.h,v $ $Revision: 1.36 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00013 00014 00015 #ifndef DtSimTask_H_ 00016 #define DtSimTask_H_ 00017 00018 #include "vrfutil/rdrWritr.h" 00019 #include "vrftasks/taskFactory.h" 00020 #include "vrfutil/rwBoolean.h" 00021 #include <vlutil/vlNetTypes.h> 00022 #include "tdbutil/translation.h" 00023 #include "vrftasks/vrftasksDefines.h" 00024 #include "tdbutil/tdbUnits.h" 00025 00026 class DtRwString; 00027 class DtSimTaskFactory; 00028 00032 struct DtNetSimTask 00033 { 00034 DtNetU8 mySubtask; 00035 DtNetU8 padding; 00036 DtNetU16 padding2; 00037 DtNetU32 padding3; 00038 }; 00039 00046 class DT_DLL_vrftasks DtSimTask : public DtReaderWriter 00047 { 00048 protected: 00051 00053 DtSimTask(); 00054 00057 DtSimTask(const DtString & writeName, 00058 DtReaderWriterRegistry * parentRegistry = 0); 00059 00061 DtSimTask(const DtString & writeName, const DtSimTask & orig, 00062 DtReaderWriterRegistry * parentRegistry = 0); 00063 00065 const DtSimTask & operator=(const DtSimTask & orig); 00066 00067 public: 00068 00070 virtual ~DtSimTask(); 00071 00074 virtual bool init(); 00075 00081 virtual int type() const = 0; 00082 00087 virtual DtSimTask * clone(const DtString & name, DtReaderWriterRegistry * 00088 parentRegistry = 0) const = 0; 00089 00095 virtual DtString stringRep() const = 0; 00096 00100 virtual void setSubtask(bool flag); 00101 virtual bool subtask() const; 00102 00105 virtual void putData(FILE *fp, int indentLevel = 0); 00106 00109 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00110 const DtVariableBindingsList& variableBindings); 00111 00112 virtual char* netRep(); 00113 00119 virtual int netRepSize() const; 00120 00125 virtual bool setFromNet(const char* contentBuffer, 00126 unsigned contentSize); 00127 00135 virtual bool setToNet(); 00136 00137 00148 static DtSimTask * createTask(DtlObjPtr mtlStream); 00149 static DtSimTask * createTask(int taskType); 00150 00152 static void addTaskCreatorFcn(const DtString & taskName, int taskType, 00153 DtSimTaskCreatorFcn fcn); 00154 00155 static void setFactory(DtSimTaskFactory * factory); 00156 static DtSimTaskFactory* factory(); 00157 00158 static bool getTaskNameFromTaskType(int taskType, DtString& taskName); 00159 static bool getTaskTypeFromTaskName(const DtString& taskName, 00160 int& taskType); 00161 00162 protected: 00163 virtual char* createNetworkBuffer(); 00164 00165 protected: 00166 DtRwBoolean mySubtask; 00167 char* myNetRep; 00168 00169 00170 static DtSimTaskFactory* myFactory; 00171 }; 00172 00173 namespace DtBufferSerialize 00174 { 00177 DT_DLL_vrftasks int getSize(const DtSimTask* const& taskPtr); 00178 00183 DT_DLL_vrftasks char *encode(const DtSimTask* const& taskPtr, char *buffer); 00184 00193 DT_DLL_vrftasks const char *decode(DtSimTask*& taskPtr, const char *buffer); 00194 } 00195 00196 #endif 00197 00198