summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerators/codegenfactory.h
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerators/codegenfactory.h')
-rw-r--r--umbrello/umbrello/codegenerators/codegenfactory.h119
1 files changed, 119 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerators/codegenfactory.h b/umbrello/umbrello/codegenerators/codegenfactory.h
new file mode 100644
index 00000000..27a0f293
--- /dev/null
+++ b/umbrello/umbrello/codegenerators/codegenfactory.h
@@ -0,0 +1,119 @@
+/***************************************************************************
+ * *
+ * 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) 2004-2006 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+#ifndef CODEGENFACTORY_H
+#define CODEGENFACTORY_H
+
+#include "../umlnamespace.h"
+#include "../codeaccessormethod.h"
+
+// fwd decls
+class CodeGenerator;
+class ClassifierCodeDocument;
+class CodeOperation;
+class CodeClassField;
+class CodeClassFieldDeclarationBlock;
+class UMLClassifier;
+class UMLOperation;
+class UMLAttribute;
+class UMLRole;
+
+/**
+ * CodeGenFactory allows creating the available code generators as well
+ * as the auxiliary objects required for the advanced code generators.
+ *
+ * @author Jonathan Riddell
+ * @author Oliver Kellogg <okellogg@users.sourceforge.net>
+ * Bugs and comments to uml-devel@lists.sf.net or http://bugs.kde.org
+ */
+namespace CodeGenFactory {
+
+ /**
+ * Create a code generator specific to the given language.
+ */
+ CodeGenerator* createObject(Uml::Programming_Language pl);
+
+
+ /**
+ * Create a CodeOperation belonging to the given ClassifierCodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent ClassifierCodeDocument.
+ * @param op the related UMLOperation
+ * @return CodeOperation which is specific to the current language
+ */
+ CodeOperation *newCodeOperation(ClassifierCodeDocument *cd, UMLOperation * op);
+
+ /**
+ * Create an attribute CodeClassField belonging to the given
+ * ClassifierCodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent ClassifierCodeDocument
+ * @param at attribute which is parent of this class field
+ * @return CodeClassField which is specific to the current language
+ */
+ CodeClassField * newCodeClassField (ClassifierCodeDocument *cd, UMLAttribute * at);
+
+ /**
+ * Create an association role CodeClassField belonging to the given
+ * ClassifierCodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent ClassifierCodeDocument
+ * @param role association role which is parent of this class field
+ * @return CodeClassField which is specific to the current language
+ */
+ CodeClassField * newCodeClassField(ClassifierCodeDocument *cd, UMLRole *role);
+
+ /**
+ * Create a CodeAccessorMethod object belonging to the given ClassifierCodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent ClassifierCodeDocument
+ * @param cf CodeClassField which is parent of this object
+ * @param type CodeAccessorMethod::AccessorType to create
+ *
+ * @return CodeAccessorMethod which is specific to the current language
+ */
+ CodeAccessorMethod * newCodeAccessorMethod(ClassifierCodeDocument *cd,
+ CodeClassField *cf,
+ CodeAccessorMethod::AccessorType type);
+
+ /**
+ * Create a CodeClassFieldDeclarationBlock object belonging to the given
+ * ClassifierCodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent ClassifierCodeDocument
+ * @param cf CodeClassField which is parent of this object
+ *
+ * @return CodeClassFieldDeclarationBlock which is specific to the current language
+ */
+ CodeClassFieldDeclarationBlock * newDeclarationCodeBlock (ClassifierCodeDocument *cd,
+ CodeClassField * cf);
+
+ /**
+ * Create a new CodeComment object belonging to the given CodeDocument.
+ * Only applies to the advanced generators.
+ *
+ * @param cd the parent CodeDocument
+ * @return CodeBlockWithComments
+ */
+ CodeComment * newCodeComment (CodeDocument *cd);
+
+ /**
+ * Currently unused (for possible future use)
+ */
+ CodeDocument * newClassifierCodeDocument (UMLClassifier * classifier);
+}
+
+#endif //CODEGENFACTORY_H