21 : mySubordinates(orig.mySubordinates)
37 mySubordinates.push_back(uuid);
41 if (index >= mySubordinates.size())
43 while (mySubordinates.size() <= index)
49 mySubordinates[index] = uuid;
54 std::vector<DtUUID>::iterator iter = mySubordinates.begin();
55 std::vector<DtUUID>::iterator end = mySubordinates.end();
61 mySubordinates.erase(iter);
74 std::vector<DtUUID>::const_iterator iter = mySubordinates.begin();
75 std::vector<DtUUID>::const_iterator end = mySubordinates.end();
92 if (mySubordinates.size())
94 return mySubordinates[0];
102 if (mySubordinates.size())
104 return mySubordinates[mySubordinates.size() - 1];
111 std::vector<DtUUID> mySubordinates{};
132 virtual
int numSubordinates()
const {
throw DtUnimplementedMethod(
"The int numSubordinates() const is undefined for this class."); };
136 mutable boost::signals2::signal<void (const DtFrameStateInterface*, const std::vector<DtUUID>& oldSubordinates,
const std::vector<DtUUID>& newSubordinates)> signal_subordinatesChanged{};
149 virtual int numSubordinates()
const override;
150 virtual int indexOfSubordinate(
const DtUUID&)
const override;
151 virtual const DtUUID& firstSubordinate()
const override;
152 virtual const DtUUID& lastSubordinate()
const override;
153 virtual const std::vector<DtUUID>& subordinates()
const override;
154 virtual void setSubordinates(
const std::vector<DtUUID>&)
override;
155 virtual void addSubordinate(
const DtUUID&,
int index = -1)
override;
156 virtual bool removeSubordinate(
const DtUUID&)
override;
157 virtual bool hasSubordinate(
const DtUUID&)
const override;
158 virtual void removeAllSubordinates()
override;
164 virtual void makeReadOnly()
override {};
179 virtual const DtUUID& firstSubordinate()
const override;
180 virtual const DtUUID& lastSubordinate()
const override;
181 virtual int numSubordinates()
const override;
182 virtual int indexOfSubordinate(
const DtUUID&)
const override;
183 virtual const std::vector<DtUUID>& subordinates()
const override;
184 virtual bool hasSubordinate(
const DtUUID&)
const override;
209 virtual void updateDataStorage()
override;
213 myCurrentFrameState.updateStateData(sd);
214 myNextFrameState.updateStateData(sd);
220 myCurrentFrameState.aboutToBeDeleted();
221 myNextFrameState.aboutToBeDeleted();
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Definition: stateDataTypes.h:23
virtual int indexOfSubordinate(const DtUUID &) const
Definition: subordinateManagerStateComponent.h:133
DtSubordinateManagerStateComponentCurrentFrame myCurrentFrameState
Definition: subordinateManagerStateComponent.h:225
bool hasSubordinate(const DtUUID &uuid) const
Definition: subordinateManagerStateComponent.h:72
#define UNDEFINED_METHOD(Type, Method,...)
Definition: doubleBufferedDataStorage.h:68
2) Define the next frame class. This will be used for write access.
Definition: subordinateManagerStateComponent.h:140
DtSubordinateManagerStateComponentData myData
Definition: subordinateManagerStateComponent.h:194
DtSubordinateManagerStateComponentData & operator=(const DtSubordinateManagerStateComponentData &rhs)
Definition: subordinateManagerStateComponent.h:25
Definition: stateComponent.h:269
const DtSubordinateManagerStateComponentData & frameState() const
Current frame state only can access current frame buffers. This ensures thread safety.
Definition: subordinateManagerStateComponent.h:177
const DtSubordinateManagerStateComponentData & frameState() const
Next frame access write access. Ensure this is only used in a single thread (i.e.a controller thread)...
Definition: subordinateManagerStateComponent.h:146
std::vector< DtUUID > mySubordinates
Definition: subordinateManagerStateComponent.h:227
Contains the DtUUID class declaration.
#define UNDEFINED_RETURNREF_ACCESSOR(ReturnType, Member)
Definition: doubleBufferedDataStorage.h:34
void advanceFrame(const DtSubordinateManagerStateComponentData &data)
Definition: subordinateManagerStateComponent.h:188
const DtUUID & lastSubordinate() const
Definition: subordinateManagerStateComponent.h:100
virtual void makeWritable() override
Override to make component writable.
Definition: subordinateManagerStateComponent.h:161
void addSubordinate(const DtUUID &uuid, int index=-1)
Definition: subordinateManagerStateComponent.h:33
static const DtUUID & nullUUID()
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
Definition: subordinateManagerStateComponent.h:15
#define DEFINE_STATE_COMPONENT_TYPE(CreatedComponent)
Definition: stateComponent.h:231
virtual bool hasSubordinate(const DtUUID &) const
Definition: subordinateManagerStateComponent.h:134
Subclass from this to indicate that this will be a double buffered state component.
Definition: stateComponent.h:384
DtSubordinateManagerStateComponentData(const DtSubordinateManagerStateComponentData &orig)
Definition: subordinateManagerStateComponent.h:20
virtual void aboutToBeDeleted()
bool isDoubleBuffered()
Definition: subordinateManagerStateComponent.h:204
4) Define the state component that will contain the wrappers to the next and current frame states tha...
Definition: subordinateManagerStateComponent.h:199
virtual const DtFrameStateInterface * currentFrameState() const override
Definition: subordinateManagerStateComponent.h:205
#define UNDEFINED_RETURNREF_ACCESSOR_MUTATOR(Type, Member, Set)
Definition: doubleBufferedDataStorage.h:57
#define DEFINE_ACCESSOR_MUTATOR(ReturnType, Accessor, Mutator)
Definition: doubleBufferedDataStorage.h:23
virtual DtFrameStateInterface * nextFrameState() override
Definition: subordinateManagerStateComponent.h:206
Definition: stateComponent.h:79
virtual void updateStateData(DtStateData *sd) override
Implement to update data storage to the new state data.
Definition: subordinateManagerStateComponent.h:211
const DtUUID & firstSubordinate() const
Definition: subordinateManagerStateComponent.h:90
3) Define the current frame class. This will be used for read access.
Definition: subordinateManagerStateComponent.h:171
DtSubordinateManagerStateComponentData()
Definition: subordinateManagerStateComponent.h:17
1) Define the interface class that will be used to represent the next and curent frames. The UNDEFINED_ macros are convenience macros that will define methods that throw exceptions (until they are implemented)
Definition: subordinateManagerStateComponent.h:116
#define DT_DLL_vrfStateData
This file is used to determine how to build Disable inconsistent dll linkage warning Visual Studio 6...
Definition: vrfStateDataDefines.h:26
DtSubordinateManagerStateComponentNextFrame myNextFrameState
Definition: subordinateManagerStateComponent.h:226
DtSubordinateManagerStateComponentData & frameState()
Definition: subordinateManagerStateComponent.h:147
virtual void aboutToBeDeleted() override
Definition: subordinateManagerStateComponent.h:217
Contains the DtStateComponent class declaration.
virtual const DtFrameStateInterface * nextFrameState() const override
Definition: subordinateManagerStateComponent.h:207
bool removeSubordinate(const DtUUID &uuid)
Definition: subordinateManagerStateComponent.h:52
This is a simple base class that will be used to return a pointer to current or next frame state...
Definition: stateComponent.h:294
DtStateComponentCreator< DtSubordinateManagerStateComponentImplementation > DtSubordinateManagerStateComponentCreator
5) Define the creator. This will need to be registered with the REGISTER_STATE_COMPONENT macro in the...
Definition: subordinateManagerStateComponent.h:232
std::vector< DtUUID > mySubordinates
Definition: subordinateManagerStateComponent.h:111
void removeAllSubordinates()
Definition: subordinateManagerStateComponent.h:71