25#ifndef __DOTS_VALUE_CONTAINERS_H__
26#define __DOTS_VALUE_CONTAINERS_H__
90 bool IsNull()
const override {
return m_bIsNull;}
104 if (
typeid(*
this) !=
typeid(that))
145 void SetVal(
const std::wstring & value) {m_Value = value; m_CachedUtf8String.clear(); m_bIsNull =
false;
m_bIsChanged =
true;}
155 bool IsNull()
const override {
return m_bIsNull;}
162 m_CachedUtf8String.clear();
170 if (
typeid(*
this) !=
typeid(that))
208 if (m_CachedUtf8String.empty())
213 return static_cast<Int32>(m_CachedUtf8String.length() + 1);
231 if (!m_Value.empty() && m_CachedUtf8String.empty())
235 return m_CachedUtf8String;
244 std::wstring m_Value;
245 mutable std::string m_CachedUtf8String;
285 bool IsNull()
const override {
return m_bIsNull;}
299 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
ValueContainer< Int32 > Int32Container
A container containing 32 bit integer values.
Definition ValueContainers.h:323
ValueContainer< bool > BooleanContainer
A container containing boolean values.
Definition ValueContainers.h:320
ValueContainer< Float32 > Float32Container
A container containing 32 bit floating point values.
Definition ValueContainers.h:329
ValueContainer< EntityId > EntityIdContainer
A container containing EntityId values.
Definition ValueContainers.h:341
ValueContainer< HandlerId > HandlerIdContainer
A container containing HandlerId values.
Definition ValueContainers.h:347
ValueContainer< InstanceId > InstanceIdContainer
A container containing InstanceId values.
Definition ValueContainers.h:338
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:344
DotsC_Int32 Int32
32 bit integer type.
Definition Defs.h:66
ValueContainer< TypeId > TypeIdContainer
A container containing TypeId values.
Definition ValueContainers.h:335
ValueContainer< Int64 > Int64Container
A container containing 64 bit integer values.
Definition ValueContainers.h:326
ValueContainer< Float64 > Float64Container
A container containing 64 bit floating point values.
Definition ValueContainers.h:332
ValueContainer< Volt > VoltContainer
A container containing 32 bit Volt values.
Definition ValueContainers.h:409
ValueContainer< Radian > RadianContainer
A container containing 32 bit Radian values.
Definition ValueContainers.h:391
ValueContainer< Kelvin > KelvinContainer
A container containing 32 bit Kelvin values.
Definition ValueContainers.h:370
ValueContainer< Newton > NewtonContainer
A container containing 32 bit Newton values.
Definition ValueContainers.h:385
ValueContainer< Pascal > PascalContainer
A container containing 32 bit Pascal values.
Definition ValueContainers.h:388
ValueContainer< Watt > WattContainer
A container containing 32 bit Watt values.
Definition ValueContainers.h:412
ValueContainer< SquareMeter > SquareMeterContainer
A container containing 32 bit SquareMeter values.
Definition ValueContainers.h:403
ValueContainer< Meter > MeterContainer
A container containing 32 bit Meter values.
Definition ValueContainers.h:376
ValueContainer< Kilogram > KilogramContainer
A container containing 32 bit Kilogram values.
Definition ValueContainers.h:373
ValueContainer< RadianPerSecondSquared > RadianPerSecondSquaredContainer
A container containing 32 bit RadianPerSecondSquared values.
Definition ValueContainers.h:397
ValueContainer< MeterPerSecond > MeterPerSecondContainer
A container containing 32 bit MeterPerSecond values.
Definition ValueContainers.h:379
ValueContainer< Ampere > AmpereContainer
A container containing 32 bit Ampere values.
Definition ValueContainers.h:358
ValueContainer< Second > SecondContainer
A container containing 32 bit Second values.
Definition ValueContainers.h:400
ValueContainer< RadianPerSecond > RadianPerSecondContainer
A container containing 32 bit RadianPerSecond values.
Definition ValueContainers.h:394
ValueContainer< Steradian > SteradianContainer
A container containing 32 bit Steradian values.
Definition ValueContainers.h:406
ValueContainer< Hertz > HertzContainer
A container containing 32 bit Hertz values.
Definition ValueContainers.h:364
ValueContainer< CubicMeter > CubicMeterContainer
A container containing 32 bit CubicMeter values.
Definition ValueContainers.h:361
ValueContainer< Joule > JouleContainer
A container containing 32 bit Joule values.
Definition ValueContainers.h:367
ValueContainer< MeterPerSecondSquared > MeterPerSecondSquaredContainer
A container containing 32 bit MeterPerSecondSquared values.
Definition ValueContainers.h:382
ValueContainer< Kelvin > KelvinContainer
A container containing 64 bit Kelvin values.
Definition ValueContainers.h:433
ValueContainer< Meter > MeterContainer
A container containing 64 bit Meter values.
Definition ValueContainers.h:439
ValueContainer< RadianPerSecondSquared > RadianPerSecondSquaredContainer
A container containing 64 bit RadianPerSecondSquared values.
Definition ValueContainers.h:460
ValueContainer< MeterPerSecond > MeterPerSecondContainer
A container containing 64 bit MeterPerSecond values.
Definition ValueContainers.h:442
ValueContainer< RadianPerSecond > RadianPerSecondContainer
A container containing 64 bit RadianPerSecond values.
Definition ValueContainers.h:457
ValueContainer< Newton > NewtonContainer
A container containing 64 bit Newton values.
Definition ValueContainers.h:448
ValueContainer< Joule > JouleContainer
A container containing 64 bit Joule values.
Definition ValueContainers.h:430
ValueContainer< CubicMeter > CubicMeterContainer
A container containing 64 bit CubicMeter values.
Definition ValueContainers.h:424
ValueContainer< SquareMeter > SquareMeterContainer
A container containing 64 bit SquareMeter values.
Definition ValueContainers.h:466
ValueContainer< MeterPerSecondSquared > MeterPerSecondSquaredContainer
A container containing 64 bit MeterPerSecondSquared values.
Definition ValueContainers.h:445
ValueContainer< Second > SecondContainer
A container containing 64 bit Second values.
Definition ValueContainers.h:463
ValueContainer< Hertz > HertzContainer
A container containing 64 bit Hertz values.
Definition ValueContainers.h:427
ValueContainer< Kilogram > KilogramContainer
A container containing 64 bit Kilogram values.
Definition ValueContainers.h:436
ValueContainer< Watt > WattContainer
A container containing 64 bit Watt values.
Definition ValueContainers.h:475
ValueContainer< Radian > RadianContainer
A container containing 64 bit Radian values.
Definition ValueContainers.h:454
ValueContainer< Steradian > SteradianContainer
A container containing 64 bit Steradian values.
Definition ValueContainers.h:469
ValueContainer< Pascal > PascalContainer
A container containing 64 bit Pascal values.
Definition ValueContainers.h:451
ValueContainer< Volt > VoltContainer
A container containing 64 bit Volt values.
Definition ValueContainers.h:472
ValueContainer< Ampere > AmpereContainer
A container containing 64 bit Ampere values.
Definition ValueContainers.h:421
DOTS_CPP_API const std::string ToUtf8(const std::wstring &wstr)
Convert a std::wstring to UTF8-encoded std::string.
Base class for all Containers.
Definition ContainerBase.h:44
bool m_bIsChanged
The variable containing the change flag.
Definition ContainerBase.h:127
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
constexpr ValueContainer()
Default constructor.
Definition ValueContainers.h:70
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:90
T GetVal() const
Get the value of the container.
Definition ValueContainers.h:87
T ContainedType
Definition ValueContainers.h:63
friend class Safir::Dob::Typesystem::Internal::BlobOperations
Definition ValueContainers.h:116
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:100
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:93
Container for strings (std::wstring).
Definition ValueContainers.h:127
void SetVal(const std::wstring &value)
Set the value of the container.
Definition ValueContainers.h:145
void SetNull() override
Set the container to null.
Definition ValueContainers.h:158
const std::wstring & GetVal() const
Get the value of the container.
Definition ValueContainers.h:153
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:166
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:155
const std::string & Utf8String() const
Convert the string to a UTF8 encoded std::string.
Definition ValueContainers.h:225
friend class Safir::Dob::Typesystem::Internal::BlobOperations
Definition ValueContainers.h:241
Int32 Utf8StringLength() const
Calculate the length needed for this string in UTF8 encoding.
Definition ValueContainers.h:196
StringContainer()
Default constructor.
Definition ValueContainers.h:136
std::wstring ContainedType
Definition ValueContainers.h:129
Container for Binary.
Definition ValueContainers.h:256
BinaryContainer()
Default constructor.
Definition ValueContainers.h:264
void Copy(const ContainerBase &that) override
Virtual assignment.
Definition ValueContainers.h:295
bool IsNull() const override
Is the container set to null?
Definition ValueContainers.h:285
void SetVal(const Binary &value)
Set the value of the container.
Definition ValueContainers.h:281
const Binary & GetVal() const
Get the value of the container.
Definition ValueContainers.h:272
friend class Safir::Dob::Typesystem::Internal::BlobOperations
Definition ValueContainers.h:308
Binary ContainedType
Definition ValueContainers.h:258
void SetNull() override
Set the container to null.
Definition ValueContainers.h:288