VR-Forces 5.0.3 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 
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,
146  bool writeUnspecified = false, const DtFilename& path =
147  DtFilename::nullFilename());
148 
149 protected:
150 
153  void emptyList();
154  void copyList(const DtVrfProcessStateRepositoryManager& origList);
155 
156  void emptyCallbackList(DtList& listToEmpty);
157  void copyCallbackList(DtList& destList, const DtList& origList);
158 
162  virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths& searchPaths,
163  const DtVariableBindingsList& variableBindings);
164 
165  virtual DtListItem* lookupProcessStateRepositoryItem(
166  const DtString& repositoryName);
167 
168  virtual void addProcessStateRepositoryAddedCallback(
170 
171  virtual void removeProcessStateRepositoryAddedCallback(
172  const DtVrfProcessStateManagerCallbackInfo & cbInfo);
173 
174  virtual void addProcessStateRepositoryAboutToBeRemovedCallback(
176 
177  virtual void removeProcessStateRepositoryAboutToBeRemovedCallback(
178  const DtVrfProcessStateManagerCallbackInfo & cbInfo);
179 
181  virtual bool isCompatiblePsr(DtVrfProcessStateRepository* psr) const;
182 
183 protected:
184 
185  DtHashlist myHashIndex;
189 
190  typedef std::pair<DtString, DtVrfProcessStateRepository*> CompatibilityPsrInfo ;
191  std::list<CompatibilityPsrInfo> myCompatibilityPsrs;
192 };
193 
198 template <typename T_PSRType>
199 T_PSRType* findPsrByNameAndType(const DtString& psrName,
200  const std::list<DtVrfProcessStateRepository*>& psrList);
201 
203 template<typename T_PSRType>
204 T_PSRType* findPsrByNameAndType(const DtString& psrName,
205  const std::list<DtVrfProcessStateRepository*>& psrList)
206 {
207  std::list<DtVrfProcessStateRepository*>::const_iterator itr = psrList.begin();
208  std::list<DtVrfProcessStateRepository*>::const_iterator end = psrList.end();
209  for(; itr != end; ++itr)
210  {
211  if ((*itr)->name() == psrName)
212  {
213  if (T_PSRType* psr = dynamic_cast<T_PSRType*>(*itr))
214  {
215  return psr;
216  }
217  }
218  }
219  return 0;
220 }
221 
222 #endif
223 
DtList myAboutToBeRemovedProcessStateRepositoryCallbackList
Definition: vrfProcessStateRepositoryManager.h:186
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
virtual DtlObjPtr getData(DtlObjPtr args, const DtReaderWriter::SearchPaths &searchPaths, const DtVariableBindingsList &variableBindings)=0
This method must be overridden by a subclass. Within this method, new instances of the DtReaderWriter...
Definition: readerWriterRegistry.h:39
class DtVrfProcessStateRepositoryManager:
Definition: vrfProcessStateRepositoryManager.h:49
DtList myAddedProcessStateRepositoryCallbackList
Definition: vrfProcessStateRepositoryManager.h:187
DtHashlist myHashIndex
Definition: vrfProcessStateRepositoryManager.h:185
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
DtVrfProcessStateRepositoryIterator * myIterator
Definition: vrfProcessStateRepositoryManager.h:188
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:191
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:204
void(* DtVrfProcessStateManagerCallbackFcn)(DtVrfProcessStateRepository *obj, void *userData)
Definition: vrfProcessStateManagerCallbackInfo.h:17
std::pair< DtString, DtVrfProcessStateRepository * > CompatibilityPsrInfo
Definition: vrfProcessStateRepositoryManager.h:190

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)