VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfProcessStateRepositoryManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2005 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: procSRMgr.h,v $ $Revision: 1.9 $ $State: Exp $
7 *******************************************************************************/
8 
11 
17 
18 #ifndef DtVrfProcessStateRepositoryManager_H_
19 #define DtVrfProcessStateRepositoryManager_H_
20 
21 #include <vlutil/vlHashlist.h>
22 #include <readerWriter/rwList.h>
25 #include <list>
26 #include <set>
27 
29 class DtString;
33 
38  DtVrfProcessStateRepository* procStateRep, void* usr);
39 
50 {
51 
52 public:
53 
56 
59  DtReaderWriterRegistry* parentRegistry = 0);
60 
62  virtual ~DtVrfProcessStateRepositoryManager() override;
63 
67  DtReaderWriterRegistry* parentRegistry = 0);
68 
72 
74  const DtString& name, DtReaderWriterRegistry* parentRegistry = 0);
75 
79  virtual void addProcessStateRepository(
80  DtVrfProcessStateRepository* repToAdd);
81 
84  virtual void addCompatibilityProcessStateRepository(DtVrfProcessStateRepository* repToAdd,
85  const DtString& psrName);
86 
89  virtual void removeProcessStateRepository(
90  DtVrfProcessStateRepository* repToRemove);
91 
93  virtual void removeCompatibilityProcessStateRepository(DtVrfProcessStateRepository* repToRemove,
94  const DtString& psrName);
95 
99  virtual DtVrfProcessStateRepository* lookupProcessStateRepository(
100  const DtString& procRepName, bool recurse = true) const;
101 
103 
107  const DtVrfProcessStateRepositoryIterator& iterator() const;
108 
111  virtual void completePSRList(std::list<DtVrfProcessStateRepository*>& psrList) const;
112 
114 
117  virtual void addProcessStateRepositoryAddedCallback(
118  DtVrfProcessStateManagerCallbackFcn fcn, void* usrData);
119 
122  virtual void removeProcessStateRepositoryAddedCallback(
123  DtVrfProcessStateManagerCallbackFcn fcn, void* usrData);
124 
126  virtual void invokeProcessStateRepositoryAddedCallbacks(
127  DtVrfProcessStateRepository* repBeingRemove) const;
128 
129 
132  virtual void addProcessStateRepositoryAboutToBeRemovedCallback(
133  DtVrfProcessStateManagerCallbackFcn fcn, void* usrData);
134 
137  virtual void removeProcessStateRepositoryAboutToBeRemovedCallback(
138  DtVrfProcessStateManagerCallbackFcn fcn, void* usrData);
139 
141  virtual void invokeProcessStateRepositoryAboutToBeRemovedCallbacks(
142  DtVrfProcessStateRepository* repBeingRemove) const;
143 
145  virtual void putSelf(std::string& fp, int indentLevel = 0, bool writeUnspecified = false,
146  const DtFilename& path = DtFilename::nullFilename()) override;
147 
148 protected:
149 
152  void emptyList();
153  void copyList(const DtVrfProcessStateRepositoryManager& origList);
154 
155  void emptyCallbackList(DtList& listToEmpty);
156  void copyCallbackList(DtList& destList, const DtList& origList);
157 
161  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
162  const DtVariableBindingsList& variableBindings) override;
163 
164  virtual DtListItem* lookupProcessStateRepositoryItem(
165  const DtString& repositoryName);
166 
167  virtual void addProcessStateRepositoryAddedCallback(
169 
170  virtual void removeProcessStateRepositoryAddedCallback(
171  const DtVrfProcessStateManagerCallbackInfo & cbInfo);
172 
173  virtual void addProcessStateRepositoryAboutToBeRemovedCallback(
175 
176  virtual void removeProcessStateRepositoryAboutToBeRemovedCallback(
177  const DtVrfProcessStateManagerCallbackInfo & cbInfo);
178 
180  virtual bool isCompatiblePsr(DtVrfProcessStateRepository* psr) const;
181 
182 protected:
183 
184  DtHashlist myHashIndex;
188 
189  typedef std::pair<DtString, DtVrfProcessStateRepository*> CompatibilityPsrInfo ;
190  std::list<CompatibilityPsrInfo> myCompatibilityPsrs;
191 };
192 
197 template <typename T_PSRType>
198 T_PSRType* findPsrByNameAndType(const DtString& psrName,
199  const std::list<DtVrfProcessStateRepository*>& psrList);
200 
202 template<typename T_PSRType>
203 T_PSRType* findPsrByNameAndType(const DtString& psrName,
204  const std::list<DtVrfProcessStateRepository*>& psrList)
205 {
206  std::list<DtVrfProcessStateRepository*>::const_iterator itr = psrList.begin();
207  std::list<DtVrfProcessStateRepository*>::const_iterator end = psrList.end();
208  for(; itr != end; ++itr)
209  {
210  if ((*itr)->name() == psrName)
211  {
212  if (T_PSRType* psr = dynamic_cast<T_PSRType*>(*itr))
213  {
214  return psr;
215  }
216  }
217  }
218  return 0;
219 }
220 
221 #endif
222 
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings) override=0
This method must be overridden by a subclass. Within this method, new instances of the DtReaderWriter...
DtList myAboutToBeRemovedProcessStateRepositoryCallbackList
Definition: vrfProcessStateRepositoryManager.h:185
Iterator for iterating over a DtList of process state repositories. Used by DtVrfProcessStateManager...
Definition: vrfProcessStateRepositoryIterator.h:32
A Readable, Writable version of DtList. This class cannot be used directly, but must be inherited to ...
Definition: rwList.h:26
class DtVrfProcessStateManagerCallbackInfo:
Definition: vrfProcessStateManagerCallbackInfo.h:26
Definition: readerWriterRegistry.h:39
class DtVrfProcessStateRepositoryManager:
Definition: vrfProcessStateRepositoryManager.h:49
DtList myAddedProcessStateRepositoryCallbackList
Definition: vrfProcessStateRepositoryManager.h:186
DtHashlist myHashIndex
Definition: vrfProcessStateRepositoryManager.h:184
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtVrfProcessStateRepositoryIterator * myIterator
Definition: vrfProcessStateRepositoryManager.h:187
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
virtual void putSelf(std::string &fp, int indentLevel=0, bool writeUnspecified=false, const DtFilename &path=DtFilename::nullFilename())
Top level call to write itself to file. If write unspecified is true, will write entries that are uns...
Class DtVrfProcessStateRepository: Abstract base class for all process state repositories. Process state repositories represent (potentially) shared, savable information for one or more components functioning together to achieve some process or set of processes; such as aiming and firing a weapon; moving an object; or just waiting a specified amount of time.
Definition: vrfProcessStateRepository.h:45
std::list< CompatibilityPsrInfo > myCompatibilityPsrs
Definition: vrfProcessStateRepositoryManager.h:190
const DtRwList & operator=(const DtRwList &orig)
Calls down to DtReaderWriter::operator=(). List elements are not copied.
T_PSRType * findPsrByNameAndType(const DtString &psrName, const std::list< DtVrfProcessStateRepository * > &psrList)
Templated function which finds the first occurrence of a PSR in the specified psrList that has the sp...
Definition: vrfProcessStateRepositoryManager.h:203
void(* DtVrfProcessStateManagerCallbackFcn)(DtVrfProcessStateRepository *obj, void *userData)
Definition: vrfProcessStateManagerCallbackInfo.h:17
std::pair< DtString, DtVrfProcessStateRepository * > CompatibilityPsrInfo
Definition: vrfProcessStateRepositoryManager.h:189

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)