85 size_t size()
const {
return m_values.size();}
92 bool empty()
const {
return m_values.empty();}
143 return m_values[index];
155 return m_values.at(index);
167 m_values.push_back(val);
181 if (index >= m_values.size())
183 throw std::out_of_range(
"Index out of range.");
198 return m_values.at(index);
212 m_values.insert(m_values.begin()+index, value);
225 m_values.erase(m_values.begin()+index);
240 if (
typeid(*
this) !=
typeid(that))
250 for (
typename StorageType::const_iterator it=other.m_values.begin(); it!=other.m_values.end(); ++it)
252 m_values.push_back(SequenceCopyHelper<ContainedType>::Copy(*it));
258 template <
class U>
struct SequenceCopyHelper
260 static U Copy(
const U& val) {
return val;}
263 template <
class U>
struct SequenceCopyHelper< std::shared_ptr<U> >
265 static std::shared_ptr<U> Copy(
const std::shared_ptr<U> & val) {
return std::static_pointer_cast<U>(val->Clone());}
301 virtual size_t size()
const = 0;
383 size_t size()
const override {
return m_values.size();}
385 bool empty()
const override {
return m_values.empty();}
433 T::CheckForMismatch();
434 return m_values[index];
446 T::CheckForMismatch();
447 return m_values.at(index);
459 T::CheckForMismatch();
465 if (val < T::FirstOrdinal() || val > T::LastOrdinal())
485 T::CheckForMismatch();
498 T::CheckForMismatch();
499 return m_values.at(index);
504 if (index >= m_values.size())
506 throw std::out_of_range(
"Index out of range.");
509 if (val < T::FirstOrdinal() || val > T::LastOrdinal())
520 return m_values.at(index);
533 T::CheckForMismatch();
539 if (value < T::FirstOrdinal() || value > T::LastOrdinal())
545 m_values.insert(m_values.begin()+index,
static_cast<ContainedType>(value));
551 m_values.erase(m_values.begin()+index);
566 if (
typeid(*
this) !=
typeid(that))
575 m_values = other.m_values;
610 virtual size_t size()
const = 0;
619#ifndef SAFIR_NO_DEPRECATED
723 if ((*it)->IsChanged())
743 (*it)->SetChanged(changed);
753#ifndef SAFIR_NO_DEPRECATED
781 std::shared_ptr<const T>
GetPtr(
const size_t index)
const
805 const auto tptr = std::dynamic_pointer_cast<T>(ptr);
815 const auto tptr = std::dynamic_pointer_cast<T>(ptr);
824#ifdef SAFIR_NO_DEPRECATED
839 const GenericObjectSequenceContainer<T>& other =
840 static_cast<const GenericObjectSequenceContainer<T>&
>(that);
844 if (!other.IsChanged())
851 throw SoftwareViolationException(L
"It is not possible to merge two object sequences of different sizes.",
857 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
This namespace contains all functionality of the DOB (Components DOSE and DOTS).
Definition Connection.h:38
This namespace contains the DOB Typesystem functionality and definitions.
Definition ArrayContainer.h:37
DotsC_EnumerationValue EnumerationValue
The ordinal value of an enumeration.
Definition Defs.h:270
SequenceContainer< HandlerId > HandlerIdSequenceContainer
A container containing HandlerId values.
Definition SequenceContainer.h:905
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:911
SequenceContainer< TypeId > TypeIdSequenceContainer
A container containing TypeId values.
Definition SequenceContainer.h:893
SequenceContainer< EntityId > EntityIdSequenceContainer
A container containing EntityId values.
Definition SequenceContainer.h:899
SequenceContainer< Float64 > Float64SequenceContainer
A container containing 64 bit floating point values.
Definition SequenceContainer.h:890
SequenceContainer< std::wstring > StringSequenceContainer
A container containing string values.
Definition SequenceContainer.h:875
SequenceContainer< Binary > BinarySequenceContainer
A container containing Binary values.
Definition SequenceContainer.h:908
SequenceContainer< Int32 > Int32SequenceContainer
A container containing 32 bit integer values.
Definition SequenceContainer.h:881
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:884
SequenceContainer< bool > BooleanSequenceContainer
A container containing boolean values.
Definition SequenceContainer.h:878
SequenceContainer< ChannelId > ChannelIdSequenceContainer
A container containing ChannelId values.
Definition SequenceContainer.h:902
SequenceContainer< InstanceId > InstanceIdSequenceContainer
A container containing InstanceId values.
Definition SequenceContainer.h:896
SequenceContainer< Float32 > Float32SequenceContainer
A container containing 32 bit floating point values.
Definition SequenceContainer.h:887
32 bit SI-types.
Definition ArrayContainer.h:256
SequenceContainer< Kelvin > KelvinSequenceContainer
A container containing 32 bit Kelvin values.
Definition SequenceContainer.h:933
SequenceContainer< CubicMeter > CubicMeterSequenceContainer
A container containing 32 bit CubicMeter values.
Definition SequenceContainer.h:924
SequenceContainer< SquareMeter > SquareMeterSequenceContainer
A container containing 32 bit SquareMeter values.
Definition SequenceContainer.h:966
SequenceContainer< Joule > JouleSequenceContainer
A container containing 32 bit Joule values.
Definition SequenceContainer.h:930
SequenceContainer< MeterPerSecondSquared > MeterPerSecondSquaredSequenceContainer
A container containing 32 bit MeterPerSecondSquared values.
Definition SequenceContainer.h:945
SequenceContainer< Pascal > PascalSequenceContainer
A container containing 32 bit Pascal values.
Definition SequenceContainer.h:951
SequenceContainer< Hertz > HertzSequenceContainer
A container containing 32 bit Hertz values.
Definition SequenceContainer.h:927
SequenceContainer< MeterPerSecond > MeterPerSecondSequenceContainer
A container containing 32 bit MeterPerSecond values.
Definition SequenceContainer.h:942
SequenceContainer< RadianPerSecond > RadianPerSecondSequenceContainer
A container containing 32 bit RadianPerSecond values.
Definition SequenceContainer.h:957
SequenceContainer< Radian > RadianSequenceContainer
A container containing 32 bit Radian values.
Definition SequenceContainer.h:954
SequenceContainer< Ampere > AmpereSequenceContainer
A container containing 32 bit Ampere values.
Definition SequenceContainer.h:921
SequenceContainer< RadianPerSecondSquared > RadianPerSecondSquaredSequenceContainer
A container containing 32 bit RadianPerSecondSquared values.
Definition SequenceContainer.h:960
SequenceContainer< Meter > MeterSequenceContainer
A container containing 32 bit Meter values.
Definition SequenceContainer.h:939
SequenceContainer< Steradian > SteradianSequenceContainer
A container containing 32 bit Steradian values.
Definition SequenceContainer.h:969
SequenceContainer< Newton > NewtonSequenceContainer
A container containing 32 bit Newton values.
Definition SequenceContainer.h:948
SequenceContainer< Watt > WattSequenceContainer
A container containing 32 bit Watt values.
Definition SequenceContainer.h:975
SequenceContainer< Kilogram > KilogramSequenceContainer
A container containing 32 bit Kilogram values.
Definition SequenceContainer.h:936
SequenceContainer< Volt > VoltSequenceContainer
A container containing 32 bit Volt values.
Definition SequenceContainer.h:972
SequenceContainer< Second > SecondSequenceContainer
A container containing 32 bit Second values.
Definition SequenceContainer.h:963
64 bit SI-types.
Definition ArrayContainer.h:319
SequenceContainer< Hertz > HertzSequenceContainer
A container containing 64 bit Hertz values.
Definition SequenceContainer.h:990
SequenceContainer< Watt > WattSequenceContainer
A container containing 64 bit Watt values.
Definition SequenceContainer.h:1038
SequenceContainer< Meter > MeterSequenceContainer
A container containing 64 bit Meter values.
Definition SequenceContainer.h:1002
SequenceContainer< Newton > NewtonSequenceContainer
A container containing 64 bit Newton values.
Definition SequenceContainer.h:1011
SequenceContainer< Ampere > AmpereSequenceContainer
A container containing 64 bit Ampere values.
Definition SequenceContainer.h:984
SequenceContainer< Radian > RadianSequenceContainer
A container containing 64 bit Radian values.
Definition SequenceContainer.h:1017
SequenceContainer< SquareMeter > SquareMeterSequenceContainer
A container containing 64 bit SquareMeter values.
Definition SequenceContainer.h:1029
SequenceContainer< RadianPerSecond > RadianPerSecondSequenceContainer
A container containing 64 bit RadianPerSecond values.
Definition SequenceContainer.h:1020
SequenceContainer< Second > SecondSequenceContainer
A container containing 64 bit Second values.
Definition SequenceContainer.h:1026
SequenceContainer< MeterPerSecondSquared > MeterPerSecondSquaredSequenceContainer
A container containing 64 bit MeterPerSecondSquared values.
Definition SequenceContainer.h:1008
SequenceContainer< Joule > JouleSequenceContainer
A container containing 64 bit Joule values.
Definition SequenceContainer.h:993
SequenceContainer< Steradian > SteradianSequenceContainer
A container containing 64 bit Steradian values.
Definition SequenceContainer.h:1032
SequenceContainer< MeterPerSecond > MeterPerSecondSequenceContainer
A container containing 64 bit MeterPerSecond values.
Definition SequenceContainer.h:1005
SequenceContainer< CubicMeter > CubicMeterSequenceContainer
A container containing 64 bit CubicMeter values.
Definition SequenceContainer.h:987
SequenceContainer< Pascal > PascalSequenceContainer
A container containing 64 bit Pascal values.
Definition SequenceContainer.h:1014
SequenceContainer< RadianPerSecondSquared > RadianPerSecondSquaredSequenceContainer
A container containing 64 bit RadianPerSecondSquared values.
Definition SequenceContainer.h:1023
SequenceContainer< Volt > VoltSequenceContainer
A container containing 64 bit Volt values.
Definition SequenceContainer.h:1035
SequenceContainer< Kelvin > KelvinSequenceContainer
A container containing 64 bit Kelvin values.
Definition SequenceContainer.h:996
SequenceContainer< Kilogram > KilogramSequenceContainer
A container containing 64 bit Kilogram values.
Definition SequenceContainer.h:999
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:134
constexpr ContainerBase()
Default Constructor.
Definition ContainerBase.h:51
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:52
const ContainedType & at(const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:153
void SetNull() override
Set the container to null.
Definition SequenceContainer.h:75
SequenceContainer()
Default Constructor.
Definition SequenceContainer.h:64
const ContainedType & operator[](const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:141
size_t size() const
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:85
void InsertAt(const size_t index, const ContainedType &value)
Insert a new value at specified index.
Definition SequenceContainer.h:209
const_iterator end() const
Get const_iterator pointing past the last element in the sequence.
Definition SequenceContainer.h:120
StorageType::const_iterator const_iterator
Definition SequenceContainer.h:57
void SetVal(const size_t index, const ContainedType &val)
Update a specific value.
Definition SequenceContainer.h:179
const ContainedType & back() const
Get a const reference to the last value in the sequence.
Definition SequenceContainer.h:106
const_iterator begin() const
Get const_iterator pointing to the first element in the sequence.
Definition SequenceContainer.h:113
bool IsNull() const override
Is the container set to null?
Definition SequenceContainer.h:70
const ContainedType & GetVal(const size_t index) const
Get const reference to the value with specified index.
Definition SequenceContainer.h:196
bool empty() const
Check if sequence is empty.
Definition SequenceContainer.h:92
const ContainedType & front() const
Get a const reference to the first value in the sequence.
Definition SequenceContainer.h:99
bool HasVal() const override
Does the container have a value?
Definition SequenceContainer.h:72
void EraseAt(const size_t index)
Erase a value at specified index.
Definition SequenceContainer.h:222
std::deque< T > StorageType
Definition SequenceContainer.h:56
void clear()
Clear the sequence, i.e remove all values.
Definition SequenceContainer.h:127
void push_back(const ContainedType &val)
Insert a new value last in the sequence.
Definition SequenceContainer.h:164
T ContainedType
Definition SequenceContainer.h:55
void Copy(const ContainerBase &that) override
Copy all the members from "that" into "this".
Definition SequenceContainer.h:236
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:283
bool HasVal() const override
Does the container have a value?
Definition SequenceContainer.h:290
void SetNull() override
Set the container to null.
Definition SequenceContainer.h:292
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:288
virtual bool empty() const =0
Check if sequence is empty.
virtual void EraseAt(const size_t index)=0
Erase a value at specified index.
EnumerationValue GetOrdinal(const size_t index) const override
Get the ordinal value of the value at the specified index.
Definition SequenceContainer.h:518
T::Enumeration ContainedType
Definition SequenceContainer.h:368
const_iterator begin() const
Get const_iterator pointing to the first element in the sequence.
Definition SequenceContainer.h:403
void Copy(const ContainerBase &that) override
Copy all the members from "that" into "this".
Definition SequenceContainer.h:562
void InsertAt(const size_t index, ContainedType value)
Insert a new value at specified index.
Definition SequenceContainer.h:531
ContainedType at(const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:444
std::deque< ContainedType > StorageType
Definition SequenceContainer.h:369
StorageType::const_iterator const_iterator
Definition SequenceContainer.h:370
void push_back(const ContainedType val)
Insert a new value last in the sequence.
Definition SequenceContainer.h:457
void InsertOrdinalAt(const size_t index, EnumerationValue value) override
Insert a new ordinal value at specified index, growing the sequence.
Definition SequenceContainer.h:537
const_iterator end() const
Get const_iterator pointing past the last element in the sequence.
Definition SequenceContainer.h:409
void EraseAt(const size_t index) override
Erase a value at specified index.
Definition SequenceContainer.h:548
bool empty() const override
Check if sequence is empty.
Definition SequenceContainer.h:385
void SetVal(const size_t index, const ContainedType val)
Update a specific value.
Definition SequenceContainer.h:483
EnumerationSequenceContainer()
Default Constructor.
Definition SequenceContainer.h:377
void clear() override
Clear the sequence, i.e remove all values.
Definition SequenceContainer.h:417
ContainedType front() const
Get a const reference to the first value in the sequence.
Definition SequenceContainer.h:391
ContainedType back() const
Get a const reference to the last value in the sequence.
Definition SequenceContainer.h:397
void SetOrdinal(const size_t index, const EnumerationValue val) override
Update a specific value, using ordinal value.
Definition SequenceContainer.h:502
ContainedType operator[](const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:431
ContainedType GetVal(const size_t index) const
Get the value at the specified index.
Definition SequenceContainer.h:496
void PushBackOrdinal(const EnumerationValue val) override
Insert a new ordinal value last in the sequence.
Definition SequenceContainer.h:463
size_t size() const override
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:383
Base class for all object sequences.
Definition SequenceContainer.h:586
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:708
ObjectConstPtr GetObj(const size_t index) const override
Get a const generic pointer to the object at the specified index.
Definition SequenceContainer.h:755
void SetObjectPointer(const size_t index, const ObjectPtr &ptr) override
Set the smart pointer at a certain index in the container.
Definition SequenceContainer.h:803
std::shared_ptr< T > T_Ptr
Typedef for the contained smart pointer.
Definition SequenceContainer.h:712
std::shared_ptr< const T > GetPtr(const size_t index) const
Get the object at the specified index, const version.
Definition SequenceContainer.h:781
ObjectPtr GetObjectPointer(const size_t index) override
Get a generic pointer to the object at the specified index.
Definition SequenceContainer.h:769
ObjectPtr GetObj(const size_t index) override
Get a generic pointer to the object at the specified index.
Definition SequenceContainer.h:754
T_Ptr GetPtr(const size_t index)
Get the object at the specified index.
Definition SequenceContainer.h:764
void SetChanged(const bool changed) override
Set the containers change flag.
Definition SequenceContainer.h:737
void SetChangedHere(const bool changed) override
Set the change flag in the container.
Definition SequenceContainer.h:747
ObjectConstPtr GetObjectPointer(const size_t index) const override
Get a const generic pointer to the object at the specified index.
Definition SequenceContainer.h:786
size_t size() const override
Get the size of the sequence, i.e number of contained values.
Definition SequenceContainer.h:752
void PushBackObjectPointer(const ObjectPtr &ptr) override
Insert a new object last in the sequence.
Definition SequenceContainer.h:813
bool IsChanged() const override
Is the change flag set on the container?
Definition SequenceContainer.h:714
bool IsChangedHere() const override
Is the change flag in the container set?
Definition SequenceContainer.h:732
void SetPtr(const size_t index, const T_Ptr &ptr)
Set a the object pointer a the specified index.
Definition SequenceContainer.h:798