VR-Forces 4.0.4 Class Documentation
include/vrfobjcore/procSRMgr.h
Go to the documentation of this file.
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 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)