25#ifndef __DOTS_VALUE_CONTAINERS_H__
26#define __DOTS_VALUE_CONTAINERS_H__
95 const T
GetValOrDefault(
const T& defaultVal)
const {
return m_bIsNull ? defaultVal : m_Value;}
98 bool IsNull()
const override {
return m_bIsNull;}
101 bool HasVal()
const override {
return !m_bIsNull;}
115 if (
typeid(*
this) !=
typeid(that))
127 friend class Safir::Dob::Typesystem::Internal::BlobOperations;
156 void SetVal(
const std::wstring & value) {m_Value = value; m_CachedUtf8String.clear(); m_bIsNull =
false;
m_bIsChanged =
true;}
172 const std::wstring
GetValOrDefault(
const std::wstring& defaultVal = L
"")
const {
if (m_bIsNull)
return defaultVal;
return m_Value;}
174 bool IsNull()
const override {
return m_bIsNull;}
177 bool HasVal()
const override {
return !m_bIsNull;}
184 m_CachedUtf8String.clear();
192 if (
typeid(*
this) !=
typeid(that))
230 if (m_CachedUtf8String.empty())
235 return static_cast<Int32>(m_CachedUtf8String.length() + 1);
253 if (!m_Value.empty() && m_CachedUtf8String.empty())
257 return m_CachedUtf8String;
266 std::wstring m_Value;
267 mutable std::string m_CachedUtf8String;
307 bool IsNull()
const override {
return m_bIsNull;}
310 bool HasVal()
const override {
return !m_bIsNull;}
324 if (
typeid(*
this) !=
typeid(that))
#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
ValueContainer< Int32 > Int32Container
A container containing 32 bit integer values.
Definition ValueContainers.h:348
ValueContainer< bool > BooleanContainer
A container containing boolean values.
Definition ValueContainers.h:345
ValueContainer< Float32 > Float32Container
A container containing 32 bit floating point values.
Definition ValueContainers.h:354
ValueContainer< EntityId > EntityIdContainer
A container containing EntityId values.
Definition ValueContainers.h:366
ValueContainer< HandlerId > HandlerIdContainer
A container containing HandlerId values.
Definition ValueContainers.h:372
ValueContainer< InstanceId > InstanceIdContainer
A container containing InstanceId values.
Definition ValueContainers.h:363
std::vector< char > Binary
A type to contain binary data.
Definition Defs.h:306
ValueContainer< ChannelId > ChannelIdContainer
A container containing ChannelId values.
Definition ValueContainers.h:369
DotsC_Int32 Int32
32 bit integer type.
Definition Defs.h:66
ValueContainer< TypeId > TypeIdContainer
A container containing TypeId values.
Definition ValueContainers.h:360
ValueContainer< Int64 > Int64Container
A container containing 64 bit integer values.
Definition ValueContainers.h:351
ValueContainer< Float64 > Float64Container
A container containing 64 bit floating point values.
Definition ValueContainers.h:357
32 bit SI-types.
Definition ArrayContainer.h:256
ValueContainer< Volt > VoltContainer
A container containing 32 bit Volt values.
Definition ValueContainers.h:434
ValueContainer< Radian > RadianContainer
A container containing 32 bit Radian values.
Definition ValueContainers.h:416
ValueContainer< Kelvin > KelvinContainer
A container containing 32 bit Kelvin values.
Definition ValueContainers.h:395
ValueContainer< Newton > NewtonContainer
A container containing 32 bit Newton values.
Definition ValueContainers.h:410
ValueContainer< Pascal > PascalContainer
A container containing 32 bit Pascal values.
Definition ValueContainers.h:413
ValueContainer< Watt > WattContainer
A container containing 32 bit Watt values.
Definition ValueContainers.h:437
ValueContainer< SquareMeter > SquareMeterContainer
A container containing 32 bit SquareMeter values.
Definition ValueContainers.h:428
ValueContainer< Meter > MeterContainer
A container containing 32 bit Meter values.
Definition ValueContainers.h:401
ValueContainer< Kilogram > KilogramContainer
A container containing 32 bit Kilogram values.
Definition ValueContainers.h:398
ValueContainer< RadianPerSecondSquared > RadianPerSecondSquaredContainer
A container containing 32 bit RadianPerSecondSquared values.
Definition ValueContainers.h:422
ValueContainer< MeterPerSecond > MeterPerSecondContainer
A container containing 32 bit MeterPerSecond values.
Definition ValueContainers.h:404
ValueContainer< Ampere > AmpereContainer
A container containing 32 bit Ampere values.
Definition ValueContainers.h:383
ValueContainer< Second > SecondContainer
A container containing 32 bit Second values.
Definition ValueContainers.h:425
ValueContainer< RadianPerSecond > RadianPerSecondContainer
A container containing 32 bit RadianPerSecond values.
Definition ValueContainers.h:419
ValueContainer< Steradian > SteradianContainer
A container containing 32 bit Steradian values.
Definition ValueContainers.h:431
ValueContainer< Hertz > HertzContainer
A container containing 32 bit Hertz values.
Definition ValueContainers.h:389
ValueContainer< CubicMeter > CubicMeterContainer
A container containing 32 bit CubicMeter values.
Definition ValueContainers.h:386
ValueContainer< Joule > JouleContainer
A container containing 32 bit Joule values.
Definition ValueContainers.h:392
ValueContainer< MeterPerSecondSquared > MeterPerSecondSquaredContainer
A container containing 32 bit MeterPerSecondSquared values.
Definition ValueContainers.h:407
64 bit SI-types.
Definition ArrayContainer.h:319
ValueContainer< Kelvin > KelvinContainer
A container containing 64 bit Kelvin values.
Definition ValueContainers.h:458
ValueContainer< Meter > MeterContainer
A container containing 64 bit Meter values.
Definition ValueContainers.h:464
ValueContainer< RadianPerSecondSquared > RadianPerSecondSquaredContainer
A container containing 64 bit RadianPerSecondSquared values.
Definition ValueContainers.h:485
ValueContainer< MeterPerSecond > MeterPerSecondContainer
A container containing 64 bit MeterPerSecond values.
Definition ValueContainers.h:467
ValueContainer< RadianPerSecond > RadianPerSecondContainer
A container containing 64 bit RadianPerSecond values.
Definition ValueContainers.h:482
ValueContainer< Newton > NewtonContainer
A container containing 64 bit Newton values.
Definition ValueContainers.h:473
ValueContainer< Joule > JouleContainer
A container containing 64 bit Joule values.
Definition ValueContainers.h:455
ValueContainer< CubicMeter > CubicMeterContainer
A container containing 64 bit CubicMeter values.
Definition ValueContainers.h:449
ValueContainer< SquareMeter > SquareMeterContainer
A container containing 64 bit SquareMeter values.
Definition ValueContainers.h:491
ValueContainer< MeterPerSecondSquared > MeterPerSecondSquaredContainer
A container containing 64 bit MeterPerSecondSquared values.
Definition ValueContainers.h:470
ValueContainer< Second > SecondContainer
A container containing 64 bit Second values.
Definition ValueContainers.h:488
ValueContainer< Hertz > HertzContainer
A container containing 64 bit Hertz values.
Definition ValueContainers.h:452
ValueContainer< Kilogram > KilogramContainer
A container containing 64 bit Kilogram values.
Definition ValueContainers.h:461
ValueContainer< Watt > WattContainer
A container containing 64 bit Watt values.
Definition ValueContainers.h:500
ValueContainer< Radian > RadianContainer
A container containing 64 bit Radian values.
Definition ValueContainers.h:479
ValueContainer< Steradian > SteradianContainer
A container containing 64 bit Steradian values.
Definition ValueContainers.h:494
ValueContainer< Pascal > PascalContainer
A container containing 64 bit Pascal values.
Definition ValueContainers.h:476
ValueContainer< Volt > VoltContainer
A container containing 64 bit Volt values.
Definition ValueContainers.h:497
ValueContainer< Ampere > AmpereContainer
A container containing 64 bit Ampere values.
Definition ValueContainers.h:446
DOTS_CPP_API const std::string ToUtf8(const std::wstring &wstr)
Convert a std::wstring to UTF8-encoded std::string.
bool m_bIsChanged
The variable containing the change flag.
Definition ContainerBase.h:134
constexpr ContainerBase()
Default Constructor.
Definition ContainerBase.h:51
Meant to be used when something goes very wrong.
Definition Exceptions.h:364
Thrown when an application attempts to get the value of a member that is null.
Definition Exceptions.h:396
Container for base types.
Definition ValueContainers.h:61
bool HasVal() const override
Does the container have a value?
Definition ValueContainers.h:101
constexpr ValueContainer()
Default constructor.
Definition ValueContainers.h:70
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:98
T GetVal() const
Get the value of the container.
Definition ValueContainers.h:87
const T GetValOrDefault(const T &defaultVal) const
Get the value of the container if the container has a value.
Definition ValueContainers.h:95
T ContainedType
Definition ValueContainers.h:63
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:111
void SetVal(const T value)
Set the value of the container.
Definition ValueContainers.h:79
void SetNull() override
Set the container to null.
Definition ValueContainers.h:104
void SetVal(const std::wstring &value)
Set the value of the container.
Definition ValueContainers.h:156
void SetNull() override
Set the container to null.
Definition ValueContainers.h:180
const std::wstring & GetVal() const
Get the value of the container.
Definition ValueContainers.h:164
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:188
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:174
const std::string & Utf8String() const
Convert the string to a UTF8 encoded std::string.
Definition ValueContainers.h:247
friend class Safir::Dob::Typesystem::Internal::BlobOperations
Definition ValueContainers.h:263
Int32 Utf8StringLength() const
Calculate the length needed for this string in UTF8 encoding.
Definition ValueContainers.h:218
const std::wstring GetValOrDefault(const std::wstring &defaultVal=L"") const
Get the value of the container if the container has a value.
Definition ValueContainers.h:172
StringContainer()
Default constructor.
Definition ValueContainers.h:147
bool HasVal() const override
Does the container have a value?
Definition ValueContainers.h:177
std::wstring ContainedType
Definition ValueContainers.h:140
BinaryContainer()
Default constructor.
Definition ValueContainers.h:286
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:320
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:307
void SetVal(const Binary &value)
Set the value of the container.
Definition ValueContainers.h:303
const Binary & GetVal() const
Get the value of the container.
Definition ValueContainers.h:294
bool HasVal() const override
Does the container have a value?
Definition ValueContainers.h:310
friend class Safir::Dob::Typesystem::Internal::BlobOperations
Definition ValueContainers.h:333
Binary ContainedType
Definition ValueContainers.h:280
void SetNull() override
Set the container to null.
Definition ValueContainers.h:313