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 
17 
26 {
27 public:
28  typedef std::list<DtSimObjectReference> SimObjectReferenceList;
29  typedef std::list<DtSimObjectReference>::iterator iterator;
30  typedef std::list<DtSimObjectReference>::const_iterator const_iterator;
31  typedef std::list<DtSimObjectReference>::reverse_iterator reverse_iterator;
32  typedef std::list<DtSimObjectReference>::const_reverse_iterator const_reverse_iterator;
33 
36 
37  virtual ~DtSimObjectReferenceList();
38 
41  void addUUID(const DtUUID&, int index = -1);
42  void add(DtSimObjectReference, int index = -1);
43 
44  DtSimObjectReferenceList& operator=(const DtSimObjectReferenceList& orig);
45 
49  bool removeUUID(const DtUUID&);
50  bool remove(DtSimObjectReference);
51 
52  void clear();
53 
55  int size() const;
56 
58  virtual void disconnect();
59  virtual void connect();
60 
62  virtual void copyWithoutConnect(const DtSimObjectReferenceList&);
63 
64  DtSimObjectReference simObject(const DtUUID&) const;
65 
66  bool hasUUID(const DtUUID&) const;
67 
69  mutable boost::signals2::signal<void (const DtUUID&)> signal_simObjectRemoved;
70 
72  {
73  return mySimulationServices;
74  }
75 
76 public:
78  const SimObjectReferenceList& simObjectReferenceList() const;
79 
80  iterator begin();
81  iterator end();
82 
83  const_iterator begin() const;
84  const_iterator end() const;
85 
86  reverse_iterator rbegin();
87  reverse_iterator rend();
88 
89  const_reverse_iterator rbegin() const;
90  const_reverse_iterator rend() const;
91 
92  iterator insert(iterator, DtSimObjectReference);
93  void erase(iterator);
94 
95 protected:
96  void simObjectRemoved(const DtSimObject*);
97 
98 protected:
100  {
101  std::list<DtSimObjectReference>::iterator lookup;
102  };
103 
104  typedef std::map<DtString, ObjectInformation> QuickLookupMap;
107 
109 
111  tbb::spin_rw_mutex myQuickLookupMapMutex;
113 };
114 
119 
121 {
122 public:
125 
127  DtRwSimObjectReferenceList(const DtSimulationServices*, const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
128 
130  DtReaderWriterRegistry* parentRegistry = NULL);
131 
133  DtReaderWriterRegistry* parentRegistry = NULL);
134 
135  virtual ~DtRwSimObjectReferenceList() override;
136 
139 
140  operator const DtSimObjectReferenceList() const { return mySimObjectReferenceList; };
141  operator DtSimObjectReferenceList() { return mySimObjectReferenceList; };
142  const DtSimObjectReferenceList& simObjectReferenceList() const { return mySimObjectReferenceList; };
143  DtSimObjectReferenceList& simObjectReferenceList() { return mySimObjectReferenceList; };
144 
145  virtual void removeAll() override;
146  virtual void removeAndDeleteAll() override;
147 
149  virtual DtSimObjectReference findUUID(const DtUUID&) const;
150 
152  virtual void copyWithoutConnect(const DtRwSimObjectReferenceList&);
153 
155  virtual void addUUID(const DtUUID&, int index = -1);
156 
158  virtual bool removeUUID(const DtUUID&);
159 
161  bool hasUUID(const DtUUID&) const;
162 
164  virtual std::vector<DtRwUUID> uuidsAsVector() const;
165 
167  virtual std::list<DtRwUUID> uuidsAsList() const;
168 
169  virtual DtSimObjectReference first() const;
170  virtual DtSimObjectReference last() const;
171 
172  DtSimObjectReference simObject(const DtUUID& u) const { return mySimObjectReferenceList.simObject(u); };
173 
175  virtual void disconnect();
176  virtual void connect();
177 
178  int size() const
179  {
180  return mySimObjectReferenceList.size();
181  }
182 
183  DtSimObjectReferenceList::iterator begin() { return mySimObjectReferenceList.begin(); };
184  DtSimObjectReferenceList::iterator end() { return mySimObjectReferenceList.end(); };
185 
186  DtSimObjectReferenceList::const_iterator begin() const { return mySimObjectReferenceList.begin(); };
187  DtSimObjectReferenceList::const_iterator end() const { return mySimObjectReferenceList.end(); };
188 
189 protected:
191  virtual void slot_uuidUpgradedTo(const DtUUID& oldUUID, const DtUUID& newUUID);
192 
193  virtual void postGetSelf() override;
194 
195 protected:
198  boost::signals2::scoped_connection myUUIDUpgradedToConnection;
199 };
UUID is a unique ID wrapper class.
Definition: uuid.h:59
virtual DtRwTemplatedListPtr & operator=(const DtRwTemplatedListPtr &orig)
DtSimObjectReference simObject(const DtUUID &u) const
Definition: simObjectReferenceList.h:172
DtSimObjectReferenceList::iterator begin()
Definition: simObjectReferenceList.h:183
boost::signals2::scoped_connection myUUIDUpgradedToConnection
Definition: simObjectReferenceList.h:198
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: simObjectReferenceList.h:120
makVrf::DtSimObjectReferenceTemplate< DtSimObject > DtSimObjectReference
Definition: simObjectReference.h:14
DtSimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:197
std::list< DtSimObjectReference >::iterator lookup
Definition: simObjectReferenceList.h:101
SimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:110
virtual void postGetSelf()
Called after either version of getSelf (mtl or environment). Default is no-op.
DtSimObjectReferenceList::const_iterator end() const
Definition: simObjectReferenceList.h:187
voidpf void uLong size
Definition: ioapi.h:39
virtual void removeAndDeleteAll() override
Removes and deletes all entries in the list.
Definition: readerWriterRegistry.h:39
std::map< DtString, ObjectInformation > QuickLookupMap
Definition: simObjectReferenceList.h:104
DtSimObjectReferenceList::const_iterator begin() const
Definition: simObjectReferenceList.h:186
DtSimObjectReferenceList::iterator end()
Definition: simObjectReferenceList.h:184
std::list< DtSimObjectReference > SimObjectReferenceList
Definition: simObjectReferenceList.h:28
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:108
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
QuickLookupMap myQuickLookupMap
Definition: simObjectReferenceList.h:105
DtSimObjectReferenceList & simObjectReferenceList()
Definition: simObjectReferenceList.h:143
const DtSimulationServices * simulationServices() const
Definition: simObjectReferenceList.h:71
const DtSimulationServices * mySimulationServices
Definition: simObjectReferenceList.h:106
int size() const
Definition: simObjectReferenceList.h:178
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:25
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:96
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:80
Definition: rwTemplatedList.h:34
std::list< DtSimObjectReference >::const_iterator const_iterator
Definition: simObjectReferenceList.h:30
Contains the DtSimObjectReference class declaration.
Definition: simObjectReferenceList.h:99
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:69
const DtSimObjectReferenceList & simObjectReferenceList() const
Definition: simObjectReferenceList.h:142
std::list< DtSimObjectReference >::iterator iterator
Definition: simObjectReferenceList.h:29
std::list< DtSimObjectReference >::reverse_iterator reverse_iterator
Definition: simObjectReferenceList.h:31
tbb::spin_rw_mutex myQuickLookupMapMutex
Definition: simObjectReferenceList.h:111
std::list< DtSimObjectReference >::const_reverse_iterator const_reverse_iterator
Definition: simObjectReferenceList.h:32
tbb::spin_mutex mySimObjectReferenceListMutex
Definition: simObjectReferenceList.h:112
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:196
virtual void removeAll() override
Removes all entries from the list. If autoDelete is true, also deletes all items. ...

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)