![]() |
VR-Link API Documentation for HLA Evolved
|
00001 /********************************************************************* 00002 ** Copyright (c) 1992-2010 VT MAK 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 00006 00007 #ifndef tReflectedObj_H_ 00008 #define tReflectedObj_H_ 00009 00010 #if DtTENA 00011 00012 00013 #include "refObjCbInfo.h" 00014 #include "hostStructs.h" 00015 00016 #include <vlutil/vlTime.h> 00017 #include <vlutil/vlString.h> 00018 #include <vlutil/vlList.h> 00019 00023 00024 class DT_DLL_VL DtExerciseConn; 00025 class DT_DLL_VL DtStateRepository; 00026 00027 00032 class DT_DLL_VL DtReflectedObject : public DtListedObj 00033 00034 { 00035 public: 00036 00038 typedef DtStateRepository* (*DtBaseStateRepCreator)(); 00039 00040 public: 00041 00043 DtReflectedObject(DtExerciseConn* conn, 00044 DtStateRepository *stateRep); 00045 00047 DtReflectedObject(DtExerciseConn* conn, 00048 DtBaseStateRepCreator creator); 00049 00051 virtual ~DtReflectedObject(); 00052 00055 virtual DtStateRepository* stateRep() const; 00056 00058 virtual DtReflectedObject* nextObj() const; 00059 00061 virtual DtReflectedObject* prevObj() const; 00062 00065 virtual DtReflectedObject* wrapNextObj() const; 00066 00069 virtual DtReflectedObject* wrapPrevObj() const; 00070 00072 virtual DtStateRepository* sr() const; 00073 00075 virtual const DtGlobalObjectDesignator& globalId() const = 0; 00076 00079 virtual void baseAddPostUpdateCallback( 00080 DtReflectedObjectCallbackFunction cb, void* userData); 00081 virtual void baseRemovePostUpdateCallback( 00082 DtReflectedObjectCallbackFunction cb, void* userData); 00083 00085 virtual void processPostUpdateCallbacks(); 00086 00088 virtual void printDataToStream(std::ostream& str) const = 0; 00089 00090 protected: 00091 00092 DtExerciseConn *myExConn; 00093 DtIntrusiveList myStateUpdateCallbacks; 00094 DtStateRepository *myStateRep; 00095 00096 protected: 00097 00099 DtReflectedObject(const DtReflectedObject& orig); 00100 00102 DtReflectedObject& operator=(const DtReflectedObject& orig); 00103 }; 00104 00105 DT_DLL_VL std::ostream & operator << (std::ostream &str, const DtReflectedObject &sr); 00106 00110 inline DtStateRepository* DtReflectedObject::stateRep() const 00111 { 00112 return myStateRep; 00113 } 00114 00115 inline DtStateRepository* DtReflectedObject::sr() const 00116 { 00117 return myStateRep; 00118 } 00119 00120 inline DtReflectedObject* DtReflectedObject::nextObj() const 00121 { 00122 return (DtReflectedObject*) DtListedObj::next(); 00123 } 00124 00125 inline DtReflectedObject* DtReflectedObject::prevObj() const 00126 { 00127 return (DtReflectedObject*) DtListedObj::prev(); 00128 } 00129 00130 inline DtReflectedObject* DtReflectedObject::wrapNextObj() const 00131 { 00132 return (DtReflectedObject*) DtListedObj::wrapNext(); 00133 } 00134 00135 inline DtReflectedObject* DtReflectedObject::wrapPrevObj() const 00136 { 00137 return (DtReflectedObject*) DtListedObj::wrapPrev(); 00138 } 00139 00140 00141 #endif 00142 #endif 00143