umbrello API Documentation

codegenerator.h

00001 /***************************************************************************
00002  *                                                                         *
00003  *   This program is free software; you can redistribute it and/or modify  *
00004  *   it under the terms of the GNU General Public License as published by  *
00005  *   the Free Software Foundation; either version 2 of the License, or     *
00006  *   (at your option) any later version.                                   *
00007  *                                                                         *
00008  *   copyright (C) 2004-2006                                               *
00009  *   Umbrello UML Modeller Authors <uml-devel@uml.sf.net>                  *
00010  ***************************************************************************/
00011 
00012 /*  This code generated by:
00013  *      Author : thomas
00014  *      Date   : Thu Jun 19 2003
00015  *  Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org
00016  */
00017 
00018 
00019 #ifndef CODEGENERATOR_H
00020 #define CODEGENERATOR_H
00021 
00022 #include <qdict.h>
00023 #include <qdir.h>
00024 
00025 #include "codegenerators/codegenpolicyext.h"
00026 #include "codegenerationpolicy.h"
00027 #include "umlpackagelist.h"
00028 #include "umlclassifierlist.h"
00029 #include "codedocumentlist.h"
00030 #include "codeviewerstate.h"
00031 #include "umlnamespace.h"
00032 
00033 class UMLAttribute;
00034 class UMLDoc;
00035 class UMLObject;
00036 class UMLRole;
00037 class UMLOperation;
00038 
00039 class ClassifierCodeDocument;
00040 class CodeAccessorMethod;
00041 class CodeBlock;
00042 class CodeBlockWithComments;
00043 class CodeClassField;
00044 class CodeClassFieldDeclarationBlock;
00045 class CodeComment;
00046 class CodeDocument;
00047 class CodeOperation;
00048 class CodeViewerDialog;
00049 
00050 class KConfig;
00051 
00082 class CodeGenerator : public QObject {
00083     Q_OBJECT
00084 
00085 public:
00086 
00087     // Constructors/Destructors
00088     //
00089 
00098     CodeGenerator ();
00099 
00105     CodeGenerator (QDomElement & element );
00106 
00110     virtual ~CodeGenerator ( );
00111 
00112     // Public attribute accessor methods
00113     //
00114 
00119     bool addCodeDocument ( CodeDocument * add_object );
00120 
00128     // bool replaceCodeDocument (  CodeDocument * replace_doc=0, bool addIfPriorDocumentNotPresent=true,
00129     //                                bool deleteReplacedDocument=true );
00130 
00135     bool removeCodeDocument ( CodeDocument * remove_object );
00136 
00142     CodeDocumentList * getCodeDocumentList ( );
00143 
00144     // get a unique id for this codedocument
00145     QString getUniqueID ( CodeDocument * codeDoc );
00146 
00150     virtual void saveToXMI ( QDomDocument & doc, QDomElement & root );
00151 
00156     CodeDocument * findCodeDocumentByID (const QString &id );
00157 
00161     virtual void writeCodeToFile ( );
00162 
00163     // this method is here to provide class wizard the
00164     // ability to write out only those classes which
00165     // are selected by the user.
00166     virtual void writeCodeToFile(UMLClassifierList &list);
00167 
00168     // these are utility methods for accessing the default
00169     // code gen policy object and *perhaps* should go away when we
00170     // finally implement the CodeGenDialog class -b.t.
00171 
00172     void setModifyNamePolicy(CodeGenerationPolicy::ModifyNamePolicy p);
00173     CodeGenerationPolicy::ModifyNamePolicy modifyNamePolicy()const;
00174 
00175     void setIncludeHeadings(bool i);
00176     bool includeHeadings() const;
00177 
00178     void setHeadingFileDir(const QString &);
00179     QString headingFileDir() const;
00180 
00181     void setForceDoc(bool f);
00182     bool forceDoc() const;
00183 
00184     void setForceSections(bool f);
00185     bool forceSections() const;
00186 
00187 
00206     virtual QString getHeadingFile (const QString &file );
00207 
00217     virtual QString findFileName(CodeDocument * doc);
00218 
00224     static QString cleanName ( const QString &name );
00225 
00234     QString formatDoc (const QString & text, const QString & linePrefix = " *", int lineWidth = 80 );
00235 
00244     static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList);
00245 
00246     // a series of accessor method constructors that we need to define
00247     // for any particular language.
00248     virtual CodeDocument * newClassifierCodeDocument (UMLClassifier * classifier ) = 0;
00249 
00253     virtual void loadFromXMI (QDomElement & element );
00254 
00259     virtual CodeDocument * newCodeDocument ( );
00260 
00264     virtual Uml::Programming_Language getLanguage() = 0;
00265 
00271     //FIX
00272     // NOTE: this should be 'protected' or we could have problems with CPP code generator
00273     CodeDocument * findCodeDocumentByClassifier (UMLClassifier * classifier );
00274 
00279     virtual QStringList defaultDatatypes();
00280 
00283     virtual CodeViewerDialog * getCodeViewerDialog( QWidget* parent, CodeDocument * doc,
00284             Settings::CodeViewerState state);
00285 
00293     virtual bool isReservedKeyword(const QString & rPossiblyReservedKeyword);
00294 
00298     virtual const QStringList reservedKeywords() const;
00299 
00303     virtual void createDefaultStereotypes ();
00304 
00312     virtual void initFromParentDocument( );
00313 
00319     void connect_newcodegen_slots();
00320 
00321 protected:
00322 
00327     // void removeAndDeleteAllAutoGeneratedCodeDocuments ( bool deleteRemovedDocs=true );
00328 
00344     QString overwritableName (const QString& name, const QString &extension );
00345 
00353     bool openFile (QFile& file, const QString &name);
00354 
00357     void writeListedCodeDocsToFile(CodeDocumentList * docs);
00358 
00359     static const char * hierarchicalCodeBlockNodeName;
00360 
00361     // map of what code documents we currently have in this generator.
00362     QDict<CodeDocument> m_codeDocumentDictionary;
00363 
00368     bool m_applyToAllRemaining;
00369 
00373     UMLDoc* m_document;
00374 
00375 private:
00376 
00381     // this seems silly and overkill now. -b.t.
00382     // QMap<CodeDocument*,QString> *m_fileMap;
00383 
00384     CodeDocumentList m_codedocumentVector;
00385     int lastIDIndex;
00386 
00387     void initFields() ;
00388 
00389 public slots:
00390 
00392     virtual void checkAddUMLObject (UMLObject * obj);
00393     virtual void checkRemoveUMLObject (UMLObject * obj);
00394 
00400     virtual void syncCodeToDocument ( );
00401 
00402 signals:
00403 
00411     void codeGenerated(UMLClassifier* concept, bool generated);
00412 
00413 };
00414 
00415 #endif // CODEGENERATOR_H
00416 
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:55 2007 by doxygen 1.4.1 written by Dimitri van Heesch, © 1997-2003