VR-Forces 5.0.3 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 
23 {
24 public:
25  typedef std::list<DtSimObjectReference> SimObjectReferenceList;
26  typedef std::list<DtSimObjectReference>::iterator iterator;
27  typedef std::list<DtSimObjectReference>::const_iterator const_iterator;
28  typedef std::list<DtSimObjectReference>::reverse_iterator reverse_iterator;
29  typedef std::list<DtSimObjectReference>::const_reverse_iterator const_reverse_iterator;
30 
33 
34  virtual ~DtSimObjectReferenceList();
35 
38  void addUUID(const DtUUID&, int index = -1);
39  void add(DtSimObjectReference, int index = -1);
40 
41  DtSimObjectReferenceList& operator=(const DtSimObjectReferenceList& orig);
42 
46  bool removeUUID(const DtUUID&);
47  bool remove(DtSimObjectReference);
48 
49  void clear();
50 
52  int size() const;
53 
55  virtual void disconnect();
56  virtual void connect();
57 
59  virtual void copyWithoutConnect(const DtSimObjectReferenceList&);
60 
61  DtSimObjectReference simObject(const DtUUID&) const;
62 
63  bool hasUUID(const DtUUID&) const;
64 
66  mutable boost::signals2::signal<void (const DtUUID&)> signal_simObjectRemoved;
67 
69  {
70  return mySimulationServices;
71  }
72 
73 public:
75  const SimObjectReferenceList& simObjectReferenceList() const;
76 
77  iterator begin();
78  iterator end();
79 
80  const_iterator begin() const;
81  const_iterator end() const;
82 
83  reverse_iterator rbegin();
84  reverse_iterator rend();
85 
86  const_reverse_iterator rbegin() const;
87  const_reverse_iterator rend() const;
88 
89  iterator insert(iterator, DtSimObjectReference);
90  void erase(iterator);
91 
92 protected:
93  void simObjectRemoved(const DtSimObject*);
94 
95 protected:
97  {
99  {
100  simObjectDeletedConnection.disconnect();
101  }
102 
103  std::list<DtSimObjectReference>::iterator lookup;
104  boost::signals2::connection simObjectDeletedConnection;
105  };
106 
107  typedef std::map<DtString, ObjectInformation> QuickLookupMap;
110 
112 
114  tbb::spin_rw_mutex myQuickLookupMapMutex;
115 };
116 
121 
123 {
124 public:
127 
129  DtRwSimObjectReferenceList(const DtSimulationServices*, const DtString& name, DtReaderWriterRegistry* parentRegistry = NULL);
130 
132  DtReaderWriterRegistry* parentRegistry = NULL);
133 
135  DtReaderWriterRegistry* parentRegistry = NULL);
136 
137  virtual ~DtRwSimObjectReferenceList();
138 
141 
142  operator const DtSimObjectReferenceList() const { return mySimObjectReferenceList; };
143  operator DtSimObjectReferenceList() { return mySimObjectReferenceList; };
144  const DtSimObjectReferenceList& simObjectReferenceList() const { return mySimObjectReferenceList; };
145  DtSimObjectReferenceList& simObjectReferenceList() { return mySimObjectReferenceList; };
146 
147  virtual void removeAll();
148  virtual void removeAndDeleteAll();
149 
151  virtual DtSimObjectReference findUUID(const DtUUID&) const;
152 
154  virtual void copyWithoutConnect(const DtRwSimObjectReferenceList&);
155 
157  virtual void addUUID(const DtUUID&, int index = -1);
158 
160  virtual bool removeUUID(const DtUUID&);
161 
163  bool hasUUID(const DtUUID&) const;
164 
166  virtual std::vector<DtRwUUID> uuidsAsVector() const;
167 
169  virtual std::list<DtRwUUID> uuidsAsList() const;
170 
171  virtual DtSimObjectReference first() const;
172  virtual DtSimObjectReference last() const;
173 
174  DtSimObjectReference simObject(const DtUUID& u) const { return mySimObjectReferenceList.simObject(u); };
175 
177  virtual void disconnect();
178  virtual void connect();
179 
180  int size() const
181  {
182  return mySimObjectReferenceList.size();
183  }
184 
185  DtSimObjectReferenceList::iterator begin() { return mySimObjectReferenceList.begin(); };
186  DtSimObjectReferenceList::iterator end() { return mySimObjectReferenceList.end(); };
187 
188  DtSimObjectReferenceList::const_iterator begin() const { return mySimObjectReferenceList.begin(); };
189  DtSimObjectReferenceList::const_iterator end() const { return mySimObjectReferenceList.end(); };
190 
191 protected:
193  virtual void slot_uuidUpgradedTo(const DtUUID& oldUUID, const DtUUID& newUUID);
194 
195  virtual void postGetSelf() override;
196 
197 protected:
200  boost::signals2::scoped_connection myUUIDUpgradedToConnection;
201 };
UUID is a unique ID wrapper class.
Definition: rwUUID.h:229
DtSimObjectReference simObject(const DtUUID &u) const
Definition: simObjectReferenceList.h:174
DtSimObjectReferenceList::iterator begin()
Definition: simObjectReferenceList.h:185
boost::signals2::scoped_connection myUUIDUpgradedToConnection
Definition: simObjectReferenceList.h:200
If you use a list of object names to archive which objects are part of a controller (or any object) u...
Definition: simObjectReferenceList.h:122
DtSimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:199
std::list< DtSimObjectReference >::iterator lookup
Definition: simObjectReferenceList.h:103
SimObjectReferenceList mySimObjectReferenceList
Definition: simObjectReferenceList.h:113
virtual void postGetSelf()
Called after either version of getSelf (mtl or environment). Default is no-op.
DtSimObjectReferenceList::const_iterator end() const
Definition: simObjectReferenceList.h:189
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
virtual ~ObjectInformation()
Definition: simObjectReferenceList.h:98
Definition: readerWriterRegistry.h:39
std::map< DtString, ObjectInformation > QuickLookupMap
Definition: simObjectReferenceList.h:107
DtSimObjectReferenceList::const_iterator begin() const
Definition: simObjectReferenceList.h:188
DtSimObjectReferenceList::iterator end()
Definition: simObjectReferenceList.h:186
std::list< DtSimObjectReference > SimObjectReferenceList
Definition: simObjectReferenceList.h:25
boost::signals2::connection simObjectDeletedConnection
Definition: simObjectReferenceList.h:104
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:111
#define DT_DLL_vrfobjcore
This file is used to determine how to build.
Definition: vrfobjcoreDefines.h:24
QuickLookupMap myQuickLookupMap
Definition: simObjectReferenceList.h:108
DtSimObjectReferenceList & simObjectReferenceList()
Definition: simObjectReferenceList.h:145
const DtSimulationServices * simulationServices() const
Definition: simObjectReferenceList.h:68
const DtSimulationServices * mySimulationServices
Definition: simObjectReferenceList.h:109
void removeAll()
Removes all entries from the list. If autoDelete is true, also deletes all items. ...
int size() const
Definition: simObjectReferenceList.h:180
This is a convenience list that will add DtSimObjectReference objects and modify the list as objects ...
Definition: simObjectReferenceList.h:22
Central access point of all non-object-specific the services and managers that are available for use ...
Definition: simulationServices.h:90
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:79
A version of DtRwList that contains a homogeneous list of a templated RW type. The templated type spe...
Definition: rwTemplatedList.h:26
std::list< DtSimObjectReference >::const_iterator const_iterator
Definition: simObjectReferenceList.h:27
Contains the DtSimObjectReference class declaration.
Definition: simObjectReferenceList.h:96
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:66
const DtSimObjectReferenceList & simObjectReferenceList() const
Definition: simObjectReferenceList.h:144
std::list< DtSimObjectReference >::iterator iterator
Definition: simObjectReferenceList.h:26
std::list< DtSimObjectReference >::reverse_iterator reverse_iterator
Definition: simObjectReferenceList.h:28
tbb::spin_rw_mutex myQuickLookupMapMutex
Definition: simObjectReferenceList.h:114
void removeAndDeleteAll()
Removes and deletes all entries in the list.
std::list< DtSimObjectReference >::const_reverse_iterator const_reverse_iterator
Definition: simObjectReferenceList.h:29
bool myConnectedForRemoval
Definition: simObjectReferenceList.h:198

Document ID: Generated on Thu Jun 1 17:58:13 EDT 2023 from SVN revision 255404
Copyright © 2005-2021 MAK Technologies. All Rights Reserved (www.mak.com)