summaryrefslogtreecommitdiffstats
path: root/tools/datatypecodegenerator/dependencydatatypevalidator.h
diff options
context:
space:
mode:
authorMartin Klos <martin.klos@basyskom.com>2021-02-23 11:27:16 +0100
committerJannis Voelker <jannis.voelker@basyskom.com>2023-09-28 10:08:35 +0200
commitc45f543f182a8b4139dd03df3c388f060d5097ff (patch)
tree11b462b2fb371afc422dbefe9740fed083fd5f69 /tools/datatypecodegenerator/dependencydatatypevalidator.h
parentbd2ef3a13704b48bd712c43d7063327d14c287dd (diff)
Add data type code generator
This change adds a code generator which generates data classes, enums and encoder/decoder methods for OPC UA data type descriptions in a .bsd file. The generated data classes provide a getter and setter based API that follows the structure of the types available in Qt OPC UA. If a structure field's type is already available in Qt OPC UA, it will be used in the data class instead of generating a new data class for it. The decoder/encoder operates on QOpcUaExtensionObject as well as QByteArray and can be used to turn received binary encoded values into easily accessible structured data as well as to create binary encoded extension objects for writing custom types or for parameters in method calls. Change-Id: I8090dcb9b5f2d26d9ad02e3d6d5c45b3baa5c777 Reviewed-by: Frank Meerkoetter <frank.meerkoetter@basyskom.com>
Diffstat (limited to 'tools/datatypecodegenerator/dependencydatatypevalidator.h')
-rw-r--r--tools/datatypecodegenerator/dependencydatatypevalidator.h38
1 files changed, 38 insertions, 0 deletions
diff --git a/tools/datatypecodegenerator/dependencydatatypevalidator.h b/tools/datatypecodegenerator/dependencydatatypevalidator.h
new file mode 100644
index 0000000..aad3e4e
--- /dev/null
+++ b/tools/datatypecodegenerator/dependencydatatypevalidator.h
@@ -0,0 +1,38 @@
+// Copyright (C) 2023 basysKom GmbH, opensource@basyskom.com
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
+
+#pragma once
+
+#include "visitor.h"
+
+#include <QtCore/qlist.h>
+
+class XmlElement;
+
+class DependencyDataTypeValidator : public Visitor
+{
+public:
+ enum ReadResolveDependencies { ReadDependencies, ResolveDependencies };
+
+ DependencyDataTypeValidator();
+ ~DependencyDataTypeValidator() override = default;
+
+ void visit(EnumeratedType *enumeratedType) override;
+ void visit(EnumeratedValue *enumeratedValue) override;
+ void visit(Field *field) override;
+ void visit(Import *import) override;
+ void visit(StructuredType *structuredType) override;
+ void visit(TypeDictionary *typeDictionary) override;
+ void visit(XmlElement *xmlElement) override;
+
+ QStringList unresolvedDependencyStringList() const;
+
+ QList<XmlElement *> resolvedDependencyElementList() const;
+
+ void setReadResolveDependencies(const ReadResolveDependencies &readResolveDependencies);
+
+private:
+ ReadResolveDependencies m_readResolveDependencies;
+ QList<XmlElement *> m_resolvedDependencyElementList;
+ QStringList m_unresolvedDependencyStringList;
+};