83 size_t size()
const {
return m_values.size();}
90 bool empty()
const {
return m_values.empty();}
141 return m_values[index];
153 return m_values.at(index);
165 m_values.push_back(val);
179 if (index >= m_values.size())
181 throw std::out_of_range(
"Index out of range.");
196 return m_values.at(index);
210 m_values.insert(m_values.begin()+index, value);
223 m_values.erase(m_values.begin()+index);
238 if (
typeid(*
this) !=
typeid(that))
248 for (
typename StorageType::const_iterator it=other.m_values.begin(); it!=other.m_values.end(); ++it)
250 m_values.push_back(SequenceCopyHelper<ContainedType>::Copy(*it));
256 template <
class U>
struct SequenceCopyHelper
258 static U Copy(
const U& val) {
return val;}
261 template <
class U>
struct SequenceCopyHelper< std::shared_ptr<U> >
263 static std::shared_ptr<U> Copy(
const std::shared_ptr<U> & val) {
return std::static_pointer_cast<U>(val->Clone());}
297 virtual size_t size()
const = 0;
379 size_t size()
const override {
return m_values.size();}
381 bool empty()
const override {
return m_values.empty();}
429 T::CheckForMismatch();
430 return m_values[index];
442 T::CheckForMismatch();
443 return m_values.at(index);
455 T::CheckForMismatch();
461 if (val < T::FirstOrdinal() || val > T::LastOrdinal())
481 T::CheckForMismatch();
494 T::CheckForMismatch();
495 return m_values.at(index);
500 if (index >= m_values.size())
502 throw std::out_of_range(
"Index out of range.");
505 if (val < T::FirstOrdinal() || val > T::LastOrdinal())
516 return m_values.at(index);
529 T::CheckForMismatch();
535 if (value < T::FirstOrdinal() || value > T::LastOrdinal())
541 m_values.insert(m_values.begin()+index,
static_cast<ContainedType>(value));
547 m_values.erase(m_values.begin()+index);
562 if (
typeid(*
this) !=
typeid(that))
571 m_values = other.m_values;
606 virtual size_t size()
const = 0;
615#ifndef SAFIR_NO_DEPRECATED
719 if ((*it)->IsChanged())
739 (*it)->SetChanged(changed);
749#ifndef SAFIR_NO_DEPRECATED
777 std::shared_ptr<const T>
GetPtr(
const size_t index)
const
801 const auto tptr = std::dynamic_pointer_cast<T>(ptr);
811 const auto tptr = std::dynamic_pointer_cast<T>(ptr);
820#ifdef SAFIR_NO_DEPRECATED
835 const GenericObjectSequenceContainer<T>& other =
836 static_cast<const GenericObjectSequenceContainer<T>&
>(that);
840 if (!other.IsChanged())
847 throw SoftwareViolationException(L
"It is not possible to merge two object sequences of different sizes.",
853 if (other.at(i)->IsChanged())
#define __WFILE__
Definition Exceptions.h:31
This namespace contains all the functionality and definitions of the SAFIR SDK.
Definition Backdoor.h:31
DotsC_EnumerationValue EnumerationValue
The ordinal value of an enumeration.
Definition Defs.h:270
SequenceContainer< HandlerId > HandlerIdSequenceContainer
A container containing HandlerId values.
Definition SequenceContainer.h:901
std::shared_ptr< const Object > ObjectConstPtr
A smart pointer to a const Object.
Definition Object.h:47
GenericObjectSequenceContainer< Object > ObjectSequenceContainer
A container containing Object values.
Definition SequenceContainer.h:907
SequenceContainer< TypeId > TypeIdSequenceContainer
A container containing TypeId values.
Definition SequenceContainer.h:889
SequenceContainer< EntityId > EntityIdSequenceContainer
A container containing EntityId values.
Definition SequenceContainer.h:895
SequenceContainer< Float64 > Float64SequenceContainer
A container containing 64 bit floating point values.
Definition SequenceContainer.h:886
SequenceContainer< std::wstring > StringSequenceContainer
A container containing string values.
Definition SequenceContainer.h:871
SequenceContainer< Binary > BinarySequenceContainer
A container containing Binary values.
Definition SequenceContainer.h:904
SequenceContainer< Int32 > Int32SequenceContainer
A container containing 32 bit integer values.
Definition SequenceContainer.h:877
std::shared_ptr< Object > ObjectPtr
A smart pointer to an Object.
Definition Object.h:44
SequenceContainer< Int64 > Int64SequenceContainer
A container containing 64 bit integer values.
Definition SequenceContainer.h:880
SequenceContainer< bool > BooleanSequenceContainer
A container containing boolean values.
Definition SequenceContainer.h:874
SequenceContainer< ChannelId > ChannelIdSequenceContainer
A container containing ChannelId values.
Definition SequenceContainer.h:898
SequenceContainer< InstanceId > InstanceIdSequenceContainer
A container containing InstanceId values.
Definition SequenceContainer.h:892
SequenceContainer< Float32 > Float32SequenceContainer
A container containing 32 bit floating point values.
Definition SequenceContainer.h:883
SequenceContainer< Kelvin > KelvinSequenceContainer
A container containing 32 bit Kelvin values.
Definition SequenceContainer.h:929
SequenceContainer< CubicMeter > CubicMeterSequenceContainer
A container containing 32 bit CubicMeter values.
Definition SequenceContainer.h:920
SequenceContainer< SquareMeter > SquareMeterSequenceContainer
A container containing 32 bit SquareMeter values.
Definition SequenceContainer.h:962
SequenceContainer< Joule > JouleSequenceContainer
A container containing 32 bit Joule values.
Definition SequenceContainer.h:926
SequenceContainer< MeterPerSecondSquared > MeterPerSecondSquaredSequenceContainer
A container containing 32 bit MeterPerSecondSquared values.
Definition SequenceContainer.h:941
SequenceContainer< Pascal > PascalSequenceContainer
A container containing 32 bit Pascal values.
Definition SequenceContainer.h:947
SequenceContainer< Hertz > HertzSequenceContainer
A container containing 32 bit Hertz values.
Definition SequenceContainer.h:923
SequenceContainer< MeterPerSecond > MeterPerSecondSequenceContainer
A container containing 32 bit MeterPerSecond values.
Definition SequenceContainer.h:938
SequenceContainer< RadianPerSecond > RadianPerSecondSequenceContainer
A container containing 32 bit RadianPerSecond values.
Definition SequenceContainer.h:953
SequenceContainer< Radian > RadianSequenceContainer
A container containing 32 bit Radian values.
Definition SequenceContainer.h:950
SequenceContainer< Ampere > AmpereSequenceContainer
A container containing 32 bit Ampere values.
Definition SequenceContainer.h:917
SequenceContainer< RadianPerSecondSquared > RadianPerSecondSquaredSequenceContainer
A container containing 32 bit RadianPerSecondSquared values.
Definition SequenceContainer.h:956
SequenceContainer< Meter > MeterSequenceContainer
A container containing 32 bit Meter values.
Definition SequenceContainer.h:935
SequenceContainer< Steradian > SteradianSequenceContainer
A container containing 32 bit Steradian values.
Definition SequenceContainer.h:965
SequenceContainer< Newton > NewtonSequenceContainer
A container containing 32 bit Newton values.
Definition SequenceContainer.h:944
SequenceContainer< Watt > WattSequenceContainer
A container containing 32 bit Watt values.
Definition SequenceContainer.h:971
SequenceContainer< Kilogram > KilogramSequenceContainer
A container containing 32 bit Kilogram values.
Definition SequenceContainer.h:932
SequenceContainer< Volt > VoltSequenceContainer
A container containing 32 bit Volt values.
Definition SequenceContainer.h:968
SequenceContainer< Second > SecondSequenceContainer
A container containing 32 bit Second values.
Definition SequenceContainer.h:959
SequenceContainer< Hertz > HertzSequenceContainer
A container containing 64 bit Hertz values.
Definition SequenceContainer.h:986
SequenceContainer< Watt > WattSequenceContainer
A container containing 64 bit Watt values.
Definition SequenceContainer.h:1034
SequenceContainer< Meter > MeterSequenceContainer
A container containing 64 bit Meter values.
Definition SequenceContainer.h:998
SequenceContainer< Newton > NewtonSequenceContainer
A container containing 64 bit Newton values.
Definition SequenceContainer.h:1007
SequenceContainer< Ampere > AmpereSequenceContainer
A container containing 64 bit Ampere values.
Definition SequenceContainer.h:980
SequenceContainer< Radian > RadianSequenceContainer
A container containing 64 bit Radian values.
Definition SequenceContainer.h:1013
SequenceContainer< SquareMeter > SquareMeterSequenceContainer
A container containing 64 bit SquareMeter values.
Definition SequenceContainer.h:1025
SequenceContainer< RadianPerSecond > RadianPerSecondSequenceContainer
A container containing 64 bit RadianPerSecond values.
Definition SequenceContainer.h:1016
SequenceContainer< Second > SecondSequenceContainer
A container containing 64 bit Second values.
Definition SequenceContainer.h:1022
SequenceContainer< MeterPerSecondSquared > MeterPerSecondSquaredSequenceContainer
A container containing 64 bit MeterPerSecondSquared values.
Definition SequenceContainer.h:1004
SequenceContainer< Joule > JouleSequenceContainer
A container containing 64 bit Joule values.
Definition SequenceContainer.h:989
SequenceContainer< Steradian > SteradianSequenceContainer
A container containing 64 bit Steradian values.
Definition SequenceContainer.h:1028
SequenceContainer< MeterPerSecond > MeterPerSecondSequenceContainer
A container containing 64 bit MeterPerSecond values.
Definition SequenceContainer.h:1001
SequenceContainer< CubicMeter > CubicMeterSequenceContainer
A container containing 64 bit CubicMeter values.
Definition SequenceContainer.h:983
SequenceContainer< Pascal > PascalSequenceContainer
A container containing 64 bit Pascal values.
Definition SequenceContainer.h:1010
SequenceContainer< RadianPerSecondSquared > RadianPerSecondSquaredSequenceContainer
A container containing 64 bit RadianPerSecondSquared values.
Definition SequenceContainer.h:1019
SequenceContainer< Volt > VoltSequenceContainer
A container containing 64 bit Volt values.
Definition SequenceContainer.h:1031
SequenceContainer< Kelvin > KelvinSequenceContainer
A container containing 64 bit Kelvin values.
Definition SequenceContainer.h:992
SequenceContainer< Kilogram > KilogramSequenceContainer
A container containing 64 bit Kilogram values.
Definition SequenceContainer.h:995
DOTS_CPP_API void MergeChanges(ObjectPtr into, const ObjectConstPtr &from)
Merge the changed members (recursively) from one object into another.
Base class for all Containers.
Definition ContainerBase.h:44
bool m_bIsChanged
The variable containing the change flag.
Definition ContainerBase.h:127
A parameter in the call was invalid.
Definition Exceptions.h:264
Meant to be used when something goes very wrong.
Definition Exceptions.h:364
Container class for sequences of values.
Definition SequenceContainer.h:53
const ContainedType & at(const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:151
void SetNull() override
Set the container to null.
Definition SequenceContainer.h:73
SequenceContainer()
Default Constructor.
Definition SequenceContainer.h:65
const ContainedType & operator[](const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:139
size_t size() const
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:83
void InsertAt(const size_t index, const ContainedType &value)
Insert a new value at specified index.
Definition SequenceContainer.h:207
const_iterator end() const
Get const_iterator pointing past the last element in the sequence.
Definition SequenceContainer.h:118
StorageType::const_iterator const_iterator
Definition SequenceContainer.h:58
void SetVal(const size_t index, const ContainedType &val)
Update a specific value.
Definition SequenceContainer.h:177
const ContainedType & back() const
Get a const reference to the last value in the sequence.
Definition SequenceContainer.h:104
const_iterator begin() const
Get const_iterator pointing to the first element in the sequence.
Definition SequenceContainer.h:111
bool IsNull() const override
Is the container set to null?
Definition SequenceContainer.h:71
const ContainedType & GetVal(const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:194
bool empty() const
Check if sequence is empty.
Definition SequenceContainer.h:90
const ContainedType & front() const
Get a const reference to the first value in the sequence.
Definition SequenceContainer.h:97
void EraseAt(const size_t index)
Erase a value at specified index.
Definition SequenceContainer.h:220
std::deque< T > StorageType
Definition SequenceContainer.h:57
void clear()
Clear the sequence, i.e remove all values.
Definition SequenceContainer.h:125
void push_back(const ContainedType &val)
Insert a new value last in the sequence.
Definition SequenceContainer.h:162
T ContainedType
Definition SequenceContainer.h:56
void Copy(const ContainerBase &that) override
Copy all the members from "that" into "this".
Definition SequenceContainer.h:234
Base class for containers for sequences of enumeration values.
Definition SequenceContainer.h:274
virtual EnumerationValue GetOrdinal(const size_t index) const =0
Get the ordinal value of the value at the specified index.
virtual void PushBackOrdinal(const EnumerationValue val)=0
Insert a new ordinal value last in the sequence.
virtual void clear()=0
Clear the sequence, i.e remove all values.
virtual size_t size() const =0
Get the size of the sequence, i.e number of contained values.
EnumerationSequenceContainerBase()
Default Constructor.
Definition SequenceContainer.h:281
void SetNull() override
Set the container to null.
Definition SequenceContainer.h:288
virtual void InsertOrdinalAt(const size_t index, EnumerationValue value)=0
Insert a new ordinal value at specified index, growing the sequence.
virtual void SetOrdinal(const size_t index, const EnumerationValue val)=0
Update a specific value, using ordinal value.
bool IsNull() const override
Is the container set to null?
Definition SequenceContainer.h:286
virtual bool empty() const =0
Check if sequence is empty.
virtual void EraseAt(const size_t index)=0
Erase a value at specified index.
Container for sequences of enumeration values.
Definition SequenceContainer.h:362
EnumerationValue GetOrdinal(const size_t index) const override
Get the ordinal value of the value at the specified index.
Definition SequenceContainer.h:514
T::Enumeration ContainedType
Definition SequenceContainer.h:364
const_iterator begin() const
Get const_iterator pointing to the first element in the sequence.
Definition SequenceContainer.h:399
void Copy(const ContainerBase &that) override
Copy all the members from "that" into "this".
Definition SequenceContainer.h:558
void InsertAt(const size_t index, ContainedType value)
Insert a new value at specified index.
Definition SequenceContainer.h:527
ContainedType at(const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:440
std::deque< ContainedType > StorageType
Definition SequenceContainer.h:365
StorageType::const_iterator const_iterator
Definition SequenceContainer.h:366
void push_back(const ContainedType val)
Insert a new value last in the sequence.
Definition SequenceContainer.h:453
void InsertOrdinalAt(const size_t index, EnumerationValue value) override
Insert a new ordinal value at specified index, growing the sequence.
Definition SequenceContainer.h:533
const_iterator end() const
Get const_iterator pointing past the last element in the sequence.
Definition SequenceContainer.h:405
void EraseAt(const size_t index) override
Erase a value at specified index.
Definition SequenceContainer.h:544
bool empty() const override
Check if sequence is empty.
Definition SequenceContainer.h:381
void SetVal(const size_t index, const ContainedType val)
Update a specific value.
Definition SequenceContainer.h:479
EnumerationSequenceContainer()
Default Constructor.
Definition SequenceContainer.h:373
void clear() override
Clear the sequence, i.e remove all values.
Definition SequenceContainer.h:413
ContainedType front() const
Get a const reference to the first value in the sequence.
Definition SequenceContainer.h:387
ContainedType back() const
Get a const reference to the last value in the sequence.
Definition SequenceContainer.h:393
void SetOrdinal(const size_t index, const EnumerationValue val) override
Update a specific value, using ordinal value.
Definition SequenceContainer.h:498
ContainedType operator[](const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:427
ContainedType GetVal(const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:492
void PushBackOrdinal(const EnumerationValue val) override
Insert a new ordinal value last in the sequence.
Definition SequenceContainer.h:459
size_t size() const override
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:379
Base class for all object sequences.
Definition SequenceContainer.h:582
virtual size_t size() const =0
Get the size of the sequence, i.e number of contained values.
virtual ObjectPtr GetObjectPointer(const size_t index)=0
Get a generic pointer to the object at the specified index.
virtual ObjectPtr GetObj(const size_t index)=0
Get a generic pointer to the object at the specified index.
virtual ObjectConstPtr GetObjectPointer(const size_t index) const =0
Get a const generic pointer to the object at the specified index.
virtual bool IsChangedHere() const =0
Is the change flag in the container set?
virtual void SetChangedHere(const bool changed)=0
Set the change flag in the container.
virtual void PushBackObjectPointer(const ObjectPtr &ptr)=0
Insert a new object last in the sequence.
virtual ObjectConstPtr GetObj(const size_t index) const =0
Get a const generic pointer to the object at the specified index.
virtual void SetObjectPointer(const size_t index, const ObjectPtr &ptr)=0
Set the smart pointer at a certain index in the container.
Definition SequenceContainer.h:704
ObjectConstPtr GetObj(const size_t index) const override
Get a const generic pointer to the object at the specified index.
Definition SequenceContainer.h:751
void SetObjectPointer(const size_t index, const ObjectPtr &ptr) override
Set the smart pointer at a certain index in the container.
Definition SequenceContainer.h:799
std::shared_ptr< T > T_Ptr
Typedef for the contained smart pointer.
Definition SequenceContainer.h:708
std::shared_ptr< const T > GetPtr(const size_t index) const
Get the object at the specified index, const version.
Definition SequenceContainer.h:777
ObjectPtr GetObjectPointer(const size_t index) override
Get a generic pointer to the object at the specified index.
Definition SequenceContainer.h:765
ObjectPtr GetObj(const size_t index) override
Get a generic pointer to the object at the specified index.
Definition SequenceContainer.h:750
T_Ptr GetPtr(const size_t index)
Get the object at the specified index.
Definition SequenceContainer.h:760
void SetChanged(const bool changed) override
Set the containers change flag.
Definition SequenceContainer.h:733
void SetChangedHere(const bool changed) override
Set the change flag in the container.
Definition SequenceContainer.h:743
ObjectConstPtr GetObjectPointer(const size_t index) const override
Get a const generic pointer to the object at the specified index.
Definition SequenceContainer.h:782
size_t size() const override
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:748
void PushBackObjectPointer(const ObjectPtr &ptr) override
Insert a new object last in the sequence.
Definition SequenceContainer.h:809
bool IsChanged() const override
Is the change flag set on the container?
Definition SequenceContainer.h:710
bool IsChangedHere() const override
Is the change flag in the container set?
Definition SequenceContainer.h:728
void SetPtr(const size_t index, const T_Ptr &ptr)
Set a the object pointer a the specified index.
Definition SequenceContainer.h:794