VR-Forces 4.10 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfObjectReference.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
15 #include <readerWriter/rwString.h>
16 #include <vrfutil/rwUUID.h>
19 #include <vl/globalObjectDesignator.h>
20 #include <vlpi/entityIdentifier.h>
21 #include <boost/smart_ptr/shared_ptr.hpp>
22 
23 #include <list>
24 #include <vector>
25 
27 class DtVrfObject;
29 
30 typedef boost::shared_ptr<DtVrfObjectDeletionTracker> DtVrfObjectDeletionHandle;
31 
35 
37 {
38 public:
42 
46  DtVrfObjectReference(const DtString& objectNameToWaitFor);
47  DtVrfObjectReference(const DtUUID& objectUUIDToWaitFor);
48  DtVrfObjectReference(const DtRwUUID& objectUUIDToWaitFor);
49  DtVrfObjectReference(const DtEntityIdentifier& objectUUIDToWaitFor);
50 
51  virtual ~DtVrfObjectReference();
52 
53  const DtVrfObject* object() const;
54  operator const DtVrfObject* () const { return myObject; };
55 
56  virtual bool isValid() const;
57 
58  static void setVrfObjectManager(DtVrfObjectManager*);
59  static DtVrfObjectManager* vrfObjectManager();
60 
61  virtual bool hasBeenDeleted() const;
62 
63  virtual const DtString& waitingForName() const;
64 
65  virtual void registerRemovedCallback();
66 
67  virtual DtUUID uuid() const;
68 
69  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
70  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
71 
72  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
73  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
74 
75 protected:
76 
77  static void objectAddedCallback(const DtVrfObject*, void*);
78  virtual void processObjectAdded(const DtVrfObject*);
79 
80  static void objectAboutToBeRemovedCallback(const DtVrfObject*, void*);
81  virtual void processObjectAboutToBeRemoved(const DtVrfObject*);
82 
83 private:
86  DtVrfObjectReference& operator=(const DtVrfObjectReference&);
87 
88 protected:
95 
97 };
98 
102 class DT_DLL_vrfobjcore DtSharedVrfObjectReference : public boost::shared_ptr<DtVrfObjectReference>
103 {
104 public:
108 
110  {
111  boost::shared_ptr<DtVrfObjectReference>::operator=(rhs);
112 
113  return *this;
114  }
115 
117 
120  {
121  if (get()) { get()->addObjectDiscoveredCallback(fcn, usr); };
122  }
123 
126  {
127  if (get()) { get()->removeObjectDiscoveredCallback(fcn, usr); };
128  }
129 
132  {
133  if (get()) { get()->addObjectAboutToBeRemovedCallback(fcn, usr); };
134  }
135 
138  {
139  if (get()) { get()->removeObjectAboutToBeRemovedCallback(fcn, usr); };
140  }
141 
143  bool hasBeenDeleted() const
144  {
145  if (get())
146  {
147  return get()->hasBeenDeleted();
148  }
149 
150  return false;
151  }
152 
154  bool isValid() const
155  {
156  if (get())
157  {
158  return get()->isValid();
159  }
160 
161  return false;
162  }
163 
166  {
167  if (get())
168  {
169  return get()->waitingForName();
170  }
171 
172  return "";
173  }
174 
176  DtUUID uuid() const
177  {
178  if (get())
179  {
180  return get()->uuid();
181  }
182  else
183  {
184  return DtUUID(waitingForName());
185  }
186  }
187 
191  const DtVrfObject* operator->() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
192 
193  operator const DtVrfObject* () const { if (get() && get()->isValid()) return get()->object(); else return 0; };
194 
195  const DtVrfObject* operator*() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
196  bool operator!() { if (get()) { return !get()->isValid(); } return true; };
198 };
199 
203 
205 {
206 public:
209 
211  parentRegistry = NULL);
212 
214  parentRegistry = NULL);
215 
216  DtRwVrfObjectReference(const DtString&, const DtUUID&,
217  DtReaderWriterRegistry* parentRegistry = NULL);
218 
220  DtReaderWriterRegistry* parentRegistry = NULL);
221 
223  DtReaderWriterRegistry* parentRegistry = NULL);
224 
226  DtReaderWriterRegistry* parentRegistry = NULL);
227 
229  DtReaderWriterRegistry* parentRegistry = NULL);
230 
231  virtual ~DtRwVrfObjectReference();
232 
235  virtual void setUUID(const DtUUID&);
236 
238  virtual bool isValid() const;
239  virtual bool hasBeenDeleted() const;
240 
242  virtual const DtVrfObject* object() const;
243 
244  operator const DtVrfObject* () const { return object(); };
245 
246  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
247  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
248 
249  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
250  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
251 
253  virtual void setObjectReference(DtSharedVrfObjectReference);
256 
258  virtual void clearObjectReference();
259 
262  const DtVrfObject* operator->() const;
263 
264  operator const DtUUID&() const { return uuid(); };
265  virtual DtEntityIdentifier entityIdentifier() const;
266  virtual DtGlobalObjectDesignator globalObjectDesignator() const;
267 
268  DtSharedVrfObjectReference objectReference() const;
269 
271  virtual void clearUUID();
272 
275  virtual void getSelf(DtlObjPtr args,
276  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
277  const DtVariableBindingsList& variableBindings = nullVariableReference());
278 
280  virtual void putSelf(std::string& fp, int indentLevel = 0,
281  bool writeUnspecified = false, const DtFilename& path =
282  DtFilename::nullFilename());
283 
284 protected:
285  static void objectDiscoveredCallback(void* usr);
286  virtual void processObjectDiscovered();
287 
288  static void objectAboutToBeRemovedCallback(void* usr);
289  virtual void processObjectAboutToBeRemoved();
290 
292  virtual void uuidChanged();
293 
294 protected:
298 };
299 
304 
305 class DT_DLL_vrfobjcore DtRwVrfObjectReferenceList : public DtRwTemplatedListPtr<DtRwVrfObjectReference, true>
306 {
307 public:
310 
312  DtRwVrfObjectReferenceList(const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
313  DtRwVrfObjectReferenceList(const DtSymbolString& name, DtReaderWriterRegistry* parentRegistry = NULL);
314 
316  DtReaderWriterRegistry* parentRegistry = NULL);
317 
319  DtReaderWriterRegistry* parentRegistry = NULL);
320 
322  DtReaderWriterRegistry* parentRegistry = NULL);
323 
324  virtual ~DtRwVrfObjectReferenceList();
325 
327  virtual const DtVrfObject* findUUID(const DtUUID&) const;
328 
330  virtual void addUUID(const DtUUID&);
331 
333  virtual bool removeUUID(const DtUUID&);
334 
336  virtual bool hasUUID(const DtUUID&) const;
337 
339  virtual std::vector<DtRwUUID> uuidsAsVector() const;
340 
342  virtual std::list<DtRwUUID> uuidsAsList() const;
343 
345  static void objectAboutToBeRemoved(const DtVrfObject*, void*);
346  virtual void processObjectAboutToBeRemoved(const DtVrfObject*);
347 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:222
virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void *usr)
Once this object is discovered (if it is not discovered) then call this callback. ...
Definition: vrfObjectReference.h:119
DtSharedVrfObjectReference & operator=(const DtSharedVrfObjectReference &rhs)
Definition: vrfObjectReference.h:109
bool operator!()
Definition: vrfObjectReference.h:196
DtVrfObject is used to represent any type of simulated object (entities, aggregate, control objects) in a VR-Forces application.
Definition: vrfObject.h:215
virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void *usr)
Remove discovery callback.
Definition: vrfObjectReference.h:125
Definition: symbolString.h:20
DtSharedVrfObjectReference(const DtSharedVrfObjectReference &ref)
Definition: vrfObjectReference.h:107
const DtVrfObject * operator*() const
Definition: vrfObjectReference.h:195
virtual ~DtSharedVrfObjectReference()
Definition: vrfObjectReference.h:116
bool hasBeenDeleted() const
Return true if this object was once valid and has since been deleted.
Definition: vrfObjectReference.h:143
DtNoArgumentCallbackList myObjectAboutToBeRemovedCallbacks
Definition: vrfObjectReference.h:93
void(* DtCallbackFunctionType)(void *)
The function signature of the callback function.
Definition: noArgumentCallbackList.h:156
virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void *usr)
This about is about to be removed.
Definition: vrfObjectReference.h:131
virtual void getSelf(DtlObjPtr args, const SearchPaths &searchPaths=DtReaderWriter::SearchPaths(), const DtVariableBindingsList &variableBindings=DtVariableBindingsList())
Top level to read itself from an input stream.
Definition: readerWriterRegistry.h:39
virtual void uuidChanged()
No-op at this level.
DtSharedVrfObjectReference class will allocate an empty DtVrfObjectReference if one is not assigned s...
Definition: vrfObjectReference.h:102
virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void *usr)
Remove about to be removed callback.
Definition: vrfObjectReference.h:137
Description: Readable, Writable uuid string.
Definition: rwUUID.h:419
virtual bool isValid() const
virtual void clearUUID()
bool myAddedDiscoveredCallback
Definition: vrfObjectReference.h:297
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
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.
std::list< const DtRwVariableBindings * > DtVariableBindingsList
Definition: readerWriterRegistry.h:29
This class works just as DtCalllbackTable, but manages callbacks that have no arguments, and therefore don&#39;t fit in the template defined by DtCallbackList.
Definition: noArgumentCallbackList.h:152
std::vector< DtFilename > SearchPaths
Definition: readerWriter.h:92
DtString waitingForName() const
If this object is not yet discovered what object is waiting to be discovered (by marking text) ...
Definition: vrfObjectReference.h:165
bool isValid() const
Return true if there is an object that is referenced by this container.
Definition: vrfObjectReference.h:154
DtSharedVrfObjectReference(DtVrfObjectReference *ref)
Definition: vrfObjectReference.h:106
DtRwUUID & operator=(const DtRwUUID &orig)
static DtVrfObjectManager * theVrfObjectManager
Definition: vrfObjectReference.h:96
boost::shared_ptr< DtVrfObjectDeletionTracker > DtVrfObjectDeletionHandle
Definition: vrfObject.h:146
static const DtVariableBindingsList & nullVariableReference()
class DtVrfObjectManager:
Definition: vrfObjectManager.h:202
bool myRemoveRegistered
Definition: vrfObjectReference.h:94
Class used as the reader/writer implementation of the DtVrfObjectReference.
Definition: vrfObjectReference.h:204
const DtUUID & uuid() const
Definition: rwUUID.h:468
DtString myWaitingForName
Definition: vrfObjectReference.h:90
const DtVrfObject * myObject
Definition: vrfObjectReference.h:89
A version of DtRwList that contains a homogeneous list of a templated RW type.
Definition: rwTemplatedList.h:26
DtVrfObjectDeletionHandle myObjectDeletionHandle
Definition: vrfObjectReference.h:91
bool myAddedRemovedCallback
Definition: vrfObjectReference.h:296
DtSharedVrfObjectReference myObject
Definition: vrfObjectReference.h:295
const DtVrfObject * operator->() const
Returns the object this represents.
Definition: vrfObjectReference.h:191
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: vrfObjectReference.h:305
Class used to track an object, or, to supply information (UUID, entity identifier, etc) about an object, and, if this object does not exist, will add a callback with the object manager for when that particular object is discovered.
Definition: vrfObjectReference.h:36
DtSharedVrfObjectReference()
Definition: vrfObjectReference.h:105
virtual void setUUID(const DtRwUUID &u)
Used to know whether the DtVrfObject you&#39;re tracking has been deleted.
Definition: vrfObject.h:127
DtNoArgumentCallbackList myObjectDiscoveredCallbacks
Definition: vrfObjectReference.h:92
DtUUID uuid() const
The unique identifier of this object.
Definition: vrfObjectReference.h:176

Document ID: Generated on Tue Sep 21 17:42:52 EDT 2021 from SVN revision 234861
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)