summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJannis Voelker <jannis.voelker@basyskom.com>2024-01-10 14:01:10 +0100
committerJannis Voelker <jannis.voelker@basyskom.com>2024-01-26 13:50:24 +0100
commit497d58cb0589124160a1167764138eeee9edcbb4 (patch)
treedd572c05934da06203712d9f0bf27977c5ca78d8
parentabbd8b9e0d0dec8bcfe020f31f54e41544e8d1b4 (diff)
Apply changes from the API review 6.6 => 6.7
- Always use QExplicitlySharedDataPointer - Q_DECLARE_METATYPE is no longer required - Apply Q_DECLARE_SHARED Change-Id: Id30e0b20cab5ce1edc9818587cc65e5031326a9a Pick-to: 6.7 Reviewed-by: Marc Mutz <marc.mutz@qt.io> Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
-rw-r--r--src/opcua/client/qopcuadiagnosticinfo.cpp76
-rw-r--r--src/opcua/client/qopcuadiagnosticinfo.h8
-rw-r--r--src/opcua/client/qopcuaenumdefinition.cpp7
-rw-r--r--src/opcua/client/qopcuaenumdefinition.h8
-rw-r--r--src/opcua/client/qopcuaenumfield.cpp22
-rw-r--r--src/opcua/client/qopcuaenumfield.h8
-rw-r--r--src/opcua/client/qopcuagenericstructvalue.cpp22
-rw-r--r--src/opcua/client/qopcuagenericstructvalue.h8
-rw-r--r--src/opcua/client/qopcuahistoryevent.cpp14
-rw-r--r--src/opcua/client/qopcuahistoryevent.h4
-rw-r--r--src/opcua/client/qopcuastructuredefinition.cpp22
-rw-r--r--src/opcua/client/qopcuastructuredefinition.h8
-rw-r--r--src/opcua/client/qopcuavariant.cpp20
-rw-r--r--src/opcua/client/qopcuavariant.h6
14 files changed, 159 insertions, 74 deletions
diff --git a/src/opcua/client/qopcuadiagnosticinfo.cpp b/src/opcua/client/qopcuadiagnosticinfo.cpp
index 08e0f8e..4d84894 100644
--- a/src/opcua/client/qopcuadiagnosticinfo.cpp
+++ b/src/opcua/client/qopcuadiagnosticinfo.cpp
@@ -37,7 +37,7 @@ public:
bool hasInnerDiagnosticInfo = false;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaDiagnosticInfoData)
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaDiagnosticInfoData)
/*!
Constructs a diagnostic info.
@@ -166,7 +166,10 @@ qint32 QOpcUaDiagnosticInfo::symbolicId() const
*/
void QOpcUaDiagnosticInfo::setSymbolicId(qint32 newSymbolicId)
{
- data->symbolicId = newSymbolicId;
+ if (newSymbolicId != data->symbolicId) {
+ data.detach();
+ data->symbolicId = newSymbolicId;
+ }
}
/*!
@@ -182,7 +185,10 @@ bool QOpcUaDiagnosticInfo::hasSymbolicId() const
*/
void QOpcUaDiagnosticInfo::setHasSymbolicId(bool newHasSymbolicId)
{
- data->hasSymbolicId = newHasSymbolicId;
+ if (newHasSymbolicId != data->hasSymbolicId) {
+ data.detach();
+ data->hasSymbolicId = newHasSymbolicId;
+ }
}
/*!
@@ -198,7 +204,10 @@ qint32 QOpcUaDiagnosticInfo::namespaceUri() const
*/
void QOpcUaDiagnosticInfo::setNamespaceUri(qint32 newNamespaceUri)
{
- data->namespaceUri = newNamespaceUri;
+ if (newNamespaceUri != data->namespaceUri) {
+ data.detach();
+ data->namespaceUri = newNamespaceUri;
+ }
}
/*!
@@ -214,7 +223,10 @@ bool QOpcUaDiagnosticInfo::hasNamespaceUri() const
*/
void QOpcUaDiagnosticInfo::setHasNamespaceUri(bool newHasNamespaceUri)
{
- data->hasNamespaceUri = newHasNamespaceUri;
+ if (newHasNamespaceUri != data->hasNamespaceUri) {
+ data.detach();
+ data->hasNamespaceUri = newHasNamespaceUri;
+ }
}
/*!
@@ -230,7 +242,10 @@ qint32 QOpcUaDiagnosticInfo::locale() const
*/
void QOpcUaDiagnosticInfo::setLocale(qint32 newLocale)
{
- data->locale = newLocale;
+ if (newLocale != data->locale) {
+ data.detach();
+ data->locale = newLocale;
+ }
}
/*!
@@ -246,7 +261,10 @@ bool QOpcUaDiagnosticInfo::hasLocale() const
*/
void QOpcUaDiagnosticInfo::setHasLocale(bool newHasLocale)
{
- data->hasLocale = newHasLocale;
+ if (newHasLocale != data->hasLocale) {
+ data.detach();
+ data->hasLocale = newHasLocale;
+ }
}
/*!
@@ -262,7 +280,10 @@ qint32 QOpcUaDiagnosticInfo::localizedText() const
*/
void QOpcUaDiagnosticInfo::setLocalizedText(qint32 newLocalizedText)
{
- data->localizedText = newLocalizedText;
+ if (newLocalizedText != data->localizedText) {
+ data.detach();
+ data->localizedText = newLocalizedText;
+ }
}
/*!
@@ -278,7 +299,10 @@ bool QOpcUaDiagnosticInfo::hasLocalizedText() const
*/
void QOpcUaDiagnosticInfo::setHasLocalizedText(bool newHasLocalizedText)
{
- data->hasLocalizedText = newHasLocalizedText;
+ if (newHasLocalizedText != data->hasLocalizedText) {
+ data.detach();
+ data->hasLocalizedText = newHasLocalizedText;
+ }
}
/*!
@@ -294,7 +318,10 @@ QString QOpcUaDiagnosticInfo::additionalInfo() const
*/
void QOpcUaDiagnosticInfo::setAdditionalInfo(const QString &newAdditionalInfo)
{
- data->additionalInfo = newAdditionalInfo;
+ if (newAdditionalInfo != data->additionalInfo) {
+ data.detach();
+ data->additionalInfo = newAdditionalInfo;
+ }
}
/*!
@@ -310,7 +337,10 @@ bool QOpcUaDiagnosticInfo::hasAdditionalInfo() const
*/
void QOpcUaDiagnosticInfo::setHasAdditionalInfo(bool newHasAdditionalInfo)
{
- data->hasAdditionalInfo = newHasAdditionalInfo;
+ if (newHasAdditionalInfo != data->hasAdditionalInfo) {
+ data.detach();
+ data->hasAdditionalInfo = newHasAdditionalInfo;
+ }
}
/*!
@@ -326,7 +356,10 @@ QOpcUa::UaStatusCode QOpcUaDiagnosticInfo::innerStatusCode() const
*/
void QOpcUaDiagnosticInfo::setInnerStatusCode(QOpcUa::UaStatusCode newInnerStatusCode)
{
- data->innerStatusCode = newInnerStatusCode;
+ if (newInnerStatusCode != data->innerStatusCode) {
+ data.detach();
+ data->innerStatusCode = newInnerStatusCode;
+ }
}
/*!
@@ -342,7 +375,10 @@ bool QOpcUaDiagnosticInfo::hasInnerStatusCode() const
*/
void QOpcUaDiagnosticInfo::setHasInnerStatusCode(bool newHasInnerStatusCode)
{
- data->hasInnerStatusCode = newHasInnerStatusCode;
+ if (newHasInnerStatusCode != data->hasInnerStatusCode) {
+ data.detach();
+ data->hasInnerStatusCode = newHasInnerStatusCode;
+ }
}
/*!
@@ -358,8 +394,10 @@ QOpcUaDiagnosticInfo QOpcUaDiagnosticInfo::innerDiagnosticInfo() const
*/
QOpcUaDiagnosticInfo &QOpcUaDiagnosticInfo::innerDiagnosticInfoRef()
{
- if (!data->innerDiagnosticInfo.has_value())
+ if (!data->innerDiagnosticInfo.has_value()) {
+ data.detach();
data->innerDiagnosticInfo = QOpcUaDiagnosticInfo();
+ }
return data->innerDiagnosticInfo.value();
}
@@ -369,7 +407,10 @@ QOpcUaDiagnosticInfo &QOpcUaDiagnosticInfo::innerDiagnosticInfoRef()
*/
void QOpcUaDiagnosticInfo::setInnerDiagnosticInfo(const QOpcUaDiagnosticInfo &newInnerDiagnosticInfo)
{
- data->innerDiagnosticInfo = newInnerDiagnosticInfo;
+ if (newInnerDiagnosticInfo != data->innerDiagnosticInfo) {
+ data.detach();
+ data->innerDiagnosticInfo = newInnerDiagnosticInfo;
+ }
}
/*!
@@ -385,7 +426,10 @@ bool QOpcUaDiagnosticInfo::hasInnerDiagnosticInfo() const
*/
void QOpcUaDiagnosticInfo::setHasInnerDiagnosticInfo(bool newHasInnerDiagnosticInfo)
{
- data->hasInnerDiagnosticInfo = newHasInnerDiagnosticInfo;
+ if (newHasInnerDiagnosticInfo != data->hasInnerDiagnosticInfo) {
+ data.detach();
+ data->hasInnerDiagnosticInfo = newHasInnerDiagnosticInfo;
+ }
}
QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuadiagnosticinfo.h b/src/opcua/client/qopcuadiagnosticinfo.h
index 4cc53b7..11e0e7f 100644
--- a/src/opcua/client/qopcuadiagnosticinfo.h
+++ b/src/opcua/client/qopcuadiagnosticinfo.h
@@ -11,7 +11,7 @@
QT_BEGIN_NAMESPACE
class QOpcUaDiagnosticInfoData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaDiagnosticInfoData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaDiagnosticInfoData, Q_OPCUA_EXPORT)
class QOpcUaDiagnosticInfo {
public:
Q_OPCUA_EXPORT QOpcUaDiagnosticInfo();
@@ -74,11 +74,11 @@ public:
Q_OPCUA_EXPORT void setHasInnerDiagnosticInfo(bool newHasInnerDiagnosticInfo);
private:
- QSharedDataPointer<QOpcUaDiagnosticInfoData> data;
+ QExplicitlySharedDataPointer<QOpcUaDiagnosticInfoData> data;
};
-QT_END_NAMESPACE
+Q_DECLARE_SHARED(QOpcUaDiagnosticInfo)
-Q_DECLARE_METATYPE(QOpcUaDiagnosticInfo)
+QT_END_NAMESPACE
#endif // QOPCUADIAGNOSTICINFO_H
diff --git a/src/opcua/client/qopcuaenumdefinition.cpp b/src/opcua/client/qopcuaenumdefinition.cpp
index e6fae1b..0679744 100644
--- a/src/opcua/client/qopcuaenumdefinition.cpp
+++ b/src/opcua/client/qopcuaenumdefinition.cpp
@@ -21,7 +21,7 @@ public:
QList<QOpcUaEnumField> fields;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaEnumDefinitionData);
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaEnumDefinitionData);
/*!
Default constructs an enum definition with no parameters set.
@@ -120,7 +120,10 @@ QList<QOpcUaEnumField> QOpcUaEnumDefinition::fields() const
*/
void QOpcUaEnumDefinition::setFields(const QList<QOpcUaEnumField> &fields)
{
- data->fields = fields;
+ if (fields != data->fields) {
+ data.detach();
+ data->fields = fields;
+ }
}
QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuaenumdefinition.h b/src/opcua/client/qopcuaenumdefinition.h
index 0e27cab..cf9bb57 100644
--- a/src/opcua/client/qopcuaenumdefinition.h
+++ b/src/opcua/client/qopcuaenumdefinition.h
@@ -14,7 +14,7 @@ QT_BEGIN_NAMESPACE
class QOpcUaEnumDefinitionData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaEnumDefinitionData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaEnumDefinitionData, Q_OPCUA_EXPORT)
class QOpcUaEnumDefinition
{
@@ -38,11 +38,11 @@ public:
Q_OPCUA_EXPORT void setFields(const QList<QOpcUaEnumField> &fields);
private:
- QSharedDataPointer<QOpcUaEnumDefinitionData> data;
+ QExplicitlySharedDataPointer<QOpcUaEnumDefinitionData> data;
};
-QT_END_NAMESPACE
+Q_DECLARE_SHARED(QOpcUaEnumDefinition)
-Q_DECLARE_METATYPE(QOpcUaEnumDefinition)
+QT_END_NAMESPACE
#endif // QOPCUAENUMDEFINITION_H
diff --git a/src/opcua/client/qopcuaenumfield.cpp b/src/opcua/client/qopcuaenumfield.cpp
index a1db84a..e8dc290 100644
--- a/src/opcua/client/qopcuaenumfield.cpp
+++ b/src/opcua/client/qopcuaenumfield.cpp
@@ -24,7 +24,7 @@ public:
QString name;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaEnumFieldData);
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaEnumFieldData);
/*!
Default constructs an enum field with no parameters set.
@@ -123,7 +123,10 @@ qint64 QOpcUaEnumField::value() const
*/
void QOpcUaEnumField::setValue(qint64 value)
{
- data->value = value;
+ if (value != data->value) {
+ data.detach();
+ data->value = value;
+ }
}
/*!
@@ -139,7 +142,10 @@ QOpcUaLocalizedText QOpcUaEnumField::displayName() const
*/
void QOpcUaEnumField::setDisplayName(const QOpcUaLocalizedText &displayName)
{
- data->displayName = displayName;
+ if (!(displayName == data->displayName)) {
+ data.detach();
+ data->displayName = displayName;
+ }
}
/*!
@@ -155,7 +161,10 @@ QOpcUaLocalizedText QOpcUaEnumField::description() const
*/
void QOpcUaEnumField::setDescription(const QOpcUaLocalizedText &description)
{
- data->description = description;
+ if (!(description == data->description)) {
+ data.detach();
+ data->description = description;
+ }
}
/*!
@@ -171,7 +180,10 @@ QString QOpcUaEnumField::name() const
*/
void QOpcUaEnumField::setName(const QString &name)
{
- data->name = name;
+ if (name != data->name) {
+ data.detach();
+ data->name = name;
+ }
}
QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuaenumfield.h b/src/opcua/client/qopcuaenumfield.h
index 3b1ad29..fb7cb4d 100644
--- a/src/opcua/client/qopcuaenumfield.h
+++ b/src/opcua/client/qopcuaenumfield.h
@@ -14,7 +14,7 @@ QT_BEGIN_NAMESPACE
class QOpcUaEnumFieldData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaEnumFieldData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaEnumFieldData, Q_OPCUA_EXPORT)
class QOpcUaEnumField
{
@@ -48,11 +48,11 @@ public:
Q_OPCUA_EXPORT void setName(const QString &name);
private:
- QSharedDataPointer<QOpcUaEnumFieldData> data;
+ QExplicitlySharedDataPointer<QOpcUaEnumFieldData> data;
};
-QT_END_NAMESPACE
+Q_DECLARE_SHARED(QOpcUaEnumField)
-Q_DECLARE_METATYPE(QOpcUaEnumField)
+QT_END_NAMESPACE
#endif // QOPCUAENUMFIELD_H
diff --git a/src/opcua/client/qopcuagenericstructvalue.cpp b/src/opcua/client/qopcuagenericstructvalue.cpp
index 3062d0c..9033dc5 100644
--- a/src/opcua/client/qopcuagenericstructvalue.cpp
+++ b/src/opcua/client/qopcuagenericstructvalue.cpp
@@ -69,7 +69,7 @@ public:
QHash<QString, QVariant> fields;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaGenericStructValueData)
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaGenericStructValueData)
/*!
Constructs a generic struct value.
@@ -179,7 +179,10 @@ QString QOpcUaGenericStructValue::typeName() const
*/
void QOpcUaGenericStructValue::setTypeName(const QString &typeName)
{
- data->typeName = typeName;
+ if (typeName != data->typeName) {
+ data.detach();
+ data->typeName = typeName;
+ }
}
/*!
@@ -195,7 +198,10 @@ QString QOpcUaGenericStructValue::typeId() const
*/
void QOpcUaGenericStructValue::setTypeId(const QString &typeId)
{
- data->typeId = typeId;
+ if (typeId != data->typeId) {
+ data.detach();
+ data->typeId = typeId;
+ }
}
/*!
@@ -211,7 +217,10 @@ QOpcUaStructureDefinition QOpcUaGenericStructValue::structureDefinition() const
*/
void QOpcUaGenericStructValue::setStructureDefinition(const QOpcUaStructureDefinition &structureDefinition)
{
- data->structureDefinition = structureDefinition;
+ if (structureDefinition != data->structureDefinition) {
+ data.detach();
+ data->structureDefinition = structureDefinition;
+ }
}
/*!
@@ -235,7 +244,10 @@ QHash<QString, QVariant> &QOpcUaGenericStructValue::fieldsRef()
*/
void QOpcUaGenericStructValue::setFields(const QHash<QString, QVariant> &fields)
{
- data->fields = fields;
+ if (fields != data->fields) {
+ data.detach();
+ data->fields = fields;
+ }
}
/*!
diff --git a/src/opcua/client/qopcuagenericstructvalue.h b/src/opcua/client/qopcuagenericstructvalue.h
index cf0a11c..24a0f64 100644
--- a/src/opcua/client/qopcuagenericstructvalue.h
+++ b/src/opcua/client/qopcuagenericstructvalue.h
@@ -12,7 +12,7 @@
QT_BEGIN_NAMESPACE
class QOpcUaGenericStructValueData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaGenericStructValueData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaGenericStructValueData, Q_OPCUA_EXPORT)
class QOpcUaGenericStructValue {
public:
Q_OPCUA_EXPORT QOpcUaGenericStructValue();
@@ -51,11 +51,11 @@ public:
friend QDebug Q_OPCUA_EXPORT operator<<(QDebug debug, const QOpcUaGenericStructValue &s);
private:
- QSharedDataPointer<QOpcUaGenericStructValueData> data;
+ QExplicitlySharedDataPointer<QOpcUaGenericStructValueData> data;
};
-QT_END_NAMESPACE
+Q_DECLARE_SHARED(QOpcUaGenericStructValue)
-Q_DECLARE_METATYPE(QOpcUaGenericStructValue)
+QT_END_NAMESPACE
#endif // QOPCUAGENERICSTRUCTVALUE_H
diff --git a/src/opcua/client/qopcuahistoryevent.cpp b/src/opcua/client/qopcuahistoryevent.cpp
index da58994..9ed7496 100644
--- a/src/opcua/client/qopcuahistoryevent.cpp
+++ b/src/opcua/client/qopcuahistoryevent.cpp
@@ -26,7 +26,7 @@ public:
QString nodeId;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaHistoryEventData)
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaHistoryEventData)
/*!
Constructs an invalid history event item.
@@ -102,8 +102,10 @@ QOpcUa::UaStatusCode QOpcUaHistoryEvent::statusCode() const
*/
void QOpcUaHistoryEvent::setStatusCode(QOpcUa::UaStatusCode statusCode)
{
- data.detach();
- data->statusCode = statusCode;
+ if (statusCode != data->statusCode) {
+ data.detach();
+ data->statusCode = statusCode;
+ }
}
/*!
@@ -144,8 +146,10 @@ QString QOpcUaHistoryEvent::nodeId() const
*/
void QOpcUaHistoryEvent::setNodeId(const QString &nodeId)
{
- data.detach();
- data->nodeId = nodeId;
+ if (nodeId != data->nodeId) {
+ data.detach();
+ data->nodeId = nodeId;
+ }
}
/*!
diff --git a/src/opcua/client/qopcuahistoryevent.h b/src/opcua/client/qopcuahistoryevent.h
index 087c7c7..26f3bee 100644
--- a/src/opcua/client/qopcuahistoryevent.h
+++ b/src/opcua/client/qopcuahistoryevent.h
@@ -13,7 +13,7 @@
QT_BEGIN_NAMESPACE
class QOpcUaHistoryEventData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaHistoryEventData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaHistoryEventData, Q_OPCUA_EXPORT)
class QOpcUaHistoryEvent
{
public:
@@ -43,7 +43,7 @@ public:
return !(lhs == rhs);
}
private:
- QSharedDataPointer<QOpcUaHistoryEventData> data;
+ QExplicitlySharedDataPointer<QOpcUaHistoryEventData> data;
};
Q_DECLARE_SHARED(QOpcUaHistoryEvent)
diff --git a/src/opcua/client/qopcuastructuredefinition.cpp b/src/opcua/client/qopcuastructuredefinition.cpp
index 71e46b0..c81dce9 100644
--- a/src/opcua/client/qopcuastructuredefinition.cpp
+++ b/src/opcua/client/qopcuastructuredefinition.cpp
@@ -24,7 +24,7 @@ public:
QList<QOpcUaStructureField> fields;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaStructureDefinitionData);
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaStructureDefinitionData);
/*!
Default constructs a structure definition with no parameters set.
@@ -126,7 +126,10 @@ QString QOpcUaStructureDefinition::defaultEncodingId() const
*/
void QOpcUaStructureDefinition::setDefaultEncodingId(const QString &defaultEncodingId)
{
- data->defaultEncodingId = defaultEncodingId;
+ if (defaultEncodingId != data->defaultEncodingId) {
+ data.detach();
+ data->defaultEncodingId = defaultEncodingId;
+ }
}
/*!
@@ -142,7 +145,10 @@ QString QOpcUaStructureDefinition::baseDataType() const
*/
void QOpcUaStructureDefinition::setBaseDataType(const QString &baseDataType)
{
- data->baseDataType = baseDataType;
+ if (baseDataType != data->baseDataType) {
+ data.detach();
+ data->baseDataType = baseDataType;
+ }
}
/*!
@@ -158,7 +164,10 @@ QOpcUaStructureDefinition::StructureType QOpcUaStructureDefinition::structureTyp
*/
void QOpcUaStructureDefinition::setStructureType(const QOpcUaStructureDefinition::StructureType &structureType)
{
- data->structureType = structureType;
+ if (structureType != data->structureType) {
+ data.detach();
+ data->structureType = structureType;
+ }
}
/*!
@@ -174,7 +183,10 @@ QList<QOpcUaStructureField> QOpcUaStructureDefinition::fields() const
*/
void QOpcUaStructureDefinition::setFields(const QList<QOpcUaStructureField> &fields)
{
- data->fields = fields;
+ if (fields != data->fields) {
+ data.detach();
+ data->fields = fields;
+ }
}
QT_END_NAMESPACE
diff --git a/src/opcua/client/qopcuastructuredefinition.h b/src/opcua/client/qopcuastructuredefinition.h
index 86ff29f..f64143c 100644
--- a/src/opcua/client/qopcuastructuredefinition.h
+++ b/src/opcua/client/qopcuastructuredefinition.h
@@ -14,7 +14,7 @@ QT_BEGIN_NAMESPACE
class QOpcUaStructureDefinitionData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaStructureDefinitionData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaStructureDefinitionData, Q_OPCUA_EXPORT)
class QOpcUaStructureDefinition
{
@@ -53,11 +53,11 @@ public:
Q_OPCUA_EXPORT void setFields(const QList<QOpcUaStructureField> &fields);
private:
- QSharedDataPointer<QOpcUaStructureDefinitionData> data;
+ QExplicitlySharedDataPointer<QOpcUaStructureDefinitionData> data;
};
-QT_END_NAMESPACE
+Q_DECLARE_SHARED(QOpcUaStructureDefinition)
-Q_DECLARE_METATYPE(QOpcUaStructureDefinition)
+QT_END_NAMESPACE
#endif // QOPCUASTRUCTUREDEFINITION_H
diff --git a/src/opcua/client/qopcuavariant.cpp b/src/opcua/client/qopcuavariant.cpp
index 5f4c3b7..135cbae 100644
--- a/src/opcua/client/qopcuavariant.cpp
+++ b/src/opcua/client/qopcuavariant.cpp
@@ -16,7 +16,7 @@ public:
bool isArray = false;
};
-QT_DEFINE_QSDP_SPECIALIZATION_DTOR(QOpcUaVariantData)
+QT_DEFINE_QESDP_SPECIALIZATION_DTOR(QOpcUaVariantData)
/*!
\class QOpcUaVariant
@@ -123,12 +123,8 @@ QOpcUaVariant::QOpcUaVariant(const QVariant &value, ValueType type, bool isArray
Constructs a new OPC UA variant from \a other.
*/
QOpcUaVariant::QOpcUaVariant(const QOpcUaVariant &other)
- : data(new QOpcUaVariantData)
+ : data(other.data)
{
- data->value = other.data->value;
- data->valueType = other.data->valueType;
- data->arrayDimensions = other.data->arrayDimensions;
- data->isArray = other.data->isArray;
}
/*!
@@ -173,10 +169,14 @@ QVariant QOpcUaVariant::value() const
*/
void QOpcUaVariant::setValue(const QVariant &value, ValueType type, bool isArray, const QList<qint32> &arrayDimensions)
{
- data->value = value;
- data->valueType = type;
- data->isArray = isArray;
- data->arrayDimensions = arrayDimensions;
+ if (value != data->value || type != data->valueType || isArray != data->isArray ||
+ arrayDimensions != data->arrayDimensions) {
+ data.detach();
+ data->value = value;
+ data->valueType = type;
+ data->isArray = isArray;
+ data->arrayDimensions = arrayDimensions;
+ }
}
/*!
diff --git a/src/opcua/client/qopcuavariant.h b/src/opcua/client/qopcuavariant.h
index 7037c2d..c094134 100644
--- a/src/opcua/client/qopcuavariant.h
+++ b/src/opcua/client/qopcuavariant.h
@@ -14,7 +14,7 @@ QT_BEGIN_NAMESPACE
class QOpcUaVariantData;
-QT_DECLARE_QSDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaVariantData, Q_OPCUA_EXPORT)
+QT_DECLARE_QESDP_SPECIALIZATION_DTOR_WITH_EXPORT(QOpcUaVariantData, Q_OPCUA_EXPORT)
class QOpcUaVariant
{
@@ -75,13 +75,11 @@ public:
Q_OPCUA_EXPORT operator QVariant() const;
private:
- QSharedDataPointer<QOpcUaVariantData> data;
+ QExplicitlySharedDataPointer<QOpcUaVariantData> data;
};
Q_DECLARE_SHARED(QOpcUaVariant)
QT_END_NAMESPACE
-Q_DECLARE_METATYPE(QOpcUaVariant)
-
#endif // QOPCUAVARIANT_H