00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef DWRITER_H
00020 #define DWRITER_H
00021
00022 #include "simplecodegenerator.h"
00023 #include "../umloperationlist.h"
00024 #include "../umlattributelist.h"
00025 #include "../umlassociationlist.h"
00026
00027 class UMLOperation;
00028
00035 class DWriter : public SimpleCodeGenerator {
00036 public:
00037
00041 DWriter();
00042
00046 virtual ~DWriter();
00047
00052 virtual void writeClass(UMLClassifier *c);
00053
00057 virtual Uml::Programming_Language getLanguage();
00058
00062 QStringList defaultDatatypes();
00063
00064 private:
00065
00069 void writeModuleDecl(UMLClassifier *c, QTextStream &d);
00070
00074 void writeModuleImports(UMLClassifier *c, QTextStream &d);
00075
00080 void writeClassDecl(UMLClassifier *c, QTextStream &d);
00081
00085 void writeConstructor(UMLClassifier *c, QTextStream &d);
00086
00092 static bool compareDMethod(UMLOperation *op1, UMLOperation *op2);
00093
00099 static bool dMethodInList(UMLOperation *umlOp, UMLOperationList &opl);
00100
00109 void getSuperImplementedOperations(UMLClassifier *c, UMLOperationList &yetImplementedOpList ,UMLOperationList &toBeImplementedOpList, bool noClassInPath = true);
00110
00116 void getInterfacesOperationsToBeImplemented(UMLClassifier *c, UMLOperationList &opl);
00117
00123 void writeOperations(UMLClassifier *c, QTextStream &j);
00124
00130 void writeOperations(UMLOperationList &list, QTextStream &j);
00131
00137 void writeAttributes(UMLClassifier *c, QTextStream &j);
00138
00144 void writeProtectionMod(Uml::Visibility visibility, QTextStream &d);
00145
00153 void writeAttributeDecl(Uml::Visibility visibility, UMLAttributeList &atlist, QTextStream &d);
00154
00162 void writeAttributeDecls(UMLAttributeList &atpub, UMLAttributeList &atprot,
00163 UMLAttributeList &atpriv, QTextStream &d );
00164
00168 void writeAssociationDecls(UMLAssociationList associations, Uml::IDType id, QTextStream &d);
00169
00173 void writeAssociationRoleDecl(QString fieldClassName, QString roleName, QString multi,
00174 QString doc, Uml::Visibility visib, QTextStream &d);
00175
00179 void writeAttributeMethods(UMLAttributeList &atpub, Uml::Visibility visibility, QTextStream &d);
00180
00184 void writeAssociationMethods(UMLAssociationList associations, UMLClassifier *thisClass,
00185 QTextStream &d);
00186
00192 void writeAssociationRoleMethod(QString fieldClassName, QString roleName, QString multi,
00193 QString description, Uml::Visibility visib, Uml::Changeability_Type change,
00194 QTextStream &d);
00195
00199 void writeSingleAttributeAccessorMethods(QString fieldClassName, QString fieldVarName,
00200 QString fieldName, QString description,
00201 Uml::Visibility visibility, Uml::Changeability_Type change,
00202 bool isFinal, QTextStream &d);
00203
00207 void writeVectorAttributeAccessorMethods(QString fieldClassName, QString fieldVarName,
00208 QString fieldName, QString description,
00209 Uml::Visibility visibility, Uml::Changeability_Type change,
00210 QTextStream &d);
00211
00215 void writeComment(const QString &text, const QString &indent, QTextStream &d, bool dDocStyle=false);
00216
00220 void writeDocumentation(QString header, QString body, QString end, QString indent, QTextStream &d);
00221
00225 QString getUMLObjectName(UMLObject *obj);
00226
00230 QString capitaliseFirstLetter(QString string);
00231
00235 QString deCapitaliseFirstLetter(QString string);
00236
00240 QString pluralize(QString string);
00241
00245 QString unPluralize(QString string);
00246
00250 QString fixTypeName(const QString& string);
00251
00255 QString fixInitialStringDeclValue(QString value, QString type);
00256
00260 void writeBlankLine(QTextStream& d);
00261
00265 QString scopeToDDecl(Uml::Visibility scope);
00266
00270 QString startline;
00271
00275 bool isInterface;
00276
00277 };
00278
00279
00280 #endif // DWRITER_H
00281