umbrello  2.32.1
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"
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 
108  virtual Uml::ProgrammingLanguage::Enum language() const = 0;
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 
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
CodeGenerationPolicy::Ok
@ Ok
Definition: codegenerationpolicy.h:42
UMLObject::id
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:420
document
GNU GENERAL PUBLIC LICENSE June Free Software Inc Franklin Fifth USA Everyone is permitted to copy and distribute verbatim copies of this license document
Definition: GPL-2.0-only.txt:8
umlattributelist.h
umlpackagelist.h
ClassifierCodeDocument::getParentClassifier
UMLClassifier * getParentClassifier() const
Definition: classifiercodedocument.cpp:278
CodeGenerator::finalizeRun
virtual void finalizeRun()
Definition: codegenerator.cpp:382
UMLObject::ObjectType
ObjectType
Definition: umlobject.h:75
code
b Accompany it with a written valid for at least three to give any third for a charge no more than your cost of physically performing source a complete machine readable copy of the corresponding source code
Definition: GPL-2.0-only.txt:139
CodeGenerator::m_codedocumentVector
CodeDocumentList m_codedocumentVector
Definition: codegenerator.h:149
Uml::ProgrammingLanguage::Enum
Enum
Definition: basictypes.h:291
CodeGenerator::loadCodeForOperation
void loadCodeForOperation(const QString &id, const QDomElement &codeDocElement)
Definition: codegenerator.cpp:217
UMLObject::asUMLOperation
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1404
CodeGenerationPolicy::Ask
@ Ask
Definition: codegenerationpolicy.h:42
UMLAttributeList
Definition: umlattributelist.h:20
umloperationlist.h
CodeGenerator::setForceDoc
void setForceDoc(bool f)
Definition: codegenerator.cpp:757
CodeGenerator::getHeadingFile
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:404
UMLOperation::getParmList
UMLAttributeList getParmList() const
Definition: operation.cpp:173
codedocumentlist.h
UMLDoc::classesAndInterfaces
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition: umldoc.cpp:2985
CodeGenerator::cleanName
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:546
CodeGenerator::GenerationState
GenerationState
Definition: codegenerator.h:57
CodeGenerationPolicy::setCodeVerboseDocumentComments
void setCodeVerboseDocumentComments(bool new_var)
Definition: codegenerationpolicy.cpp:135
operation.h
UMLClassifierListItem::getType
UMLClassifier * getType() const
Definition: classifierlistitem.cpp:98
CodeGenerator::syncCodeToDocument
virtual void syncCodeToDocument()
Definition: codegenerator.cpp:282
CodeGenerationPolicy::setCodeVerboseSectionComments
void setCodeVerboseSectionComments(bool new_var)
Definition: codegenerationpolicy.cpp:111
codeviewerdialog.h
CodeGenerator::isReservedKeyword
virtual bool isReservedKeyword(const QString &keyword)
Definition: codegenerator.cpp:794
Uml::RoleType::A
@ A
Definition: basictypes.h:237
CodeGenerator::Generated
@ Generated
Definition: codegenerator.h:57
CodeGenerator::findObjectsRelated
static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList)
Definition: codegenerator.cpp:619
UMLApp::commonPolicy
CodeGenerationPolicy * commonPolicy() const
Definition: uml.cpp:2283
Uml::ID::toString
QString toString(const ID::Type &id)
Definition: basictypes.cpp:1300
association.h
CodeGenerator::defaultDatatypes
virtual QStringList defaultDatatypes() const
Definition: codegenerator.cpp:781
CodeGenerationPolicy::Never
@ Never
Definition: codegenerationpolicy.h:42
UMLClassifierList
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
CodeDocument::getPath
virtual QString getPath() const
Definition: codedocument.cpp:97
CodeGenerator::findCodeDocumentByID
CodeDocument * findCodeDocumentByID(const QString &id)
Definition: codegenerator.cpp:107
Uml::ID::Type
std::string Type
Definition: basictypes.h:371
CodeGenerator::findCodeDocumentByClassifier
CodeDocument * findCodeDocumentByClassifier(UMLClassifier *classifier)
Definition: codegenerator.cpp:297
CodeGenerator::findFileName
QString findFileName(CodeDocument *codeDocument)
Definition: codegenerator.cpp:562
CodeDocument::getFileExtension
QString getFileExtension() const
Definition: codedocument.cpp:79
CodeGenerator::setHeadingFileDir
void setHeadingFileDir(const QString &)
CodeDocument
Definition: codedocument.h:29
Uml::AssociationType::UniAssociation
@ UniAssociation
Definition: basictypes.h:105
CodeGenerationPolicy::setOverwritePolicy
void setOverwritePolicy(OverwritePolicy new_var)
Definition: codegenerationpolicy.cpp:70
UMLObject
The base class for UML objects.
Definition: umlobject.h:69
UMLObject::baseType
ObjectType baseType() const
Definition: umlobject.cpp:392
CodeGenerationPolicy::Cancel
@ Cancel
Definition: codegenerationpolicy.h:42
CodeGenerator::forceDoc
bool forceDoc() const
Definition: codegenerator.cpp:762
ClassifierCodeDocument
Definition: classifiercodedocument.h:28
CodeGenerator::m_codeDocumentDictionary
QHash< QString, CodeDocument * > m_codeDocumentDictionary
Definition: codegenerator.h:135
CodeGenerator::loadFromXMI1
virtual void loadFromXMI1(QDomElement &element)
Definition: codegenerator.cpp:175
CodeGenerator::writeCodeToFile
virtual void writeCodeToFile()
Definition: codegenerator.cpp:307
CodeGenerator::formatSourceCode
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:740
CodeGenerator::Skipped
@ Skipped
Definition: codegenerator.h:57
Uml::AssociationType::Aggregation
@ Aggregation
Definition: basictypes.h:94
CodeGenerator::reservedKeywords
virtual QStringList reservedKeywords() const
Definition: codegenerator.cpp:803
Uml::ProgrammingLanguage::toString
QString toString(Enum item)
Definition: basictypes.cpp:910
Uml::ID::fromString
ID::Type fromString(const QString &id)
Definition: basictypes.cpp:1305
CodeGenerator::setForceSections
void setForceSections(bool f)
Definition: codegenerator.cpp:767
UMLOperation::setSourceCode
void setSourceCode(const QString &code)
Definition: operation.cpp:494
CodeDocument::loadFromXMI1
virtual void loadFromXMI1(QDomElement &root)
Definition: codedocument.cpp:345
CodeGenerationPolicy::getHeadingFile
QString getHeadingFile(const QString &str)
Definition: codegenerationpolicy.cpp:542
CodeGenerator::showGeneratedFile
void showGeneratedFile(const QString &filename)
Definition: moc_codegenerator.cpp:180
it
and that you know you can do these things To protect your we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights These restrictions translate to certain responsibilities for you if you distribute copies of the or if you modify it For if you distribute copies of such a whether gratis or for a you must give the recipients all the rights that you have You must make sure that receive or can get the source code And you must show them these terms so they know their rights We protect your rights with two distribute and or modify the software for each author s protection and we want to make certain that everyone understands that there is no warranty for this free software If the software is modified by someone else and passed we want its recipients to know that what they have is not the so that any problems introduced by others will not reflect on the original authors reputations any free program is threatened constantly by software patents We wish to avoid the danger that redistributors of a free program will individually obtain patent in effect making the program proprietary To prevent we have made it clear that any patent must be licensed for everyone s free use or not licensed at all The precise terms and conditions for distribution and modification follow TERMS AND CONDITIONS FOR DISTRIBUTION AND MODIFICATION This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License The refers to any such program or and a work based on the Program means either the Program or any derivative work under copyright a work containing the Program or a portion of it
Definition: GPL-2.0-only.txt:64
UMLApp
Definition: uml.h:94
UMLDoc::findObjectById
UMLObject * findObjectById(Uml::ID::Type id)
Definition: umldoc.cpp:1039
attribute.h
CodeGenerator::initFromParentDocument
virtual void initFromParentDocument()=0
number
it is up to the author donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License If the distribution and or use of the Library is restricted in certain countries either by patents or by copyrighted the original copyright holder who places the Library under this License may add an geographical distribution limitation excluding those so that distribution is permitted only in or among countries not thus excluded In such this License incorporates the limitation as if written in the body of this License The Free Software Foundation may publish revised and or new versions of the Library General Public License from time to time Such new versions will be similar in spirit to the present but may differ in detail to address new problems or concerns Each version is given a distinguishing version number If the Library specifies a version number of this License which applies to it and any later you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation If the Library does not specify a license version number
Definition: LGPL-2.0-only.txt:368
a
QString a
Definition: petalnode.cpp:13
uWarning
#define uWarning()
Definition: debug_utils.h:110
CodeGenerator::~CodeGenerator
virtual ~CodeGenerator()
Definition: codegenerator.cpp:64
i18n
#define i18n
Definition: main.cpp:34
classifiercodedocument.h
Uml::AssociationType::Association
@ Association
Definition: basictypes.h:96
umlclassifierlist.h
CodeGenerator::saveToXMI1
virtual void saveToXMI1(QXmlStreamWriter &writer)
Definition: codegenerator.cpp:242
CodeGenerator::formatDoc
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:709
basictypes.h
codegenerationpolicy.h
CodeGenerationPolicy
Definition: codegenerationpolicy.h:25
uDebug
#define uDebug()
Definition: debug_utils.h:108
SimpleCodeGenerator
Definition: simplecodegenerator.h:29
CodeGenerationPolicy::getCodeVerboseDocumentComments
bool getCodeVerboseDocumentComments() const
Definition: codegenerationpolicy.cpp:148
CodeGenerator::removeCodeDocument
bool removeCodeDocument(CodeDocument *remove_object)
Definition: codegenerator.cpp:147
Uml::RoleType::B
@ B
Definition: basictypes.h:238
CodeGenerator::headingFileDir
QString headingFileDir() const
UMLObject::toString
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1180
CodeGenerator::includeHeadings
bool includeHeadings() const
Uml::AssociationType::Generalization
@ Generalization
Definition: basictypes.h:93
c
type show c for details The hypothetical commands show w and show c should show the appropriate parts of the General Public License Of the commands you use may be called something other than show w and show c
Definition: GPL-2.0-only.txt:301
CodeGenerator::getCodeDocumentList
CodeDocumentList * getCodeDocumentList()
Definition: codegenerator.cpp:166
CodeGenerationPolicy::getOverwritePolicy
OverwritePolicy getOverwritePolicy() const
Definition: codegenerationpolicy.cpp:81
UMLApp::app
static UMLApp * app()
Definition: uml.cpp:275
overwritedialog.h
UMLDoc
Definition: umldoc.h:69
UMLAttribute
Sets up attribute information.
Definition: attribute.h:22
UMLObject::isUMLDatatype
bool isUMLDatatype() const
Definition: umlobject.h:204
CodeViewerDialog
Definition: codeviewerdialog.h:22
CodeGenerator::getUniqueID
QString getUniqueID(CodeDocument *codeDoc)
Definition: codegenerator.cpp:75
UMLPackageList
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11
codedocument.h
CodeGenerator::m_applyToAllRemaining
bool m_applyToAllRemaining
Definition: codegenerator.h:141
CodeGenerator::codeGenerated
void codeGenerated(UMLClassifier *concept, bool generated)
Definition: moc_codegenerator.cpp:166
CodeGenerator::CodeGenerator
CodeGenerator()
Definition: codegenerator.cpp:49
classifier.h
uError
#define uError()
Definition: debug_utils.h:109
UMLOperation
Definition: operation.h:19
CodeDocument::getFileName
QString getFileName() const
Definition: codedocument.cpp:60
uml.h
CodeGenerationPolicy::getNewLineEndingChars
QString getNewLineEndingChars() const
Definition: codegenerationpolicy.cpp:249
UMLClassifier
Information for a non-graphical Concept/Class.
Definition: classifier.h:34
debug_utils.h
UMLAssociation
Sets up association information.
Definition: association.h:28
codeviewerstate.h
CodeGenerationPolicy::getOutputDirectory
QDir getOutputDirectory()
Definition: codegenerationpolicy.cpp:207
CodeGenerator::overwritableName
QString overwritableName(const QString &name, const QString &extension)
Definition: codegenerator.cpp:424
codegenpolicyext.h
umlobject.h
Uml::AssociationType::Composition
@ Composition
Definition: basictypes.h:103
CodeDocument::ID
QString ID() const
Definition: codedocument.cpp:140
CodeGenerator::language
virtual Uml::ProgrammingLanguage::Enum language() const =0
codegenerator.h
UMLObject::asUMLPackage
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1405
simplecodegenerator.h
uIgnoreZeroPointer
#define uIgnoreZeroPointer(a)
Definition: debug_utils.h:120
UMLObject::ot_Operation
@ ot_Operation
Definition: umlobject.h:89
CodeGenerator
Definition: codegenerator.h:53
OverwriteDialog
Definition: overwritedialog.h:24
CodeGenerator::m_lastIDIndex
int m_lastIDIndex
Definition: codegenerator.h:150
Uml::AssociationType::Dependency
@ Dependency
Definition: basictypes.h:95
CodeGenerator::forceSections
bool forceSections() const
Definition: codegenerator.cpp:772
UMLOperationList
QList< UMLOperation * > UMLOperationList
Definition: umloperationlist.h:12
CodeDocumentList
QList< CodeDocument * > CodeDocumentList
Definition: codedocumentlist.h:12
CodeGenerator::addCodeDocument
bool addCodeDocument(CodeDocument *add_object)
Definition: codegenerator.cpp:122
CodeGenerator::m_document
UMLDoc * m_document
Definition: codegenerator.h:146
CodeGenerator::createDefaultStereotypes
virtual void createDefaultStereotypes()
Definition: codegenerator.cpp:812
CodeGenerator::writeListedCodeDocsToFile
void writeListedCodeDocsToFile(CodeDocumentList *docs)
Definition: codegenerator.cpp:338
CodeDocument::setID
void setID(const QString &new_id)
Definition: codedocument.cpp:131
CodeGenerationPolicy::getCodeVerboseSectionComments
bool getCodeVerboseSectionComments() const
Definition: codegenerationpolicy.cpp:123
UMLAssociationList
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
Uml::AssociationType::Realization
@ Realization
Definition: basictypes.h:104
umldoc.h
CodeGenerator::Failed
@ Failed
Definition: codegenerator.h:57
CodeGenerator::openFile
bool openFile(QFile &file, const QString &name)
Definition: codegenerator.cpp:520
UMLOperation::getSourceCode
QString getSourceCode() const
Definition: operation.cpp:502
UMLPackage
Non-graphical information for a Package.
Definition: package.h:27
CodeGenerator::setIncludeHeadings
void setIncludeHeadings(bool i)