summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/opcua/client/qopcuabinarydataencoding.cpp22
-rw-r--r--src/opcua/client/qopcuabinarydataencoding_p.h4
2 files changed, 26 insertions, 0 deletions
diff --git a/src/opcua/client/qopcuabinarydataencoding.cpp b/src/opcua/client/qopcuabinarydataencoding.cpp
index 5b3aa1b..e03fc37 100644
--- a/src/opcua/client/qopcuabinarydataencoding.cpp
+++ b/src/opcua/client/qopcuabinarydataencoding.cpp
@@ -54,6 +54,21 @@ T QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &s
}
template<>
+bool QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success)
+{
+ if (bufferSize) {
+ quint8 temp = *reinterpret_cast<const quint8*>(ptr);
+ ptr += 1;
+ bufferSize -= 1;
+ success = true;
+ return temp == 0 ? false : true;
+ } else {
+ success = false;
+ return false;
+ }
+}
+
+template<>
QString QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success)
{
if (bufferSize < sizeof(qint32)) {
@@ -204,6 +219,13 @@ void QOpcUaBinaryDataEncoding::encode(const T &src, QByteArray &dst)
}
template<>
+void QOpcUaBinaryDataEncoding::encode<bool>(const bool &src, QByteArray &dst)
+{
+ const quint8 value = src ? 1 : 0;
+ dst.append(reinterpret_cast<const char *>(&value), 1);
+}
+
+template<>
void QOpcUaBinaryDataEncoding::encode<QString>(const QString &src, QByteArray &dst)
{
QByteArray arr = src.toUtf8();
diff --git a/src/opcua/client/qopcuabinarydataencoding_p.h b/src/opcua/client/qopcuabinarydataencoding_p.h
index 655150f..883eb10 100644
--- a/src/opcua/client/qopcuabinarydataencoding_p.h
+++ b/src/opcua/client/qopcuabinarydataencoding_p.h
@@ -84,6 +84,8 @@ public:
};
template <>
+Q_OPCUA_EXPORT bool QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success);
+template <>
Q_OPCUA_EXPORT QOpcUa::QEUInformation QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success);
template <>
Q_OPCUA_EXPORT QOpcUa::QRange QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success);
@@ -96,6 +98,8 @@ Q_OPCUA_EXPORT QOpcUa::QAxisInformation QOpcUaBinaryDataEncoding::decode(const c
template <>
Q_OPCUA_EXPORT QOpcUa::QXValue QOpcUaBinaryDataEncoding::decode(const char *&ptr, size_t &bufferSize, bool &success);
template <>
+Q_OPCUA_EXPORT void QOpcUaBinaryDataEncoding::encode(const bool &src, QByteArray &dst);
+template <>
Q_OPCUA_EXPORT void QOpcUaBinaryDataEncoding::encode(const QOpcUa::QEUInformation &src, QByteArray &dst);
template <>
Q_OPCUA_EXPORT void QOpcUaBinaryDataEncoding::encode(const QOpcUa::QRange &src, QByteArray &dst);