umbrello API Documentation

cppwriter.h

00001 /***************************************************************************
00002                           cppwriter.h  -  description
00003     This is the "old" code generator that does not support code editing
00004     in the Modeller but uses significantly less file space because the
00005     source code is not replicated in the XMI file.
00006                              -------------------
00007     copyright            : (C) 2003 Brian Thomas
00008          (C) 2004  Umbrello UML Modeller Authors <uml-devel@uml.sf.net>
00009  ***************************************************************************/
00010 
00011 /***************************************************************************
00012  *                                                                         *
00013  *   This program is free software; you can redistribute it and/or modify  *
00014  *   it under the terms of the GNU General Public License as published by  *
00015  *   the Free Software Foundation; either version 2 of the License, or     *
00016  *   (at your option) any later version.                                   *
00017  *                                                                         *
00018  ***************************************************************************/
00019 
00020 #ifndef CPPWRITER_H
00021 #define CPPWRITER_H
00022 
00023 #include "simplecodegenerator.h"
00024 #include "cppcodegenerationpolicy.h"
00025 #include "../umloperationlist.h"
00026 #include "../umlattributelist.h"
00027 #include "../umlassociationlist.h"
00028 
00029 class QFile;
00030 class ClassifierInfo;
00031 
00038 class CppWriter : public SimpleCodeGenerator {
00039 public:
00040 
00044     CppWriter();
00045 
00049     virtual ~CppWriter();
00050 
00055     virtual void writeClass(UMLClassifier *c);
00056 
00060     virtual Uml::Programming_Language getLanguage();
00061 
00065     QStringList defaultDatatypes();
00066 
00070     virtual const QStringList reservedKeywords() const;
00071 
00072 private:
00073 
00078     void writeClassDecl(UMLClassifier *c, QTextStream &cpp);
00079 
00083     void writeConstructorDecls(QTextStream &h);
00084     void writeConstructorMethods(QTextStream &cpp);
00085 
00090     void writeFieldDecl(UMLClassifier *c, Uml::Visibility permitScope, QTextStream &stream);
00091 
00096     void writeAccessorMethodDecl(UMLClassifier *c, Uml::Visibility permitScope, QTextStream &stream);
00097 
00105     void writeOperations(UMLClassifier *c, bool isHeaderMethod, Uml::Visibility permitScope, QTextStream &j);
00106 
00113     void writeOperations(UMLOperationList &list, bool isHeaderMethod, QTextStream &j);
00114 
00120     void writeAttributes(UMLClassifier *c, QTextStream &j);
00121 
00128     void writeAttributeDecls (Uml::Visibility visibility, bool writeStatic, QTextStream &stream );
00129 
00134     void writeHeaderFieldDecl(UMLClassifier *c, Uml::Visibility permitVisibility, QTextStream &stream);
00135 
00136     void writeHeaderAttributeAccessorMethods (Uml::Visibility visibility, bool writeStatic, QTextStream &stream );
00137 
00138     void writeHeaderAttributeAccessorMethodDecls(UMLClassifier *c, Uml::Visibility permitVisibility, QTextStream &stream);
00139     void writeHeaderAccessorMethodDecl(UMLClassifier *c, Uml::Visibility permitScope, QTextStream &stream);
00140 
00141 
00145     void writeAssociationDecls(UMLAssociationList associations, Uml::Visibility permit, Uml::IDType id, QTextStream &stream);
00146 
00150     void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi,
00151                                   QString doc, QTextStream &stream);
00152 
00156     void writeAttributeMethods(UMLAttributeList *attribs, Uml::Visibility visib, bool isHeaderMethod,
00157                                bool isStatic,
00158                                bool writeMethodBody, QTextStream &stream);
00159 
00163     void writeAssociationMethods(UMLAssociationList associations, Uml::Visibility permitVisib,
00164                                  bool isHeaderMethod,
00165                                  bool writeMethodBody, bool writePointerVar, Uml::IDType id, QTextStream &stream);
00166 
00172     void writeAssociationRoleMethod(const QString &fieldClassName, bool isHeaderMethod, bool writeMethodBody,
00173                                     const QString &roleName, const QString &multi,
00174                                     const QString &description, Uml::Changeability_Type change,
00175                                     QTextStream &stream);
00176 
00180     void writeSingleAttributeAccessorMethods(
00181             const QString &fieldClassName, const QString &Name,
00182             const QString &fieldName, const QString &description,
00183             Uml::Changeability_Type change,
00184             bool isHeaderMethod,
00185             bool isStatic, bool writeMethodBody, QTextStream &cpp);
00186 
00190     void writeVectorAttributeAccessorMethods(
00191             const QString &fieldClassName, const QString &fieldVarName,
00192             const QString &fieldName, const QString &description,
00193             Uml::Changeability_Type change,
00194             bool isHeaderMethod,
00195             bool writeMethodBody,
00196             QTextStream &cpp);
00197 
00201     void writeComment(const QString &text, const QString &indent, QTextStream &cpp);
00202 
00206     void writeDocumentation(QString header, QString body, QString end, QTextStream &cpp);
00207 
00208 
00212     void writeHeaderFile (UMLClassifier *c, QFile &file);
00213 
00217     void writeSourceFile (UMLClassifier *c, QFile &file);
00218 
00223     void printTextAsSeparateLinesWithIndent (const QString &text, const QString &indent,
00224                                              QTextStream &stream);
00225 
00229     void printAssociationIncludeDecl (UMLAssociationList list, Uml::IDType this_id, QTextStream &stream);
00230 
00234     void writeInitAttibuteMethod (QTextStream &stream);
00235 
00239     void writeInitAttibuteDecl (QTextStream &stream);
00240 
00244     QString getUMLObjectName(UMLObject *obj);
00245 
00249     QString capitalizeFirstLetter(const QString &string);
00250 
00254     QString fixTypeName(const QString &string);
00255 
00259     QString fixInitialStringDeclValue(const QString &value, const QString &type);
00260 
00264     QString getAttributeVariableName (UMLAttribute *at);
00265 
00269     void writeBlankLine(QTextStream &stream);
00270 
00274     CPPCodeGenerationPolicy *policyExt();
00275 
00279     ClassifierInfo * m_classifierInfo;
00280 
00281     QString VECTOR_METHOD_APPEND;
00282     QString VECTOR_METHOD_REMOVE;
00283     QString VECTOR_METHOD_INIT;
00284     QString OBJECT_METHOD_INIT;
00285 
00289     bool INLINE_ASSOCIATION_METHODS;
00290 
00291     QStringList ObjectFieldVariables;
00292     QStringList VectorFieldVariables;
00293 
00294 };
00295 
00296 
00297 
00298 #endif // CPPWRITER_H
KDE Logo
This file is part of the documentation for umbrello Version 3.1.0.
Documentation copyright © 1996-2004 the KDE developers.
Generated on Tue Jun 26 08:07:56 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003