VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
simObjectReferenceList.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2020 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
6 #pragma once
7 
12 #include <boost/signals2.hpp>
13 #include <tbb/spin_rw_mutex.h>
14 #include <tbb/spin_mutex.h>
15 
24 {
25 public:
26  typedef std::list<DtSimObjectReference> SimObjectReferenceList;
27  typedef std::list<DtSimObjectReference>::iterator iterator;
28  typedef std::list<DtSimObjectReference>::const_iterator const_iterator;
29  typedef std::list<DtSimObjectReference>::reverse_iterator reverse_iterator;
30  typedef std::list<DtSimObjectReference>::const_reverse_iterator const_reverse_iterator;
31 
34 
35  virtual ~DtSimObjectReferenceList();
36 
39  void addUUID(const DtUUID&, int index = -1);
40  void add(DtSimObjectReference, int index = -1);
41 
42  DtSimObjectReferenceList& operator=(const DtSimObjectReferenceList& orig);
43 
47  bool removeUUID(const DtUUID&);
48  bool remove(DtSimObjectReference);
49 
50  void clear();
51 
53  int size() const;
54 
56  virtual void disconnect();
57  virtual void connect();
58 
60  virtual void copyWithoutConnect(const DtSimObjectReferenceList&);
61 
62  DtSimObjectReference simObject(const DtUUID&) const;
63 
64  bool hasUUID(const DtUUID&) const;
65 
67  mutable boost::signals2::signal<void (const DtUUID&)> signal_simObjectRemoved;
68 
70  {
71  return mySimulationServices;
72  }
73 
74 public:
76  const SimObjectReferenceList& simObjectReferenceList() const;
77 
78  iterator begin();
79  iterator end();
80 
81  const_iterator begin() const;
82  const_iterator end() const;
83 
84  reverse_iterator rbegin();
85  reverse_iterator rend();
86 
87  const_reverse_iterator rbegin() const;
88  const_reverse_iterator rend() const;
89 
90  iterator insert(iterator, DtSimObjectReference);
91  void erase(iterator);
92 
93 protected:
94  void simObjectRemoved(const DtSimObject*);
95 
96 protected:
98  {
99  std::list<DtSimObjectReference>::iterator lookup;
100  };
101 
102  typedef std::map<DtString, ObjectInformation> QuickLookupMap;
105 
107 
109  tbb::spin_rw_mutex myQuickLookupMapMutex;
111 };
112 
117 
119 {
120 public:
123 
125  DtRwSimObjectReferenceList(const DtSimulationServices*, const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
126 
128  DtReaderWriterRegistry* parentRegistry = NULL);
129 
131  DtReaderWriterRegistry* parentRegistry = NULL);
132 
133  virtual ~DtRwSimObjectReferenceList();
134 
137 
138  operator const DtSimObjectReferenceList() const { return mySimObjectReferenceList; };
139  operator DtSimObjectReferenceList() { return mySimObjectReferenceList; };
140  const DtSimObjectReferenceList& simObjectReferenceList() const { return mySimObjectReferenceList; };
141  DtSimObjectReferenceList& simObjectReferenceList() { return mySimObjectReferenceList; };
142 
143  virtual void removeAll();
144  virtual void removeAndDeleteAll();
145 
147  virtual DtSimObjectReference findUUID(const DtUUID&) const;
148 
150  virtual void copyWithoutConnect(const DtRwSimObjectReferenceList&);
151 
153  virtual void addUUID(const DtUUID&, int index = -1);
154 
156  virtual bool removeUUID(const DtUUID&);
157 
159  bool hasUUID(const DtUUID&) const;
160 
162  virtual std::vector<DtRwUUID> uuidsAsVector() const;
163 
165  virtual std::list<DtRwUUID> uuidsAsList() const;
166 
167  virtual DtSimObjectReference first() const;
168  virtual DtSimObjectReference last() const;
169 
170  DtSimObjectReference simObject(const DtUUID& u) const { return mySimObjectReferenceList.simObject(u); };
171 
173  virtual void disconnect();
174  virtual void connect();
175 
176  int size() const
177  {
178  return mySimObjectReferenceList.size();
179  }
180 
181  DtSimObjectReferenceList::iterator begin() { return mySimObjectReferenceList.begin(); };
182  DtSimObjectReferenceList::iterator end() { return mySimObjectReferenceList.end(); };
183 
184  DtSimObjectReferenceList::const_iterator begin() const { return mySimObjectReferenceList.begin(); };
185  DtSimObjectReferenceList::const_iterator end() const { return mySimObjectReferenceList.end(); };
186 
187 protected:
189  virtual void slot_uuidUpgradedTo(const DtUUID& oldUUID, const DtUUID& newUUID);
190 
191  virtual void postGetSelf() override;
192 
193 protected:
196  boost::signals2::scoped_connection myUUIDUpgradedToConnection;
197 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
DtSimObjectReference simObject(const DtUUID &u) const
Definition: simObjectReferenceList.h:170
DtSimObjectReferenceList::iterator begin()
Definition: simObjectReferenceList.h:181
boost::signals2::scoped_connection myUUIDUpgradedToConnection
Definition: simObjectReferenceList.h:196
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: simObjectReferenceList.h:118
DtSimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:195
std::list< DtSimObjectReference >::iterator lookup
Definition: simObjectReferenceList.h:99
SimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:108
virtual void postGetSelf()
Called after either version of getSelf (mtl or environment). Default is no-op.
DtSimObjectReferenceList::const_iterator end() const
Definition: simObjectReferenceList.h:185
DtRwTemplatedListPtr & operator=(const DtRwTemplatedListPtr &orig)
voidpf void uLong size
Definition: ioapi.h:39
The DtSimObjectReference is a shared pointer that can be used amongst many object for access to the u...
Definition: simObjectReference.h:26
Definition: readerWriterRegistry.h:39
std::map< DtString, ObjectInformation > QuickLookupMap
Definition: simObjectReferenceList.h:102
DtSimObjectReferenceList::const_iterator begin() const
Definition: simObjectReferenceList.h:184
DtSimObjectReferenceList::iterator end()
Definition: simObjectReferenceList.h:182
std::list< DtSimObjectReference > SimObjectReferenceList
Definition: simObjectReferenceList.h:26
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:106
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
void removeAndDeleteAll() override
Removes and deletes all entries in the list.
QuickLookupMap myQuickLookupMap
Definition: simObjectReferenceList.h:103
DtSimObjectReferenceList & simObjectReferenceList()
Definition: simObjectReferenceList.h:141
const DtSimulationServices * simulationServices() const
Definition: simObjectReferenceList.h:69
const DtSimulationServices * mySimulationServices
Definition: simObjectReferenceList.h:104
void removeAll()
Removes all entries from the list. If autoDelete is true, also deletes all items. ...
int size() const
Definition: simObjectReferenceList.h:176
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:23
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:95
Represents a single simulation object in the exercise. Object may be VRF simulation, or non-VRF simulated, and may be simulated by the local sim engine, or by a remote sim engine. Only public (external) state of the object is available. All data is read-only. All access to data of the object is thread safe within the simulation frame.
Definition: simObject.h:88
Definition: rwTemplatedList.h:34
std::list< DtSimObjectReference >::const_iterator const_iterator
Definition: simObjectReferenceList.h:28
Contains the DtSimObjectReference class declaration.
Definition: simObjectReferenceList.h:97
boost::signals2::signal< void(const DtUUID &)> signal_simObjectRemoved
Signal sent when an object is removed either by directly calling removeUUID or when the object is del...
Definition: simObjectReferenceList.h:67
const DtSimObjectReferenceList & simObjectReferenceList() const
Definition: simObjectReferenceList.h:140
std::list< DtSimObjectReference >::iterator iterator
Definition: simObjectReferenceList.h:27
std::list< DtSimObjectReference >::reverse_iterator reverse_iterator
Definition: simObjectReferenceList.h:29
tbb::spin_rw_mutex myQuickLookupMapMutex
Definition: simObjectReferenceList.h:109
std::list< DtSimObjectReference >::const_reverse_iterator const_reverse_iterator
Definition: simObjectReferenceList.h:30
tbb::spin_mutex mySimObjectReferenceListMutex
Definition: simObjectReferenceList.h:110
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:194

Document ID: Generated on Tue Sep 24 19:28:17 EDT 2024 from SVN revision 269799
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)