VR-Forces 4.5 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 
80  static void objectAddedCallback(DtVrfObject*, void*);
81  virtual void processObjectAdded(DtVrfObject*);
82 
83  static void objectAboutToBeRemovedCallback(DtVrfObject*, void*);
84  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
85 
86 private:
89  DtVrfObjectReference& operator=(const DtVrfObjectReference&);
90 
91 protected:
98 
100 };
101 
105 class DT_DLL_vrfobjcore DtSharedVrfObjectReference : public boost::shared_ptr<DtVrfObjectReference>
106 {
107 public:
111 
113  {
114  boost::shared_ptr<DtVrfObjectReference>::operator=(rhs);
115 
116  return *this;
117  }
118 
120 
122  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
123  {
124  if (get()) { get()->addObjectDiscoveredCallback(fcn, usr); };
125  }
126 
128  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
129  {
130  if (get()) { get()->removeObjectDiscoveredCallback(fcn, usr); };
131  }
132 
134  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
135  {
136  if (get()) { get()->addObjectAboutToBeRemovedCallback(fcn, usr); };
137  }
138 
140  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType fcn, void* usr)
141  {
142  if (get()) { get()->removeObjectAboutToBeRemovedCallback(fcn, usr); };
143  }
144 
146  bool hasBeenDeleted() const
147  {
148  if (get())
149  {
150  return get()->hasBeenDeleted();
151  }
152 
153  return false;
154  }
155 
157  bool isValid() const
158  {
159  if (get())
160  {
161  return get()->isValid();
162  }
163 
164  return false;
165  }
166 
168  DtString waitingForName() const
169  {
170  if (get())
171  {
172  return get()->waitingForName();
173  }
174 
175  return "";
176  }
177 
179  DtUUID uuid() const
180  {
181  if (get())
182  {
183  return get()->uuid();
184  }
185  else
186  {
187  return DtUUID(waitingForName());
188  }
189  }
190 
194  DtVrfObject* operator->() { if (get() && get()->isValid()) return get()->object(); else return 0; };
195  const DtVrfObject* operator->() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
196 
197  operator DtVrfObject*() { if (get() && get()->isValid()) return get()->object(); else return 0; };
198  operator const DtVrfObject* () const { if (get() && get()->isValid()) return get()->object(); else return 0; };
199 
200  const DtVrfObject* operator*() const { if (get() && get()->isValid()) return get()->object(); else return 0; };
201  DtVrfObject* operator*() { if (get() && get()->isValid()) return get()->object(); else return 0; };
202  bool operator!() { if (get()) { return !get()->isValid(); } return true; };
204 };
205 
209 
211 {
212 public:
215 
217  parentRegistry = NULL);
218 
220  parentRegistry = NULL);
221 
222  DtRwVrfObjectReference(const DtString&, const DtUUID&,
223  DtReaderWriterRegistry* parentRegistry = NULL);
224 
226  DtReaderWriterRegistry* parentRegistry = NULL);
227 
229  DtReaderWriterRegistry* parentRegistry = NULL);
230 
232  DtReaderWriterRegistry* parentRegistry = NULL);
233 
235  DtReaderWriterRegistry* parentRegistry = NULL);
236 
237  virtual ~DtRwVrfObjectReference();
238 
241  virtual void setUUID(const DtUUID&);
242 
244  virtual bool isValid() const;
245  virtual bool hasBeenDeleted() const;
246 
248  virtual const DtVrfObject* object() const;
249  virtual DtVrfObject* object();
250 
251  operator DtVrfObject*() { return object(); };
252  operator const DtVrfObject* () const { return object(); };
253 
254  virtual void addObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
255  virtual void removeObjectDiscoveredCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
256 
257  virtual void addObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
258  virtual void removeObjectAboutToBeRemovedCallback(DtNoArgumentCallbackList::DtCallbackFunctionType, void* usr);
259 
261  virtual void setObjectReference(DtSharedVrfObjectReference);
264 
266  virtual void clearObjectReference();
267 
270  DtVrfObject* operator->();
271  const DtVrfObject* operator->() const;
272 
273  operator const DtUUID&() const { return uuid(); };
274  virtual DtEntityIdentifier entityIdentifier() const;
275  virtual DtGlobalObjectDesignator globalObjectDesignator() const;
276 
277  DtSharedVrfObjectReference objectReference();
278  DtSharedVrfObjectReference objectReference() const;
279 
281  virtual void clearUUID();
282 
285  virtual void getSelf(DtlObjPtr args,
286  const DtReaderWriter::SearchPaths& searchPaths = SearchPaths(),
287  const DtVariableBindingsList& variableBindings = nullVariableReference());
288 
290  virtual void putSelf(std::string& fp, int indentLevel = 0,
291  bool writeUnspecified = false, const DtFilename& path =
292  DtFilename::nullFilename());
293 
294 protected:
295  static void objectDiscoveredCallback(void* usr);
296  virtual void processObjectDiscovered();
297 
298  static void objectAboutToBeRemovedCallback(void* usr);
299  virtual void processObjectAboutToBeRemoved();
300 
302  virtual void uuidChanged();
303 
304 protected:
308 };
309 
314 
315 class DT_DLL_vrfobjcore DtRwVrfObjectReferenceList : public DtRwTemplatedListPtr<DtRwVrfObjectReference, true>
316 {
317 public:
320 
322  DtRwVrfObjectReferenceList(const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
323  DtRwVrfObjectReferenceList(const DtSymbolString& name, DtReaderWriterRegistry* parentRegistry = NULL);
324 
326  DtReaderWriterRegistry* parentRegistry = NULL);
327 
329  DtReaderWriterRegistry* parentRegistry = NULL);
330 
332  DtReaderWriterRegistry* parentRegistry = NULL);
333 
334  virtual ~DtRwVrfObjectReferenceList();
335 
337  virtual DtVrfObject* findUUID(const DtUUID&);
338  virtual const DtVrfObject* findUUID(const DtUUID&) const;
339 
341  virtual void addUUID(const DtUUID&);
342 
344  virtual bool removeUUID(const DtUUID&);
345 
347  virtual bool hasUUID(const DtUUID&) const;
348 
350  virtual std::vector<DtRwUUID> uuidsAsVector() const;
351 
353  virtual std::list<DtRwUUID> uuidsAsList() const;
354 
356  static void objectAboutToBeRemoved(DtVrfObject*, void*);
357  virtual void processObjectAboutToBeRemoved(DtVrfObject*);
358 };

Document ID: Generated on Thu Mar 23 18:54:12 EDT 2017 from SVN revision 174804
Copyright © 2005-2017 VT MÄK. All Rights Reserved (www.mak.com)