diff options
author | Martin Klos <martin.klos@basyskom.com> | 2021-02-23 11:27:16 +0100 |
---|---|---|
committer | Jannis Voelker <jannis.voelker@basyskom.com> | 2023-09-28 10:08:35 +0200 |
commit | c45f543f182a8b4139dd03df3c388f060d5097ff (patch) | |
tree | 11b462b2fb371afc422dbefe9740fed083fd5f69 /tools/datatypecodegenerator/dependencydatatypevalidator.h | |
parent | bd2ef3a13704b48bd712c43d7063327d14c287dd (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.h | 38 |
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; +}; |