umbrello 2.39.0
Umbrello UML Modeller is a Unified Modelling Language (UML) diagram program based on KDE Technology
cppwriter.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
5 <brian.thomas@gsfc.nasa.gov>
6 SPDX-FileCopyrightText: 2004-2021 Umbrello UML Modeller Authors
7 <umbrello-devel@kde.org>
8*/
9
10#ifndef CPPWRITER_H
11#define CPPWRITER_H
12
13#include "simplecodegenerator.h"
15#include "umloperationlist.h"
16#include "umlattributelist.h"
17#include "umlassociationlist.h"
18
19class QFile;
20
32{
33public:
34
35 CppWriter();
36 virtual ~CppWriter();
37
38 virtual void writeClass(UMLClassifier *c);
39
41
42 QStringList defaultDatatypes() const;
43
44 virtual QStringList reservedKeywords() const;
45
46private:
47 void writeIncludes(UMLClassifier *c, QTextStream &cpp);
48 void writeClassDecl(UMLClassifier *c, QTextStream &cpp);
49 void writeConstructorDecls(QTextStream &h);
50 void writeConstructorMethods(UMLClassifier * c, QTextStream &cpp);
51
52// /**
53// * Write all field declarations, for both attributes and associations for the
54// * given permitted scope.
55// */
56// void writeFieldDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream);
57
58// /**
59// * Write all method declarations, for attributes and associations
60// * for the given permitted scope.
61// */
62// void writeAccessorMethodDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream);
63
64 void writeOperations(UMLClassifier *c, bool isHeaderMethod, Uml::Visibility::Enum permitScope, QTextStream &cpp);
65 void writeOperations(UMLClassifier *c, UMLOperationList &oplist, bool isHeaderMethod, QTextStream &cpp);
66
67// /**
68// * Write all attributes for a given class.
69// * @param c the class for which we are generating code
70// * @param j the stream associated with the output file
71// */
72// void writeAttributes(UMLClassifier *c, QTextStream &j);
73
74 void writeAttributeDecls(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream);
75
76 void writeHeaderFieldDecl(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream);
77
78 void writeHeaderAttributeAccessorMethods(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream);
79
80 void writeHeaderAttributeAccessorMethodDecls(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream);
81 void writeHeaderAccessorMethodDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream);
82
83 void writeAssociationDecls(UMLAssociationList associations, Uml::Visibility::Enum permit, Uml::ID::Type id, QTextStream &stream);
84
85 void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi,
86 QString doc, QTextStream &stream);
87
88 void writeAttributeMethods(UMLAttributeList attribs, Uml::Visibility::Enum visib, bool isHeaderMethod,
89 bool isStatic,
90 bool writeMethodBody, QTextStream &stream);
91
93 bool isHeaderMethod,
94 bool writeMethodBody, bool writePointerVar, Uml::ID::Type id, QTextStream &stream);
95
96 void writeAssociationRoleMethod(const QString &fieldClassName, bool isHeaderMethod, bool writeMethodBody,
97 const QString &roleName, const QString &multi,
98 const QString &description, Uml::Changeability::Enum change,
99 QTextStream &stream);
100
102 const QString &fieldClassName, const QString &Name,
103 const QString &fieldName, const QString &description,
105 bool isHeaderMethod,
106 bool isStatic, bool writeMethodBody, QTextStream &cpp);
107
109 const QString &fieldClassName, const QString &fieldVarName,
110 const QString &fieldName, const QString &description,
112 bool isHeaderMethod,
113 bool writeMethodBody,
114 QTextStream &stream);
115
116 void writeComment(const QString &text, const QString &indent, QTextStream &cpp);
117 void writeDocumentation(QString header, QString body, QString end, QTextStream &cpp);
118
119 void writeHeaderFile(UMLClassifier *c, QFile &file);
120 void writeSourceFile(UMLClassifier *c, QFile &file);
121
122 void printTextAsSeparateLinesWithIndent (const QString &text, const QString &indent,
123 QTextStream &stream);
124
125 void printAssociationIncludeDecl(UMLAssociationList list, Uml::ID::Type this_id, QTextStream &stream);
126
127 void writeInitAttributeMethod(UMLClassifier * c, QTextStream &stream);
128 void writeInitAttributeDecl(UMLClassifier * c, QTextStream &stream);
129 void writeDataTypes(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream);
130
131 QString umlObjectName(UMLObject *obj);
132
133 QString fixTypeName(const QString &string);
134 QString fixInitialStringDeclValue(const QString &value, const QString &type);
135
137 QString getAttributeMethodBaseName(const QString &fieldName);
138
139 void writeBlankLine(QTextStream &stream);
140
142
147
152
156};
157
158
159#endif // CPPWRITER_H
Definition cppcodegenerationpolicy.h:19
Definition cppwriter.h:32
QString VECTOR_METHOD_APPEND
Definition cppwriter.h:143
void writeAssociationMethods(UMLAssociationList associations, Uml::Visibility::Enum permitVisib, bool isHeaderMethod, bool writeMethodBody, bool writePointerVar, Uml::ID::Type id, QTextStream &stream)
Definition cppwriter.cpp:789
CppWriter()
Definition cppwriter.cpp:41
void writeHeaderAccessorMethodDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
Definition cppwriter.cpp:174
void writeConstructorMethods(UMLClassifier *c, QTextStream &cpp)
Definition cppwriter.cpp:1124
QString getAttributeVariableName(UMLAttribute *at)
Definition cppwriter.cpp:1415
void writeVectorAttributeAccessorMethods(const QString &fieldClassName, const QString &fieldVarName, const QString &fieldName, const QString &description, Uml::Changeability::Enum change, bool isHeaderMethod, bool writeMethodBody, QTextStream &stream)
Definition cppwriter.cpp:866
void writeBlankLine(QTextStream &stream)
Definition cppwriter.cpp:1391
void writeHeaderFieldDecl(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream)
Definition cppwriter.cpp:197
void writeSingleAttributeAccessorMethods(const QString &fieldClassName, const QString &Name, const QString &fieldName, const QString &description, Uml::Changeability::Enum change, bool isHeaderMethod, bool isStatic, bool writeMethodBody, QTextStream &cpp)
Definition cppwriter.cpp:948
void writeDocumentation(QString header, QString body, QString end, QTextStream &cpp)
Definition cppwriter.cpp:655
void writeAttributeDecls(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
Definition cppwriter.cpp:517
QStringList ObjectFieldVariables
Definition cppwriter.h:153
QString fixTypeName(const QString &string)
Definition cppwriter.cpp:1179
void printTextAsSeparateLinesWithIndent(const QString &text, const QString &indent, QTextStream &stream)
Definition cppwriter.cpp:1400
QString getAttributeMethodBaseName(const QString &fieldName)
Definition cppwriter.cpp:1427
QString fixInitialStringDeclValue(const QString &value, const QString &type)
Definition cppwriter.cpp:1365
void writeAssociationDecls(UMLAssociationList associations, Uml::Visibility::Enum permit, Uml::ID::Type id, QTextStream &stream)
Definition cppwriter.cpp:692
virtual ~CppWriter()
Definition cppwriter.cpp:68
void writeOperations(UMLClassifier *c, bool isHeaderMethod, Uml::Visibility::Enum permitScope, QTextStream &cpp)
Definition cppwriter.cpp:1197
void writeHeaderAttributeAccessorMethodDecls(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream)
QString VECTOR_METHOD_INIT
Definition cppwriter.h:145
QStringList defaultDatatypes() const
Definition cppwriter.cpp:1439
virtual Uml::ProgrammingLanguage::Enum language() const
Definition cppwriter.cpp:76
QString umlObjectName(UMLObject *obj)
Definition cppwriter.cpp:1383
CPPCodeGenerationPolicy * policyExt()
Definition cppwriter.cpp:84
void writeInitAttributeMethod(UMLClassifier *c, QTextStream &stream)
Definition cppwriter.cpp:1068
QStringList VectorFieldVariables
Definition cppwriter.h:154
void writeAttributeMethods(UMLAttributeList attribs, Uml::Visibility::Enum visib, bool isHeaderMethod, bool isStatic, bool writeMethodBody, QTextStream &stream)
Definition cppwriter.cpp:596
void writeHeaderAttributeAccessorMethods(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
Definition cppwriter.cpp:577
void writeDataTypes(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
Definition cppwriter.cpp:1161
bool INLINE_ASSOCIATION_METHODS
Definition cppwriter.h:151
void writeInitAttributeDecl(UMLClassifier *c, QTextStream &stream)
Definition cppwriter.cpp:1058
void writeIncludes(UMLClassifier *c, QTextStream &cpp)
Definition cppwriter.cpp:337
void writeSourceFile(UMLClassifier *c, QFile &file)
Definition cppwriter.cpp:213
void printAssociationIncludeDecl(UMLAssociationList list, Uml::ID::Type this_id, QTextStream &stream)
Definition cppwriter.cpp:1336
void writeHeaderFile(UMLClassifier *c, QFile &file)
Definition cppwriter.cpp:144
QString OBJECT_METHOD_INIT
Definition cppwriter.h:146
void writeComment(const QString &text, const QString &indent, QTextStream &cpp)
Definition cppwriter.cpp:632
void writeConstructorDecls(QTextStream &h)
Definition cppwriter.cpp:1034
void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi, QString doc, QTextStream &stream)
Definition cppwriter.cpp:736
bool m_stringIncludeRequired
Definition cppwriter.h:155
virtual void writeClass(UMLClassifier *c)
Definition cppwriter.cpp:93
QString VECTOR_METHOD_REMOVE
Definition cppwriter.h:144
virtual QStringList reservedKeywords() const
Definition cppwriter.cpp:1448
void writeAssociationRoleMethod(const QString &fieldClassName, bool isHeaderMethod, bool writeMethodBody, const QString &roleName, const QString &multi, const QString &description, Uml::Changeability::Enum change, QTextStream &stream)
Definition cppwriter.cpp:842
void writeClassDecl(UMLClassifier *c, QTextStream &cpp)
Definition cppwriter.cpp:363
Definition simplecodegenerator.h:30
QString indent()
Definition simplecodegenerator.cpp:69
Definition umlattributelist.h:21
Sets up attribute information.
Definition attribute.h:23
Information for a non-graphical Concept/Class.
Definition classifier.h:35
The base class for UML objects.
Definition umlobject.h:70
static const char description[]
Definition main.cpp:32
Enum
Definition basictypes.h:202
std::string Type
Definition basictypes.h:371
Enum
Definition basictypes.h:291
Enum
Definition basictypes.h:45
Definition visibility.py:1
QList< UMLAssociation * > UMLAssociationList
Definition umlassociationlist.h:14
QList< UMLOperation * > UMLOperationList
Definition umloperationlist.h:14