summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorJannis Voelker <jannis.voelker@basyskom.com>2021-10-04 10:18:31 +0200
committerJannis Voelker <jannis.voelker@basyskom.com>2023-09-13 16:26:06 +0200
commit4992ea8df08b045607e7d502cbcaeee2eb454280 (patch)
tree0fb9d2f653c832e9f925f10b9b9058e46be8cb94 /tests
parent6907f872c92506b0dee790da825d1803c2e9f651 (diff)
Add generic struct handler
This change adds a class which traverses the data type hierarchy of an OPC UA server and provides a method to decode and encode generic structured types from/to extension objects. The server must expose the structure definition in the DataTypeDefinition attribute of the DataType node. [ChangeLog][Qt OPC UA] Qt OPC UA has been extended with a generic struct handler which enables the user to automatically decode structured types having the DataTypeDefintion attribute set. Change-Id: Ia1125f68d7da3c2687e8900bbc66d3312e10b837 Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/qopcuaclient/tst_client.cpp454
-rw-r--r--tests/open62541-testserver/CMakeLists.txt21
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd40
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.csv44
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro25
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.uabin0 -> 20262 bytes
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.xml655
-rw-r--r--tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd113
-rw-r--r--tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c1370
-rw-r--r--tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.h23
-rw-r--r--tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h58
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c196
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h119
-rw-r--r--tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h211
-rw-r--r--tests/open62541-testserver/main.cpp9
-rw-r--r--tests/open62541-testserver/testserver.cpp204
-rw-r--r--tests/open62541-testserver/testserver.h2
17 files changed, 3538 insertions, 6 deletions
diff --git a/tests/auto/qopcuaclient/tst_client.cpp b/tests/auto/qopcuaclient/tst_client.cpp
index 4344630..0062828 100644
--- a/tests/auto/qopcuaclient/tst_client.cpp
+++ b/tests/auto/qopcuaclient/tst_client.cpp
@@ -14,6 +14,7 @@
#include <QtOpcUa/QOpcUaStructureDefinition>
#include <QtOpcUa/QOpcUaEnumDefinition>
#include <QtOpcUa/qopcuadiagnosticinfo.h>
+#include <QtOpcUa/qopcuagenericstructhandler.h>
#include <QtCore/QCoreApplication>
#include <QtCore/QProcess>
@@ -577,6 +578,15 @@ private slots:
defineDataMethod(eventSubscription_data)
void eventSubscription();
+ defineDataMethod(decodeGenericStruct_data)
+ void decodeGenericStruct();
+
+ defineDataMethod(encodeGenericStruct_data)
+ void encodeGenericStruct();
+
+ defineDataMethod(encodeCustomGenericStruct_data)
+ void encodeCustomGenericStruct();
+
// This test case restarts the server. It must be run last to avoid
// destroying state required by other test cases.
defineDataMethod(connectionLost_data)
@@ -3050,14 +3060,14 @@ void Tst_QOpcUaClient::readReencodedExtensionObject()
const auto checkAndDecodeFirstMember = [](const QOpcUaExtensionObject &obj, int index) {
QCOMPARE(obj.encoding(), QOpcUaExtensionObject::Encoding::ByteString);
QCOMPARE(obj.encodingTypeId(), QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::ServerStatusDataType_Encoding_DefaultBinary));
- QCOMPARE(obj.encodedBody().size(), 53);
+ QCOMPARE(obj.encodedBody().size(), 140);
auto data = obj.encodedBody();
auto decoder = QOpcUaBinaryDataEncoding(&data);
bool success = false;
- const auto start = decoder.decode<qint64>(success);
+ const auto start = decoder.decode<QDateTime>(success);
QVERIFY(success);
- QCOMPARE(start, index + 1);
+ QCOMPARE(start, QDateTime::fromMSecsSinceEpoch(1691996809123 + index));
};
// Scalar case
@@ -3667,7 +3677,7 @@ void Tst_QOpcUaClient::namespaceArray()
QCOMPARE(spy.size(), 1);
QStringList namespaces = opcuaClient->namespaceArray();
- QCOMPARE(namespaces.size(), 4);
+ QCOMPARE(namespaces.size(), 5);
int nsIndex = namespaces.indexOf("http://qt-project.org");
QVERIFY(nsIndex > 0);
@@ -4637,6 +4647,442 @@ void Tst_QOpcUaClient::readHistoryDataFromClient()
}
}
+void Tst_QOpcUaClient::decodeGenericStruct()
+{
+ QFETCH(QOpcUaClient *, opcuaClient);
+ OpcuaConnector connector(opcuaClient, m_endpoint);
+
+ QOpcUaGenericStructHandler decoder(opcuaClient);
+
+ QSignalSpy spy(&decoder, &QOpcUaGenericStructHandler::initializeFinished);
+
+ auto success = decoder.initialize();
+ QCOMPARE(success, true);
+
+ spy.wait();
+
+ QCOMPARE(spy.size(), 1);
+ QCOMPARE(spy.at(0).at(0).toBool(), true);
+
+ const auto testEnumerationTypeId = "ns=4;i=3002";
+ const auto testStructTypeId = "ns=4;i=3003";
+ const auto testStructEncodingId = "ns=4;i=5001";
+ const auto abstractBaseStructTypeId = "ns=4;i=3008";
+
+ QCOMPARE(decoder.typeNameForTypeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::StatusCode)), "StatusCode");
+ QCOMPARE(decoder.typeNameForTypeId(testEnumerationTypeId), "QtTestEnumeration");
+ QCOMPARE(decoder.typeNameForTypeId(testStructTypeId), "QtTestStructType");
+ QCOMPARE(decoder.typeNameForTypeId(abstractBaseStructTypeId), "QtAbstractBaseStruct");
+ QCOMPARE(decoder.typeNameForTypeId("ns=10;i=1234"), QString());
+
+ QCOMPARE(decoder.dataTypeKindForTypeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::StatusCode)),
+ QOpcUaGenericStructHandler::DataTypeKind::Other);
+ QCOMPARE(decoder.dataTypeKindForTypeId(testEnumerationTypeId), QOpcUaGenericStructHandler::DataTypeKind::Enum);
+ QCOMPARE(decoder.dataTypeKindForTypeId(testStructTypeId), QOpcUaGenericStructHandler::DataTypeKind::Struct);
+ QCOMPARE(decoder.dataTypeKindForTypeId("ns=10;i=1234"), QOpcUaGenericStructHandler::DataTypeKind::Unknown);
+
+ QCOMPARE(decoder.isAbstractTypeId(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::Number)), true);
+ QCOMPARE(decoder.isAbstractTypeId(testEnumerationTypeId), false);
+ QCOMPARE(decoder.isAbstractTypeId(testStructTypeId), false);
+ QCOMPARE(decoder.isAbstractTypeId(abstractBaseStructTypeId), true);
+
+ QCOMPARE(decoder.structureDefinitionForBinaryEncodingId(testStructEncodingId).structureType(),
+ QOpcUaStructureDefinition::StructureType::Structure);
+
+ QCOMPARE(decoder.typeNameForBinaryEncodingId(decoder.structureDefinitionForBinaryEncodingId(testStructEncodingId).defaultEncodingId()),
+ "QtTestStructType");
+
+ QOpcUaReadItem readNestedStruct(QStringLiteral("ns=4;i=6009"));
+ QOpcUaReadItem readUnion1(QStringLiteral("ns=4;i=6011"));
+ QOpcUaReadItem readUnion2(QStringLiteral("ns=4;i=6003"));
+ QOpcUaReadItem readStructWithOptField(QStringLiteral("ns=4;i=6010"));
+ QOpcUaReadItem readStructWithoutOptField(QStringLiteral("ns=4;i=6002"));
+ QOpcUaReadItem readStructWithDiagnosticInfo(QStringLiteral("ns=4;i=6006"));
+
+ QSignalSpy readSpy(opcuaClient, &QOpcUaClient::readNodeAttributesFinished);
+
+ const auto readDispatch = opcuaClient->readNodeAttributes({readNestedStruct, readUnion1, readUnion2,
+ readStructWithOptField, readStructWithoutOptField,
+ readStructWithDiagnosticInfo});
+ QCOMPARE(readDispatch, true);
+
+ readSpy.wait();
+
+ QCOMPARE(readSpy.size(), 1);
+ QCOMPARE(readSpy.at(0).size(), 2);
+ QCOMPARE(readSpy.at(0).at(1).value<QOpcUa::UaStatusCode>(), QOpcUa::UaStatusCode::Good);
+ auto results = readSpy.at(0).at(0).value<QList<QOpcUaReadResult>>();
+
+ QCOMPARE(results.size(), 6);
+ QCOMPARE(results.at(0).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(1).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(2).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(3).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(4).statusCode(), QOpcUa::UaStatusCode::Good);
+ QCOMPARE(results.at(5).statusCode(), QOpcUa::UaStatusCode::Good);
+
+ bool decodeSuccess = false;
+
+ {
+ auto nestedStructExt = results.at(0).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(nestedStructExt, decodeSuccess);
+ QCOMPARE(decodeSuccess, true);
+ qDebug() << decodedData;
+
+ QCOMPARE(decodedData.typeName(), "QtTestStructType");
+
+ QCOMPARE(decodedData.fields().value("EnumMember").toInt(), 1);
+ QCOMPARE(decodedData.fields().value("Int64ArrayMember").value<QList<qint64>>(),
+ QList<qint64>({std::numeric_limits<qint64>::max(),
+ std::numeric_limits<qint64>::max() - 1,
+ std::numeric_limits<qint64>::min()}));
+
+ QCOMPARE(decodedData.fields().value("LocalizedTextMember").value<QOpcUaLocalizedText>().locale(), "en");
+ QCOMPARE(decodedData.fields().value("LocalizedTextMember").value<QOpcUaLocalizedText>().text(), "TestText");
+
+ QCOMPARE(decodedData.fields().value("QualifiedNameMember").value<QOpcUaQualifiedName>().namespaceIndex(), 1);
+ QCOMPARE(decodedData.fields().value("QualifiedNameMember").value<QOpcUaQualifiedName>().name(), "TestName");
+
+ QCOMPARE(decodedData.fields().value("StringMember").value<QString>(), "TestString");
+
+ auto nestedStructValue = decodedData.fields().value("NestedStructMember").value<QOpcUaGenericStructValue>();
+ QCOMPARE(nestedStructValue.typeName(), "QtInnerTestStructType");
+ QCOMPARE(nestedStructValue.fields().value("DoubleSubtypeMember").toDouble(), 42.0);
+
+ auto nestedStructArrayValue = decodedData.fields().value("NestedStructArrayMember").value<QList<QOpcUaGenericStructValue>>();
+ QCOMPARE(nestedStructArrayValue.size(), 2);
+ QCOMPARE(nestedStructArrayValue.at(0).typeName(), "QtInnerTestStructType");
+ QCOMPARE(nestedStructArrayValue.at(0).fields().value("DoubleSubtypeMember").toDouble(), 23.0);
+ QCOMPARE(nestedStructArrayValue.at(1).typeName(), "QtInnerTestStructType");
+ QCOMPARE(nestedStructArrayValue.at(1).fields().value("DoubleSubtypeMember").toDouble(), 42.0);
+ }
+
+ {
+ auto unionExt = results.at(1).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(unionExt, decodeSuccess);
+ QCOMPARE(decodeSuccess, true);
+ qDebug() << decodedData;
+
+ QCOMPARE(decodedData.typeName(), "QtTestUnionType");
+ QCOMPARE(decodedData.fields().value("Member1"), 42);
+ }
+
+ {
+ auto unionExt = results.at(2).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(unionExt, decodeSuccess);
+ QCOMPARE(decodeSuccess, true);
+ qDebug() << decodedData;
+
+ QCOMPARE(decodedData.typeName(), "QtTestUnionType");
+
+ auto unionFieldValue = decodedData.fields().value("Member2").value<QOpcUaGenericStructValue>();
+ QCOMPARE(unionFieldValue.fields().value("DoubleSubtypeMember").toDouble(), 23.0);
+ }
+
+ // Struct type with optional field with optional field set
+ {
+ auto optionalFieldExt = results.at(3).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(optionalFieldExt, decodeSuccess);
+ QCOMPARE(decodeSuccess, true);
+ qDebug() << decodedData;
+
+ QCOMPARE(decodedData.typeName(), "QtStructWithOptionalFieldType");
+
+ QCOMPARE(decodedData.fields().value("MandatoryMember").toDouble(), 42.0);
+ QCOMPARE(decodedData.fields().value("OptionalMember").toDouble(), 23.0);
+ }
+
+ // Struct type with optional field without optional field set
+ {
+ auto optionalFieldExt = results.at(4).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(optionalFieldExt, decodeSuccess);
+ QCOMPARE(decodeSuccess, true);
+ qDebug() << decodedData;
+
+ QCOMPARE(decodedData.typeName(), "QtStructWithOptionalFieldType");
+
+ QCOMPARE(decodedData.fields().value("MandatoryMember").toDouble(), 42.0);
+ QCOMPARE(decodedData.fields().contains("OptionalMember"), false);
+ }
+
+ {
+ auto diagnosticInfoExt = results.at(5).value().value<QOpcUaExtensionObject>();
+ auto decodedData = decoder.decode(diagnosticInfoExt, decodeSuccess);
+ qDebug() << decodedData;
+ QCOMPARE(decodedData.fields().contains("DiagnosticInfoMember"), true);
+ QCOMPARE(decodedData.fields().value("DiagnosticInfoMember").value<QOpcUaDiagnosticInfo>(), testDiagnosticInfos.at(0));
+ QCOMPARE(decodedData.fields().contains("DiagnosticInfoArrayMember"), true);
+ QCOMPARE(decodedData.fields().value("DiagnosticInfoArrayMember").value<QList<QOpcUaDiagnosticInfo>>(), testDiagnosticInfos);
+ QCOMPARE(decodeSuccess, true);
+ }
+}
+
+void Tst_QOpcUaClient::encodeGenericStruct()
+{
+ QFETCH(QOpcUaClient *, opcuaClient);
+ OpcuaConnector connector(opcuaClient, m_endpoint);
+
+ QOpcUaGenericStructHandler handler(opcuaClient);
+
+ QSignalSpy spy(&handler, &QOpcUaGenericStructHandler::initializeFinished);
+
+ auto success = handler.initialize();
+ QCOMPARE(success, true);
+
+ spy.wait();
+
+ QCOMPARE(spy.size(), 1);
+ QCOMPARE(spy.at(0).at(0).toBool(), true);
+
+ {
+ auto value = handler.createGenericStructValueForTypeId("ns=4;i=3003");
+ value.fieldsRef()["StringMember"] = QStringLiteral("StringMember");
+ value.fieldsRef()["LocalizedTextMember"] = QOpcUaLocalizedText("en", "Localized text");
+ value.fieldsRef()["QualifiedNameMember"] = QOpcUaQualifiedName(1, "Qualified name");
+ value.fieldsRef()["Int64ArrayMember"] = QVariant::fromValue(QList<qint64>({1, 2, 3, 4}));
+ value.fieldsRef()["EnumMember"] = 42;
+
+ auto innerValue = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue.fieldsRef()["DoubleSubtypeMember"] = 42.0;
+
+ value.fieldsRef()["NestedStructMember"] = innerValue;
+
+ auto innerValue1 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue1.fieldsRef()["DoubleSubtypeMember"] = 23.0;
+
+ auto innerValue2 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue2.fieldsRef()["DoubleSubtypeMember"] = 42.0;
+
+ value.fieldsRef()["NestedStructArrayMember"] =
+ QVariant::fromValue(QList<QOpcUaGenericStructValue>({innerValue1, innerValue2}));
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QCOMPARE(success, true);
+
+ const auto decoded = handler.decode(ext, success);
+
+ QCOMPARE(decoded.fields().value("StringMember"), "StringMember");
+ QCOMPARE(decoded.fields().value("LocalizedTextMember"), QOpcUaLocalizedText("en", "Localized text"));
+ QCOMPARE(decoded.fields().value("QualifiedNameMember"), QOpcUaQualifiedName(1, "Qualified name"));
+ QCOMPARE(decoded.fields().value("Int64ArrayMember"), QVariant::fromValue(QList<qint64>({1, 2, 3, 4})));
+ QCOMPARE(decoded.fields().value("EnumMember"), 42);
+
+ const auto innerDecoded = decoded.fields().value("NestedStructMember").value<QOpcUaGenericStructValue>();
+ QCOMPARE(innerDecoded.fields().value("DoubleSubtypeMember"), 42.0);
+
+ auto nestedStructArrayValue = decoded.fields().value("NestedStructArrayMember").value<QList<QOpcUaGenericStructValue>>();
+ QCOMPARE(nestedStructArrayValue.size(), 2);
+ QCOMPARE(nestedStructArrayValue.at(0).typeName(), "QtInnerTestStructType");
+ QCOMPARE(nestedStructArrayValue.at(0).fields().value("DoubleSubtypeMember").toDouble(), 23.0);
+ QCOMPARE(nestedStructArrayValue.at(1).typeName(), "QtInnerTestStructType");
+ QCOMPARE(nestedStructArrayValue.at(1).fields().value("DoubleSubtypeMember").toDouble(), 42.0);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6009"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+
+ {
+ auto unionValue = handler.createGenericStructValueForTypeId("ns=4;i=3005");
+ unionValue.fieldsRef()["Member1"] = 23;
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(unionValue, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), unionValue.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+ QCOMPARE(success, true);
+
+ QCOMPARE(decoded.fields().value("Member1"), 23);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6011"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+
+ {
+ auto unionValue = handler.createGenericStructValueForTypeId("ns=4;i=3005");
+ auto innerValue = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue.fieldsRef()["DoubleSubtypeMember"] = 42.0;
+ unionValue.fieldsRef()["Member2"] = innerValue;
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(unionValue, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), unionValue.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+ QCOMPARE(success, true);
+
+
+ QVERIFY(decoded.fields().contains("Member2"));
+
+ const auto innerDecoded = decoded.fields().value("Member2").value<QOpcUaGenericStructValue>();
+ QCOMPARE(innerDecoded.fields().value("DoubleSubtypeMember"), 42.0);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6003"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+
+ {
+ auto value = handler.createGenericStructValueForTypeId("ns=4;i=3006");
+ value.fieldsRef()["MandatoryMember"] = 23.0;
+ value.fieldsRef()["OptionalMember"] = 42.0;
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+
+ QCOMPARE(decoded.fields().value("MandatoryMember"), 23.0);
+ QCOMPARE(decoded.fields().value("OptionalMember"), 42.0);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6010"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+
+ {
+ auto value = handler.createGenericStructValueForTypeId("ns=4;i=3006");
+ value.fieldsRef()["MandatoryMember"] = 23.0;
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+
+ QCOMPARE(decoded.fields().value("MandatoryMember"), 23.0);
+ QCOMPARE(decoded.fields().contains("OptionalMember"), false);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6002"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+
+ {
+ auto value = handler.createGenericStructValueForTypeId("ns=4;i=3009");
+ value.fieldsRef()["DiagnosticInfoMember"] = testDiagnosticInfos.at(0);
+ value.fieldsRef()["DiagnosticInfoArrayMember"] = QVariant::fromValue(testDiagnosticInfos);
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QCOMPARE(success, true);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+ QCOMPARE(decoded.fields().value("DiagnosticInfoMember"), testDiagnosticInfos.at(0));
+ QCOMPARE(decoded.fields().value("DiagnosticInfoArrayMember").value<QList<QOpcUaDiagnosticInfo>>(), testDiagnosticInfos);
+
+ QScopedPointer<QOpcUaNode> node(opcuaClient->node("ns=4;i=6006"));
+ WRITE_VALUE_ATTRIBUTE(node, ext, QOpcUa::Types::ExtensionObject);
+ }
+}
+
+void Tst_QOpcUaClient::encodeCustomGenericStruct()
+{
+ QFETCH(QOpcUaClient *, opcuaClient);
+ OpcuaConnector connector(opcuaClient, m_endpoint);
+
+ QOpcUaGenericStructHandler handler(opcuaClient);
+
+ QSignalSpy spy(&handler, &QOpcUaGenericStructHandler::initializeFinished);
+
+ auto success = handler.initialize();
+ QCOMPARE(success, true);
+
+ spy.wait();
+
+ QCOMPARE(spy.size(), 1);
+ QCOMPARE(spy.at(0).at(0).toBool(), true);
+
+ {
+ QOpcUaStructureDefinition def;
+ def.setStructureType(QOpcUaStructureDefinition::StructureType::Structure);
+ def.setBaseDataType(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::BaseDataType));
+ def.setDefaultEncodingId("ns=5;i=42");
+
+ QOpcUaStructureField field1;
+ field1.setArrayDimensions({2, 2});
+ field1.setValueRank(2);
+ field1.setDataType(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::Int32));
+ field1.setIsOptional(false);
+ field1.setName("MatrixMember");
+
+ def.setFields({field1});
+
+ auto success = handler.addCustomStructureDefinition(def, "ns=5;i=23", "MyMatrixTestStruct");
+ QVERIFY(success);
+
+ auto value = handler.createGenericStructValueForTypeId("ns=5;i=23");
+ value.fieldsRef()["MatrixMember"] = QOpcUaMultiDimensionalArray({1, 2, 3, 4}, {2, 2});
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QVERIFY(success);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+ QVERIFY(success);
+
+ const auto matrix = decoded.fields().value("MatrixMember").value<QOpcUaMultiDimensionalArray>();
+ QCOMPARE(matrix.arrayDimensions(), QList<quint32>({2, 2}));
+ QCOMPARE(matrix.value(QList<quint32>({0, 0})), 1);
+ QCOMPARE(matrix.value(QList<quint32>({0, 1})), 2);
+ QCOMPARE(matrix.value(QList<quint32>({1, 0})), 3);
+ QCOMPARE(matrix.value(QList<quint32>({1, 1})), 4);
+ }
+
+ {
+ QOpcUaStructureDefinition def;
+ def.setStructureType(QOpcUaStructureDefinition::StructureType::Structure);
+ def.setBaseDataType(QOpcUa::namespace0Id(QOpcUa::NodeIds::Namespace0::BaseDataType));
+ def.setDefaultEncodingId("ns=5;i=43");
+
+ QOpcUaStructureField field1;
+ field1.setArrayDimensions({2, 2});
+ field1.setValueRank(2);
+ field1.setDataType("ns=4;i=3004");
+ field1.setIsOptional(false);
+ field1.setName("StructMatrixMember");
+
+ def.setFields({field1});
+
+ auto success = handler.addCustomStructureDefinition(def, "ns=5;i=24", "MyStructMatrixTestStruct");
+ QVERIFY(success);
+
+ auto value = handler.createGenericStructValueForTypeId("ns=5;i=24");
+
+ auto innerValue1 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue1.fieldsRef()["DoubleSubtypeMember"] = 1;
+ auto innerValue2 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue2.fieldsRef()["DoubleSubtypeMember"] = 2;
+ auto innerValue3 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue3.fieldsRef()["DoubleSubtypeMember"] = 3;
+ auto innerValue4 = handler.createGenericStructValueForTypeId("ns=4;i=3004");
+ innerValue4.fieldsRef()["DoubleSubtypeMember"] = 4;
+
+ value.fieldsRef()["StructMatrixMember"] =
+ QOpcUaMultiDimensionalArray(QVariantList({innerValue1, innerValue2, innerValue3, innerValue4}), {2, 2});
+
+ QOpcUaExtensionObject ext;
+ success = handler.encode(value, ext);
+ QVERIFY(success);
+ QCOMPARE(ext.encodingTypeId(), value.structureDefinition().defaultEncodingId());
+
+ const auto decoded = handler.decode(ext, success);
+ QVERIFY(success);
+
+ const auto matrix = decoded.fields().value("StructMatrixMember").value<QOpcUaMultiDimensionalArray>();
+ QCOMPARE(matrix.arrayDimensions(), QList<quint32>({2, 2}));
+ QCOMPARE(matrix.value(QList<quint32>({0, 0})).value<QOpcUaGenericStructValue>().fields().value("DoubleSubtypeMember"), 1);
+ QCOMPARE(matrix.value(QList<quint32>({0, 1})).value<QOpcUaGenericStructValue>().fields().value("DoubleSubtypeMember"), 2);
+ QCOMPARE(matrix.value(QList<quint32>({1, 0})).value<QOpcUaGenericStructValue>().fields().value("DoubleSubtypeMember"), 3);
+ QCOMPARE(matrix.value(QList<quint32>({1, 1})).value<QOpcUaGenericStructValue>().fields().value("DoubleSubtypeMember"), 4);
+ }
+}
+
void Tst_QOpcUaClient::connectionLost()
{
// Restart the test server if necessary
diff --git a/tests/open62541-testserver/CMakeLists.txt b/tests/open62541-testserver/CMakeLists.txt
index e5a8eef..1d74cb9 100644
--- a/tests/open62541-testserver/CMakeLists.txt
+++ b/tests/open62541-testserver/CMakeLists.txt
@@ -1,6 +1,18 @@
# Copyright (C) 2022 The Qt Company Ltd.
# SPDX-License-Identifier: BSD-3-Clause
+# This CMake function call can be used to update the generated code
+#if (QT_FEATURE_system_open62541)
+# ua_generate_nodeset_and_datatypes(
+# NAME "qtopcuatestmodel"
+# FILE_NS "${CMAKE_CURRENT_SOURCE_DIR}/TestModel/qtopcuatestmodel.xml"
+# FILE_BSD "${CMAKE_CURRENT_SOURCE_DIR}/TestModel/qtopcuatestmodel.bsd"
+# FILE_CSV "${CMAKE_CURRENT_SOURCE_DIR}/TestModel/qtopcuatestmodel.csv"
+# NAMESPACE_MAP "4:http://qt-project.org/QtOpcUaTestModel/"
+# OUTPUT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/generated"
+# )
+#endif()
+
#####################################################################
## open62541-testserver Binary:
#####################################################################
@@ -11,8 +23,15 @@ qt_internal_add_executable(open62541-testserver
../../src/plugins/opcua/open62541/qopen62541valueconverter.cpp
main.cpp
testserver.cpp testserver.h
+ generated/namespace_qtopcuatestmodel_generated.c
+ generated/qtopcuatestmodel_nodeids.h
+ generated/types_qtopcuatestmodel_generated_handling.h
+ generated/namespace_qtopcuatestmodel_generated.h
+ generated/types_qtopcuatestmodel_generated.c
+ generated/types_qtopcuatestmodel_generated.h
INCLUDE_DIRECTORIES
../../src/plugins/opcua/open62541
+ generated/
OUTPUT_DIRECTORY
"${CMAKE_CURRENT_BINARY_DIR}"
LIBRARIES
@@ -52,6 +71,8 @@ qt_internal_extend_target(open62541-testserver CONDITION QT_FEATURE_open62541 AN
../../src/3rdparty/open62541/open62541.c
INCLUDE_DIRECTORIES
../../src/3rdparty/open62541
+ DEFINES
+ UA_ENABLE_AMALGAMATION
)
#qt_internal_extend_target(open62541-testserver CONDITION QT_FEATURE_mbedtls AND QT_FEATURE_open62541 AND NOT QT_FEATURE_system_open62541
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd b/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd
new file mode 100644
index 0000000..89f4d86
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.bsd
@@ -0,0 +1,40 @@
+<opc:TypeDictionary xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://qt-project.org/QtOpcUaTestModel/" DefaultByteOrder="LittleEndian" xmlns:opc="http://opcfoundation.org/BinarySchema/" xmlns:ua="http://opcfoundation.org/UA/" TargetNamespace="http://qt-project.org/QtOpcUaTestModel/">
+ <opc:Import Namespace="http://opcfoundation.org/UA/"/>
+ <opc:StructuredType BaseType="ua:ExtensionObject" Name="QtAbstractBaseStruct"/>
+ <opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtInnerTestStructType">
+ <opc:Field TypeName="opc:Double" Name="DoubleSubtypeMember"/>
+ </opc:StructuredType>
+ <opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtStructWithOptionalFieldType">
+ <opc:Field TypeName="opc:Bit" Name="OptionalMemberSpecified"/>
+ <opc:Field Length="31" TypeName="opc:Bit" Name="Reserved1"/>
+ <opc:Field TypeName="opc:Double" Name="MandatoryMember"/>
+ <opc:Field SwitchField="OptionalMemberSpecified" TypeName="opc:Double" Name="OptionalMember"/>
+ </opc:StructuredType>
+ <opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtTestStructType">
+ <opc:Field TypeName="opc:CharArray" Name="StringMember"/>
+ <opc:Field TypeName="ua:LocalizedText" Name="LocalizedTextMember"/>
+ <opc:Field TypeName="ua:QualifiedName" Name="QualifiedNameMember"/>
+ <opc:Field TypeName="opc:Int32" Name="NoOfInt64ArrayMember"/>
+ <opc:Field LengthField="NoOfInt64ArrayMember" TypeName="opc:Int64" Name="Int64ArrayMember"/>
+ <opc:Field TypeName="tns:QtTestEnumeration" Name="EnumMember"/>
+ <opc:Field TypeName="tns:QtInnerTestStructType" Name="NestedStructMember"/>
+ <opc:Field TypeName="opc:Int32" Name="NoOfNestedStructArrayMember"/>
+ <opc:Field LengthField="NoOfNestedStructArrayMember" TypeName="tns:QtInnerTestStructType" Name="NestedStructArrayMember"/>
+ </opc:StructuredType>
+ <opc:StructuredType BaseType="tns:QtAbstractBaseStruct" Name="QtTestStructWithDiagnosticInfo">
+ <opc:Field TypeName="ua:DiagnosticInfo" Name="DiagnosticInfoMember"/>
+ <opc:Field TypeName="opc:Int32" Name="NoOfDiagnosticInfoArrayMember"/>
+ <opc:Field LengthField="NoOfDiagnosticInfoArrayMember" TypeName="ua:DiagnosticInfo" Name="DiagnosticInfoArrayMember"/>
+ </opc:StructuredType>
+ <opc:StructuredType BaseType="ua:Union" Name="QtTestUnionType">
+ <opc:Field TypeName="opc:UInt32" Name="SwitchField"/>
+ <opc:Field SwitchField="SwitchField" TypeName="opc:Int64" SwitchValue="1" Name="Member1"/>
+ <opc:Field SwitchField="SwitchField" TypeName="tns:QtInnerTestStructType" SwitchValue="2" Name="Member2"/>
+ </opc:StructuredType>
+ <opc:EnumeratedType LengthInBits="32" Name="QtTestEnumeration">
+ <opc:EnumeratedValue Name="Unknown" Value="0"/>
+ <opc:EnumeratedValue Name="FirstOption" Value="1"/>
+ <opc:EnumeratedValue Name="SecondOption" Value="2"/>
+ <opc:EnumeratedValue Name="ThirdOption" Value="3"/>
+ </opc:EnumeratedType>
+</opc:TypeDictionary>
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv b/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv
new file mode 100644
index 0000000..c619189
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.csv
@@ -0,0 +1,44 @@
+QtTestEnumeration,3002,DataType
+QtTestStructType,3003,DataType
+QtInnerTestStructType,3004,DataType
+QtTestUnionType,3005,DataType
+QtStructWithOptionalFieldType,3006,DataType
+MyDoubleSubtype,3007,DataType
+QtAbstractBaseStruct,3008,DataType
+QtTestStructWithDiagnosticInfo,3009,DataType
+QtTestStructType_Encoding_DefaultBinary,5001,Object
+QtTestStructType_Encoding_DefaultXml,5002,Object
+QtTestStructWithDiagnosticInfo_Encoding_DefaultBinary,5003,Object
+QtInnerTestStructType_Encoding_DefaultBinary,5004,Object
+QtInnerTestStructType_Encoding_DefaultXml,5005,Object
+QtAbstractBaseStruct_Encoding_DefaultBinary,5006,Object
+QtTestUnionType_Encoding_DefaultBinary,5007,Object
+QtTestUnionType_Encoding_DefaultXml,5008,Object
+DecoderTestNodes,5009,Object
+QtStructWithOptionalFieldType_Encoding_DefaultBinary,5010,Object
+QtStructWithOptionalFieldType_Encoding_DefaultXml,5011,Object
+QtAbstractBaseStruct_Encoding_DefaultXml,5012,Object
+QtTestStructWithDiagnosticInfo_Encoding_DefaultXml,5013,Object
+QtTestEnumeration_EnumStrings,6001,Variable
+DecoderTestNodes_StructWihoutOptionalField,6002,Variable
+DecoderTestNodes_UnionWithSecondMember,6003,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtTestStructWithDiagnosticInfo,6004,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtTestStructWithDiagnosticInfo,6005,Variable
+DecoderTestNodes_StructWithDiagnosticInfo,6006,Variable
+DecoderTestNodes_NestedStruct,6009,Variable
+DecoderTestNodes_StructWithOptionalField,6010,Variable
+DecoderTestNodes_UnionWithFirstMember,6011,Variable
+BinarySchema_TypeDictionary_BinarySchema,6012,Variable
+BinarySchema_TypeDictionary_BinarySchema_NamespaceUri,6013,Variable
+XmlSchema_TypeDictionary_XmlSchema,6014,Variable
+XmlSchema_TypeDictionary_XmlSchema_NamespaceUri,6015,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtInnerTestStructType,6016,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtInnerTestStructType,6017,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtStructWithOptionalFieldType,6018,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtStructWithOptionalFieldType,6019,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtTestStructType,6020,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtTestStructType,6021,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtTestUnionType,6022,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtTestUnionType,6023,Variable
+BinarySchema_TypeDictionary_BinarySchema_QtAbstractBaseStruct,6024,Variable
+XmlSchema_TypeDictionary_XmlSchema_QtAbstractBaseStruct,6025,Variable
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro b/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro
new file mode 100644
index 0000000..651e9c7
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.tt2pro
@@ -0,0 +1,25 @@
+###########################
+# UaModeler Project File #
+# Generated at 23.08.2023 #
+###########################
+
+PROJECTNAME = QtOpcUaTestModel
+
+TEMPLATESET = ($TEMPLATES)/modeling/v1_0/t0/modeling.tt2set
+
+MODELS += ($MODELS)/Opc.Ua.NodeSet2.ua \
+ qtopcuatestmodel.ua
+
+COLORS = ($MODELS)/Opc.Ua.NodeSet2.ua: #0000ff\
+ qtopcuatestmodel.ua: #008000
+
+OUTPUTPATH = GridCon
+
+GENERATE += qtopcuatestmodel.ua
+
+NODEACCESSINFOROLES += Administrator \
+ SecurityAdmin \
+ ConfigurationAdmin \
+ Operator \
+ Observer
+
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua
new file mode 100644
index 0000000..15c64c2
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua
Binary files differ
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml
new file mode 100644
index 0000000..483cde8
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xml
@@ -0,0 +1,655 @@
+<?xml version="1.0" encoding="utf-8"?>
+<UANodeSet xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:s1="http://qt-project.org/QtOpcUaTestModel/Types.xsd" xmlns:ua="http://unifiedautomation.com/Configuration/NodeSet.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+ <NamespaceUris>
+ <Uri>http://qt-project.org/QtOpcUaTestModel/</Uri>
+ </NamespaceUris>
+ <Aliases>
+ <Alias Alias="Int64">i=8</Alias>
+ <Alias Alias="Double">i=11</Alias>
+ <Alias Alias="String">i=12</Alias>
+ <Alias Alias="ByteString">i=15</Alias>
+ <Alias Alias="QualifiedName">i=20</Alias>
+ <Alias Alias="LocalizedText">i=21</Alias>
+ <Alias Alias="DiagnosticInfo">i=25</Alias>
+ <Alias Alias="Organizes">i=35</Alias>
+ <Alias Alias="HasModellingRule">i=37</Alias>
+ <Alias Alias="HasEncoding">i=38</Alias>
+ <Alias Alias="HasDescription">i=39</Alias>
+ <Alias Alias="HasTypeDefinition">i=40</Alias>
+ <Alias Alias="HasSubtype">i=45</Alias>
+ <Alias Alias="HasProperty">i=46</Alias>
+ <Alias Alias="HasComponent">i=47</Alias>
+ <Alias Alias="QtTestEnumeration">ns=1;i=3002</Alias>
+ <Alias Alias="QtTestStructType">ns=1;i=3003</Alias>
+ <Alias Alias="QtInnerTestStructType">ns=1;i=3004</Alias>
+ <Alias Alias="QtTestUnionType">ns=1;i=3005</Alias>
+ <Alias Alias="QtStructWithOptionalFieldType">ns=1;i=3006</Alias>
+ <Alias Alias="MyDoubleSubtype">ns=1;i=3007</Alias>
+ <Alias Alias="QtTestStructWithDiagnosticInfo">ns=1;i=3009</Alias>
+ </Aliases>
+ <Extensions>
+ <Extension>
+ <ua:ModelInfo Tool="UaModeler" Hash="+meaQ+dmQrll0fzxsafyig==" Version="1.6.5"/>
+ </Extension>
+ </Extensions>
+ <UADataType NodeId="ns=1;i=3002" BrowseName="1:QtTestEnumeration">
+ <DisplayName>QtTestEnumeration</DisplayName>
+ <References>
+ <Reference ReferenceType="HasProperty">ns=1;i=6001</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=29</Reference>
+ </References>
+ <Definition Name="1:QtTestEnumeration">
+ <Field Name="Unknown" Value="0"/>
+ <Field Name="FirstOption" Value="1"/>
+ <Field Name="SecondOption" Value="2"/>
+ <Field Name="ThirdOption" Value="3"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="LocalizedText" ParentNodeId="ns=1;i=3002" ValueRank="1" NodeId="ns=1;i=6001" ArrayDimensions="4" BrowseName="EnumStrings">
+ <DisplayName>EnumStrings</DisplayName>
+ <References>
+ <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=3002</Reference>
+ <Reference ReferenceType="HasModellingRule">i=78</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
+ </References>
+ <Value>
+ <uax:ListOfLocalizedText>
+ <uax:LocalizedText>
+ <uax:Text>Unknown</uax:Text>
+ </uax:LocalizedText>
+ <uax:LocalizedText>
+ <uax:Text>FirstOption</uax:Text>
+ </uax:LocalizedText>
+ <uax:LocalizedText>
+ <uax:Text>SecondOption</uax:Text>
+ </uax:LocalizedText>
+ <uax:LocalizedText>
+ <uax:Text>ThirdOption</uax:Text>
+ </uax:LocalizedText>
+ </uax:ListOfLocalizedText>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3007" BrowseName="1:MyDoubleSubtype">
+ <DisplayName>MyDoubleSubtype</DisplayName>
+ <References>
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=11</Reference>
+ </References>
+ </UADataType>
+ <UADataType IsAbstract="true" NodeId="ns=1;i=3008" BrowseName="1:QtAbstractBaseStruct">
+ <DisplayName>QtAbstractBaseStruct</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5006</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5012</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=22</Reference>
+ </References>
+ <Definition Name="1:QtAbstractBaseStruct"/>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6024" BrowseName="1:QtAbstractBaseStruct">
+ <DisplayName>QtAbstractBaseStruct</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5006</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ </References>
+ <Value>
+ <uax:String>QtAbstractBaseStruct</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6025" BrowseName="1:QtAbstractBaseStruct">
+ <DisplayName>QtAbstractBaseStruct</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5012</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtAbstractBaseStruct']</uax:String>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3004" BrowseName="1:QtInnerTestStructType">
+ <DisplayName>QtInnerTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5004</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5005</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=3008</Reference>
+ </References>
+ <Definition Name="1:QtInnerTestStructType">
+ <Field DataType="MyDoubleSubtype" Name="DoubleSubtypeMember"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6016" BrowseName="1:QtInnerTestStructType">
+ <DisplayName>QtInnerTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5004</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ </References>
+ <Value>
+ <uax:String>QtInnerTestStructType</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6017" BrowseName="1:QtInnerTestStructType">
+ <DisplayName>QtInnerTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5005</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtInnerTestStructType']</uax:String>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3006" BrowseName="1:QtStructWithOptionalFieldType">
+ <DisplayName>QtStructWithOptionalFieldType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5010</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5011</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=3008</Reference>
+ </References>
+ <Definition Name="1:QtStructWithOptionalFieldType">
+ <Field DataType="Double" Name="MandatoryMember"/>
+ <Field IsOptional="true" DataType="Double" Name="OptionalMember"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6018" BrowseName="1:QtStructWithOptionalFieldType">
+ <DisplayName>QtStructWithOptionalFieldType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5010</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ </References>
+ <Value>
+ <uax:String>QtStructWithOptionalFieldType</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6019" BrowseName="1:QtStructWithOptionalFieldType">
+ <DisplayName>QtStructWithOptionalFieldType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5011</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtStructWithOptionalFieldType']</uax:String>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3003" BrowseName="1:QtTestStructType">
+ <DisplayName>QtTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5001</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5002</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=3008</Reference>
+ </References>
+ <Definition Name="1:QtTestStructType">
+ <Field DataType="String" Name="StringMember"/>
+ <Field DataType="LocalizedText" Name="LocalizedTextMember"/>
+ <Field DataType="QualifiedName" Name="QualifiedNameMember"/>
+ <Field DataType="Int64" ValueRank="1" ArrayDimensions="0" Name="Int64ArrayMember"/>
+ <Field DataType="QtTestEnumeration" Name="EnumMember"/>
+ <Field DataType="QtInnerTestStructType" Name="NestedStructMember"/>
+ <Field DataType="QtInnerTestStructType" ValueRank="1" ArrayDimensions="0" Name="NestedStructArrayMember"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6020" BrowseName="1:QtTestStructType">
+ <DisplayName>QtTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5001</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ </References>
+ <Value>
+ <uax:String>QtTestStructType</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6021" BrowseName="1:QtTestStructType">
+ <DisplayName>QtTestStructType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5002</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtTestStructType']</uax:String>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3009" BrowseName="1:QtTestStructWithDiagnosticInfo">
+ <DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5003</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5013</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">ns=1;i=3008</Reference>
+ </References>
+ <Definition Name="1:QtTestStructWithDiagnosticInfo">
+ <Field DataType="DiagnosticInfo" Name="DiagnosticInfoMember"/>
+ <Field DataType="DiagnosticInfo" ValueRank="1" ArrayDimensions="0" Name="DiagnosticInfoArrayMember"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6004" BrowseName="1:QtTestStructWithDiagnosticInfo">
+ <DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
+ <References>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5003</Reference>
+ </References>
+ <Value>
+ <uax:String>QtTestStructWithDiagnosticInfo</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6005" BrowseName="1:QtTestStructWithDiagnosticInfo">
+ <DisplayName>QtTestStructWithDiagnosticInfo</DisplayName>
+ <References>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5013</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtTestStructWithDiagnosticInfo']</uax:String>
+ </Value>
+ </UAVariable>
+ <UADataType NodeId="ns=1;i=3005" BrowseName="1:QtTestUnionType">
+ <DisplayName>QtTestUnionType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5007</Reference>
+ <Reference ReferenceType="HasEncoding">ns=1;i=5008</Reference>
+ <Reference ReferenceType="HasSubtype" IsForward="false">i=12756</Reference>
+ </References>
+ <Definition Name="1:QtTestUnionType" IsUnion="true">
+ <Field DataType="Int64" Name="Member1"/>
+ <Field DataType="QtInnerTestStructType" Name="Member2"/>
+ </Definition>
+ </UADataType>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6022" BrowseName="1:QtTestUnionType">
+ <DisplayName>QtTestUnionType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5007</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6012</Reference>
+ </References>
+ <Value>
+ <uax:String>QtTestUnionType</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6023" BrowseName="1:QtTestUnionType">
+ <DisplayName>QtTestUnionType</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=69</Reference>
+ <Reference ReferenceType="HasDescription" IsForward="false">ns=1;i=5008</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=6014</Reference>
+ </References>
+ <Value>
+ <uax:String>//xs:element[@name='QtTestUnionType']</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable SymbolicName="TypeDictionary_BinarySchema" DataType="ByteString" NodeId="ns=1;i=6012" BrowseName="1:TypeDictionary">
+ <DisplayName>TypeDictionary</DisplayName>
+ <Description>Collects the data type descriptions of http://qt-project.org/QtOpcUaTestModel/</Description>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=72</Reference>
+ <Reference ReferenceType="HasProperty">ns=1;i=6013</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6024</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6016</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6018</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6020</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6004</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6022</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">i=93</Reference>
+ </References>
+ <Value>
+ <uax:ByteString>PG9wYzpUeXBlRGljdGlvbmFyeSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZ
+ W1hLWluc3RhbmNlIiB4bWxuczp0bnM9Imh0dHA6Ly9xdC1wcm9qZWN0Lm9yZy9RdE9wY1VhV
+ GVzdE1vZGVsLyIgRGVmYXVsdEJ5dGVPcmRlcj0iTGl0dGxlRW5kaWFuIiB4bWxuczpvcGM9I
+ mh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9yZy9CaW5hcnlTY2hlbWEvIiB4bWxuczp1YT0iaHR0c
+ DovL29wY2ZvdW5kYXRpb24ub3JnL1VBLyIgVGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vcXQtc
+ HJvamVjdC5vcmcvUXRPcGNVYVRlc3RNb2RlbC8iPgogPG9wYzpJbXBvcnQgTmFtZXNwYWNlP
+ SJodHRwOi8vb3BjZm91bmRhdGlvbi5vcmcvVUEvIi8+CiA8b3BjOlN0cnVjdHVyZWRUeXBlI
+ EJhc2VUeXBlPSJ1YTpFeHRlbnNpb25PYmplY3QiIE5hbWU9IlF0QWJzdHJhY3RCYXNlU3Ryd
+ WN0Ii8+CiA8b3BjOlN0cnVjdHVyZWRUeXBlIEJhc2VUeXBlPSJ0bnM6UXRBYnN0cmFjdEJhc
+ 2VTdHJ1Y3QiIE5hbWU9IlF0SW5uZXJUZXN0U3RydWN0VHlwZSI+CiAgPG9wYzpGaWVsZCBUe
+ XBlTmFtZT0ib3BjOkRvdWJsZSIgTmFtZT0iRG91YmxlU3VidHlwZU1lbWJlciIvPgogPC9vc
+ GM6U3RydWN0dXJlZFR5cGU+CiA8b3BjOlN0cnVjdHVyZWRUeXBlIEJhc2VUeXBlPSJ0bnM6U
+ XRBYnN0cmFjdEJhc2VTdHJ1Y3QiIE5hbWU9IlF0U3RydWN0V2l0aE9wdGlvbmFsRmllbGRUe
+ XBlIj4KICA8b3BjOkZpZWxkIFR5cGVOYW1lPSJvcGM6Qml0IiBOYW1lPSJPcHRpb25hbE1lb
+ WJlclNwZWNpZmllZCIvPgogIDxvcGM6RmllbGQgTGVuZ3RoPSIzMSIgVHlwZU5hbWU9Im9wY
+ zpCaXQiIE5hbWU9IlJlc2VydmVkMSIvPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpEb
+ 3VibGUiIE5hbWU9Ik1hbmRhdG9yeU1lbWJlciIvPgogIDxvcGM6RmllbGQgU3dpdGNoRmllb
+ GQ9Ik9wdGlvbmFsTWVtYmVyU3BlY2lmaWVkIiBUeXBlTmFtZT0ib3BjOkRvdWJsZSIgTmFtZ
+ T0iT3B0aW9uYWxNZW1iZXIiLz4KIDwvb3BjOlN0cnVjdHVyZWRUeXBlPgogPG9wYzpTdHJ1Y
+ 3R1cmVkVHlwZSBCYXNlVHlwZT0idG5zOlF0QWJzdHJhY3RCYXNlU3RydWN0IiBOYW1lPSJRd
+ FRlc3RTdHJ1Y3RUeXBlIj4KICA8b3BjOkZpZWxkIFR5cGVOYW1lPSJvcGM6Q2hhckFycmF5I
+ iBOYW1lPSJTdHJpbmdNZW1iZXIiLz4KICA8b3BjOkZpZWxkIFR5cGVOYW1lPSJ1YTpMb2Nhb
+ Gl6ZWRUZXh0IiBOYW1lPSJMb2NhbGl6ZWRUZXh0TWVtYmVyIi8+CiAgPG9wYzpGaWVsZCBUe
+ XBlTmFtZT0idWE6UXVhbGlmaWVkTmFtZSIgTmFtZT0iUXVhbGlmaWVkTmFtZU1lbWJlciIvP
+ gogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpJbnQzMiIgTmFtZT0iTm9PZkludDY0QXJyY
+ XlNZW1iZXIiLz4KICA8b3BjOkZpZWxkIExlbmd0aEZpZWxkPSJOb09mSW50NjRBcnJheU1lb
+ WJlciIgVHlwZU5hbWU9Im9wYzpJbnQ2NCIgTmFtZT0iSW50NjRBcnJheU1lbWJlciIvPgogI
+ DxvcGM6RmllbGQgVHlwZU5hbWU9InRuczpRdFRlc3RFbnVtZXJhdGlvbiIgTmFtZT0iRW51b
+ U1lbWJlciIvPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9InRuczpRdElubmVyVGVzdFN0cnVjd
+ FR5cGUiIE5hbWU9Ik5lc3RlZFN0cnVjdE1lbWJlciIvPgogIDxvcGM6RmllbGQgVHlwZU5hb
+ WU9Im9wYzpJbnQzMiIgTmFtZT0iTm9PZk5lc3RlZFN0cnVjdEFycmF5TWVtYmVyIi8+CiAgP
+ G9wYzpGaWVsZCBMZW5ndGhGaWVsZD0iTm9PZk5lc3RlZFN0cnVjdEFycmF5TWVtYmVyIiBUe
+ XBlTmFtZT0idG5zOlF0SW5uZXJUZXN0U3RydWN0VHlwZSIgTmFtZT0iTmVzdGVkU3RydWN0Q
+ XJyYXlNZW1iZXIiLz4KIDwvb3BjOlN0cnVjdHVyZWRUeXBlPgogPG9wYzpTdHJ1Y3R1cmVkV
+ HlwZSBCYXNlVHlwZT0idG5zOlF0QWJzdHJhY3RCYXNlU3RydWN0IiBOYW1lPSJRdFRlc3RTd
+ HJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iPgogIDxvcGM6RmllbGQgVHlwZU5hbWU9InVhOkRpY
+ Wdub3N0aWNJbmZvIiBOYW1lPSJEaWFnbm9zdGljSW5mb01lbWJlciIvPgogIDxvcGM6Rmllb
+ GQgVHlwZU5hbWU9Im9wYzpJbnQzMiIgTmFtZT0iTm9PZkRpYWdub3N0aWNJbmZvQXJyYXlNZ
+ W1iZXIiLz4KICA8b3BjOkZpZWxkIExlbmd0aEZpZWxkPSJOb09mRGlhZ25vc3RpY0luZm9Bc
+ nJheU1lbWJlciIgVHlwZU5hbWU9InVhOkRpYWdub3N0aWNJbmZvIiBOYW1lPSJEaWFnbm9zd
+ GljSW5mb0FycmF5TWVtYmVyIi8+CiA8L29wYzpTdHJ1Y3R1cmVkVHlwZT4KIDxvcGM6U3Ryd
+ WN0dXJlZFR5cGUgQmFzZVR5cGU9InVhOlVuaW9uIiBOYW1lPSJRdFRlc3RVbmlvblR5cGUiP
+ gogIDxvcGM6RmllbGQgVHlwZU5hbWU9Im9wYzpVSW50MzIiIE5hbWU9IlN3aXRjaEZpZWxkI
+ i8+CiAgPG9wYzpGaWVsZCBTd2l0Y2hGaWVsZD0iU3dpdGNoRmllbGQiIFR5cGVOYW1lPSJvc
+ GM6SW50NjQiIFN3aXRjaFZhbHVlPSIxIiBOYW1lPSJNZW1iZXIxIi8+CiAgPG9wYzpGaWVsZ
+ CBTd2l0Y2hGaWVsZD0iU3dpdGNoRmllbGQiIFR5cGVOYW1lPSJ0bnM6UXRJbm5lclRlc3RTd
+ HJ1Y3RUeXBlIiBTd2l0Y2hWYWx1ZT0iMiIgTmFtZT0iTWVtYmVyMiIvPgogPC9vcGM6U3Ryd
+ WN0dXJlZFR5cGU+CiA8b3BjOkVudW1lcmF0ZWRUeXBlIExlbmd0aEluQml0cz0iMzIiIE5hb
+ WU9IlF0VGVzdEVudW1lcmF0aW9uIj4KICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJVb
+ mtub3duIiBWYWx1ZT0iMCIvPgogIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IkZpcnN0T
+ 3B0aW9uIiBWYWx1ZT0iMSIvPgogIDxvcGM6RW51bWVyYXRlZFZhbHVlIE5hbWU9IlNlY29uZ
+ E9wdGlvbiIgVmFsdWU9IjIiLz4KICA8b3BjOkVudW1lcmF0ZWRWYWx1ZSBOYW1lPSJUaGlyZ
+ E9wdGlvbiIgVmFsdWU9IjMiLz4KIDwvb3BjOkVudW1lcmF0ZWRUeXBlPgo8L29wYzpUeXBlR
+ GljdGlvbmFyeT4K</uax:ByteString>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6012" NodeId="ns=1;i=6013" BrowseName="NamespaceUri">
+ <DisplayName>NamespaceUri</DisplayName>
+ <References>
+ <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=6012</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
+ </References>
+ <Value>
+ <uax:String>http://qt-project.org/QtOpcUaTestModel/</uax:String>
+ </Value>
+ </UAVariable>
+ <UAVariable SymbolicName="TypeDictionary_XmlSchema" DataType="ByteString" NodeId="ns=1;i=6014" BrowseName="1:TypeDictionary">
+ <DisplayName>TypeDictionary</DisplayName>
+ <Description>Collects the data type descriptions of http://qt-project.org/QtOpcUaTestModel/</Description>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=72</Reference>
+ <Reference ReferenceType="HasProperty">ns=1;i=6015</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6025</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6017</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6019</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6021</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6005</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6023</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">i=92</Reference>
+ </References>
+ <Value>
+ <uax:ByteString>PHhzOnNjaGVtYSBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCIgdGFyZ2V0TmFtZXNwYWNlPSJod
+ HRwOi8vcXQtcHJvamVjdC5vcmcvUXRPcGNVYVRlc3RNb2RlbC9UeXBlcy54c2QiIHhtbG5zO
+ nRucz0iaHR0cDovL3F0LXByb2plY3Qub3JnL1F0T3BjVWFUZXN0TW9kZWwvVHlwZXMueHNkI
+ iB4bWxuczp1YT0iaHR0cDovL29wY2ZvdW5kYXRpb24ub3JnL1VBLzIwMDgvMDIvVHlwZXMue
+ HNkIiB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiPgogPHhzO
+ mltcG9ydCBuYW1lc3BhY2U9Imh0dHA6Ly9vcGNmb3VuZGF0aW9uLm9yZy9VQS8yMDA4LzAyL
+ 1R5cGVzLnhzZCIvPgogPHhzOnNpbXBsZVR5cGUgbmFtZT0iUXRUZXN0RW51bWVyYXRpb24iP
+ gogIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgogICA8eHM6ZW51bWVyYXRpb
+ 24gdmFsdWU9IlVua25vd25fMCIvPgogICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkZpcnN0T
+ 3B0aW9uXzEiLz4KICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJTZWNvbmRPcHRpb25fMiIvP
+ gogICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlRoaXJkT3B0aW9uXzMiLz4KICA8L3hzOnJlc
+ 3RyaWN0aW9uPgogPC94czpzaW1wbGVUeXBlPgogPHhzOmVsZW1lbnQgdHlwZT0idG5zOlF0V
+ GVzdEVudW1lcmF0aW9uIiBuYW1lPSJRdFRlc3RFbnVtZXJhdGlvbiIvPgogPHhzOmNvbXBsZ
+ XhUeXBlIG5hbWU9Ikxpc3RPZlF0VGVzdEVudW1lcmF0aW9uIj4KICA8eHM6c2VxdWVuY2U+C
+ iAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHR5c
+ GU9InRuczpRdFRlc3RFbnVtZXJhdGlvbiIgbmFtZT0iUXRUZXN0RW51bWVyYXRpb24iIG5pb
+ GxhYmxlPSJ0cnVlIi8+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tcGxleFR5cGU+CiA8e
+ HM6ZWxlbWVudCB0eXBlPSJ0bnM6TGlzdE9mUXRUZXN0RW51bWVyYXRpb24iIG5hbWU9Ikxpc
+ 3RPZlF0VGVzdEVudW1lcmF0aW9uIiBuaWxsYWJsZT0idHJ1ZSIvPgogPHhzOmNvbXBsZXhUe
+ XBlIG5hbWU9IlF0QWJzdHJhY3RCYXNlU3RydWN0Ij4KICA8eHM6c2VxdWVuY2UvPgogPC94c
+ zpjb21wbGV4VHlwZT4KIDx4czplbGVtZW50IHR5cGU9InRuczpRdEFic3RyYWN0QmFzZVN0c
+ nVjdCIgbmFtZT0iUXRBYnN0cmFjdEJhc2VTdHJ1Y3QiLz4KIDx4czpjb21wbGV4VHlwZSBuY
+ W1lPSJMaXN0T2ZRdEFic3RyYWN0QmFzZVN0cnVjdCI+CiAgPHhzOnNlcXVlbmNlPgogICA8e
+ HM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiB0eXBlPSJ0b
+ nM6UXRBYnN0cmFjdEJhc2VTdHJ1Y3QiIG5hbWU9IlF0QWJzdHJhY3RCYXNlU3RydWN0IiBua
+ WxsYWJsZT0idHJ1ZSIvPgogIDwveHM6c2VxdWVuY2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogP
+ HhzOmVsZW1lbnQgdHlwZT0idG5zOkxpc3RPZlF0QWJzdHJhY3RCYXNlU3RydWN0IiBuYW1lP
+ SJMaXN0T2ZRdEFic3RyYWN0QmFzZVN0cnVjdCIgbmlsbGFibGU9InRydWUiLz4KIDx4czpjb
+ 21wbGV4VHlwZSBuYW1lPSJRdElubmVyVGVzdFN0cnVjdFR5cGUiPgogIDx4czpjb21wbGV4Q
+ 29udGVudCBtaXhlZD0iZmFsc2UiPgogICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InRuczpRdEFic
+ 3RyYWN0QmFzZVN0cnVjdCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgPHhzOmVsZW1lbnQgb
+ WluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InhzOmRvdWJsZSIgbmFtZT0iRG91Y
+ mxlU3VidHlwZU1lbWJlciIvPgogICAgPC94czpzZXF1ZW5jZT4KICAgPC94czpleHRlbnNpb
+ 24+CiAgPC94czpjb21wbGV4Q29udGVudD4KIDwveHM6Y29tcGxleFR5cGU+CiA8eHM6ZWxlb
+ WVudCB0eXBlPSJ0bnM6UXRJbm5lclRlc3RTdHJ1Y3RUeXBlIiBuYW1lPSJRdElubmVyVGVzd
+ FN0cnVjdFR5cGUiLz4KIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdElubmVyVGVzd
+ FN0cnVjdFR5cGUiPgogIDx4czpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzP
+ SIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0idG5zOlF0SW5uZXJUZXN0U3RydWN0V
+ HlwZSIgbmFtZT0iUXRJbm5lclRlc3RTdHJ1Y3RUeXBlIiBuaWxsYWJsZT0idHJ1ZSIvPgogI
+ DwveHM6c2VxdWVuY2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZW1lbnQgdHlwZT0id
+ G5zOkxpc3RPZlF0SW5uZXJUZXN0U3RydWN0VHlwZSIgbmFtZT0iTGlzdE9mUXRJbm5lclRlc
+ 3RTdHJ1Y3RUeXBlIiBuaWxsYWJsZT0idHJ1ZSIvPgogPHhzOmNvbXBsZXhUeXBlIG5hbWU9I
+ lF0U3RydWN0V2l0aE9wdGlvbmFsRmllbGRUeXBlIj4KICA8eHM6c2VxdWVuY2U+CiAgIDx4c
+ zplbGVtZW50IG1pbk9jY3Vycz0iMCIgdHlwZT0ieHM6dW5zaWduZWRJbnQiIG5hbWU9IkVuY
+ 29kaW5nTWFzayIvPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iM
+ SIgdHlwZT0ieHM6ZG91YmxlIiBuYW1lPSJNYW5kYXRvcnlNZW1iZXIiLz4KICAgPHhzOmVsZ
+ W1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InhzOmRvdWJsZSIgbmFtZ
+ T0iT3B0aW9uYWxNZW1iZXIiLz4KICA8L3hzOnNlcXVlbmNlPgogPC94czpjb21wbGV4VHlwZ
+ T4KIDx4czplbGVtZW50IHR5cGU9InRuczpRdFN0cnVjdFdpdGhPcHRpb25hbEZpZWxkVHlwZ
+ SIgbmFtZT0iUXRTdHJ1Y3RXaXRoT3B0aW9uYWxGaWVsZFR5cGUiLz4KIDx4czpjb21wbGV4V
+ HlwZSBuYW1lPSJMaXN0T2ZRdFN0cnVjdFdpdGhPcHRpb25hbEZpZWxkVHlwZSI+CiAgPHhzO
+ nNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib
+ 3VuZGVkIiB0eXBlPSJ0bnM6UXRTdHJ1Y3RXaXRoT3B0aW9uYWxGaWVsZFR5cGUiIG5hbWU9I
+ lF0U3RydWN0V2l0aE9wdGlvbmFsRmllbGRUeXBlIiBuaWxsYWJsZT0idHJ1ZSIvPgogIDwve
+ HM6c2VxdWVuY2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZW1lbnQgdHlwZT0idG5zO
+ kxpc3RPZlF0U3RydWN0V2l0aE9wdGlvbmFsRmllbGRUeXBlIiBuYW1lPSJMaXN0T2ZRdFN0c
+ nVjdFdpdGhPcHRpb25hbEZpZWxkVHlwZSIgbmlsbGFibGU9InRydWUiLz4KIDx4czpjb21wb
+ GV4VHlwZSBuYW1lPSJRdFRlc3RTdHJ1Y3RUeXBlIj4KICA8eHM6Y29tcGxleENvbnRlbnQgb
+ Wl4ZWQ9ImZhbHNlIj4KICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ0bnM6UXRBYnN0cmFjdEJhc
+ 2VTdHJ1Y3QiPgogICAgPHhzOnNlcXVlbmNlPgogICAgIDx4czplbGVtZW50IG1pbk9jY3Vyc
+ z0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ4czpzdHJpbmciIG5hbWU9IlN0cmluZ01lbWJlc
+ iIvPgogICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlP
+ SJ1YTpMb2NhbGl6ZWRUZXh0IiBuYW1lPSJMb2NhbGl6ZWRUZXh0TWVtYmVyIi8+CiAgICAgP
+ HhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InVhOlF1YWxpZ
+ mllZE5hbWUiIG5hbWU9IlF1YWxpZmllZE5hbWVNZW1iZXIiLz4KICAgICA8eHM6ZWxlbWVud
+ CBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgdHlwZT0idWE6TGlzdE9mSW50NjQiIG5hb
+ WU9IkludDY0QXJyYXlNZW1iZXIiLz4KICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiI
+ G1heE9jY3Vycz0iMSIgdHlwZT0idG5zOlF0VGVzdEVudW1lcmF0aW9uIiBuYW1lPSJFbnVtT
+ WVtYmVyIi8+CiAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiI
+ HR5cGU9InRuczpRdElubmVyVGVzdFN0cnVjdFR5cGUiIG5hbWU9Ik5lc3RlZFN0cnVjdE1lb
+ WJlciIvPgogICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0e
+ XBlPSJ0bnM6TGlzdE9mUXRJbm5lclRlc3RTdHJ1Y3RUeXBlIiBuYW1lPSJOZXN0ZWRTdHJ1Y
+ 3RBcnJheU1lbWJlciIvPgogICAgPC94czpzZXF1ZW5jZT4KICAgPC94czpleHRlbnNpb24+C
+ iAgPC94czpjb21wbGV4Q29udGVudD4KIDwveHM6Y29tcGxleFR5cGU+CiA8eHM6ZWxlbWVud
+ CB0eXBlPSJ0bnM6UXRUZXN0U3RydWN0VHlwZSIgbmFtZT0iUXRUZXN0U3RydWN0VHlwZSIvP
+ gogPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ikxpc3RPZlF0VGVzdFN0cnVjdFR5cGUiPgogIDx4c
+ zpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuY
+ m91bmRlZCIgdHlwZT0idG5zOlF0VGVzdFN0cnVjdFR5cGUiIG5hbWU9IlF0VGVzdFN0cnVjd
+ FR5cGUiIG5pbGxhYmxlPSJ0cnVlIi8+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tcGxle
+ FR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6TGlzdE9mUXRUZXN0U3RydWN0VHlwZSIgb
+ mFtZT0iTGlzdE9mUXRUZXN0U3RydWN0VHlwZSIgbmlsbGFibGU9InRydWUiLz4KIDx4czpjb
+ 21wbGV4VHlwZSBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iPgogIDx4c
+ zpjb21wbGV4Q29udGVudCBtaXhlZD0iZmFsc2UiPgogICA8eHM6ZXh0ZW5zaW9uIGJhc2U9I
+ nRuczpRdEFic3RyYWN0QmFzZVN0cnVjdCI+CiAgICA8eHM6c2VxdWVuY2U+CiAgICAgPHhzO
+ mVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9IjEiIHR5cGU9InVhOkRpYWdub3N0a
+ WNJbmZvIiBuYW1lPSJEaWFnbm9zdGljSW5mb01lbWJlciIvPgogICAgIDx4czplbGVtZW50I
+ G1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSIxIiB0eXBlPSJ1YTpMaXN0T2ZEaWFnbm9zdGljS
+ W5mbyIgbmFtZT0iRGlhZ25vc3RpY0luZm9BcnJheU1lbWJlciIvPgogICAgPC94czpzZXF1Z
+ W5jZT4KICAgPC94czpleHRlbnNpb24+CiAgPC94czpjb21wbGV4Q29udGVudD4KIDwveHM6Y
+ 29tcGxleFR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6UXRUZXN0U3RydWN0V2l0aERpY
+ Wdub3N0aWNJbmZvIiBuYW1lPSJRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY0luZm8iLz4KI
+ Dx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdFRlc3RTdHJ1Y3RXaXRoRGlhZ25vc3RpY
+ 0luZm8iPgogIDx4czpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtY
+ XhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0idG5zOlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zd
+ GljSW5mbyIgbmFtZT0iUXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvIiBuaWxsYWJsZ
+ T0idHJ1ZSIvPgogIDwveHM6c2VxdWVuY2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZ
+ W1lbnQgdHlwZT0idG5zOkxpc3RPZlF0VGVzdFN0cnVjdFdpdGhEaWFnbm9zdGljSW5mbyIgb
+ mFtZT0iTGlzdE9mUXRUZXN0U3RydWN0V2l0aERpYWdub3N0aWNJbmZvIiBuaWxsYWJsZT0id
+ HJ1ZSIvPgogPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlF0VGVzdFVuaW9uVHlwZSI+CiAgPHhzO
+ nNlcXVlbmNlPgogICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgd
+ HlwZT0ieHM6dW5zaWduZWRJbnQiIG5hbWU9IlN3aXRjaEZpZWxkIi8+CiAgIDx4czpjaG9pY
+ 2U+CiAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0iMSIgdHlwZT0ie
+ HM6bG9uZyIgbmFtZT0iTWVtYmVyMSIvPgogICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwI
+ iBtYXhPY2N1cnM9IjEiIHR5cGU9InRuczpRdElubmVyVGVzdFN0cnVjdFR5cGUiIG5hbWU9I
+ k1lbWJlcjIiLz4KICAgPC94czpjaG9pY2U+CiAgPC94czpzZXF1ZW5jZT4KIDwveHM6Y29tc
+ GxleFR5cGU+CiA8eHM6ZWxlbWVudCB0eXBlPSJ0bnM6UXRUZXN0VW5pb25UeXBlIiBuYW1lP
+ SJRdFRlc3RVbmlvblR5cGUiLz4KIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMaXN0T2ZRdFRlc
+ 3RVbmlvblR5cGUiPgogIDx4czpzZXF1ZW5jZT4KICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzP
+ SIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgdHlwZT0idG5zOlF0VGVzdFVuaW9uVHlwZSIgb
+ mFtZT0iUXRUZXN0VW5pb25UeXBlIiBuaWxsYWJsZT0idHJ1ZSIvPgogIDwveHM6c2VxdWVuY
+ 2U+CiA8L3hzOmNvbXBsZXhUeXBlPgogPHhzOmVsZW1lbnQgdHlwZT0idG5zOkxpc3RPZlF0V
+ GVzdFVuaW9uVHlwZSIgbmFtZT0iTGlzdE9mUXRUZXN0VW5pb25UeXBlIiBuaWxsYWJsZT0id
+ HJ1ZSIvPgo8L3hzOnNjaGVtYT4K</uax:ByteString>
+ </Value>
+ </UAVariable>
+ <UAVariable DataType="String" ParentNodeId="ns=1;i=6014" NodeId="ns=1;i=6015" BrowseName="NamespaceUri">
+ <DisplayName>NamespaceUri</DisplayName>
+ <References>
+ <Reference ReferenceType="HasProperty" IsForward="false">ns=1;i=6014</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=68</Reference>
+ </References>
+ <Value>
+ <uax:String>http://qt-project.org/QtOpcUaTestModel/Types.xsd</uax:String>
+ </Value>
+ </UAVariable>
+ <UAObject NodeId="ns=1;i=5009" BrowseName="1:DecoderTestNodes">
+ <DisplayName>DecoderTestNodes</DisplayName>
+ <References>
+ <Reference ReferenceType="Organizes" IsForward="false">i=85</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=61</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6009</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6002</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6006</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6010</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6003</Reference>
+ <Reference ReferenceType="HasComponent">ns=1;i=6011</Reference>
+ </References>
+ </UAObject>
+ <UAVariable DataType="QtTestStructType" NodeId="ns=1;i=6009" BrowseName="1:NestedStruct" AccessLevel="3">
+ <DisplayName>NestedStruct</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAVariable DataType="QtStructWithOptionalFieldType" NodeId="ns=1;i=6002" BrowseName="1:StructWihoutOptionalField" AccessLevel="3">
+ <DisplayName>StructWihoutOptionalField</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAVariable DataType="QtTestStructWithDiagnosticInfo" NodeId="ns=1;i=6006" BrowseName="1:StructWithDiagnosticInfo" AccessLevel="3">
+ <DisplayName>StructWithDiagnosticInfo</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAVariable DataType="QtStructWithOptionalFieldType" NodeId="ns=1;i=6010" BrowseName="1:StructWithOptionalField" AccessLevel="3">
+ <DisplayName>StructWithOptionalField</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6003" BrowseName="1:UnionWithSecondMember" AccessLevel="3">
+ <DisplayName>UnionWithSecondMember</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAVariable DataType="QtTestUnionType" NodeId="ns=1;i=6011" BrowseName="1:UnionWithFirstMember" AccessLevel="3">
+ <DisplayName>UnionWithFirstMember</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=63</Reference>
+ <Reference ReferenceType="HasComponent" IsForward="false">ns=1;i=5009</Reference>
+ </References>
+ </UAVariable>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5001" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3003</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6020</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5002" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3003</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6021</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5003" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6004</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5004" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3004</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6016</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5005" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3004</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6017</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5006" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3008</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6024</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5007" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3005</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6022</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5008" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3005</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6023</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultBinary" NodeId="ns=1;i=5010" BrowseName="Default Binary">
+ <DisplayName>Default Binary</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3006</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6018</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5011" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3006</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6019</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5012" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3008</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6025</Reference>
+ </References>
+ </UAObject>
+ <UAObject SymbolicName="DefaultXml" NodeId="ns=1;i=5013" BrowseName="Default XML">
+ <DisplayName>Default XML</DisplayName>
+ <References>
+ <Reference ReferenceType="HasEncoding" IsForward="false">ns=1;i=3009</Reference>
+ <Reference ReferenceType="HasTypeDefinition">i=76</Reference>
+ <Reference ReferenceType="HasDescription">ns=1;i=6005</Reference>
+ </References>
+ </UAObject>
+</UANodeSet>
diff --git a/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd
new file mode 100644
index 0000000..0ba049b
--- /dev/null
+++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.xsd
@@ -0,0 +1,113 @@
+<xs:schema elementFormDefault="qualified" targetNamespace="http://qt-project.org/QtOpcUaTestModel/Types.xsd" xmlns:tns="http://qt-project.org/QtOpcUaTestModel/Types.xsd" xmlns:ua="http://opcfoundation.org/UA/2008/02/Types.xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema">
+ <xs:import namespace="http://opcfoundation.org/UA/2008/02/Types.xsd"/>
+ <xs:simpleType name="QtTestEnumeration">
+ <xs:restriction base="xs:string">
+ <xs:enumeration value="Unknown_0"/>
+ <xs:enumeration value="FirstOption_1"/>
+ <xs:enumeration value="SecondOption_2"/>
+ <xs:enumeration value="ThirdOption_3"/>
+ </xs:restriction>
+ </xs:simpleType>
+ <xs:element type="tns:QtTestEnumeration" name="QtTestEnumeration"/>
+ <xs:complexType name="ListOfQtTestEnumeration">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtTestEnumeration" name="QtTestEnumeration" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtTestEnumeration" name="ListOfQtTestEnumeration" nillable="true"/>
+ <xs:complexType name="QtAbstractBaseStruct">
+ <xs:sequence/>
+ </xs:complexType>
+ <xs:element type="tns:QtAbstractBaseStruct" name="QtAbstractBaseStruct"/>
+ <xs:complexType name="ListOfQtAbstractBaseStruct">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtAbstractBaseStruct" name="QtAbstractBaseStruct" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtAbstractBaseStruct" name="ListOfQtAbstractBaseStruct" nillable="true"/>
+ <xs:complexType name="QtInnerTestStructType">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:QtAbstractBaseStruct">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:double" name="DoubleSubtypeMember"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element type="tns:QtInnerTestStructType" name="QtInnerTestStructType"/>
+ <xs:complexType name="ListOfQtInnerTestStructType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtInnerTestStructType" name="QtInnerTestStructType" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtInnerTestStructType" name="ListOfQtInnerTestStructType" nillable="true"/>
+ <xs:complexType name="QtStructWithOptionalFieldType">
+ <xs:sequence>
+ <xs:element minOccurs="0" type="xs:unsignedInt" name="EncodingMask"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:double" name="MandatoryMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:double" name="OptionalMember"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:QtStructWithOptionalFieldType" name="QtStructWithOptionalFieldType"/>
+ <xs:complexType name="ListOfQtStructWithOptionalFieldType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtStructWithOptionalFieldType" name="QtStructWithOptionalFieldType" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtStructWithOptionalFieldType" name="ListOfQtStructWithOptionalFieldType" nillable="true"/>
+ <xs:complexType name="QtTestStructType">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:QtAbstractBaseStruct">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:string" name="StringMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:LocalizedText" name="LocalizedTextMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:QualifiedName" name="QualifiedNameMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:ListOfInt64" name="Int64ArrayMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="tns:QtTestEnumeration" name="EnumMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="tns:QtInnerTestStructType" name="NestedStructMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="tns:ListOfQtInnerTestStructType" name="NestedStructArrayMember"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element type="tns:QtTestStructType" name="QtTestStructType"/>
+ <xs:complexType name="ListOfQtTestStructType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtTestStructType" name="QtTestStructType" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtTestStructType" name="ListOfQtTestStructType" nillable="true"/>
+ <xs:complexType name="QtTestStructWithDiagnosticInfo">
+ <xs:complexContent mixed="false">
+ <xs:extension base="tns:QtAbstractBaseStruct">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:DiagnosticInfo" name="DiagnosticInfoMember"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="ua:ListOfDiagnosticInfo" name="DiagnosticInfoArrayMember"/>
+ </xs:sequence>
+ </xs:extension>
+ </xs:complexContent>
+ </xs:complexType>
+ <xs:element type="tns:QtTestStructWithDiagnosticInfo" name="QtTestStructWithDiagnosticInfo"/>
+ <xs:complexType name="ListOfQtTestStructWithDiagnosticInfo">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtTestStructWithDiagnosticInfo" name="QtTestStructWithDiagnosticInfo" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtTestStructWithDiagnosticInfo" name="ListOfQtTestStructWithDiagnosticInfo" nillable="true"/>
+ <xs:complexType name="QtTestUnionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:unsignedInt" name="SwitchField"/>
+ <xs:choice>
+ <xs:element minOccurs="0" maxOccurs="1" type="xs:long" name="Member1"/>
+ <xs:element minOccurs="0" maxOccurs="1" type="tns:QtInnerTestStructType" name="Member2"/>
+ </xs:choice>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:QtTestUnionType" name="QtTestUnionType"/>
+ <xs:complexType name="ListOfQtTestUnionType">
+ <xs:sequence>
+ <xs:element minOccurs="0" maxOccurs="unbounded" type="tns:QtTestUnionType" name="QtTestUnionType" nillable="true"/>
+ </xs:sequence>
+ </xs:complexType>
+ <xs:element type="tns:ListOfQtTestUnionType" name="ListOfQtTestUnionType" nillable="true"/>
+</xs:schema>
diff --git a/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c
new file mode 100644
index 0000000..ec5a9b4
--- /dev/null
+++ b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.c
@@ -0,0 +1,1370 @@
+/* WARNING: This is a generated file.
+ * Any manual changes will be overwritten. */
+
+#include "namespace_qtopcuatestmodel_generated.h"
+
+
+/* QtTestUnionType - ns=1;i=3005 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_0_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestUnionType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3005LU),
+UA_NODEID_NUMERIC(ns[0], 12756LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestUnionType"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_0_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3005LU)
+);
+}
+
+/* Default XML - ns=1;i=5008 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_1_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5008LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5008LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3005LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_1_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5008LU)
+);
+}
+
+/* Default Binary - ns=1;i=5007 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_2_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5007LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5007LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3005LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_2_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5007LU)
+);
+}
+
+/* QtAbstractBaseStruct - ns=1;i=3008 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_3_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.isAbstract = true;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtAbstractBaseStruct");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 22LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtAbstractBaseStruct"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_3_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3008LU)
+);
+}
+
+/* Default XML - ns=1;i=5012 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_4_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5012LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5012LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3008LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_4_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5012LU)
+);
+}
+
+/* Default Binary - ns=1;i=5006 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_5_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5006LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5006LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3008LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_5_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5006LU)
+);
+}
+
+/* QtTestStructWithDiagnosticInfo - ns=1;i=3009 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_6_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDiagnosticInfo");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3009LU),
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDiagnosticInfo"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_6_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3009LU)
+);
+}
+
+/* Default XML - ns=1;i=5013 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5013LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5013LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3009LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_7_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5013LU)
+);
+}
+
+/* Default Binary - ns=1;i=5003 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5003LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5003LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3009LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_8_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5003LU)
+);
+}
+
+/* QtStructWithOptionalFieldType - ns=1;i=3006 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtStructWithOptionalFieldType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3006LU),
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtStructWithOptionalFieldType"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_9_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3006LU)
+);
+}
+
+/* Default XML - ns=1;i=5011 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5011LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5011LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3006LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_10_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5011LU)
+);
+}
+
+/* Default Binary - ns=1;i=5010 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5010LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5010LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3006LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_11_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5010LU)
+);
+}
+
+/* QtInnerTestStructType - ns=1;i=3004 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtInnerTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3004LU),
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtInnerTestStructType"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_12_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3004LU)
+);
+}
+
+/* Default XML - ns=1;i=5005 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5005LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5005LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3004LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_13_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5005LU)
+);
+}
+
+/* Default Binary - ns=1;i=5004 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5004LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5004LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3004LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_14_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5004LU)
+);
+}
+
+/* QtTestStructType - ns=1;i=3003 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3003LU),
+UA_NODEID_NUMERIC(ns[1], 3008LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructType"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_15_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3003LU)
+);
+}
+
+/* Default XML - ns=1;i=5002 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default XML");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5002LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default XML"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5002LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3003LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_16_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5002LU)
+);
+}
+
+/* Default Binary - ns=1;i=5001 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "Default Binary");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5001LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_NODEID_NUMERIC(ns[0], 0LU),
+UA_QUALIFIEDNAME(ns[0], "Default Binary"),
+UA_NODEID_NUMERIC(ns[0], 76LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 5001LU), UA_NODEID_NUMERIC(ns[0], 38LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 3003LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_17_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5001LU)
+);
+}
+
+/* MyDoubleSubtype - ns=1;i=3007 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "MyDoubleSubtype");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3007LU),
+UA_NODEID_NUMERIC(ns[0], 11LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "MyDoubleSubtype"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_18_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3007LU)
+);
+}
+
+/* QtTestEnumeration - ns=1;i=3002 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_DataTypeAttributes attr = UA_DataTypeAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestEnumeration");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_DATATYPE,
+UA_NODEID_NUMERIC(ns[1], 3002LU),
+UA_NODEID_NUMERIC(ns[0], 29LU),
+UA_NODEID_NUMERIC(ns[0], 45LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestEnumeration"),
+ UA_NODEID_NULL,
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_DATATYPEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_19_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 3002LU)
+);
+}
+
+/* EnumStrings - ns=1;i=6001 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+attr.valueRank = 1;
+attr.arrayDimensionsSize = 1;
+UA_UInt32 arrayDimensions[1];
+arrayDimensions[0] = 4;
+attr.arrayDimensions = &arrayDimensions[0];
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 21LU);
+UA_LocalizedText variablenode_ns_1_i_6001_variant_DataContents[4];
+variablenode_ns_1_i_6001_variant_DataContents[0] = UA_LOCALIZEDTEXT("", "Unknown");
+variablenode_ns_1_i_6001_variant_DataContents[1] = UA_LOCALIZEDTEXT("", "FirstOption");
+variablenode_ns_1_i_6001_variant_DataContents[2] = UA_LOCALIZEDTEXT("", "SecondOption");
+variablenode_ns_1_i_6001_variant_DataContents[3] = UA_LOCALIZEDTEXT("", "ThirdOption");
+UA_Variant_setArray(&attr.value, &variablenode_ns_1_i_6001_variant_DataContents, (UA_Int32) 4, &UA_TYPES[UA_TYPES_LOCALIZEDTEXT]);
+attr.displayName = UA_LOCALIZEDTEXT("", "EnumStrings");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6001LU),
+UA_NODEID_NUMERIC(ns[1], 3002LU),
+UA_NODEID_NUMERIC(ns[0], 46LU),
+UA_QUALIFIEDNAME(ns[0], "EnumStrings"),
+UA_NODEID_NUMERIC(ns[0], 68LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6001LU), UA_NODEID_NUMERIC(ns[0], 37LU), UA_EXPANDEDNODEID_NUMERIC(ns[0], 78LU), true);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_20_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6001LU)
+);
+}
+
+/* DecoderTestNodes - ns=1;i=5009 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_ObjectAttributes attr = UA_ObjectAttributes_default;
+attr.displayName = UA_LOCALIZEDTEXT("", "DecoderTestNodes");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_OBJECT,
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 85LU),
+UA_NODEID_NUMERIC(ns[0], 35LU),
+UA_QUALIFIEDNAME(ns[1], "DecoderTestNodes"),
+UA_NODEID_NUMERIC(ns[0], 61LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_OBJECTATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_21_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 5009LU)
+);
+}
+
+/* UnionWithFirstMember - ns=1;i=6011 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3005LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "UnionWithFirstMember");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6011LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "UnionWithFirstMember"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_22_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6011LU)
+);
+}
+
+/* StructWithOptionalField - ns=1;i=6010 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3006LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "StructWithOptionalField");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6010LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "StructWithOptionalField"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_23_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6010LU)
+);
+}
+
+/* NestedStruct - ns=1;i=6009 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3003LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "NestedStruct");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6009LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "NestedStruct"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_24_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6009LU)
+);
+}
+
+/* StructWithDiagnosticInfo - ns=1;i=6006 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3009LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "StructWithDiagnosticInfo");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6006LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "StructWithDiagnosticInfo"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_25_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6006LU)
+);
+}
+
+/* UnionWithSecondMember - ns=1;i=6003 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3005LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "UnionWithSecondMember");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6003LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "UnionWithSecondMember"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_26_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6003LU)
+);
+}
+
+/* StructWihoutOptionalField - ns=1;i=6002 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 3;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[1], 3006LU);
+attr.displayName = UA_LOCALIZEDTEXT("", "StructWihoutOptionalField");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6002LU),
+UA_NODEID_NUMERIC(ns[1], 5009LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "StructWihoutOptionalField"),
+UA_NODEID_NUMERIC(ns[0], 63LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_27_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6002LU)
+);
+}
+
+/* TypeDictionary - ns=1;i=6014 */
+static const UA_Byte variablenode_ns_1_i_6014_variant_DataContents_byteArray[6075] = {60, 120, 115, 58, 115, 99, 104, 101, 109, 97, 32, 101, 108, 101, 109, 101, 110, 116, 70, 111, 114, 109, 68, 101, 102, 97, 117, 108, 116, 61, 34, 113, 117, 97, 108, 105, 102, 105, 101, 100, 34, 32, 116, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 32, 120, 109, 108, 110, 115, 58, 120, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 34, 62, 10, 32, 60, 120, 115, 58, 105, 109, 112, 111, 114, 116, 32, 110, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 50, 48, 48, 56, 47, 48, 50, 47, 84, 121, 112, 101, 115, 46, 120, 115, 100, 34, 47, 62, 10, 32, 60, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 95, 48, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 95, 49, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 95, 50, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 32, 118, 97, 108, 117, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 95, 51, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 114, 101, 115, 116, 114, 105, 99, 116, 105, 111, 110, 62, 10, 32, 60, 47, 120, 115, 58, 115, 105, 109, 112, 108, 101, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 47, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 99, 111, 100, 105, 110, 103, 77, 97, 115, 107, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 100, 111, 117, 98, 108, 101, 34, 32, 110, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 115, 116, 114, 105, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 110, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 73, 110, 116, 54, 52, 34, 32, 110, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 110, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 32, 109, 105, 120, 101, 100, 61, 34, 102, 97, 108, 115, 101, 34, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 32, 98, 97, 115, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 117, 97, 58, 76, 105, 115, 116, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 101, 120, 116, 101, 110, 115, 105, 111, 110, 62, 10, 32, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 67, 111, 110, 116, 101, 110, 116, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 117, 110, 115, 105, 103, 110, 101, 100, 73, 110, 116, 34, 32, 110, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 32, 60, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 120, 115, 58, 108, 111, 110, 103, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 49, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 32, 32, 60, 47, 120, 115, 58, 99, 104, 111, 105, 99, 101, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 47, 62, 10, 32, 60, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 32, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 109, 105, 110, 79, 99, 99, 117, 114, 115, 61, 34, 48, 34, 32, 109, 97, 120, 79, 99, 99, 117, 114, 115, 61, 34, 117, 110, 98, 111, 117, 110, 100, 101, 100, 34, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 32, 32, 60, 47, 120, 115, 58, 115, 101, 113, 117, 101, 110, 99, 101, 62, 10, 32, 60, 47, 120, 115, 58, 99, 111, 109, 112, 108, 101, 120, 84, 121, 112, 101, 62, 10, 32, 60, 120, 115, 58, 101, 108, 101, 109, 101, 110, 116, 32, 116, 121, 112, 101, 61, 34, 116, 110, 115, 58, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 97, 109, 101, 61, 34, 76, 105, 115, 116, 79, 102, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 32, 110, 105, 108, 108, 97, 98, 108, 101, 61, 34, 116, 114, 117, 101, 34, 47, 62, 10, 60, 47, 120, 115, 58, 115, 99, 104, 101, 109, 97, 62, 10};
+
+
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 15LU);
+UA_ByteString *variablenode_ns_1_i_6014_variant_DataContents = UA_ByteString_new();
+if (!variablenode_ns_1_i_6014_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_ByteString_init(variablenode_ns_1_i_6014_variant_DataContents);
+variablenode_ns_1_i_6014_variant_DataContents->length = 6075;
+variablenode_ns_1_i_6014_variant_DataContents->data = (UA_Byte *)(void*)(uintptr_t)variablenode_ns_1_i_6014_variant_DataContents_byteArray;
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6014_variant_DataContents, &UA_TYPES[UA_TYPES_BYTESTRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "TypeDictionary");
+#ifdef UA_ENABLE_NODESET_COMPILER_DESCRIPTIONS
+attr.description = UA_LOCALIZEDTEXT("", "Collects the data type descriptions of http://qt-project.org/QtOpcUaTestModel/");
+#endif
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 92LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "TypeDictionary"),
+UA_NODEID_NUMERIC(ns[0], 72LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+variablenode_ns_1_i_6014_variant_DataContents->data = NULL;
+variablenode_ns_1_i_6014_variant_DataContents->length = 0;
+UA_ByteString_delete(variablenode_ns_1_i_6014_variant_DataContents);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_28_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6014LU)
+);
+}
+
+/* QtAbstractBaseStruct - ns=1;i=6025 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6025_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6025_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6025_variant_DataContents);
+*variablenode_ns_1_i_6025_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtAbstractBaseStruct']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6025_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtAbstractBaseStruct");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6025LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtAbstractBaseStruct"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6025_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6025LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5012LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_29_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6025LU)
+);
+}
+
+/* QtTestUnionType - ns=1;i=6023 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6023_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6023_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6023_variant_DataContents);
+*variablenode_ns_1_i_6023_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtTestUnionType']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6023_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestUnionType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6023LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestUnionType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6023_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6023LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5008LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_30_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6023LU)
+);
+}
+
+/* QtTestStructType - ns=1;i=6021 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6021_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6021_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6021_variant_DataContents);
+*variablenode_ns_1_i_6021_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtTestStructType']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6021_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6021LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6021_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6021LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5002LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_31_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6021LU)
+);
+}
+
+/* QtStructWithOptionalFieldType - ns=1;i=6019 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6019_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6019_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6019_variant_DataContents);
+*variablenode_ns_1_i_6019_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtStructWithOptionalFieldType']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6019_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtStructWithOptionalFieldType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6019LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtStructWithOptionalFieldType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6019_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6019LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5011LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_32_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6019LU)
+);
+}
+
+/* QtInnerTestStructType - ns=1;i=6017 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6017_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6017_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6017_variant_DataContents);
+*variablenode_ns_1_i_6017_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtInnerTestStructType']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6017_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtInnerTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6017LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtInnerTestStructType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6017_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6017LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5005LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_33_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6017LU)
+);
+}
+
+/* NamespaceUri - ns=1;i=6015 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6015_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6015_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6015_variant_DataContents);
+*variablenode_ns_1_i_6015_variant_DataContents = UA_STRING_ALLOC("http://qt-project.org/QtOpcUaTestModel/Types.xsd");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6015_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "NamespaceUri");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6015LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 46LU),
+UA_QUALIFIEDNAME(ns[0], "NamespaceUri"),
+UA_NODEID_NUMERIC(ns[0], 68LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6015_variant_DataContents);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_34_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6015LU)
+);
+}
+
+/* QtTestStructWithDiagnosticInfo - ns=1;i=6005 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6005_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6005_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6005_variant_DataContents);
+*variablenode_ns_1_i_6005_variant_DataContents = UA_STRING_ALLOC("//xs:element[@name='QtTestStructWithDiagnosticInfo']");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6005_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDiagnosticInfo");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6005LU),
+UA_NODEID_NUMERIC(ns[1], 6014LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDiagnosticInfo"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6005_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6005LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5013LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_35_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6005LU)
+);
+}
+
+/* TypeDictionary - ns=1;i=6012 */
+static const UA_Byte variablenode_ns_1_i_6012_variant_DataContents_byteArray[2880] = {60, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 32, 120, 109, 108, 110, 115, 58, 120, 115, 105, 61, 34, 104, 116, 116, 112, 58, 47, 47, 119, 119, 119, 46, 119, 51, 46, 111, 114, 103, 47, 50, 48, 48, 49, 47, 88, 77, 76, 83, 99, 104, 101, 109, 97, 45, 105, 110, 115, 116, 97, 110, 99, 101, 34, 32, 120, 109, 108, 110, 115, 58, 116, 110, 115, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 32, 68, 101, 102, 97, 117, 108, 116, 66, 121, 116, 101, 79, 114, 100, 101, 114, 61, 34, 76, 105, 116, 116, 108, 101, 69, 110, 100, 105, 97, 110, 34, 32, 120, 109, 108, 110, 115, 58, 111, 112, 99, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 66, 105, 110, 97, 114, 121, 83, 99, 104, 101, 109, 97, 47, 34, 32, 120, 109, 108, 110, 115, 58, 117, 97, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 32, 84, 97, 114, 103, 101, 116, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 113, 116, 45, 112, 114, 111, 106, 101, 99, 116, 46, 111, 114, 103, 47, 81, 116, 79, 112, 99, 85, 97, 84, 101, 115, 116, 77, 111, 100, 101, 108, 47, 34, 62, 10, 32, 60, 111, 112, 99, 58, 73, 109, 112, 111, 114, 116, 32, 78, 97, 109, 101, 115, 112, 97, 99, 101, 61, 34, 104, 116, 116, 112, 58, 47, 47, 111, 112, 99, 102, 111, 117, 110, 100, 97, 116, 105, 111, 110, 46, 111, 114, 103, 47, 85, 65, 47, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 69, 120, 116, 101, 110, 115, 105, 111, 110, 79, 98, 106, 101, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 47, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 68, 111, 117, 98, 108, 101, 83, 117, 98, 116, 121, 112, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 79, 112, 116, 105, 111, 110, 97, 108, 70, 105, 101, 108, 100, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 61, 34, 51, 49, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 66, 105, 116, 34, 32, 78, 97, 109, 101, 61, 34, 82, 101, 115, 101, 114, 118, 101, 100, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 77, 97, 110, 100, 97, 116, 111, 114, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 83, 112, 101, 99, 105, 102, 105, 101, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 68, 111, 117, 98, 108, 101, 34, 32, 78, 97, 109, 101, 61, 34, 79, 112, 116, 105, 111, 110, 97, 108, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 67, 104, 97, 114, 65, 114, 114, 97, 121, 34, 32, 78, 97, 109, 101, 61, 34, 83, 116, 114, 105, 110, 103, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 34, 32, 78, 97, 109, 101, 61, 34, 76, 111, 99, 97, 108, 105, 122, 101, 100, 84, 101, 120, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 34, 32, 78, 97, 109, 101, 61, 34, 81, 117, 97, 108, 105, 102, 105, 101, 100, 78, 97, 109, 101, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 78, 97, 109, 101, 61, 34, 73, 110, 116, 54, 52, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 69, 110, 117, 109, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 78, 97, 109, 101, 61, 34, 78, 101, 115, 116, 101, 100, 83, 116, 114, 117, 99, 116, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 116, 110, 115, 58, 81, 116, 65, 98, 115, 116, 114, 97, 99, 116, 66, 97, 115, 101, 83, 116, 114, 117, 99, 116, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 87, 105, 116, 104, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 76, 101, 110, 103, 116, 104, 70, 105, 101, 108, 100, 61, 34, 78, 111, 79, 102, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 117, 97, 58, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 34, 32, 78, 97, 109, 101, 61, 34, 68, 105, 97, 103, 110, 111, 115, 116, 105, 99, 73, 110, 102, 111, 65, 114, 114, 97, 121, 77, 101, 109, 98, 101, 114, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 32, 66, 97, 115, 101, 84, 121, 112, 101, 61, 34, 117, 97, 58, 85, 110, 105, 111, 110, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 85, 110, 105, 111, 110, 84, 121, 112, 101, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 85, 73, 110, 116, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 111, 112, 99, 58, 73, 110, 116, 54, 52, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 49, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 70, 105, 101, 108, 100, 32, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 61, 34, 83, 119, 105, 116, 99, 104, 70, 105, 101, 108, 100, 34, 32, 84, 121, 112, 101, 78, 97, 109, 101, 61, 34, 116, 110, 115, 58, 81, 116, 73, 110, 110, 101, 114, 84, 101, 115, 116, 83, 116, 114, 117, 99, 116, 84, 121, 112, 101, 34, 32, 83, 119, 105, 116, 99, 104, 86, 97, 108, 117, 101, 61, 34, 50, 34, 32, 78, 97, 109, 101, 61, 34, 77, 101, 109, 98, 101, 114, 50, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 83, 116, 114, 117, 99, 116, 117, 114, 101, 100, 84, 121, 112, 101, 62, 10, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 32, 76, 101, 110, 103, 116, 104, 73, 110, 66, 105, 116, 115, 61, 34, 51, 50, 34, 32, 78, 97, 109, 101, 61, 34, 81, 116, 84, 101, 115, 116, 69, 110, 117, 109, 101, 114, 97, 116, 105, 111, 110, 34, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 85, 110, 107, 110, 111, 119, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 48, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 70, 105, 114, 115, 116, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 49, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 83, 101, 99, 111, 110, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 50, 34, 47, 62, 10, 32, 32, 60, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 86, 97, 108, 117, 101, 32, 78, 97, 109, 101, 61, 34, 84, 104, 105, 114, 100, 79, 112, 116, 105, 111, 110, 34, 32, 86, 97, 108, 117, 101, 61, 34, 51, 34, 47, 62, 10, 32, 60, 47, 111, 112, 99, 58, 69, 110, 117, 109, 101, 114, 97, 116, 101, 100, 84, 121, 112, 101, 62, 10, 60, 47, 111, 112, 99, 58, 84, 121, 112, 101, 68, 105, 99, 116, 105, 111, 110, 97, 114, 121, 62, 10};
+
+
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 15LU);
+UA_ByteString *variablenode_ns_1_i_6012_variant_DataContents = UA_ByteString_new();
+if (!variablenode_ns_1_i_6012_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_ByteString_init(variablenode_ns_1_i_6012_variant_DataContents);
+variablenode_ns_1_i_6012_variant_DataContents->length = 2880;
+variablenode_ns_1_i_6012_variant_DataContents->data = (UA_Byte *)(void*)(uintptr_t)variablenode_ns_1_i_6012_variant_DataContents_byteArray;
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6012_variant_DataContents, &UA_TYPES[UA_TYPES_BYTESTRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "TypeDictionary");
+#ifdef UA_ENABLE_NODESET_COMPILER_DESCRIPTIONS
+attr.description = UA_LOCALIZEDTEXT("", "Collects the data type descriptions of http://qt-project.org/QtOpcUaTestModel/");
+#endif
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 93LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "TypeDictionary"),
+UA_NODEID_NUMERIC(ns[0], 72LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+variablenode_ns_1_i_6012_variant_DataContents->data = NULL;
+variablenode_ns_1_i_6012_variant_DataContents->length = 0;
+UA_ByteString_delete(variablenode_ns_1_i_6012_variant_DataContents);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_36_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6012LU)
+);
+}
+
+/* QtAbstractBaseStruct - ns=1;i=6024 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6024_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6024_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6024_variant_DataContents);
+*variablenode_ns_1_i_6024_variant_DataContents = UA_STRING_ALLOC("QtAbstractBaseStruct");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6024_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtAbstractBaseStruct");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6024LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtAbstractBaseStruct"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6024_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6024LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5006LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_37_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6024LU)
+);
+}
+
+/* QtTestUnionType - ns=1;i=6022 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6022_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6022_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6022_variant_DataContents);
+*variablenode_ns_1_i_6022_variant_DataContents = UA_STRING_ALLOC("QtTestUnionType");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6022_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestUnionType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6022LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestUnionType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6022_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6022LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5007LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_38_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6022LU)
+);
+}
+
+/* QtTestStructType - ns=1;i=6020 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6020_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6020_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6020_variant_DataContents);
+*variablenode_ns_1_i_6020_variant_DataContents = UA_STRING_ALLOC("QtTestStructType");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6020_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6020LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6020_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6020LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5001LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_39_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6020LU)
+);
+}
+
+/* QtStructWithOptionalFieldType - ns=1;i=6018 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6018_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6018_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6018_variant_DataContents);
+*variablenode_ns_1_i_6018_variant_DataContents = UA_STRING_ALLOC("QtStructWithOptionalFieldType");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6018_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtStructWithOptionalFieldType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6018LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtStructWithOptionalFieldType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6018_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6018LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5010LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_40_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6018LU)
+);
+}
+
+/* QtInnerTestStructType - ns=1;i=6016 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6016_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6016_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6016_variant_DataContents);
+*variablenode_ns_1_i_6016_variant_DataContents = UA_STRING_ALLOC("QtInnerTestStructType");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6016_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtInnerTestStructType");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6016LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtInnerTestStructType"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6016_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6016LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5004LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_41_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6016LU)
+);
+}
+
+/* NamespaceUri - ns=1;i=6013 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6013_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6013_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6013_variant_DataContents);
+*variablenode_ns_1_i_6013_variant_DataContents = UA_STRING_ALLOC("http://qt-project.org/QtOpcUaTestModel/");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6013_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "NamespaceUri");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6013LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 46LU),
+UA_QUALIFIEDNAME(ns[0], "NamespaceUri"),
+UA_NODEID_NUMERIC(ns[0], 68LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6013_variant_DataContents);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_42_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6013LU)
+);
+}
+
+/* QtTestStructWithDiagnosticInfo - ns=1;i=6004 */
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_begin(UA_Server *server, UA_UInt16* ns) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+UA_VariableAttributes attr = UA_VariableAttributes_default;
+attr.minimumSamplingInterval = 0.000000;
+attr.userAccessLevel = 1;
+attr.accessLevel = 1;
+/* Value rank inherited */
+attr.valueRank = -2;
+attr.dataType = UA_NODEID_NUMERIC(ns[0], 12LU);
+UA_String *variablenode_ns_1_i_6004_variant_DataContents = UA_String_new();
+if (!variablenode_ns_1_i_6004_variant_DataContents) return UA_STATUSCODE_BADOUTOFMEMORY;
+UA_String_init(variablenode_ns_1_i_6004_variant_DataContents);
+*variablenode_ns_1_i_6004_variant_DataContents = UA_STRING_ALLOC("QtTestStructWithDiagnosticInfo");
+UA_Variant_setScalar(&attr.value, variablenode_ns_1_i_6004_variant_DataContents, &UA_TYPES[UA_TYPES_STRING]);
+attr.displayName = UA_LOCALIZEDTEXT("", "QtTestStructWithDiagnosticInfo");
+retVal |= UA_Server_addNode_begin(server, UA_NODECLASS_VARIABLE,
+UA_NODEID_NUMERIC(ns[1], 6004LU),
+UA_NODEID_NUMERIC(ns[1], 6012LU),
+UA_NODEID_NUMERIC(ns[0], 47LU),
+UA_QUALIFIEDNAME(ns[1], "QtTestStructWithDiagnosticInfo"),
+UA_NODEID_NUMERIC(ns[0], 69LU),
+(const UA_NodeAttributes*)&attr, &UA_TYPES[UA_TYPES_VARIABLEATTRIBUTES],NULL, NULL);
+UA_String_delete(variablenode_ns_1_i_6004_variant_DataContents);
+retVal |= UA_Server_addReference(server, UA_NODEID_NUMERIC(ns[1], 6004LU), UA_NODEID_NUMERIC(ns[0], 39LU), UA_EXPANDEDNODEID_NUMERIC(ns[1], 5003LU), false);
+return retVal;
+}
+
+static UA_StatusCode function_namespace_qtopcuatestmodel_generated_43_finish(UA_Server *server, UA_UInt16* ns) {
+return UA_Server_addNode_finish(server,
+UA_NODEID_NUMERIC(ns[1], 6004LU)
+);
+}
+
+static UA_DataTypeArray customUA_TYPES_QTOPCUATESTMODEL = {
+ NULL,
+ UA_TYPES_QTOPCUATESTMODEL_COUNT,
+ UA_TYPES_QTOPCUATESTMODEL
+};
+
+UA_StatusCode namespace_qtopcuatestmodel_generated(UA_Server *server) {
+UA_StatusCode retVal = UA_STATUSCODE_GOOD;
+/* Use namespace ids generated by the server */
+UA_UInt16 ns[2];
+ns[0] = UA_Server_addNamespace(server, "http://opcfoundation.org/UA/");
+ns[1] = UA_Server_addNamespace(server, "http://qt-project.org/QtOpcUaTestModel/");
+
+/* Load custom datatype definitions into the server */
+if(UA_TYPES_QTOPCUATESTMODEL_COUNT > 0) {
+customUA_TYPES_QTOPCUATESTMODEL.next = UA_Server_getConfig(server)->customDataTypes;
+UA_Server_getConfig(server)->customDataTypes = &customUA_TYPES_QTOPCUATESTMODEL;
+
+}
+if((retVal = function_namespace_qtopcuatestmodel_generated_0_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_1_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_2_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_3_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_4_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_5_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_6_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_7_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_8_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_9_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_10_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_11_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_12_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_13_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_14_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_15_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_16_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_17_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_18_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_19_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_20_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_21_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_22_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_23_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_24_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_25_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_26_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_27_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_28_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_29_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_30_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_31_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_32_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_33_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_34_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_35_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_36_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_37_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_38_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_39_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_40_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_41_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_42_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_43_begin(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_43_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_42_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_41_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_40_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_39_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_38_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_37_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_36_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_35_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_34_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_33_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_32_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_31_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_30_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_29_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_28_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_27_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_26_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_25_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_24_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_23_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_22_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_21_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_20_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_19_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_18_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_17_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_16_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_15_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_14_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_13_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_12_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_11_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_10_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_9_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_8_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_7_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_6_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_5_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_4_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_3_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_2_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_1_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+if((retVal = function_namespace_qtopcuatestmodel_generated_0_finish(server, ns)) != UA_STATUSCODE_GOOD) return retVal;
+return retVal;
+}
diff --git a/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.h b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.h
new file mode 100644
index 0000000..2485159
--- /dev/null
+++ b/tests/open62541-testserver/generated/namespace_qtopcuatestmodel_generated.h
@@ -0,0 +1,23 @@
+/* WARNING: This is a generated file.
+ * Any manual changes will be overwritten. */
+
+#ifndef NAMESPACE_QTOPCUATESTMODEL_GENERATED_H_
+#define NAMESPACE_QTOPCUATESTMODEL_GENERATED_H_
+
+
+#ifdef UA_ENABLE_AMALGAMATION
+# include "open62541.h"
+#else
+# include <open62541/server.h>
+#endif
+#include "types_qtopcuatestmodel_generated.h"
+
+
+
+_UA_BEGIN_DECLS
+
+extern UA_StatusCode namespace_qtopcuatestmodel_generated(UA_Server *server);
+
+_UA_END_DECLS
+
+#endif /* NAMESPACE_QTOPCUATESTMODEL_GENERATED_H_ */
diff --git a/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h b/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h
new file mode 100644
index 0000000..5102890
--- /dev/null
+++ b/tests/open62541-testserver/generated/qtopcuatestmodel_nodeids.h
@@ -0,0 +1,58 @@
+/**********************************
+ * Autogenerated -- do not modify *
+ **********************************/
+
+#ifndef UA_NODEIDS_QTOPCUATESTMODEL_H_
+#define UA_NODEIDS_QTOPCUATESTMODEL_H_
+
+/**
+ * Namespace Zero NodeIds
+ * ----------------------
+ * Numeric identifiers of standard-defined nodes in namespace zero. The
+ * following definitions are autogenerated from a CSV file */
+
+#define UA_QTOPCUATESTMODELID_QTTESTENUMERATION 3002 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTTYPE 3003 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTINNERTESTSTRUCTTYPE 3004 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTTESTUNIONTYPE 3005 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTSTRUCTWITHOPTIONALFIELDTYPE 3006 /* DataType */
+#define UA_QTOPCUATESTMODELID_MYDOUBLESUBTYPE 3007 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTABSTRACTBASESTRUCT 3008 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO 3009 /* DataType */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTTYPE_ENCODING_DEFAULTBINARY 5001 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTTYPE_ENCODING_DEFAULTXML 5002 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO_ENCODING_DEFAULTBINARY 5003 /* Object */
+#define UA_QTOPCUATESTMODELID_QTINNERTESTSTRUCTTYPE_ENCODING_DEFAULTBINARY 5004 /* Object */
+#define UA_QTOPCUATESTMODELID_QTINNERTESTSTRUCTTYPE_ENCODING_DEFAULTXML 5005 /* Object */
+#define UA_QTOPCUATESTMODELID_QTABSTRACTBASESTRUCT_ENCODING_DEFAULTBINARY 5006 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTUNIONTYPE_ENCODING_DEFAULTBINARY 5007 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTUNIONTYPE_ENCODING_DEFAULTXML 5008 /* Object */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES 5009 /* Object */
+#define UA_QTOPCUATESTMODELID_QTSTRUCTWITHOPTIONALFIELDTYPE_ENCODING_DEFAULTBINARY 5010 /* Object */
+#define UA_QTOPCUATESTMODELID_QTSTRUCTWITHOPTIONALFIELDTYPE_ENCODING_DEFAULTXML 5011 /* Object */
+#define UA_QTOPCUATESTMODELID_QTABSTRACTBASESTRUCT_ENCODING_DEFAULTXML 5012 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTSTRUCTWITHDIAGNOSTICINFO_ENCODING_DEFAULTXML 5013 /* Object */
+#define UA_QTOPCUATESTMODELID_QTTESTENUMERATION_ENUMSTRINGS 6001 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWIHOUTOPTIONALFIELD 6002 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHSECONDMEMBER 6003 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTTESTSTRUCTWITHDIAGNOSTICINFO 6004 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTSTRUCTWITHDIAGNOSTICINFO 6005 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHDIAGNOSTICINFO 6006 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_NESTEDSTRUCT 6009 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHOPTIONALFIELD 6010 /* Variable */
+#define UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHFIRSTMEMBER 6011 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA 6012 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_NAMESPACEURI 6013 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA 6014 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_NAMESPACEURI 6015 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTINNERTESTSTRUCTTYPE 6016 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTINNERTESTSTRUCTTYPE 6017 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTSTRUCTWITHOPTIONALFIELDTYPE 6018 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTSTRUCTWITHOPTIONALFIELDTYPE 6019 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTTESTSTRUCTTYPE 6020 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTSTRUCTTYPE 6021 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTTESTUNIONTYPE 6022 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTTESTUNIONTYPE 6023 /* Variable */
+#define UA_QTOPCUATESTMODELID_BINARYSCHEMA_TYPEDICTIONARY_BINARYSCHEMA_QTABSTRACTBASESTRUCT 6024 /* Variable */
+#define UA_QTOPCUATESTMODELID_XMLSCHEMA_TYPEDICTIONARY_XMLSCHEMA_QTABSTRACTBASESTRUCT 6025 /* Variable */
+#endif /* UA_NODEIDS_QTOPCUATESTMODEL_H_ */
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c
new file mode 100644
index 0000000..d235925
--- /dev/null
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.c
@@ -0,0 +1,196 @@
+/**********************************
+ * Autogenerated -- do not modify *
+ **********************************/
+
+#include "types_qtopcuatestmodel_generated.h"
+
+/* QtInnerTestStructType */
+static UA_DataTypeMember QtInnerTestStructType_members[1] = {
+{
+ UA_TYPENAME("DoubleSubtypeMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DOUBLE], /* .memberType */
+ 0, /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},};
+
+/* QtStructWithOptionalFieldType */
+static UA_DataTypeMember QtStructWithOptionalFieldType_members[2] = {
+{
+ UA_TYPENAME("MandatoryMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DOUBLE], /* .memberType */
+ 0, /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("OptionalMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DOUBLE], /* .memberType */
+ offsetof(UA_QtStructWithOptionalFieldType, optionalMember) - offsetof(UA_QtStructWithOptionalFieldType, mandatoryMember) - sizeof(UA_Double), /* .padding */
+ false, /* .isArray */
+ true /* .isOptional */
+},};
+
+/* QtTestStructWithDiagnosticInfo */
+static UA_DataTypeMember QtTestStructWithDiagnosticInfo_members[2] = {
+{
+ UA_TYPENAME("DiagnosticInfoMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DIAGNOSTICINFO], /* .memberType */
+ 0, /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("DiagnosticInfoArrayMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_DIAGNOSTICINFO], /* .memberType */
+ offsetof(UA_QtTestStructWithDiagnosticInfo, diagnosticInfoArrayMemberSize) - offsetof(UA_QtTestStructWithDiagnosticInfo, diagnosticInfoMember) - sizeof(UA_DiagnosticInfo), /* .padding */
+ true, /* .isArray */
+ false /* .isOptional */
+},};
+
+/* QtTestUnionType */
+static UA_DataTypeMember QtTestUnionType_members[2] = {
+{
+ UA_TYPENAME("Member1") /* .memberName */
+ &UA_TYPES[UA_TYPES_INT64], /* .memberType */
+ offsetof(UA_QtTestUnionType, fields.member1), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("Member2") /* .memberName */
+ &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE], /* .memberType */
+ offsetof(UA_QtTestUnionType, fields.member2), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},};
+
+/* QtTestEnumeration */
+#define QtTestEnumeration_members NULL
+
+/* QtTestStructType */
+static UA_DataTypeMember QtTestStructType_members[7] = {
+{
+ UA_TYPENAME("StringMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_STRING], /* .memberType */
+ 0, /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("LocalizedTextMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_LOCALIZEDTEXT], /* .memberType */
+ offsetof(UA_QtTestStructType, localizedTextMember) - offsetof(UA_QtTestStructType, stringMember) - sizeof(UA_String), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("QualifiedNameMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_QUALIFIEDNAME], /* .memberType */
+ offsetof(UA_QtTestStructType, qualifiedNameMember) - offsetof(UA_QtTestStructType, localizedTextMember) - sizeof(UA_LocalizedText), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("Int64ArrayMember") /* .memberName */
+ &UA_TYPES[UA_TYPES_INT64], /* .memberType */
+ offsetof(UA_QtTestStructType, int64ArrayMemberSize) - offsetof(UA_QtTestStructType, qualifiedNameMember) - sizeof(UA_QualifiedName), /* .padding */
+ true, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("EnumMember") /* .memberName */
+ &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION], /* .memberType */
+ offsetof(UA_QtTestStructType, enumMember) - offsetof(UA_QtTestStructType, int64ArrayMember) - sizeof(void *), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("NestedStructMember") /* .memberName */
+ &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE], /* .memberType */
+ offsetof(UA_QtTestStructType, nestedStructMember) - offsetof(UA_QtTestStructType, enumMember) - sizeof(UA_QtTestEnumeration), /* .padding */
+ false, /* .isArray */
+ false /* .isOptional */
+},
+{
+ UA_TYPENAME("NestedStructArrayMember") /* .memberName */
+ &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE], /* .memberType */
+ offsetof(UA_QtTestStructType, nestedStructArrayMemberSize) - offsetof(UA_QtTestStructType, nestedStructMember) - sizeof(UA_QtInnerTestStructType), /* .padding */
+ true, /* .isArray */
+ false /* .isOptional */
+},};
+const UA_DataType UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_COUNT] = {
+/* QtInnerTestStructType */
+{
+ UA_TYPENAME("QtInnerTestStructType") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3004LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5004LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtInnerTestStructType), /* .memSize */
+ UA_DATATYPEKIND_STRUCTURE, /* .typeKind */
+ true, /* .pointerFree */
+ false, /* .overlayable */
+ 1, /* .membersSize */
+ QtInnerTestStructType_members /* .members */
+},
+/* QtStructWithOptionalFieldType */
+{
+ UA_TYPENAME("QtStructWithOptionalFieldType") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3006LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5010LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtStructWithOptionalFieldType), /* .memSize */
+ UA_DATATYPEKIND_OPTSTRUCT, /* .typeKind */
+ false, /* .pointerFree */
+ false, /* .overlayable */
+ 2, /* .membersSize */
+ QtStructWithOptionalFieldType_members /* .members */
+},
+/* QtTestStructWithDiagnosticInfo */
+{
+ UA_TYPENAME("QtTestStructWithDiagnosticInfo") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3009LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5003LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtTestStructWithDiagnosticInfo), /* .memSize */
+ UA_DATATYPEKIND_STRUCTURE, /* .typeKind */
+ false, /* .pointerFree */
+ false, /* .overlayable */
+ 2, /* .membersSize */
+ QtTestStructWithDiagnosticInfo_members /* .members */
+},
+/* QtTestUnionType */
+{
+ UA_TYPENAME("QtTestUnionType") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3005LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5007LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtTestUnionType), /* .memSize */
+ UA_DATATYPEKIND_UNION, /* .typeKind */
+ true, /* .pointerFree */
+ false, /* .overlayable */
+ 2, /* .membersSize */
+ QtTestUnionType_members /* .members */
+},
+/* QtTestEnumeration */
+{
+ UA_TYPENAME("QtTestEnumeration") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3002LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {0}}, /* .binaryEncodingId */
+ sizeof(UA_QtTestEnumeration), /* .memSize */
+ UA_DATATYPEKIND_ENUM, /* .typeKind */
+ true, /* .pointerFree */
+ UA_BINARY_OVERLAYABLE_INTEGER, /* .overlayable */
+ 0, /* .membersSize */
+ QtTestEnumeration_members /* .members */
+},
+/* QtTestStructType */
+{
+ UA_TYPENAME("QtTestStructType") /* .typeName */
+ {4, UA_NODEIDTYPE_NUMERIC, {3003LU}}, /* .typeId */
+ {4, UA_NODEIDTYPE_NUMERIC, {5001LU}}, /* .binaryEncodingId */
+ sizeof(UA_QtTestStructType), /* .memSize */
+ UA_DATATYPEKIND_STRUCTURE, /* .typeKind */
+ false, /* .pointerFree */
+ false, /* .overlayable */
+ 7, /* .membersSize */
+ QtTestStructType_members /* .members */
+},
+};
+
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h
new file mode 100644
index 0000000..1fce089
--- /dev/null
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated.h
@@ -0,0 +1,119 @@
+/**********************************
+ * Autogenerated -- do not modify *
+ **********************************/
+
+#ifndef TYPES_QTOPCUATESTMODEL_GENERATED_H_
+#define TYPES_QTOPCUATESTMODEL_GENERATED_H_
+
+#ifdef UA_ENABLE_AMALGAMATION
+#include "open62541.h"
+#else
+#include <open62541/types.h>
+#include <open62541/types_generated.h>
+
+#endif
+
+
+
+_UA_BEGIN_DECLS
+
+
+/**
+ * Every type is assigned an index in an array containing the type descriptions.
+ * These descriptions are used during type handling (copying, deletion,
+ * binary encoding, ...). */
+#define UA_TYPES_QTOPCUATESTMODEL_COUNT 6
+extern UA_EXPORT const UA_DataType UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_COUNT];
+
+/**
+ * QtInnerTestStructType
+ * ^^^^^^^^^^^^^^^^^^^^^
+ */
+typedef struct {
+ UA_Double doubleSubtypeMember;
+} UA_QtInnerTestStructType;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE 0
+
+/**
+ * QtStructWithOptionalFieldType
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ */
+typedef struct {
+ UA_Double mandatoryMember;
+ UA_Double *optionalMember;
+} UA_QtStructWithOptionalFieldType;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE 1
+
+/**
+ * QtTestStructWithDiagnosticInfo
+ * ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+ */
+typedef struct {
+ UA_DiagnosticInfo diagnosticInfoMember;
+ size_t diagnosticInfoArrayMemberSize;
+ UA_DiagnosticInfo *diagnosticInfoArrayMember;
+} UA_QtTestStructWithDiagnosticInfo;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO 2
+
+/**
+ * QtTestUnionType
+ * ^^^^^^^^^^^^^^^
+ */
+typedef enum {
+ UA_QTTESTUNIONTYPESWITCH_NONE = 0,
+ UA_QTTESTUNIONTYPESWITCH_MEMBER1 = 1,
+ UA_QTTESTUNIONTYPESWITCH_MEMBER2 = 2,
+ __UA_QTTESTUNIONTYPESWITCH_FORCE32BIT = 0x7fffffff
+} UA_QtTestUnionTypeSwitch;
+UA_STATIC_ASSERT(sizeof(UA_QtTestUnionTypeSwitch) == sizeof(UA_Int32), enum_must_be_32bit);
+
+typedef struct {
+ UA_QtTestUnionTypeSwitch switchField;
+ union {
+ UA_Int64 member1;
+ UA_QtInnerTestStructType member2;
+ } fields;
+} UA_QtTestUnionType;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE 3
+
+/**
+ * QtTestEnumeration
+ * ^^^^^^^^^^^^^^^^^
+ */
+typedef enum {
+ UA_QTTESTENUMERATION_UNKNOWN = 0,
+ UA_QTTESTENUMERATION_FIRSTOPTION = 1,
+ UA_QTTESTENUMERATION_SECONDOPTION = 2,
+ UA_QTTESTENUMERATION_THIRDOPTION = 3,
+ __UA_QTTESTENUMERATION_FORCE32BIT = 0x7fffffff
+} UA_QtTestEnumeration;
+UA_STATIC_ASSERT(sizeof(UA_QtTestEnumeration) == sizeof(UA_Int32), enum_must_be_32bit);
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION 4
+
+/**
+ * QtTestStructType
+ * ^^^^^^^^^^^^^^^^
+ */
+typedef struct {
+ UA_String stringMember;
+ UA_LocalizedText localizedTextMember;
+ UA_QualifiedName qualifiedNameMember;
+ size_t int64ArrayMemberSize;
+ UA_Int64 *int64ArrayMember;
+ UA_QtTestEnumeration enumMember;
+ UA_QtInnerTestStructType nestedStructMember;
+ size_t nestedStructArrayMemberSize;
+ UA_QtInnerTestStructType *nestedStructArrayMember;
+} UA_QtTestStructType;
+
+#define UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE 5
+
+
+_UA_END_DECLS
+
+#endif /* TYPES_QTOPCUATESTMODEL_GENERATED_H_ */
diff --git a/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h
new file mode 100644
index 0000000..cb46506
--- /dev/null
+++ b/tests/open62541-testserver/generated/types_qtopcuatestmodel_generated_handling.h
@@ -0,0 +1,211 @@
+/**********************************
+ * Autogenerated -- do not modify *
+ **********************************/
+
+#ifndef TYPES_QTOPCUATESTMODEL_GENERATED_HANDLING_H_
+#define TYPES_QTOPCUATESTMODEL_GENERATED_HANDLING_H_
+
+#include "types_qtopcuatestmodel_generated.h"
+
+_UA_BEGIN_DECLS
+
+#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 6
+# pragma GCC diagnostic push
+# pragma GCC diagnostic ignored "-Wmissing-field-initializers"
+# pragma GCC diagnostic ignored "-Wmissing-braces"
+#endif
+
+
+/* QtInnerTestStructType */
+static UA_INLINE void
+UA_QtInnerTestStructType_init(UA_QtInnerTestStructType *p) {
+ memset(p, 0, sizeof(UA_QtInnerTestStructType));
+}
+
+static UA_INLINE UA_QtInnerTestStructType *
+UA_QtInnerTestStructType_new(void) {
+ return (UA_QtInnerTestStructType*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtInnerTestStructType_copy(const UA_QtInnerTestStructType *src, UA_QtInnerTestStructType *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtInnerTestStructType_deleteMembers(UA_QtInnerTestStructType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE void
+UA_QtInnerTestStructType_clear(UA_QtInnerTestStructType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE void
+UA_QtInnerTestStructType_delete(UA_QtInnerTestStructType *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]);
+}
+
+/* QtStructWithOptionalFieldType */
+static UA_INLINE void
+UA_QtStructWithOptionalFieldType_init(UA_QtStructWithOptionalFieldType *p) {
+ memset(p, 0, sizeof(UA_QtStructWithOptionalFieldType));
+}
+
+static UA_INLINE UA_QtStructWithOptionalFieldType *
+UA_QtStructWithOptionalFieldType_new(void) {
+ return (UA_QtStructWithOptionalFieldType*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtStructWithOptionalFieldType_copy(const UA_QtStructWithOptionalFieldType *src, UA_QtStructWithOptionalFieldType *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtStructWithOptionalFieldType_deleteMembers(UA_QtStructWithOptionalFieldType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+}
+
+static UA_INLINE void
+UA_QtStructWithOptionalFieldType_clear(UA_QtStructWithOptionalFieldType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+}
+
+static UA_INLINE void
+UA_QtStructWithOptionalFieldType_delete(UA_QtStructWithOptionalFieldType *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+}
+
+/* QtTestStructWithDiagnosticInfo */
+static UA_INLINE void
+UA_QtTestStructWithDiagnosticInfo_init(UA_QtTestStructWithDiagnosticInfo *p) {
+ memset(p, 0, sizeof(UA_QtTestStructWithDiagnosticInfo));
+}
+
+static UA_INLINE UA_QtTestStructWithDiagnosticInfo *
+UA_QtTestStructWithDiagnosticInfo_new(void) {
+ return (UA_QtTestStructWithDiagnosticInfo*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtTestStructWithDiagnosticInfo_copy(const UA_QtTestStructWithDiagnosticInfo *src, UA_QtTestStructWithDiagnosticInfo *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtTestStructWithDiagnosticInfo_deleteMembers(UA_QtTestStructWithDiagnosticInfo *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+}
+
+static UA_INLINE void
+UA_QtTestStructWithDiagnosticInfo_clear(UA_QtTestStructWithDiagnosticInfo *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+}
+
+static UA_INLINE void
+UA_QtTestStructWithDiagnosticInfo_delete(UA_QtTestStructWithDiagnosticInfo *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+}
+
+/* QtTestUnionType */
+static UA_INLINE void
+UA_QtTestUnionType_init(UA_QtTestUnionType *p) {
+ memset(p, 0, sizeof(UA_QtTestUnionType));
+}
+
+static UA_INLINE UA_QtTestUnionType *
+UA_QtTestUnionType_new(void) {
+ return (UA_QtTestUnionType*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtTestUnionType_copy(const UA_QtTestUnionType *src, UA_QtTestUnionType *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtTestUnionType_deleteMembers(UA_QtTestUnionType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+}
+
+static UA_INLINE void
+UA_QtTestUnionType_clear(UA_QtTestUnionType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+}
+
+static UA_INLINE void
+UA_QtTestUnionType_delete(UA_QtTestUnionType *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+}
+
+/* QtTestEnumeration */
+static UA_INLINE void
+UA_QtTestEnumeration_init(UA_QtTestEnumeration *p) {
+ memset(p, 0, sizeof(UA_QtTestEnumeration));
+}
+
+static UA_INLINE UA_QtTestEnumeration *
+UA_QtTestEnumeration_new(void) {
+ return (UA_QtTestEnumeration*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtTestEnumeration_copy(const UA_QtTestEnumeration *src, UA_QtTestEnumeration *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtTestEnumeration_deleteMembers(UA_QtTestEnumeration *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION]);
+}
+
+static UA_INLINE void
+UA_QtTestEnumeration_clear(UA_QtTestEnumeration *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION]);
+}
+
+static UA_INLINE void
+UA_QtTestEnumeration_delete(UA_QtTestEnumeration *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTENUMERATION]);
+}
+
+/* QtTestStructType */
+static UA_INLINE void
+UA_QtTestStructType_init(UA_QtTestStructType *p) {
+ memset(p, 0, sizeof(UA_QtTestStructType));
+}
+
+static UA_INLINE UA_QtTestStructType *
+UA_QtTestStructType_new(void) {
+ return (UA_QtTestStructType*)UA_new(&UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE UA_StatusCode
+UA_QtTestStructType_copy(const UA_QtTestStructType *src, UA_QtTestStructType *dst) {
+ return UA_copy(src, dst, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+}
+
+UA_DEPRECATED static UA_INLINE void
+UA_QtTestStructType_deleteMembers(UA_QtTestStructType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE void
+UA_QtTestStructType_clear(UA_QtTestStructType *p) {
+ UA_clear(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+}
+
+static UA_INLINE void
+UA_QtTestStructType_delete(UA_QtTestStructType *p) {
+ UA_delete(p, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+}
+
+#if defined(__GNUC__) && __GNUC__ >= 4 && __GNUC_MINOR__ >= 6
+# pragma GCC diagnostic pop
+#endif
+
+_UA_END_DECLS
+
+#endif /* TYPES_QTOPCUATESTMODEL_GENERATED_HANDLING_H_ */
diff --git a/tests/open62541-testserver/main.cpp b/tests/open62541-testserver/main.cpp
index 7b31db9..68d9e1f 100644
--- a/tests/open62541-testserver/main.cpp
+++ b/tests/open62541-testserver/main.cpp
@@ -3,6 +3,7 @@
#include "testserver.h"
#include "qopen62541utils.h"
+#include "generated/namespace_qtopcuatestmodel_generated.h"
#include <QtCore/QCoreApplication>
#include <QtCore/QDebug>
@@ -297,7 +298,13 @@ int main()
server.addServerStatusTypeTestNodes(testFolder);
- const auto result = server.run(&running);
+ // Add test nodes for the generic type decoder
+ auto result = server.addEncoderTestModel();
+
+ if (result != UA_STATUSCODE_GOOD)
+ qFatal("Failed to initialize decoder test nodeset: %s", UA_StatusCode_name(result));
+
+ result = server.run(&running);
if (result != UA_STATUSCODE_GOOD)
qFatal("Failed to launch open62541 test server");
diff --git a/tests/open62541-testserver/testserver.cpp b/tests/open62541-testserver/testserver.cpp
index f2904aa..cc01bcf 100644
--- a/tests/open62541-testserver/testserver.cpp
+++ b/tests/open62541-testserver/testserver.cpp
@@ -2,6 +2,12 @@
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
#include "testserver.h"
+
+#include "generated/namespace_qtopcuatestmodel_generated.h"
+#include "generated/types_qtopcuatestmodel_generated.h"
+#include "generated/types_qtopcuatestmodel_generated_handling.h"
+#include "generated/qtopcuatestmodel_nodeids.h"
+
#include "qopen62541utils.h"
#include "qopen62541valueconverter.h"
#include <QtOpcUa/qopcuatype.h>
@@ -756,7 +762,21 @@ UA_StatusCode TestServer::addServerStatusTypeTestNodes(const UA_NodeId &parent)
const auto createTestValue = [](int index) -> UA_ServerStatusDataType {
UA_ServerStatusDataType s;
UA_ServerStatusDataType_init(&s);
- s.startTime = index + 1;
+
+ const UA_DateTime testDateTime = UA_DATETIME_UNIX_EPOCH + 1691996809123 * UA_DATETIME_MSEC;
+
+ s.currentTime = testDateTime + index * UA_DATETIME_MSEC;
+ s.startTime = testDateTime + index * UA_DATETIME_MSEC;
+ s.secondsTillShutdown = 23;
+ s.shutdownReason = UA_LOCALIZEDTEXT_ALLOC("en", "ShutdownReason");
+ s.state = UA_SERVERSTATE_TEST;
+ s.buildInfo.buildDate = testDateTime + index * UA_DATETIME_MSEC;
+ s.buildInfo.buildNumber = UA_STRING_ALLOC("BuildNumber");
+ s.buildInfo.manufacturerName = UA_STRING_ALLOC("ManufacturerName");
+ s.buildInfo.productName = UA_STRING_ALLOC("ProductName");
+ s.buildInfo.productUri = UA_STRING_ALLOC("ProductUri");
+ s.buildInfo.softwareVersion = UA_STRING_ALLOC("SoftwareVersion");
+
return s;
};
@@ -1026,4 +1046,186 @@ UA_StatusCode TestServer::addEventTrigger(const UA_NodeId &parent)
return result;
}
+static UA_DataTypeArray customTypes = {
+ nullptr,
+ UA_TYPES_QTOPCUATESTMODEL_COUNT,
+ &UA_TYPES_QTOPCUATESTMODEL[0]
+};
+
+// This method must be called after the other test namespaces have been added
+UA_StatusCode TestServer::addEncoderTestModel()
+{
+ auto result = namespace_qtopcuatestmodel_generated(m_server);
+
+ if (result != UA_STATUSCODE_GOOD)
+ return result;
+
+ auto config = UA_Server_getConfig(m_server);
+ customTypes.next = config->customDataTypes;
+ config->customDataTypes = &customTypes;
+
+ {
+ UA_QtTestStructType data;
+ UA_QtTestStructType_init(&data);
+
+ data.enumMember = UA_QTTESTENUMERATION_FIRSTOPTION;
+ data.int64ArrayMemberSize = 3;
+ data.int64ArrayMember = static_cast<UA_Int64 *>(UA_Array_new(3, &UA_TYPES[UA_TYPES_INT64]));
+ data.int64ArrayMember[0] = std::numeric_limits<qint64>::max();
+ data.int64ArrayMember[1] = std::numeric_limits<qint64>::max() - 1;
+ data.int64ArrayMember[2] = std::numeric_limits<qint64>::min();
+
+ data.stringMember = UA_STRING_ALLOC("TestString");
+ data.localizedTextMember = UA_LOCALIZEDTEXT_ALLOC("en", "TestText");
+ data.qualifiedNameMember = UA_QUALIFIEDNAME_ALLOC(1, "TestName");
+
+ data.nestedStructMember.doubleSubtypeMember = 42;
+
+ data.nestedStructArrayMemberSize = 2;
+ data.nestedStructArrayMember = static_cast<UA_QtInnerTestStructType *>(
+ UA_Array_new(2, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTINNERTESTSTRUCTTYPE]));
+
+ data.nestedStructArrayMember[0].doubleSubtypeMember = 23.0;
+ data.nestedStructArrayMember[1].doubleSubtypeMember = 42.0;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalarCopy(&var, &data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTTYPE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_NESTEDSTRUCT), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write nested struct node";
+ return result;
+ }
+ }
+
+ {
+ UA_QtTestUnionType data;
+ UA_QtTestUnionType_init(&data);
+
+ data.switchField = UA_QTTESTUNIONTYPESWITCH_MEMBER1;
+ data.fields.member1 = 42;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalarCopy(&var, &data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHFIRSTMEMBER), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write union struct node";
+ return result;
+ }
+ }
+
+ {
+ UA_QtTestUnionType data;
+ UA_QtTestUnionType_init(&data);
+
+ data.switchField = UA_QTTESTUNIONTYPESWITCH_MEMBER2;
+ data.fields.member2.doubleSubtypeMember = 23.0;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalarCopy(&var, &data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTUNIONTYPE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_UNIONWITHSECONDMEMBER), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write union struct node";
+ return result;
+ }
+ }
+
+ {
+ UA_QtStructWithOptionalFieldType data;
+ UA_QtStructWithOptionalFieldType_init(&data);
+
+ data.mandatoryMember = 42.0;
+ data.optionalMember = UA_Double_new();
+ *data.optionalMember = 23.0;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalarCopy(&var, &data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHOPTIONALFIELD), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write optional field struct node";
+ return result;
+ }
+ }
+
+ {
+ UA_QtStructWithOptionalFieldType data;
+ UA_QtStructWithOptionalFieldType_init(&data);
+
+ data.mandatoryMember = 42.0;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalarCopy(&var, &data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTSTRUCTWITHOPTIONALFIELDTYPE]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWIHOUTOPTIONALFIELD), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write optional field struct node";
+ return result;
+ }
+ }
+
+ {
+ auto data = UA_QtTestStructWithDiagnosticInfo_new();
+
+ data->diagnosticInfoMember.hasSymbolicId = true;
+ data->diagnosticInfoMember.symbolicId = 1;
+ data->diagnosticInfoMember.hasNamespaceUri = true;
+ data->diagnosticInfoMember.namespaceUri = 2;
+ data->diagnosticInfoMember.hasLocalizedText = true;
+ data->diagnosticInfoMember.localizedText = 3;
+ data->diagnosticInfoMember.hasLocale = true;
+ data->diagnosticInfoMember.locale = 4;
+ data->diagnosticInfoMember.hasAdditionalInfo = true;
+ data->diagnosticInfoMember.additionalInfo = UA_STRING_ALLOC("My additional info");
+ data->diagnosticInfoMember.hasInnerStatusCode = true;
+ data->diagnosticInfoMember.innerStatusCode = UA_STATUSCODE_BADINTERNALERROR;
+ data->diagnosticInfoMember.hasInnerDiagnosticInfo = true;
+
+ data->diagnosticInfoMember.innerDiagnosticInfo = UA_DiagnosticInfo_new();
+ data->diagnosticInfoMember.innerDiagnosticInfo->hasAdditionalInfo = true;
+ data->diagnosticInfoMember.innerDiagnosticInfo->additionalInfo = UA_STRING_ALLOC("My inner additional info");
+
+ data->diagnosticInfoArrayMemberSize = 2;
+ data->diagnosticInfoArrayMember = static_cast<UA_DiagnosticInfo *>(UA_Array_new(2, &UA_TYPES[UA_TYPES_DIAGNOSTICINFO]));
+
+ UA_DiagnosticInfo_copy(&data->diagnosticInfoMember, &data->diagnosticInfoArrayMember[0]);
+
+ data->diagnosticInfoArrayMember[1].hasLocale = true;
+ data->diagnosticInfoArrayMember[1].locale = 1;
+ data->diagnosticInfoArrayMember[1].hasInnerStatusCode = true;
+ data->diagnosticInfoArrayMember[1].innerStatusCode = UA_STATUSCODE_BADTYPEMISMATCH;
+
+ UA_Variant var;
+ UA_Variant_init(&var);
+ UA_Variant_setScalar(&var, data, &UA_TYPES_QTOPCUATESTMODEL[UA_TYPES_QTOPCUATESTMODEL_QTTESTSTRUCTWITHDIAGNOSTICINFO]);
+
+ result = UA_Server_writeValue(m_server, UA_NODEID_NUMERIC(4, UA_QTOPCUATESTMODELID_DECODERTESTNODES_STRUCTWITHDIAGNOSTICINFO), var);
+ UA_Variant_clear(&var);
+
+ if (result != UA_STATUSCODE_GOOD) {
+ qWarning() << "Failed to write diagnostic info field struct node";
+ return result;
+ }
+ }
+
+ return result;
+}
+
QT_END_NAMESPACE
diff --git a/tests/open62541-testserver/testserver.h b/tests/open62541-testserver/testserver.h
index 23c54ac..3ae50e8 100644
--- a/tests/open62541-testserver/testserver.h
+++ b/tests/open62541-testserver/testserver.h
@@ -47,6 +47,8 @@ public:
UA_StatusCode addEventTrigger(const UA_NodeId &parent);
+ UA_StatusCode addEncoderTestModel();
+
static UA_StatusCode multiplyMethod(UA_Server *server, const UA_NodeId *sessionId, void *sessionHandle,
const UA_NodeId *methodId, void *methodContext,
const UA_NodeId *objectId, void *objectContext,