summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerators/rubywriter.h
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerators/rubywriter.h')
-rw-r--r--umbrello/umbrello/codegenerators/rubywriter.h113
1 files changed, 113 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerators/rubywriter.h b/umbrello/umbrello/codegenerators/rubywriter.h
new file mode 100644
index 00000000..8f1547ad
--- /dev/null
+++ b/umbrello/umbrello/codegenerators/rubywriter.h
@@ -0,0 +1,113 @@
+/***************************************************************************
+ rubywriter.h - description
+ -------------------
+ begin : Mon Jul 18 2005
+ author : Richard Dale
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ * copyright (C) 2006-2007 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+#ifndef RUBYWRITER_H
+#define RUBYWRITER_H
+
+#include "simplecodegenerator.h"
+#include "../umloperationlist.h"
+#include "../umlattributelist.h"
+
+#include <qstringlist.h>
+
+class ClassifierInfo;
+
+/**
+ * class RubyWriter is a ruby code generator for UMLClassifier objects
+ * Just call writeClass and feed it a UMLClassifier;
+ */
+class RubyWriter : public SimpleCodeGenerator {
+ Q_OBJECT
+public:
+
+ RubyWriter();
+ virtual ~RubyWriter();
+
+ /**
+ * call this method to generate C++ code for a UMLClassifier
+ * @param c the class you want to generate code for.
+ */
+ virtual void writeClass(UMLClassifier *c);
+
+ /**
+ * returns "Ruby"
+ */
+ virtual Uml::Programming_Language getLanguage();
+
+ /**
+ * get list of reserved keywords
+ */
+ virtual const QStringList reservedKeywords() const;
+
+private:
+ /**
+ * Convert a C++ type such as 'int' or 'QWidget' to
+ * ruby types Integer and Qt::Widget
+ *
+ * @param cppType the C++ type to be converted
+ */
+ QString cppToRubyType(const QString &cppType);
+
+ /**
+ * Convert C++ names such as 'm_foobar' or pFoobar to
+ * just 'foobar' for ruby
+ *
+ * @param cppName the C++ name to be converted
+ */
+ QString cppToRubyName(const QString &cppName);
+
+ /**
+ * calls @ref writeSingleAttributeAccessorMethods() on each of the attributes in attribs list.
+ */
+ void writeAttributeMethods(UMLAttributeList *attribs,
+ Uml::Visibility visibility, QTextStream &stream);
+
+
+ /**
+ * write all method declarations, for attributes and associations
+ * for the given permitted scope.
+ */
+ void writeSingleAttributeAccessorMethods(const QString &fieldName,
+ const QString &description,
+ QTextStream &h);
+
+ /**
+ * write all operations for a given class
+ *
+ * @param c the concept we are generating code for
+ * @param h output stream for the header file
+ */
+ void writeOperations(UMLClassifier *c, QTextStream &h);
+
+ /**
+ * write a list of class operations
+ *
+ * @param classname the name of the class
+ * @param opList the list of operations
+ * @param h output stream for the header file
+ */
+ void writeOperations(const QString &classname, UMLOperationList &opList,
+ Uml::Visibility permitScope, QTextStream &h);
+
+ /**
+ * Summary information about current classifier.
+ */
+ ClassifierInfo * classifierInfo;
+};
+
+#endif //RUBYWRITER