umbrello 2.34.70-5524f40e1
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
codegenerator.h
Go to the documentation of this file.
1/*
2 SPDX-License-Identifier: GPL-2.0-or-later
3
4 SPDX-FileCopyrightText: 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov>
5 SPDX-FileCopyrightText: 2004-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6*/
7
8#ifndef CODEGENERATOR_H
9#define CODEGENERATOR_H
10
11#include "basictypes.h"
12#include "codegenpolicyext.h"
14#include "umlpackagelist.h"
15#include "umlclassifierlist.h"
16#include "codedocumentlist.h"
17#include "codeviewerstate.h"
18
19#include <QDir>
20#include <QHash>
21#include <QList>
22
23class UMLDoc;
24class UMLObject;
26class CodeDocument;
28class QDomDocument;
29class QDomElement;
30class QXmlStreamWriter;
31
53class CodeGenerator : public QObject
54{
55 Q_OBJECT
56public:
59 virtual ~CodeGenerator();
60
61 bool addCodeDocument(CodeDocument * add_object);
62 bool removeCodeDocument(CodeDocument * remove_object);
63
65
66 QString getUniqueID(CodeDocument * codeDoc);
67
68 virtual void saveToXMI(QXmlStreamWriter& writer);
69
70 CodeDocument * findCodeDocumentByID(const QString &id);
71
72 virtual void writeCodeToFile();
73 virtual void writeCodeToFile(UMLClassifierList &list);
74
75 void setIncludeHeadings(bool i);
76 bool includeHeadings() const;
77
78 void setHeadingFileDir(const QString &);
79 QString headingFileDir() const;
80
81 void setForceDoc(bool f);
82 bool forceDoc() const;
83
84 void setForceSections(bool f);
85 bool forceSections() const;
86
87 virtual QString getHeadingFile(const QString &file);
88
89 QString findFileName(CodeDocument * codeDocument);
90
91 static QString cleanName(const QString &name);
92
93 static QString formatDoc(const QString& text, const QString& linePrefix = QLatin1String(" *"), int lineWidth = 80);
94
95 static QString formatSourceCode(const QString& code, const QString& indentation);
96
97 static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList);
98
103 virtual void loadFromXMI(QDomElement & element);
104
109
111
112 virtual QStringList defaultDatatypes() const;
113
114 virtual bool isReservedKeyword(const QString & keyword);
115
116 virtual QStringList reservedKeywords() const;
117
118 virtual void createDefaultStereotypes();
119
123 virtual void initFromParentDocument() = 0;
124
125protected:
126 QString overwritableName(const QString& name, const QString &extension);
127
128 bool openFile(QFile& file, const QString &name);
129
131
132 virtual void finalizeRun();
133
134 // map of what code documents we currently have in this generator.
135 QHash<QString, CodeDocument*> m_codeDocumentDictionary;
136
142
147
148private:
151
152 void loadCodeForOperation(const QString& id, const QDomElement& codeDocElement);
153
154public slots:
155 virtual void syncCodeToDocument();
156
157signals:
158 void codeGenerated(UMLClassifier* concept, bool generated);
160 void showGeneratedFile(const QString& filename);
161};
162
163#endif // CODEGENERATOR_H
Definition: classifiercodedocument.h:29
Definition: codedocument.h:30
Definition: codegenerator.h:54
virtual QStringList defaultDatatypes() const
Definition: codegenerator.cpp:783
CodeDocument * findCodeDocumentByID(const QString &id)
Definition: codegenerator.cpp:109
void setForceSections(bool f)
Definition: codegenerator.cpp:769
virtual void initFromParentDocument()=0
void codeGenerated(UMLClassifier *concept, bool generated)
Definition: moc_codegenerator.cpp:167
GenerationState
Definition: codegenerator.h:57
@ Failed
Definition: codegenerator.h:57
@ Generated
Definition: codegenerator.h:57
@ Skipped
Definition: codegenerator.h:57
virtual void syncCodeToDocument()
Definition: codegenerator.cpp:284
bool includeHeadings() const
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:548
CodeDocument * findCodeDocumentByClassifier(UMLClassifier *classifier)
Definition: codegenerator.cpp:299
virtual void loadFromXMI(QDomElement &element)
Definition: codegenerator.cpp:177
virtual void finalizeRun()
Definition: codegenerator.cpp:384
bool removeCodeDocument(CodeDocument *remove_object)
Definition: codegenerator.cpp:149
QString findFileName(CodeDocument *codeDocument)
Definition: codegenerator.cpp:564
bool forceSections() const
Definition: codegenerator.cpp:774
void loadCodeForOperation(const QString &id, const QDomElement &codeDocElement)
Definition: codegenerator.cpp:219
bool m_applyToAllRemaining
Definition: codegenerator.h:141
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:406
virtual void writeCodeToFile()
Definition: codegenerator.cpp:309
static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList)
Definition: codegenerator.cpp:621
void writeListedCodeDocsToFile(CodeDocumentList *docs)
Definition: codegenerator.cpp:340
void setHeadingFileDir(const QString &)
CodeDocumentList * getCodeDocumentList()
Definition: codegenerator.cpp:168
int m_lastIDIndex
Definition: codegenerator.h:150
QString headingFileDir() const
bool openFile(QFile &file, const QString &name)
Definition: codegenerator.cpp:522
CodeGenerator()
Definition: codegenerator.cpp:51
virtual Uml::ProgrammingLanguage::Enum language() const =0
QHash< QString, CodeDocument * > m_codeDocumentDictionary
Definition: codegenerator.h:135
virtual bool isReservedKeyword(const QString &keyword)
Definition: codegenerator.cpp:796
CodeDocumentList m_codedocumentVector
Definition: codegenerator.h:149
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition: codegenerator.cpp:244
void setIncludeHeadings(bool i)
QString overwritableName(const QString &name, const QString &extension)
Definition: codegenerator.cpp:426
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:711
bool forceDoc() const
Definition: codegenerator.cpp:764
virtual ~CodeGenerator()
Definition: codegenerator.cpp:66
void setForceDoc(bool f)
Definition: codegenerator.cpp:759
UMLDoc * m_document
Definition: codegenerator.h:146
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:742
virtual void createDefaultStereotypes()
Definition: codegenerator.cpp:814
bool addCodeDocument(CodeDocument *add_object)
Definition: codegenerator.cpp:124
void showGeneratedFile(const QString &filename)
Definition: moc_codegenerator.cpp:181
QString getUniqueID(CodeDocument *codeDoc)
Definition: codegenerator.cpp:77
virtual QStringList reservedKeywords() const
Definition: codegenerator.cpp:805
Definition: codeviewerdialog.h:23
Information for a non-graphical Concept/Class.
Definition: classifier.h:35
Definition: umldoc.h:70
The base class for UML objects.
Definition: umlobject.h:70
QList< CodeDocument * > CodeDocumentList
Definition: codedocumentlist.h:12
Enum
Definition: basictypes.h:291
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11