VR-Forces Development_Version Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 <vrfutil/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  DtVrfObject* object();
55 
56  operator DtVrfObject*() { return myObject; };
57  operator const DtVrfObject* () const { return myObject; };
58 
59  virtual bool isValid() const;
60 
61  static void setVrfObjectManager(DtVrfObjectManager*);
62  static DtVrfObjectManager* vrfObjectManager();
63 
64  virtual bool hasBeenDeleted() const;
65 
66  virtual const DtString& waitingForName() const;
67 
68  virtual void registerRemovedCallback();
69 
70  virtual DtUUID uuid() const;
71 
72  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
73  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
74 
75  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
76  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
77 
78 protected:
79  static void objectAddedCallback(DtVrfObject*, void*);
80  virtual void processObjectAdded(DtVrfObject*);
81 
82  static void objectAboutToBeRemovedCallback(DtVrfObject*, void*);
83  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
84 
85 private:
88  DtVrfObjectReference& operator=(const DtVrfObjectReference&);
89 
90 protected:
97 
99 };
100 
104 class DT_DLL_vrfobjcore DtSharedVrfObjectReference : public boost::shared_ptr<DtVrfObjectReference>
105 {
106 public:
110 
112  {
113  boost::shared_ptr<DtVrfObjectReference>::operator=(rhs);
114 
115  return *this;
116  }
117 
119 
121  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
122  {
123  if (get()) { get()->addObjectDiscoveredCallback(fcn, usr); };
124  }
125 
127  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
128  {
129  if (get()) { get()->removeObjectDiscoveredCallback(fcn, usr); };
130  }
131 
133  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
134  {
135  if (get()) { get()->addObjectAboutToBeRemovedCallback(fcn, usr); };
136  }
137 
139  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
140  {
141  if (get()) { get()->removeObjectAboutToBeRemovedCallback(fcn, usr); };
142  }
143 
145  bool hasBeenDeleted() const
146  {
147  if (get())
148  {
149  return get()->hasBeenDeleted();
150  }
151 
152  return false;
153  }
154 
156  bool isValid() const
157  {
158  if (get())
159  {
160  return get()->isValid();
161  }
162 
163  return false;
164  }
165 
167  DtString waitingForName() const
168  {
169  if (get())
170  {
171  return get()->waitingForName();
172  }
173 
174  return "";
175  }
176 
178  DtUUID uuid() const
179  {
180  if (get())
181  {
182  return get()->uuid();
183  }
184  else
185  {
186  return DtUUID(waitingForName());
187  }
188  }
189 
193  DtVrfObject* operator->() { if (get() && get()->isValid()) return get()->object(); else return 0; };
194  const DtVrfObject* operator->() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
195 
196  operator DtVrfObject*() { if (get() && get()->isValid()) return get()->object(); else return 0; };
197  operator const DtVrfObject* () const { if (get() && get()->isValid()) return get()->object(); else return 0; };
198 
199  const DtVrfObject* operator*() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
200  DtVrfObject* operator*() { if (get() && get()->isValid()) return get()->object(); else return 0; };
201  bool operator!() { if (get()) { return !get()->isValid(); } return true; };
203 };
204 
208 
210 {
211 public:
214 
216  parentRegistry = NULL);
217 
219  parentRegistry = NULL);
220 
221  DtRwVrfObjectReference(const DtString&, const DtUUID&,
222  DtReaderWriterRegistry* parentRegistry = NULL);
223 
225  DtReaderWriterRegistry* parentRegistry = NULL);
226 
228  DtReaderWriterRegistry* parentRegistry = NULL);
229 
231  DtReaderWriterRegistry* parentRegistry = NULL);
232 
234  DtReaderWriterRegistry* parentRegistry = NULL);
235 
236  virtual ~DtRwVrfObjectReference();
237 
240  virtual void setUUID(const DtUUID&);
241 
243  virtual bool isValid() const;
244  virtual bool hasBeenDeleted() const;
245 
247  virtual const DtVrfObject* object() const;
248  virtual DtVrfObject* object();
249 
250  operator DtVrfObject*() { return object(); };
251  operator const DtVrfObject* () const { return object(); };
252 
253  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
254  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
255 
256  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
257  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
258 
260  virtual void setObjectReference(DtSharedVrfObjectReference);
263 
265  virtual void clearObjectReference();
266 
269  DtVrfObject* operator->();
270  const DtVrfObject* operator->() const;
271 
272  operator const DtUUID&() const { return uuid(); };
273  virtual DtEntityIdentifier entityIdentifier() const;
274  virtual DtGlobalObjectDesignator globalObjectDesignator() const;
275 
276  DtSharedVrfObjectReference objectReference();
277  DtSharedVrfObjectReference objectReference() const;
278 
280  virtual void clearUUID();
281 
284  virtual void getSelf(DtlObjPtr args,
285  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
286  const DtVariableBindingsList& variableBindings = nullVariableReference());
287 
289  virtual void putSelf(FILE* fp, int indentLevel = 0,
290  bool writeUnspecified = false, const DtFilename& path =
291  DtFilename::nullFilename());
292 
293 protected:
294  static void objectDiscoveredCallback(void* usr);
295  virtual void processObjectDiscovered();
296 
297  static void objectAboutToBeRemovedCallback(void* usr);
298  virtual void processObjectAboutToBeRemoved();
299 
301  virtual void uuidChanged();
302 
303 protected:
306 };
307 
312 
313 class DT_DLL_vrfobjcore DtRwVrfObjectReferenceList : public DtRwTemplatedListPtr<DtRwVrfObjectReference, true>
314 {
315 public:
318 
320  DtRwVrfObjectReferenceList(const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
321  DtRwVrfObjectReferenceList(const DtSymbolString& name, DtReaderWriterRegistry* parentRegistry = NULL);
322 
324  DtReaderWriterRegistry* parentRegistry = NULL);
325 
327  DtReaderWriterRegistry* parentRegistry = NULL);
328 
330  DtReaderWriterRegistry* parentRegistry = NULL);
331 
332  virtual ~DtRwVrfObjectReferenceList();
333 
335  virtual DtVrfObject* findUUID(const DtUUID&);
336  virtual const DtVrfObject* findUUID(const DtUUID&) const;
337 
339  virtual void addUUID(const DtUUID&);
340 
342  virtual bool removeUUID(const DtUUID&);
343 
345  virtual bool hasUUID(const DtUUID&) const;
346 
348  virtual std::vector<DtRwUUID> uuidsAsVector() const;
349 
351  virtual std::list<DtRwUUID> uuidsAsList() const;
352 
354  static void objectAboutToBeRemoved(DtVrfObject*, void*);
355  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
356 };

Document ID: Generated on Tue Mar 8 22:13:38 EST 2016 from SVN revision 162938
Copyright © 2005-2015 VT MÄK. All Rights Reserved (www.mak.com)