diff options
author | Jannis Voelker <jannis.voelker@basyskom.com> | 2021-10-04 10:18:31 +0200 |
---|---|---|
committer | Jannis Voelker <jannis.voelker@basyskom.com> | 2023-09-13 16:26:06 +0200 |
commit | 4992ea8df08b045607e7d502cbcaeee2eb454280 (patch) | |
tree | 0fb9d2f653c832e9f925f10b9b9058e46be8cb94 /tests | |
parent | 6907f872c92506b0dee790da825d1803c2e9f651 (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')
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 Binary files differnew file mode 100644 index 0000000..15c64c2 --- /dev/null +++ b/tests/open62541-testserver/TestModel/qtopcuatestmodel.ua 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, |