umbrello  2.31.80
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-2020 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"
13 #include "codegenerationpolicy.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 
23 class UMLDoc;
24 class UMLObject;
26 class CodeDocument;
27 class CodeViewerDialog;
28 class QDomDocument;
29 class QDomElement;
30 class QXmlStreamWriter;
31 
53 class CodeGenerator : public QObject
54 {
55  Q_OBJECT
56 public:
58  CodeGenerator();
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 saveToXMI1(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 loadFromXMI1(QDomElement & element);
104 
109 
111 
112  virtual QStringList defaultDatatypes();
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 
125 protected:
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 
148 private:
151 
152  void loadCodeForOperation(const QString& id, const QDomElement& codeDocElement);
153 
154 public slots:
155  virtual void syncCodeToDocument();
156 
157 signals:
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
CodeDocument * findCodeDocumentByID(const QString &id)
Definition: codegenerator.cpp:107
void setForceSections(bool f)
Definition: codegenerator.cpp:767
virtual void initFromParentDocument()=0
void codeGenerated(UMLClassifier *concept, CodeGenerator::GenerationState result)
void codeGenerated(UMLClassifier *concept, bool generated)
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:282
bool includeHeadings() const
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:546
CodeDocument * findCodeDocumentByClassifier(UMLClassifier *classifier)
Definition: codegenerator.cpp:297
virtual QStringList defaultDatatypes()
Definition: codegenerator.cpp:781
virtual void finalizeRun()
Definition: codegenerator.cpp:382
bool removeCodeDocument(CodeDocument *remove_object)
Definition: codegenerator.cpp:147
QString findFileName(CodeDocument *codeDocument)
Definition: codegenerator.cpp:562
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: codegenerator.cpp:242
bool forceSections() const
Definition: codegenerator.cpp:772
void loadCodeForOperation(const QString &id, const QDomElement &codeDocElement)
Definition: codegenerator.cpp:217
bool m_applyToAllRemaining
Definition: codegenerator.h:141
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:404
virtual void writeCodeToFile()
Definition: codegenerator.cpp:307
static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList)
Definition: codegenerator.cpp:619
void writeListedCodeDocsToFile(CodeDocumentList *docs)
Definition: codegenerator.cpp:338
void setHeadingFileDir(const QString &)
CodeDocumentList * getCodeDocumentList()
Definition: codegenerator.cpp:166
int m_lastIDIndex
Definition: codegenerator.h:150
QString headingFileDir() const
virtual void loadFromXMI1(QDomElement &element)
Definition: codegenerator.cpp:175
bool openFile(QFile &file, const QString &name)
Definition: codegenerator.cpp:520
CodeGenerator()
Definition: codegenerator.cpp:49
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:794
CodeDocumentList m_codedocumentVector
Definition: codegenerator.h:149
void setIncludeHeadings(bool i)
QString overwritableName(const QString &name, const QString &extension)
Definition: codegenerator.cpp:424
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:709
bool forceDoc() const
Definition: codegenerator.cpp:762
virtual ~CodeGenerator()
Definition: codegenerator.cpp:64
void setForceDoc(bool f)
Definition: codegenerator.cpp:757
UMLDoc * m_document
Definition: codegenerator.h:146
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:740
virtual void createDefaultStereotypes()
Definition: codegenerator.cpp:812
bool addCodeDocument(CodeDocument *add_object)
Definition: codegenerator.cpp:122
void showGeneratedFile(const QString &filename)
QString getUniqueID(CodeDocument *codeDoc)
Definition: codegenerator.cpp:75
virtual QStringList reservedKeywords() const
Definition: codegenerator.cpp:803
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