1 | // Copyright (C) 2023 basysKom GmbH, opensource@basyskom.com |
2 | // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only |
3 | |
4 | #pragma once |
5 | |
6 | #include "visitor.h" |
7 | |
8 | #include <QtCore/qlist.h> |
9 | #include <QtCore/qtextstream.h> |
10 | |
11 | class DataTypeFileWriter : public Visitor |
12 | { |
13 | public: |
14 | enum GeneratingError { NoError, UnableToWrite }; |
15 | DataTypeFileWriter(const QString &path, |
16 | const QString &prefix, |
17 | const QString &); |
18 | ~DataTypeFileWriter() override = default; |
19 | |
20 | void visit(EnumeratedType *enumeratedType) override; |
21 | void visit(EnumeratedValue *enumeratedValue) override; |
22 | void visit(Field *field) override; |
23 | void visit(Import *import) override; |
24 | void visit(StructuredType *structuredType) override; |
25 | void visit(TypeDictionary *typeDictionary) override; |
26 | void visit(XmlElement *xmlElement) override; |
27 | |
28 | GeneratingError generateFile(const XmlElement *type, const QString &fileExtension); |
29 | GeneratingError generateTypes(const QList<XmlElement *> &types); |
30 | |
31 | QList<XmlElement *> generateMapping() const; |
32 | void setGenerateMapping(const QList<XmlElement *> &generateMapping); |
33 | |
34 | private: |
35 | QString m_path; |
36 | QString m_prefix; |
37 | QString ; |
38 | QList<QString> m_generatedEnumeratedTypeFilenames; |
39 | QList<QString> m_generatedStructuredTypeFilenames; |
40 | QList<XmlElement *> m_generateMapping; |
41 | QList<EnumeratedType *> m_enumeratedTypes; |
42 | |
43 | void (QTextStream &output); |
44 | |
45 | void writeStructuredTypeCpp(const StructuredType *structuredType, QTextStream &output); |
46 | void (const StructuredType *structuredType, |
47 | QTextStream &output); |
48 | void writeStructuredTypeCppDataClass(const StructuredType *structuredType, QTextStream &output); |
49 | void writeStructuredTypeCppDataClassMember(const StructuredType *structuredType, |
50 | QTextStream &output); |
51 | void writeStructuredTypeCppConstructors(const StructuredType *structuredType, |
52 | QTextStream &output); |
53 | void writeStructuredTypeCppOperatorAssignment(const StructuredType *structuredType, |
54 | QTextStream &output); |
55 | void writeStructuredTypeCppOperatorEquality(const StructuredType *structuredType, |
56 | QTextStream &output); |
57 | void writeStructuredTypeCppQVariant(const StructuredType *structuredType, QTextStream &output); |
58 | void writeStructuredTypeCppDestructor(const StructuredType *structuredType, QTextStream &output); |
59 | void writeStructuredTypeCppGetterSetter(const StructuredType *structuredType, |
60 | QTextStream &output); |
61 | void writeStructuredTypeCppGetter(const StructuredType *structuredType, QTextStream &output); |
62 | void writeStructuredTypeCppSetter(const Field *field, |
63 | const StructuredType *structuredType, |
64 | QTextStream &output); |
65 | |
66 | void (const StructuredType *structuredType, QTextStream &output); |
67 | void (const StructuredType *structuredType, |
68 | QTextStream &output); |
69 | void (const StructuredType *structuredType, QTextStream &output); |
70 | void (const StructuredType *structuredType, |
71 | QTextStream &output); |
72 | |
73 | void (const StructuredType *structuredType, |
74 | QTextStream &output); |
75 | void writeStructuredTypeCppDebug(const StructuredType *structuredType, |
76 | QTextStream &output); |
77 | |
78 | void writeEnumeratedType(const EnumeratedType *enumeratedType, QTextStream &output); |
79 | GeneratingError writeEnumeratedTypes(); |
80 | }; |
81 | |