umbrello 2.34.70-5524f40e1
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:775
CppWriter()
Definition: cppwriter.cpp:41
void writeHeaderAccessorMethodDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
Definition: cppwriter.cpp:177
void writeConstructorMethods(UMLClassifier *c, QTextStream &cpp)
Definition: cppwriter.cpp:1110
QString getAttributeVariableName(UMLAttribute *at)
Definition: cppwriter.cpp:1401
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:852
void writeBlankLine(QTextStream &stream)
Definition: cppwriter.cpp:1377
void writeHeaderFieldDecl(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream)
Definition: cppwriter.cpp:200
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:934
void writeDocumentation(QString header, QString body, QString end, QTextStream &cpp)
Definition: cppwriter.cpp:656
void writeAttributeDecls(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
Definition: cppwriter.cpp:521
QStringList ObjectFieldVariables
Definition: cppwriter.h:153
QString fixTypeName(const QString &string)
Definition: cppwriter.cpp:1165
void printTextAsSeparateLinesWithIndent(const QString &text, const QString &indent, QTextStream &stream)
Definition: cppwriter.cpp:1386
QString getAttributeMethodBaseName(const QString &fieldName)
Definition: cppwriter.cpp:1413
QString fixInitialStringDeclValue(const QString &value, const QString &type)
Definition: cppwriter.cpp:1351
void writeAssociationDecls(UMLAssociationList associations, Uml::Visibility::Enum permit, Uml::ID::Type id, QTextStream &stream)
Definition: cppwriter.cpp:678
virtual ~CppWriter()
Definition: cppwriter.cpp:68
void writeOperations(UMLClassifier *c, bool isHeaderMethod, Uml::Visibility::Enum permitScope, QTextStream &cpp)
Definition: cppwriter.cpp:1183
void writeHeaderAttributeAccessorMethodDecls(UMLClassifier *c, Uml::Visibility::Enum permitVisibility, QTextStream &stream)
QString VECTOR_METHOD_INIT
Definition: cppwriter.h:145
QStringList defaultDatatypes() const
Definition: cppwriter.cpp:1425
virtual Uml::ProgrammingLanguage::Enum language() const
Definition: cppwriter.cpp:76
QString umlObjectName(UMLObject *obj)
Definition: cppwriter.cpp:1369
CPPCodeGenerationPolicy * policyExt()
Definition: cppwriter.cpp:84
void writeInitAttributeMethod(UMLClassifier *c, QTextStream &stream)
Definition: cppwriter.cpp:1054
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:598
void writeHeaderAttributeAccessorMethods(UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
Definition: cppwriter.cpp:581
void writeDataTypes(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
Definition: cppwriter.cpp:1147
bool INLINE_ASSOCIATION_METHODS
Definition: cppwriter.h:151
void writeInitAttributeDecl(UMLClassifier *c, QTextStream &stream)
Definition: cppwriter.cpp:1044
void writeIncludes(UMLClassifier *c, QTextStream &cpp)
Definition: cppwriter.cpp:342
void writeSourceFile(UMLClassifier *c, QFile &file)
Definition: cppwriter.cpp:216
void printAssociationIncludeDecl(UMLAssociationList list, Uml::ID::Type this_id, QTextStream &stream)
Definition: cppwriter.cpp:1322
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:634
void writeConstructorDecls(QTextStream &h)
Definition: cppwriter.cpp:1020
void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi, QString doc, QTextStream &stream)
Definition: cppwriter.cpp:722
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:1434
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:828
void writeClassDecl(UMLClassifier *c, QTextStream &cpp)
Definition: cppwriter.cpp:368
Definition: simplecodegenerator.h:30
QString indent()
Definition: simplecodegenerator.cpp:72
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
@ Name
stereotype name only
Definition: basictypes.h:150
Enum
Definition: basictypes.h:45
Definition: visibility.py:1
QList< UMLAssociation * > UMLAssociationList
Definition: umlassociationlist.h:12
QList< UMLOperation * > UMLOperationList
Definition: umloperationlist.h:12