umbrello  2.35.1
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
dwriter.h
Go to the documentation of this file.
1 /*
2  SPDX-License-Identifier: GPL-2.0-or-later
3 
4  SPDX-FileCopyrightText: 2007 Jari-Matti Mäkelä <jmjm@iki.fi>
5  SPDX-FileCopyrightText: 2008-2022 Umbrello UML Modeller Authors <umbrello-devel@kde.org>
6 */
7 
8 #ifndef DWRITER_H
9 #define DWRITER_H
10 
11 #include "simplecodegenerator.h"
12 #include "umloperationlist.h"
13 #include "umlattributelist.h"
14 #include "umlassociationlist.h"
15 
16 class UMLOperation;
17 
29 {
30 public:
31 
32  DWriter();
33  virtual ~DWriter();
34 
35  virtual void writeClass(UMLClassifier *c);
36 
38 
39  QStringList defaultDatatypes() const;
40 
41 private:
42 
46  void writeModuleDecl(UMLClassifier *c, QTextStream &d);
47 
51  void writeModuleImports(UMLClassifier *c, QTextStream &d);
52 
57  void writeClassDecl(UMLClassifier *c, QTextStream &d);
58 
62  void writeConstructor(UMLClassifier *c, QTextStream &d);
63 
69  static bool compareDMethod(UMLOperation *op1, UMLOperation *op2);
70 
76  static bool dMethodInList(UMLOperation *umlOp, UMLOperationList &opl);
77 
87  UMLOperationList &toBeImplementedOpList, bool noClassInPath = true);
88 
95 
101  void writeOperations(UMLClassifier *c, QTextStream &j);
102 
108  void writeOperations(UMLOperationList &list, QTextStream &j);
109 
115  void writeAttributes(UMLClassifier *c, QTextStream &j);
116 
123 
132 
141  UMLAttributeList &atpriv, QTextStream &d);
142 
146  void writeAssociationDecls(UMLAssociationList associations, Uml::ID::Type id, QTextStream &d);
147 
151  void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi,
152  QString doc, Uml::Visibility::Enum visib, QTextStream &d);
153 
158 
162  void writeAssociationMethods(UMLAssociationList associations, UMLClassifier *thisClass,
163  QTextStream &d);
164 
170  void writeAssociationRoleMethod(QString fieldClassName, QString roleName, QString multi,
172  QTextStream &d);
173 
177  void writeSingleAttributeAccessorMethods(QString fieldClassName, QString fieldVarName,
178  QString fieldName, QString description,
180  bool isFinal, QTextStream &d);
181 
185  void writeVectorAttributeAccessorMethods(QString fieldClassName, QString fieldVarName,
186  QString fieldName, QString description,
188  QTextStream &d);
189 
193  void writeComment(const QString &text, const QString &indent, QTextStream &d, bool dDocStyle=false);
194 
198  void writeDocumentation(QString header, QString body, QString end, QString indent, QTextStream &d);
199 
203  QString getUMLObjectName(UMLObject *obj);
204 
208  QString deCapitaliseFirstLetter(const QString& str);
209 
213  QString pluralize(const QString& string);
214 
218  QString unPluralize(const QString& str);
219 
223  QString fixTypeName(const QString& string);
224 
228  QString fixInitialStringDeclValue(const QString& val, const QString& type);
229 
233  void writeBlankLine(QTextStream& d);
234 
235  QString startline;
236  bool isInterface;
237 
238 };
239 
240 #endif // DWRITER_H
UMLObject::id
virtual Uml::ID::Type id() const
Definition: umlobject.cpp:421
umlattributelist.h
template.h
DWriter::writeModuleDecl
void writeModuleDecl(UMLClassifier *c, QTextStream &d)
Definition: dwriter.cpp:54
DWriter::getInterfacesOperationsToBeImplemented
void getInterfacesOperationsToBeImplemented(UMLClassifier *c, UMLOperationList &opl)
Definition: dwriter.cpp:814
UMLAttributeListIt
QListIterator< UMLAttribute * > UMLAttributeListIt
Definition: umlattributelist.h:14
SimpleCodeGenerator::m_indentation
QString m_indentation
Definition: simplecodegenerator.h:72
Uml::ProgrammingLanguage::Enum
Enum
Definition: basictypes.h:291
UMLClassifier::isInterface
bool isInterface() const
Definition: classifier.cpp:116
UMLAttributeList
Definition: umlattributelist.h:20
UMLObject::name
QString name() const
Definition: umlobject.cpp:207
umloperationlist.h
CodeGenerator::getHeadingFile
virtual QString getHeadingFile(const QString &file)
Definition: codegenerator.cpp:406
DWriter::getUMLObjectName
QString getUMLObjectName(UMLObject *obj)
Definition: dwriter.cpp:955
UMLObject::package
QString package(const QString &separator=QString(), bool includeRoot=false) const
Definition: umlobject.cpp:582
UMLOperation::getParmList
UMLAttributeList getParmList() const
Definition: operation.cpp:177
UMLTemplate::getTypeName
virtual QString getTypeName() const
Definition: template.cpp:77
CodeGenerator::cleanName
static QString cleanName(const QString &name)
Definition: codegenerator.cpp:548
Uml::Changeability::Changeable
@ Changeable
Definition: basictypes.h:203
DWriter::deCapitaliseFirstLetter
QString deCapitaliseFirstLetter(const QString &str)
Definition: dwriter.cpp:960
operation.h
UMLAttribute::getInitialValue
QString getInitialValue() const
Definition: attribute.cpp:100
UMLClassifierListItem::getTypeName
virtual QString getTypeName() const
Definition: classifierlistitem.cpp:108
UMLClassifier::INTERFACE
@ INTERFACE
Definition: classifier.h:42
Uml::RoleType::A
@ A
Definition: basictypes.h:237
CodeGenerator::findObjectsRelated
static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList)
Definition: codegenerator.cpp:621
DWriter::compareDMethod
static bool compareDMethod(UMLOperation *op1, UMLOperation *op2)
Definition: dwriter.cpp:761
DWriter::writeAttributeDecls
void writeAttributeDecls(UMLAttributeList &atpub, UMLAttributeList &atprot, UMLAttributeList &atpriv, QTextStream &d)
Definition: dwriter.cpp:413
DWriter
Definition: dwriter.h:28
UMLClassifier::getOpList
UMLOperationList getOpList(bool includeInherited=false, UMLClassifierSet *alreadyTraversed=0) const
Definition: classifier.cpp:939
association.h
UMLObject::isStatic
bool isStatic() const
Definition: umlobject.cpp:362
Model_Utils::hasAssociations
bool hasAssociations(UMLObject::ObjectType type)
Definition: model_utils.cpp:2364
UMLClassifierList
QList< UMLClassifier * > UMLClassifierList
Definition: umlclassifierlist.h:12
DWriter::fixInitialStringDeclValue
QString fixInitialStringDeclValue(const QString &val, const QString &type)
Definition: dwriter.cpp:941
Uml::ID::Type
std::string Type
Definition: basictypes.h:371
DWriter::pluralize
QString pluralize(const QString &string)
Definition: dwriter.cpp:967
DWriter::writeDocumentation
void writeDocumentation(QString header, QString body, QString end, QString indent, QTextStream &d)
Definition: dwriter.cpp:469
DWriter::DWriter
DWriter()
Definition: dwriter.cpp:31
UMLObject
The base class for UML objects.
Definition: umlobject.h:69
SimpleCodeGenerator::indent
QString indent()
Definition: simplecodegenerator.cpp:72
UMLObject::isAbstract
bool isAbstract() const
Definition: umlobject.cpp:344
DWriter::writeAssociationRoleMethod
void writeAssociationRoleMethod(QString fieldClassName, QString roleName, QString multi, QString description, Uml::Visibility::Enum visib, Uml::Changeability::Enum change, QTextStream &d)
Definition: dwriter.cpp:593
DWriter::writeClassDecl
void writeClassDecl(UMLClassifier *c, QTextStream &d)
Definition: dwriter.cpp:280
CodeGenerator::forceDoc
bool forceDoc() const
Definition: codegenerator.cpp:764
CodeGenerator::formatSourceCode
static QString formatSourceCode(const QString &code, const QString &indentation)
Definition: codegenerator.cpp:742
Uml::Changeability::Enum
Enum
Definition: basictypes.h:202
Uml::Visibility::Public
@ Public
Definition: basictypes.h:46
DWriter::writeAttributeMethods
void writeAttributeMethods(UMLAttributeList &atpub, Uml::Visibility::Enum visibility, QTextStream &d)
Definition: dwriter.cpp:422
Uml::Changeability::Frozen
@ Frozen
Definition: basictypes.h:204
Codegen_Utils::capitalizeFirstLetter
QString capitalizeFirstLetter(const QString &string)
Definition: codegen_utils.cpp:425
DWriter::fixTypeName
QString fixTypeName(const QString &string)
Definition: dwriter.cpp:709
UMLObject::visibility
Uml::Visibility::Enum visibility() const
Definition: umlobject.cpp:462
attribute.h
a
QString a
Definition: petalnode.cpp:13
SimpleCodeGenerator::m_endl
QString m_endl
Definition: simplecodegenerator.h:74
Uml::Visibility::toString
QString toString(Enum item, bool mnemonic)
Definition: basictypes.cpp:93
DWriter::writeAssociationRoleDecl
void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi, QString doc, Uml::Visibility::Enum visib, QTextStream &d)
Definition: dwriter.cpp:521
DWriter::writeAttributes
void writeAttributes(UMLClassifier *c, QTextStream &j)
Uml::AssociationType::Association
@ Association
Definition: basictypes.h:96
Uml::ProgrammingLanguage::D
@ D
Definition: basictypes.h:296
DWriter::writeSingleAttributeAccessorMethods
void writeSingleAttributeAccessorMethods(QString fieldClassName, QString fieldVarName, QString fieldName, QString description, Uml::Visibility::Enum visibility, Uml::Changeability::Enum change, bool isFinal, QTextStream &d)
Definition: dwriter.cpp:660
DWriter::writeAssociationDecls
void writeAssociationDecls(UMLAssociationList associations, Uml::ID::Type id, QTextStream &d)
Definition: dwriter.cpp:486
CodeGenerator::formatDoc
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Definition: codegenerator.cpp:711
DWriter::writeConstructor
void writeConstructor(UMLClassifier *c, QTextStream &d)
Definition: dwriter.cpp:690
DWriter::writeVectorAttributeAccessorMethods
void writeVectorAttributeAccessorMethods(QString fieldClassName, QString fieldVarName, QString fieldName, QString description, Uml::Visibility::Enum visibility, Uml::Changeability::Enum change, QTextStream &d)
Definition: dwriter.cpp:610
SimpleCodeGenerator
Definition: simplecodegenerator.h:29
DWriter::~DWriter
virtual ~DWriter()
Definition: dwriter.cpp:40
Uml::RoleType::B
@ B
Definition: basictypes.h:238
DWriter::unPluralize
QString unPluralize(const QString &str)
Definition: dwriter.cpp:972
DWriter::writeModuleImports
void writeModuleImports(UMLClassifier *c, QTextStream &d)
Definition: dwriter.cpp:62
dwriter.h
DWriter::writeComment
void writeComment(const QString &text, const QString &indent, QTextStream &d, bool dDocStyle=false)
Definition: dwriter.cpp:436
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
UMLObject::doc
QString doc() const
Definition: umlobject.cpp:431
visibility
Definition: visibility.py:1
UMLAttribute
Sets up attribute information.
Definition: attribute.h:22
UMLObject::isUMLDatatype
bool isUMLDatatype() const
Definition: umlobject.h:204
UMLPackageList
QList< UMLPackage * > UMLPackageList
Definition: umlpackagelist.h:11
DWriter::isInterface
bool isInterface
whether or not this concept is an interface
Definition: dwriter.h:236
logWarn0
#define logWarn0(s)
Definition: uml.h:538
DWriter::startline
QString startline
a , used at the end of each line
Definition: dwriter.h:235
Uml::Visibility::Enum
Enum
Definition: basictypes.h:45
CodeGenerator::codeGenerated
void codeGenerated(UMLClassifier *concept, bool generated)
Definition: moc_codegenerator.cpp:167
classifier.h
UMLOperation
Definition: operation.h:19
uml.h
DWriter::writeAssociationMethods
void writeAssociationMethods(UMLAssociationList associations, UMLClassifier *thisClass, QTextStream &d)
Definition: dwriter.cpp:559
UMLTemplateListIt
QListIterator< UMLTemplate * > UMLTemplateListIt
Definition: umltemplatelist.h:16
UMLClassifier
Information for a non-graphical Concept/Class.
Definition: classifier.h:34
debug_utils.h
umlassociationlist.h
UMLAssociation
Sets up association information.
Definition: association.h:28
DWriter::writeOperations
void writeOperations(UMLClassifier *c, QTextStream &j)
Definition: dwriter.cpp:826
DWriter::dMethodInList
static bool dMethodInList(UMLOperation *umlOp, UMLOperationList &opl)
Definition: dwriter.cpp:783
UMLClassifier::CLASS
@ CLASS
Definition: classifier.h:42
UMLTemplateList
QList< UMLTemplate * > UMLTemplateList
Definition: umltemplatelist.h:13
UMLTemplate
Sets up template information.
Definition: template.h:21
simplecodegenerator.h
Uml::Visibility::Private
@ Private
Definition: basictypes.h:47
DWriter::writeClass
virtual void writeClass(UMLClassifier *c)
Definition: dwriter.cpp:98
CodeGenerator::forceSections
bool forceSections() const
Definition: codegenerator.cpp:774
Uml::Visibility::Protected
@ Protected
Definition: basictypes.h:48
UMLOperationList
QList< UMLOperation * > UMLOperationList
Definition: umloperationlist.h:12
umltemplatelist.h
DWriter::defaultDatatypes
QStringList defaultDatatypes() const
Definition: dwriter.cpp:729
UMLAssociationList
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
SimpleCodeGenerator::findFileName
QString findFileName(UMLPackage *concept, const QString &ext)
Definition: simplecodegenerator.cpp:87
DWriter::getSuperImplementedOperations
void getSuperImplementedOperations(UMLClassifier *c, UMLOperationList &yetImplementedOpList, UMLOperationList &toBeImplementedOpList, bool noClassInPath=true)
Definition: dwriter.cpp:793
codegen_utils.h
DWriter::writeAttributeDecl
void writeAttributeDecl(Uml::Visibility::Enum visibility, UMLAttributeList &atlist, QTextStream &d)
Definition: dwriter.cpp:377
umldoc.h
DWriter::writeProtectionMod
void writeProtectionMod(Uml::Visibility::Enum visibility, QTextStream &d)
Definition: dwriter.cpp:372
DWriter::language
virtual Uml::ProgrammingLanguage::Enum language() const
Definition: dwriter.cpp:48
CodeGenerator::openFile
bool openFile(QFile &file, const QString &name)
Definition: codegenerator.cpp:522
UMLOperation::getSourceCode
QString getSourceCode() const
Definition: operation.cpp:523
DWriter::writeBlankLine
void writeBlankLine(QTextStream &d)
Definition: dwriter.cpp:987
UMLPackage
Non-graphical information for a Package.
Definition: package.h:27
description
static const char description[]
Definition: main.cpp:32