1 /* 2 SPDX-License-Identifier: GPL-2.0-or-later 3 4 SPDX-FileCopyrightText: 2002 Oliver Kellogg <okellogg@users.sourceforge.net> 5 SPDX-FileCopyrightText: 2003-2021 Umbrello UML Modeller Authors <umbrello-devel@kde.org> 6 */ 7 8 #ifndef ADAWRITER_H 9 #define ADAWRITER_H 10 11 #include "simplecodegenerator.h" 12 #include "umlclassifierlist.h" 13 14 #include <QMap> 15 16 class UMLAssociation; 17 class UMLOperation; 18 class QTextStream; 19 class QFile; 20 21 /** 22 * Class AdaWriter is a code generator for UMLClassifier objects. 23 * Based on javawriter.h by Luis De la Parra Blum. 24 * Create an instance of this class, and feed it a UMLClassifier when 25 * calling writeClass and it will generate an Ada package spec for 26 * that concept. 27 */ 28 class AdaWriter : public SimpleCodeGenerator 29 { 30 Q_OBJECT 31 public: 32 33 AdaWriter(); 34 virtual ~AdaWriter(); 35 36 virtual void writeClass(UMLClassifier *c); 37 38 virtual Uml::ProgrammingLanguage::Enum language() const; 39 40 QStringList defaultDatatypes() const; 41 42 virtual bool isReservedKeyword(const QString & rPossiblyReservedKeyword); 43 44 virtual QStringList reservedKeywords() const; 45 46 private: 47 48 void declareClass(UMLClassifier *c, QTextStream &ada); 49 50 void writeOperation(UMLOperation *op, QTextStream &ada, bool is_comment = false); 51 52 void computeAssocTypeAndRole(UMLClassifier *c, 53 UMLAssociation *a, 54 QString& typeName, QString& roleName); 55 56 static bool isOOClass(UMLClassifier *c); 57 58 QString className(UMLClassifier *c, bool inOwnScope = true); 59 60 static QString packageName(UMLPackage *p); 61 62 void finalizeRun(); 63 64 static const QString defaultPackageSuffix; 65 66 typedef QMap<QString, QFile*> PackageFileMap; 67 68 /** 69 * Map package name to QFile. 70 * Required for closing opened files in finalizeRun(). 71 */ 72 PackageFileMap m_pkgsGenerated; 73 74 /** 75 * List of classifiers generated. 76 * Required for ensuring order of code generation which 77 * satisfies order of dependencies among classifiers. 78 */ 79 UMLClassifierList m_classesGenerated; 80 }; 81 82 #endif // ADAWRITER_H 83