![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2005 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: procSRMgr.h,v $ $Revision: 1.9 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00017 00018 #ifndef DtVrfProcessStateRepositoryManager_H_ 00019 #define DtVrfProcessStateRepositoryManager_H_ 00020 00021 #include <vlutil/vlHashlist.h> 00022 #include "vrfutil/rwList.h" 00023 #include "vrfobjcore/processSR.h" 00024 #include <list> 00025 00026 class DtReaderWriterRegistry; 00027 class DtString; 00028 class DtVrfProcessStateRepositoryIterator; 00029 class DtVrfProcessStateManagerCallbackInfo; 00030 class DtVrfProcessStateRepositoryIterator; 00031 00035 typedef void (*DtVrfProcessStateManagerCallbackFcn)( 00036 DtVrfProcessStateRepository* procStateRep, void* usr); 00037 00044 00045 #include "vrfobjcore/vrfobjcoreDefines.h" 00046 class DT_DLL_vrfobjcore DtVrfProcessStateRepositoryManager : public DtRwList 00047 { 00048 00049 public: 00050 00052 DtVrfProcessStateRepositoryManager(); 00053 00055 DtVrfProcessStateRepositoryManager(const DtString& name, 00056 DtReaderWriterRegistry* parentRegistry = 0); 00057 00059 virtual ~DtVrfProcessStateRepositoryManager(); 00060 00062 DtVrfProcessStateRepositoryManager(const DtString& name, 00063 const DtVrfProcessStateRepositoryManager& orig, 00064 DtReaderWriterRegistry* parentRegistry = 0); 00065 00067 DtVrfProcessStateRepositoryManager& operator=( 00068 const DtVrfProcessStateRepositoryManager& orig); 00069 00070 virtual DtVrfProcessStateRepositoryManager* clone( 00071 const DtString& name, DtReaderWriterRegistry* parentRegistry = 0); 00072 00076 virtual void addProcessStateRepository( 00077 DtVrfProcessStateRepository* repToAdd); 00078 00081 virtual void removeProcessStateRepository( 00082 DtVrfProcessStateRepository* repToRemove); 00083 00087 virtual DtVrfProcessStateRepository* lookupProcessStateRepository( 00088 const DtString& procRepName) const; 00089 00091 00095 const DtVrfProcessStateRepositoryIterator& iterator() const; 00096 00099 virtual void completePSRList(std::list<DtVrfProcessStateRepository*>& psrList) const; 00100 00102 00105 virtual void addProcessStateRepositoryAddedCallback( 00106 DtVrfProcessStateManagerCallbackFcn fcn, void* usrData); 00107 00110 virtual void removeProcessStateRepositoryAddedCallback( 00111 DtVrfProcessStateManagerCallbackFcn fcn, void* usrData); 00112 00114 virtual void invokeProcessStateRepositoryAddedCallbacks( 00115 DtVrfProcessStateRepository* repBeingRemove) const; 00116 00117 00120 virtual void addProcessStateRepositoryAboutToBeRemovedCallback( 00121 DtVrfProcessStateManagerCallbackFcn fcn, void* usrData); 00122 00125 virtual void removeProcessStateRepositoryAboutToBeRemovedCallback( 00126 DtVrfProcessStateManagerCallbackFcn fcn, void* usrData); 00127 00129 virtual void invokeProcessStateRepositoryAboutToBeRemovedCallbacks( 00130 DtVrfProcessStateRepository* repBeingRemove) const; 00131 00132 protected: 00133 00136 void emptyList(); 00137 void copyList(const DtVrfProcessStateRepositoryManager& origList); 00138 00139 void emptyCallbackList(DtList& listToEmpty); 00140 void copyCallbackList(DtList& destList, const DtList& origList); 00141 00145 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00146 const DtVariableBindingsList& variableBindings); 00147 00148 virtual DtListItem* lookupProcessStateRepositoryItem( 00149 const DtString& repositoryName); 00150 00151 virtual void addProcessStateRepositoryAddedCallback( 00152 DtVrfProcessStateManagerCallbackInfo * cbInfo); 00153 00154 virtual void removeProcessStateRepositoryAddedCallback( 00155 const DtVrfProcessStateManagerCallbackInfo & cbInfo); 00156 00157 virtual void addProcessStateRepositoryAboutToBeRemovedCallback( 00158 DtVrfProcessStateManagerCallbackInfo * cbInfo); 00159 00160 virtual void removeProcessStateRepositoryAboutToBeRemovedCallback( 00161 const DtVrfProcessStateManagerCallbackInfo & cbInfo); 00162 00163 protected: 00164 00165 DtHashlist myHashIndex; 00166 DtList myAboutToBeRemovedProcessStateRepositoryCallbackList; 00167 DtList myAddedProcessStateRepositoryCallbackList; 00168 DtVrfProcessStateRepositoryIterator* myIterator; 00169 }; 00170 00175 template <typename T_PSRType> 00176 T_PSRType* findPsrByNameAndType(const DtString& psrName, 00177 const std::list<DtVrfProcessStateRepository*>& psrList); 00178 00180 template<typename T_PSRType> 00181 T_PSRType* findPsrByNameAndType(const DtString& psrName, 00182 const std::list<DtVrfProcessStateRepository*>& psrList) 00183 { 00184 std::list<DtVrfProcessStateRepository*>::const_iterator itr = psrList.begin(); 00185 std::list<DtVrfProcessStateRepository*>::const_iterator end = psrList.end(); 00186 for(; itr != end; ++itr) 00187 { 00188 if ((*itr)->name() == psrName) 00189 { 00190 if (T_PSRType* psr = dynamic_cast<T_PSRType*>(*itr)) 00191 { 00192 return psr; 00193 } 00194 } 00195 } 00196 return 0; 00197 } 00198 00199 #endif 00200