8#ifndef CORE_PROTOCOL_OPEN62541_VARIANT_CONVERTER_H_
9#define CORE_PROTOCOL_OPEN62541_VARIANT_CONVERTER_H_
17#include <boost/variant.hpp>
19#ifdef UA_ENABLE_AMALGAMATION
20# include <open62541.h>
22# include <open62541/types.h>
39template<
typename CType,
typename UaType, const
int TypeIndex>
43 UaType value = boost::get<CType>(src);
44 UA_Variant_setScalarCopy(&dst, &value,
45 &UA_TYPES[TypeIndex]);
49 if (src.type == &UA_TYPES[TypeIndex]) {
51 value = *(UaType*)(src.data);
52 dst = boost::get<CType>(value);
63 UA_STRING_ALLOC(boost::get<std::string>(src).c_str());
64 UA_Variant_setScalarCopy(&dst, &value,
65 &UA_TYPES[UA_TYPES_STRING]);
69 if (src.type == &UA_TYPES[UA_TYPES_STRING]) {
71 value = *(UA_String*)(src.data);
72 dst = boost::get<std::string>(
73 std::string((
const char*)value.data, value.length));
static void FromUaVariant(const UA_Variant src, protocol::base::Variant &dst)
Definition variantConverter.hpp:68
static void ToUaVariant(const protocol::base::Variant src, UA_Variant &dst)
Definition variantConverter.hpp:61
Converts a variant holding a scalar value.
Definition variantConverter.hpp:40
static void ToUaVariant(const protocol::base::Variant src, UA_Variant &dst)
Definition variantConverter.hpp:42
static void FromUaVariant(const UA_Variant src, protocol::base::Variant &dst)
Definition variantConverter.hpp:48
boost::variant< bool, int, unsigned int, short, double, std::string, unsigned short, float, int8_t, uint8_t > Variant
Definition iComm.hpp:24
taskPoll class header file.
Definition iDataChangeHandler.hpp:28