umbrello  2.35.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  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 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 
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:421
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
DEBUG_REGISTER
#define DEBUG_REGISTER(src)
Definition: debug_utils.h:129
umlpackagelist.h
ClassifierCodeDocument::getParentClassifier
UMLClassifier * getParentClassifier() const
Definition: classifiercodedocument.cpp:278
CodeGenerator::finalizeRun
virtual void finalizeRun()
Definition: codegenerator.cpp:384
UMLObject::ObjectType
ObjectType
Definition: umlobject.h:75
logDebug1
#define logDebug1(s, a)
Definition: uml.h:541
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
CodeDocument::loadFromXMI
virtual void loadFromXMI(QDomElement &root)
Definition: codedocument.cpp:345
Uml::ProgrammingLanguage::Enum
Enum
Definition: basictypes.h:291
CodeGenerator::loadCodeForOperation
void loadCodeForOperation(const QString &id, const QDomElement &codeDocElement)
Definition: codegenerator.cpp:219
CodeGenerationPolicy::Ask
@ Ask
Definition: codegenerationpolicy.h:42
UMLAttributeList
Definition: umlattributelist.h:20
umloperationlist.h
CodeGenerator::setForceDoc
void setForceDoc(bool f)
Definition: codegenerator.cpp:759
CodeGenerator::getHeadingFile
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:406
UMLOperation::getParmList
UMLAttributeList getParmList() const
Definition: operation.cpp:177
codedocumentlist.h
UMLDoc::classesAndInterfaces
UMLClassifierList classesAndInterfaces(bool includeNested=true) const
Definition: umldoc.cpp:3048
CodeGenerator::loadFromXMI
virtual void loadFromXMI(QDomElement &element)
Definition: codegenerator.cpp:177
CodeGenerator::cleanName
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:548
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:284
CodeGenerationPolicy::setCodeVerboseSectionComments
void setCodeVerboseSectionComments(bool new_var)
Definition: codegenerationpolicy.cpp:111
codeviewerdialog.h
CodeGenerator::isReservedKeyword
virtual bool isReservedKeyword(const QString &keyword)
Definition: codegenerator.cpp:796
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:621
UMLApp::commonPolicy
CodeGenerationPolicy * commonPolicy() const
Definition: uml.cpp:2459
Uml::ID::toString
QString toString(const ID::Type &id)
Definition: basictypes.cpp:1306
logError1
#define logError1(s, a)
Definition: uml.h:545
association.h
CodeGenerator::defaultDatatypes
virtual QStringList defaultDatatypes() const
Definition: codegenerator.cpp:783
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:109
Uml::ID::Type
std::string Type
Definition: basictypes.h:371
CodeGenerator::findCodeDocumentByClassifier
CodeDocument * findCodeDocumentByClassifier(UMLClassifier *classifier)
Definition: codegenerator.cpp:299
CodeGenerator::findFileName
QString findFileName(CodeDocument *codeDocument)
Definition: codegenerator.cpp:564
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::asUMLOperation
UMLOperation * asUMLOperation()
Definition: umlobject.cpp:1437
UMLObject::baseType
ObjectType baseType() const
Definition: umlobject.cpp:393
CodeGenerationPolicy::Cancel
@ Cancel
Definition: codegenerationpolicy.h:42
CodeGenerator::forceDoc
bool forceDoc() const
Definition: codegenerator.cpp:764
ClassifierCodeDocument
Definition: classifiercodedocument.h:28
CodeGenerator::m_codeDocumentDictionary
QHash< QString, CodeDocument * > m_codeDocumentDictionary
Definition: codegenerator.h:135
CodeGenerator::writeCodeToFile
virtual void writeCodeToFile()
Definition: codegenerator.cpp:309
CodeGenerator::formatSourceCode
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:742
CodeGenerator::Skipped
@ Skipped
Definition: codegenerator.h:57
Uml::AssociationType::Aggregation
@ Aggregation
Definition: basictypes.h:94
CodeGenerator::reservedKeywords
virtual QStringList reservedKeywords() const
Definition: codegenerator.cpp:805
Uml::ProgrammingLanguage::toString
QString toString(Enum item)
Definition: basictypes.cpp:912
Uml::ID::fromString
ID::Type fromString(const QString &id)
Definition: basictypes.cpp:1311
CodeGenerator::setForceSections
void setForceSections(bool f)
Definition: codegenerator.cpp:769
UMLOperation::setSourceCode
void setSourceCode(const QString &code)
Definition: operation.cpp:515
CodeGenerationPolicy::getHeadingFile
QString getHeadingFile(const QString &str)
Definition: codegenerationpolicy.cpp:542
UMLObject::asUMLPackage
UMLPackage * asUMLPackage()
Definition: umlobject.cpp:1438
CodeGenerator::showGeneratedFile
void showGeneratedFile(const QString &filename)
Definition: moc_codegenerator.cpp:181
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:1092
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
CodeGenerator::~CodeGenerator
virtual ~CodeGenerator()
Definition: codegenerator.cpp:66
i18n
#define i18n
Definition: main.cpp:35
classifiercodedocument.h
Uml::AssociationType::Association
@ Association
Definition: basictypes.h:96
umlclassifierlist.h
CodeGenerator::formatDoc
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:711
basictypes.h
codegenerationpolicy.h
CodeGenerationPolicy
Definition: codegenerationpolicy.h:25
SimpleCodeGenerator
Definition: simplecodegenerator.h:29
CodeGenerationPolicy::getCodeVerboseDocumentComments
bool getCodeVerboseDocumentComments() const
Definition: codegenerationpolicy.cpp:148
CodeGenerator::removeCodeDocument
bool removeCodeDocument(CodeDocument *remove_object)
Definition: codegenerator.cpp:149
Uml::RoleType::B
@ B
Definition: basictypes.h:238
CodeGenerator::headingFileDir
QString headingFileDir() const
UMLObject::toString
static QString toString(ObjectType ot)
Definition: umlobject.cpp:1214
CodeGenerator::includeHeadings
bool includeHeadings() const
logWarn1
#define logWarn1(s, a)
Definition: uml.h:544
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:168
CodeGenerationPolicy::getOverwritePolicy
OverwritePolicy getOverwritePolicy() const
Definition: codegenerationpolicy.cpp:81
UMLApp::app
static UMLApp * app()
Definition: uml.cpp:349
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:77
UMLPackageList
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11
codedocument.h
logWarn0
#define logWarn0(s)
Definition: uml.h:538
CodeGenerator::m_applyToAllRemaining
bool m_applyToAllRemaining
Definition: codegenerator.h:141
CodeGenerator::codeGenerated
void codeGenerated(UMLClassifier *concept, bool generated)
Definition: moc_codegenerator.cpp:167
CodeGenerator::CodeGenerator
CodeGenerator()
Definition: codegenerator.cpp:51
classifier.h
UMLOperation
Definition: operation.h:19
CodeDocument::getFileName
QString getFileName() const
Definition: codedocument.cpp:60
uml.h
CodeGenerator::saveToXMI
virtual void saveToXMI(QXmlStreamWriter &writer)
Definition: codegenerator.cpp:244
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:426
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
simplecodegenerator.h
uIgnoreZeroPointer
#define uIgnoreZeroPointer(a)
Definition: debug_utils.h:142
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:774
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:124
CodeGenerator::m_document
UMLDoc * m_document
Definition: codegenerator.h:146
CodeGenerator::createDefaultStereotypes
virtual void createDefaultStereotypes()
Definition: codegenerator.cpp:814
CodeGenerator::writeListedCodeDocsToFile
void writeListedCodeDocsToFile(CodeDocumentList *docs)
Definition: codegenerator.cpp:340
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:522
UMLOperation::getSourceCode
QString getSourceCode() const
Definition: operation.cpp:523
logError2
#define logError2(s, a, b)
Definition: uml.h:551
UMLPackage
Non-graphical information for a Package.
Definition: package.h:27
CodeGenerator::setIncludeHeadings
void setIncludeHeadings(bool i)