umbrello/umbrello
codegenerator.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #ifndef CODEGENERATOR_H
00013 #define CODEGENERATOR_H
00014
00015 #include <QtCore/QHash>
00016 #include <QtCore/QList>
00017 #include <QtCore/QDir>
00018
00019 #include "codegenerators/codegenpolicyext.h"
00020 #include "codegenerationpolicy.h"
00021 #include "umlpackagelist.h"
00022 #include "umlclassifierlist.h"
00023 #include "codedocumentlist.h"
00024 #include "codeviewerstate.h"
00025 #include "umlnamespace.h"
00026
00027 class UMLDoc;
00028 class UMLObject;
00029 class ClassifierCodeDocument;
00030 class CodeBlock;
00031 class CodeDocument;
00032 class CodeViewerDialog;
00033 class QDomDocument;
00034 class QDomElement;
00035
00068 class CodeGenerator : public QObject
00069 {
00070 Q_OBJECT
00071
00072 public:
00073
00074 CodeGenerator ();
00075 CodeGenerator (QDomElement & element );
00076
00077 virtual ~CodeGenerator ( );
00078
00079 bool addCodeDocument ( CodeDocument * add_object );
00080
00081
00082
00083
00084
00085
00086
00087
00088
00089
00090
00091 bool removeCodeDocument ( CodeDocument * remove_object );
00092
00093 CodeDocumentList * getCodeDocumentList ( );
00094
00095 QString getUniqueID ( CodeDocument * codeDoc );
00096
00097 virtual void saveToXMI ( QDomDocument & doc, QDomElement & root );
00098
00099 CodeDocument * findCodeDocumentByID (const QString &id );
00100
00101 virtual void writeCodeToFile ( );
00102 virtual void writeCodeToFile(UMLClassifierList &list);
00103
00104
00105
00106
00107
00108 void setModifyNamePolicy(CodeGenerationPolicy::ModifyNamePolicy p);
00109 CodeGenerationPolicy::ModifyNamePolicy modifyNamePolicy()const;
00110
00111 void setIncludeHeadings(bool i);
00112 bool includeHeadings() const;
00113
00114 void setHeadingFileDir(const QString &);
00115 QString headingFileDir() const;
00116
00117 void setForceDoc(bool f);
00118 bool forceDoc() const;
00119
00120 void setForceSections(bool f);
00121 bool forceSections() const;
00122
00123 virtual QString getHeadingFile (const QString &file );
00124
00125 QString findFileName(CodeDocument * codeDocument);
00126
00127 static QString cleanName ( const QString &name );
00128
00129 static QString formatDoc (const QString& text, const QString& linePrefix = " *", int lineWidth = 80 );
00130
00131 static QString formatSourceCode(const QString& code, const QString& indentation);
00132
00133 static void findObjectsRelated(UMLClassifier *c, UMLPackageList &cList);
00134
00139 virtual CodeDocument * newClassifierCodeDocument (UMLClassifier * classifier ) = 0;
00140
00141 virtual void loadFromXMI (QDomElement & element );
00142
00143 virtual CodeDocument * newCodeDocument ( );
00144
00148 virtual Uml::Programming_Language getLanguage() = 0;
00149
00155
00156
00157 CodeDocument * findCodeDocumentByClassifier (UMLClassifier * classifier );
00158
00159 virtual QStringList defaultDatatypes();
00160
00161 virtual CodeViewerDialog * getCodeViewerDialog( QWidget* parent, CodeDocument * doc,
00162 Settings::CodeViewerState state);
00163
00164 virtual bool isReservedKeyword(const QString & keyword);
00165
00169 virtual const QStringList reservedKeywords() const;
00170
00171 virtual void createDefaultStereotypes ();
00172
00173 virtual void initFromParentDocument( );
00174
00175 void connect_newcodegen_slots();
00176
00177 protected:
00178
00179
00180
00181
00182
00183
00184
00185 QString overwritableName (const QString& name, const QString &extension );
00186
00187 bool openFile (QFile& file, const QString &name);
00188
00189 void writeListedCodeDocsToFile(CodeDocumentList * docs);
00190
00191 static const char * hierarchicalCodeBlockNodeName;
00192
00193
00194 QHash<QString, CodeDocument*> m_codeDocumentDictionary;
00195
00200 bool m_applyToAllRemaining;
00201
00205 UMLDoc* m_document;
00206
00207 private:
00208
00209
00210
00211
00212
00213
00214
00215
00216 CodeDocumentList m_codedocumentVector;
00217 int lastIDIndex;
00218
00219 void initFields() ;
00220
00221 void loadCodeForOperation(const QString& id, const QDomElement& codeDocElement);
00222
00223 public slots:
00224
00225 virtual void checkAddUMLObject (UMLObject * obj);
00226 virtual void checkRemoveUMLObject (UMLObject * obj);
00227
00228 virtual void syncCodeToDocument ( );
00229
00230 signals:
00231
00232 void codeGenerated(UMLClassifier* concept, bool generated);
00233
00234 };
00235
00236 #endif // CODEGENERATOR_H
00237