umbrello  2.32.0
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  * This program is free software; you can redistribute it and/or modify *
3  * it under the terms of the GNU General Public License as published by *
4  * the Free Software Foundation; either version 2 of the License, or *
5  * (at your option) any later version. *
6  * *
7  * copyright (C) 2003 Brian Thomas <thomas@mail630.gsfc.nasa.gov> *
8  * copyright (C) 2004-2020 *
9  * Umbrello UML Modeller Authors <umbrello-devel@kde.org> *
10  ***************************************************************************/
11 
12 #ifndef CODEGENERATOR_H
13 #define CODEGENERATOR_H
14 
15 #include "basictypes.h"
16 #include "codegenpolicyext.h"
17 #include "codegenerationpolicy.h"
18 #include "umlpackagelist.h"
19 #include "umlclassifierlist.h"
20 #include "codedocumentlist.h"
21 #include "codeviewerstate.h"
22 
23 #include <QDir>
24 #include <QHash>
25 #include <QList>
26 
27 class UMLDoc;
28 class UMLObject;
30 class CodeDocument;
31 class CodeViewerDialog;
32 class QDomDocument;
33 class QDomElement;
34 
56 class CodeGenerator : public QObject
57 {
58  Q_OBJECT
59 public:
60  CodeGenerator();
61  virtual ~CodeGenerator();
62 
63  bool addCodeDocument(CodeDocument * add_object);
64  bool removeCodeDocument(CodeDocument * remove_object);
65 
67 
68  QString getUniqueID(CodeDocument * codeDoc);
69 
70  virtual void saveToXMI1(QDomDocument & doc, QDomElement & root);
71 
72  CodeDocument * findCodeDocumentByID(const QString &id);
73 
74  virtual void writeCodeToFile();
75  virtual void writeCodeToFile(UMLClassifierList &list);
76 
77  void setIncludeHeadings(bool i);
78  bool includeHeadings() const;
79 
80  void setHeadingFileDir(const QString &);
81  QString headingFileDir() const;
82 
83  void setForceDoc(bool f);
84  bool forceDoc() const;
85 
86  void setForceSections(bool f);
87  bool forceSections() const;
88 
89  virtual QString getHeadingFile(const QString &file);
90 
91  QString findFileName(CodeDocument * codeDocument);
92 
93  static QString cleanName(const QString &name);
94 
95  static QString formatDoc(const QString& text, const QString& linePrefix = QLatin1String(" *"), int lineWidth = 80);
96 
97  static QString formatSourceCode(const QString& code, const QString& indentation);
98 
99  static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList);
100 
105  virtual void loadFromXMI1(QDomElement & element);
106 
110  virtual Uml::ProgrammingLanguage::Enum language() const = 0;
111 
113 
114  virtual QStringList defaultDatatypes();
115 
116  virtual bool isReservedKeyword(const QString & keyword);
117 
118  virtual QStringList reservedKeywords() const;
119 
120  virtual void createDefaultStereotypes();
121 
125  virtual void initFromParentDocument() = 0;
126 
127 protected:
128  QString overwritableName(const QString& name, const QString &extension);
129 
130  bool openFile(QFile& file, const QString &name);
131 
133 
134  virtual void finalizeRun();
135 
136  // map of what code documents we currently have in this generator.
137  QHash<QString, CodeDocument*> m_codeDocumentDictionary;
138 
144 
149 
150 private:
153 
154  void loadCodeForOperation(const QString& id, const QDomElement& codeDocElement);
155 
156 public slots:
157  virtual void syncCodeToDocument();
158 
159 signals:
160  void codeGenerated(UMLClassifier* concept, bool generated);
161  void showGeneratedFile(const QString& filename);
162 };
163 
164 #endif // CODEGENERATOR_H
bool forceDoc() const
Definition: codegenerator.cpp:765
Information for a non-graphical Concept/Class.
Definition: classifier.h:39
bool forceSections() const
Definition: codegenerator.cpp:775
QString overwritableName(const QString &name, const QString &extension)
Definition: codegenerator.cpp:427
virtual QStringList reservedKeywords() const
Definition: codegenerator.cpp:806
QList< CodeDocument * > CodeDocumentList
Definition: codedocumentlist.h:17
void setForceSections(bool f)
Definition: codegenerator.cpp:770
Definition: classifiercodedocument.h:32
bool addCodeDocument(CodeDocument *add_object)
Definition: codegenerator.cpp:125
bool openFile(QFile &file, const QString &name)
Definition: codegenerator.cpp:523
void loadCodeForOperation(const QString &id, const QDomElement &codeDocElement)
Definition: codegenerator.cpp:220
virtual void saveToXMI1(QDomDocument &doc, QDomElement &root)
Definition: codegenerator.cpp:245
virtual bool isReservedKeyword(const QString &keyword)
Definition: codegenerator.cpp:797
Enum
Definition: basictypes.h:271
UMLDoc * m_document
Definition: codegenerator.h:148
virtual void writeCodeToFile()
Definition: codegenerator.cpp:310
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:407
CodeDocument * findCodeDocumentByID(const QString &id)
Definition: codegenerator.cpp:110
virtual void initFromParentDocument()=0
virtual void loadFromXMI1(QDomElement &element)
Definition: codegenerator.cpp:178
The base class for UML objects.
Definition: umlobject.h:73
virtual Uml::ProgrammingLanguage::Enum language() const =0
virtual void finalizeRun()
Definition: codegenerator.cpp:385
CodeGenerator()
Definition: codegenerator.cpp:52
void codeGenerated(UMLClassifier *concept, bool generated)
Definition: moc_codegenerator.cpp:154
virtual QStringList defaultDatatypes()
Definition: codegenerator.cpp:784
QString getUniqueID(CodeDocument *codeDoc)
Definition: codegenerator.cpp:78
Definition: codedocument.h:32
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:17
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:17
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:743
static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList)
Definition: codegenerator.cpp:622
Definition: codeviewerdialog.h:27
CodeDocumentList * getCodeDocumentList()
Definition: codegenerator.cpp:169
void setHeadingFileDir(const QString &)
void setIncludeHeadings(bool i)
bool m_applyToAllRemaining
Definition: codegenerator.h:143
virtual void createDefaultStereotypes()
Definition: codegenerator.cpp:815
CodeDocumentList m_codedocumentVector
Definition: codegenerator.h:151
void setForceDoc(bool f)
Definition: codegenerator.cpp:760
void writeListedCodeDocsToFile(CodeDocumentList *docs)
Definition: codegenerator.cpp:341
CodeDocument * findCodeDocumentByClassifier(UMLClassifier *classifier)
Definition: codegenerator.cpp:300
QHash< QString, CodeDocument * > m_codeDocumentDictionary
Definition: codegenerator.h:137
Definition: codegenerator.h:56
virtual ~CodeGenerator()
Definition: codegenerator.cpp:67
bool removeCodeDocument(CodeDocument *remove_object)
Definition: codegenerator.cpp:150
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:712
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:549
QString findFileName(CodeDocument *codeDocument)
Definition: codegenerator.cpp:565
void showGeneratedFile(const QString &filename)
Definition: moc_codegenerator.cpp:161
QString headingFileDir() const
virtual void syncCodeToDocument()
Definition: codegenerator.cpp:285
int m_lastIDIndex
Definition: codegenerator.h:152
bool includeHeadings() const
Definition: umldoc.h:74