umbrello/umbrello
cppwriter.cpp
Go to the documentation of this file.
51 VECTOR_METHOD_REMOVE = QLatin1String("int i, size = %VARNAME%.size();\nfor (i = 0; i < size; ++i) {\n\t%ITEMCLASS% item = %VARNAME%.at(i);\n\tif(item == remove_object) {\n\t\tvector<%ITEMCLASS%>::iterator it = %VARNAME%.begin() + i;\n\t\t%VARNAME%.erase(it);\n\t\treturn;\n\t}\n }"); // for std::vector
55 VECTOR_METHOD_REMOVE = QLatin1String("%VARNAME%.removeRef(&remove_object);"); // Qt lib implementation
161 QString hashDefine = className_.toUpper().simplified().replace(QRegExp(QLatin1String(" ")), QLatin1String("_"));
172 void CppWriter::writeHeaderAccessorMethodDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
175 writeHeaderAttributeAccessorMethods(c, permitScope, true, stream); // write static attributes first
195 void CppWriter::writeHeaderFieldDecl(UMLClassifier *c, Uml::Visibility::Enum permitScope, QTextStream &stream)
202 writeAssociationDecls(c->getSpecificAssocs(Uml::AssociationType::Association), permitScope, c->id(), stream);
269 writeAttributeMethods(c->getAttributeListStatic(Uml::Visibility::Public), Uml::Visibility::Public, false, true, !bInlineAccessors, cpp);
270 writeAttributeMethods(c->getAttributeList(Uml::Visibility::Public), Uml::Visibility::Public, false, false, !bInlineAccessors, cpp);
271 writeAttributeMethods(c->getAttributeListStatic(Uml::Visibility::Protected), Uml::Visibility::Protected, false, true, !bInlineAccessors, cpp);
272 writeAttributeMethods(c->getAttributeList(Uml::Visibility::Protected), Uml::Visibility::Protected, false, false, !bInlineAccessors, cpp);
273 writeAttributeMethods(c->getAttributeListStatic(Uml::Visibility::Private), Uml::Visibility::Private, false, true, !bInlineAccessors, cpp);
274 writeAttributeMethods(c->getAttributeList(Uml::Visibility::Private), Uml::Visibility::Private, false, false, !bInlineAccessors, cpp);
280 writeAssociationMethods(c->getSpecificAssocs(Uml::AssociationType::Association), Uml::Visibility::Public, false,
290 writeAssociationMethods(c->getSpecificAssocs(Uml::AssociationType::Association), Uml::Visibility::Protected, false,
292 writeAssociationMethods(c->getUniAssociationToBeImplemented(), Uml::Visibility::Protected, false,
300 writeAssociationMethods(c->getSpecificAssocs(Uml::AssociationType::Association), Uml::Visibility::Private, false,
357 printAssociationIncludeDecl (c->getSpecificAssocs(Uml::AssociationType::Association), c->id(), cpp);
367 cpp << "using " << cleanName(classifier->package()) << "::" << cleanName(classifier->name()) << ";" << m_endl;
391 << "*****************************************************************************/" << m_endl << m_endl;
469 writeInitAttributeDecl(c, cpp); // this is always private, used by constructors to initialize class
487 void CppWriter::writeAttributeDecls (UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
542 void CppWriter::writeHeaderAttributeAccessorMethods (UMLClassifier *c, Uml::Visibility::Enum visibility, bool writeStatic, QTextStream &stream)
556 writeAttributeMethods(list, visibility, true, false, policyExt()->getAccessorsAreInline(), stream);
580 writeComment(strVis + strStatic + QLatin1String(" attribute accessor methods"), indent(), stream);
652 void CppWriter::writeAssociationDecls(UMLAssociationList associations, Uml::Visibility::Enum permitScope, Uml::ID::Type id, QTextStream &h)
667 // First: we insert documentaion for association IF it has either role AND some documentation (!)
676 writeAssociationRoleDecl(fieldClassName, a->getRoleName(Uml::RoleType::B), a->getMultiplicity(Uml::RoleType::B), a->getRoleDoc(Uml::RoleType::B), h);
683 writeAssociationRoleDecl(fieldClassName, a->getRoleName(Uml::RoleType::A), a->getMultiplicity(Uml::RoleType::A), a->getRoleDoc(Uml::RoleType::A), h);
696 void CppWriter::writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi,
767 QString fieldClassName = umlObjectName(a->getObject(Uml::RoleType::B)) + (writePointerVar ? QLatin1String(" *") : QString());
781 QString fieldClassName = umlObjectName(a->getObject(Uml::RoleType::A)) + (writePointerVar ? QLatin1String(" *") : QString());
841 writeDocumentation(QLatin1String("Add a ") + fldName + QLatin1String(" object to the ") + fieldVarName + QLatin1String(" List"), description, QString(), stream);
863 writeDocumentation(QLatin1String("Remove a ") + fldName + QLatin1String(" object from ") + fieldVarName + QLatin1String(" List"),
884 QString returnVarName = policyExt()->getVectorClassName() + QLatin1Char('<') + className + QLatin1Char('>');
885 writeDocumentation(QLatin1String("Get the list of ") + fldName + QLatin1String(" objects held by ") + fieldVarName,
887 policyExt()->getDocToolTag() + QLatin1String("return ") + returnVarName + QLatin1String(" list of ") + fldName + QLatin1String(" objects held by ") + fieldVarName,
927 writeDocumentation(QLatin1String("Set the value of ") + fieldVarName, description, policyExt()->getDocToolTag() + QLatin1String("param new_var the new value of ") + fieldVarName, stream);
947 writeDocumentation(QLatin1String("Get the value of ") + fieldVarName, description, policyExt()->getDocToolTag() + QLatin1String("return the value of ") + fieldVarName, stream);
1139 void CppWriter::writeOperations(UMLClassifier *c, UMLOperationList &oplist, bool isHeaderMethod, QTextStream &cpp)
1159 doc += policyExt()->getDocToolTag() + QLatin1String("return ") + methodReturnType + QLatin1Char('\n');
1194 doc += policyExt()->getDocToolTag() + QLatin1String("param ") + atName + QLatin1Char(' ') + at->doc() + m_endl;
1233 void CppWriter::printAssociationIncludeDecl(UMLAssociationList list, Uml::ID::Type myId, QTextStream &stream)
1243 } else if (a->getObjectId(Uml::RoleType::B) == myId && !a->getRoleName(Uml::RoleType::A).isEmpty()) {
1251 if (!isFirstClass && !a->getRoleName(Uml::RoleType::A).isEmpty() && !a->getRoleName(Uml::RoleType::B).isEmpty())
1252 stream << "class " << current->name() << ";" << m_endl; // special case: use forward declaration
1297 void CppWriter::printTextAsSeparateLinesWithIndent(const QString &text, const QString &indent, QTextStream &stream)
const char * className() const
UMLAssociationList getAggregations()
Shorthand for getSpecificAssocs(Uml::at_Aggregation)
Definition: umlcanvasobject.cpp:423
UMLObject * getObject(Uml::RoleType::Enum role) const
Returns the UMLObject assigned to the given role.
Definition: association.cpp:497
void clear()
Definition: umlobject.h:61
bool getConst() const
Returns whether this operation is a query (C++ "const").
Definition: operation.cpp:411
QString getVectorClassName()
Definition: cppcodegenerationpolicy.cpp:172
This sub-class adds copyInto and clone to the QPtrList base class...
Definition: umlclassifierlistitemlist.h:26
QString & append(QChar ch)
This class defines the non-graphical information required for a UML Classifier (ie a class or interfa...
Definition: classifier.h:39
QString toUpper() const
UMLAssociationList getSpecificAssocs(Uml::AssociationType::Enum assocType)
Return the subset of m_List that matches the given type.
Definition: umlcanvasobject.cpp:61
Classifiers (classes, interfaces) have lists of operations, attributes, templates and others...
Definition: classifierlistitem.h:29
QString getInitialValue() const
Returns The initial value of the UMLAttribute.
Definition: attribute.cpp:99
bool getPackageIsNamespace()
Get the value of m_packageIsNamespace.
Definition: cppcodegenerationpolicy.cpp:138
Definition: basictypes.h:215
Uml::Visibility::Enum visibility() const
Returns the visibility of the object.
Definition: umlobject.cpp:431
UMLAttributeList getAttributeListStatic(Uml::Visibility::Enum scope) const
Returns the static attributes for the specified scope.
Definition: classifier.cpp:501
virtual UMLClassifierListItemList getFilteredList(UMLObject::ObjectType ot) const
Returns the entries in m_List that are of the requested type.
Definition: classifier.cpp:1027
bool openFile(QFile &file, const QString &name)
Opens a file named "name" for writing in the outputDirectory.
Definition: codegenerator.cpp:601
Definition: umlobject.h:56
QStringList split(const QString &sep, SplitBehavior behavior, Qt::CaseSensitivity cs) const
Definition: basictypes.h:250
QString findFileName(UMLPackage *concept, const QString &ext)
Determine the file name.
Definition: simplecodegenerator.cpp:89
QString & prepend(QChar ch)
virtual QString getTypeName() const
Overrides method from UMLClassifierListItem.
Definition: template.cpp:72
Definition: basictypes.h:216
QString fileName() const
int size() const
Definition: basictypes.h:182
QString simplified() const
This sub-class adds copyInto and clone to the QPtrList base class.
Definition: umlattributelist.h:26
This class holds information used by template classes, called paramaterised class in UML and a generi...
Definition: template.h:26
virtual QString getHeadingFile(const QString &file)
Gets the heading file (as a string) to be inserted at the beginning of the generated file...
Definition: codegenerator.cpp:497
QString & remove(int position, int n)
Definition: basictypes.h:58
This class contains the non-graphic representation of an association.
Definition: association.h:32
QString getStringClassName()
Definition: cppcodegenerationpolicy.cpp:162
void clear()
int count(const T &value) const
void append(const T &value)
QString capitalizeFirstLetter(const QString &string)
Return the input string with the first letter capitalized.
Definition: codegen_utils.cpp:421
bool isInterface() const
Returns true if this classifier represents an interface.
Definition: classifier.cpp:117
bool getAccessorsAreInline()
Get the value of m_inlineAccessors.
Definition: cppcodegenerationpolicy.cpp:81
bool isEmpty() const
QString getStringClassNameInclude()
Definition: cppcodegenerationpolicy.cpp:167
void codeGenerated(UMLClassifier *concept, bool generated)
bool isEmpty() const
QString trimmed() const
Definition: basictypes.h:60
Uml::Changeability::Enum changeability(Uml::RoleType::Enum role) const
Returns the changeability.
Definition: association.cpp:541
bool startsWith(const QString &s, Qt::CaseSensitivity cs) const
UMLAssociationList getCompositions()
Shorthand for getSpecificAssocs(Uml::at_Composition)
Definition: umlcanvasobject.cpp:433
bool endsWith(const QString &s, Qt::CaseSensitivity cs) const
typedef Iterator
bool hasVectorFields()
Return true if this classifier has vector fields.
Definition: classifier.cpp:1369
virtual UMLAssociationList getUniAssociationToBeImplemented()
Return the list of unidirectional association that should show up in the code.
Definition: classifier.cpp:1377
QString toString(Enum item, bool mnemonic)
Convert Visibility item into QString representation.
Definition: basictypes.cpp:99
static QString formatSourceCode(const QString &code, const QString &indentation)
Format source code for output in source files by adding the correct indentation to every line of code...
Definition: codegenerator.cpp:821
virtual void writeClass(UMLClassifier *c)
Call this method to generate cpp code for a UMLClassifier.
Definition: cppwriter.cpp:93
iterator end()
QString toLower() const
Definition: basictypes.h:183
CodeGenerationPolicy * commonPolicy() const
Returns the default code generation policy.
Definition: uml.cpp:2219
bool contains(QChar ch, Qt::CaseSensitivity cs) const
QString getVectorClassNameInclude()
Definition: cppcodegenerationpolicy.cpp:177
bool isDestructorOperation()
Returns whether this operation is a destructor.
Definition: operation.cpp:373
bool getAutoGenerateConstructors()
Get the value of m_autoGenerateConstructors.
Definition: codegenerationpolicy.cpp:365
Definition: basictypes.h:57
virtual void close()
QString & replace(int position, int n, QChar after)
bool isStatic() const
Returns true if this UMLObject has classifier scope, otherwise false (the default).
Definition: umlobject.cpp:331
UMLAttributeList getAttributeList() const
Returns the attributes for the specified scope.
Definition: classifier.cpp:449
virtual QStringList reservedKeywords() const
Get list of reserved keywords.
Definition: cppwriter.cpp:1331
UMLClassifierList getSuperClasses(bool withRealizations=true)
Return a list of the superclasses of this concept.
Definition: umlcanvasobject.cpp:360
bool getOperationsAreInline()
Get the value of m_inlineOperations.
Definition: cppcodegenerationpolicy.cpp:100
QString package(const QString &separator=QString(), bool includeRoot=false)
Return the package(s) in which this UMLObject is contained as a text.
Definition: umlobject.cpp:601
QString getSourceCode() const
Returns the source code for this operation.
Definition: operation.cpp:440
UMLOperationList getOpList(bool includeInherited=false, UMLClassifierSet *alreadyTraversed=0)
Return a list of operations for the Classifier.
Definition: classifier.cpp:968
bool hasAccessorMethods()
Return true if this classifier has accessor methods.
Definition: classifier.cpp:1341
Uml::Visibility::Enum visibility(Uml::RoleType::Enum role) const
Returns the Visibility of the given role.
Definition: association.cpp:550
QString getRoleDoc(Uml::RoleType::Enum role) const
Returns the documentation assigned to the given role.
Definition: association.cpp:577
QString getRoleName(Uml::RoleType::Enum role) const
Returns the name assigned to the role A.
Definition: association.cpp:568
static QString formatDoc(const QString &text, const QString &linePrefix=QLatin1String(" *"), int lineWidth=80)
Format documentation for output in source files.
Definition: codegenerator.cpp:790
int indexOf(const QRegExp &rx, int from) const
static QString cleanName(const QString &name)
Replaces spaces with underscores and capitalises as defined in m_modname.
Definition: codegenerator.cpp:627
Uml::ID::Type getObjectId(Uml::RoleType::Enum role) const
Returns the ID of the UMLObject assigned to the given role.
Definition: association.cpp:509
const QStringList reservedCppKeywords()
Get list of C++ reserved keywords.
Definition: codegen_utils.cpp:43
bool isConstructorOperation()
Returns whether this operation is a constructor.
Definition: operation.cpp:353
bool hasAbstractOps(UMLClassifier *c)
Check whether classifier has abstract operations.
Definition: simplecodegenerator.cpp:256
bool hasOperationMethods()
Return true if this classifier has operation methods.
Definition: classifier.cpp:1349
QString getMultiplicity(Uml::RoleType::Enum role) const
Returns the multiplicity assigned to the given role.
Definition: association.cpp:559
virtual QString getTypeName() const
Returns the type name of the UMLClassifierListItem.
Definition: classifierlistitem.cpp:110
iterator begin()
Definition: basictypes.h:59
QString getDocToolTag()
Definition: cppcodegenerationpolicy.cpp:212
QString indent()
Returns the current indent string based on m_indentLevel and m_indentation.
Definition: simplecodegenerator.cpp:74
bool hasAssociations()
Return true if this classifier has associations.
Definition: classifier.cpp:1307
bool hasNext() const
This file is part of the KDE documentation.
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:40:25 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006
Documentation copyright © 1996-2020 The KDE developers.
Generated on Mon Jun 22 2020 13:40:25 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006
KDE's Doxygen guidelines are available online.