summaryrefslogtreecommitdiffstats
path: root/umbrello/umbrello/codegenerators/cppcodeclassfield.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'umbrello/umbrello/codegenerators/cppcodeclassfield.cpp')
-rw-r--r--umbrello/umbrello/codegenerators/cppcodeclassfield.cpp108
1 files changed, 108 insertions, 0 deletions
diff --git a/umbrello/umbrello/codegenerators/cppcodeclassfield.cpp b/umbrello/umbrello/codegenerators/cppcodeclassfield.cpp
new file mode 100644
index 00000000..b6b2fb72
--- /dev/null
+++ b/umbrello/umbrello/codegenerators/cppcodeclassfield.cpp
@@ -0,0 +1,108 @@
+/***************************************************************************
+ * *
+ * 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-2007 *
+ * Umbrello UML Modeller Authors <uml-devel@uml.sf.net> *
+ ***************************************************************************/
+
+/* This code generated by:
+ * Author : thomas
+ * Date : Mon Sep 1 2003
+ */
+
+// own header
+#include "cppcodeclassfield.h"
+
+// qt/kde includes
+#include <kdebug.h>
+
+// local includes
+#include "../codegenerator.h"
+#include "../classifiercodedocument.h"
+#include "../attribute.h"
+#include "../umlobject.h"
+#include "../umlrole.h"
+#include "../uml.h"
+#include "cppcodegenerationpolicy.h"
+
+
+// Constructors/Destructors
+//
+
+CPPCodeClassField::CPPCodeClassField (ClassifierCodeDocument * parentDoc, UMLRole * role)
+ : CodeClassField(parentDoc, role)
+{
+
+}
+
+CPPCodeClassField::CPPCodeClassField (ClassifierCodeDocument * parentDoc, UMLAttribute * attrib)
+ : CodeClassField(parentDoc, attrib)
+{
+
+}
+
+CPPCodeClassField::~CPPCodeClassField ( ) { }
+
+//
+// Methods
+//
+
+// Other methods
+//
+
+QString CPPCodeClassField::getFieldName() {
+ if (parentIsAttribute())
+ {
+ UMLAttribute * at = (UMLAttribute*) getParentObject();
+ return cleanName(at->getName());
+ }
+ else
+ {
+ UMLRole * role = (UMLRole*) getParentObject();
+ QString roleName = role->getName();
+ if(fieldIsSingleValue()) {
+ return roleName.replace(0, 1, roleName.left(1).lower());
+ } else {
+ return roleName.lower() + "Vector";
+ }
+ }
+}
+
+QString CPPCodeClassField::getListFieldClassName () {
+ CodeGenPolicyExt * p = UMLApp::app()->getPolicyExt();
+ CPPCodeGenerationPolicy *policy = dynamic_cast<CPPCodeGenerationPolicy*>(p);
+ return policy->getVectorClassName();
+}
+
+QString CPPCodeClassField::getInitialValue() {
+
+ if (parentIsAttribute())
+ {
+ UMLAttribute * at = dynamic_cast<UMLAttribute*>( getParentObject() );
+ if (at) {
+ return fixInitialStringDeclValue(at->getInitialValue(), getTypeName());
+ } else {
+ kError() << "CPPCodeClassField::getInitialValue: parent object is not a UMLAttribute"
+ << endl;
+ return "";
+ }
+ }
+ else
+ {
+ if(fieldIsSingleValue()) {
+ // FIX : IF the multiplicity is "1" then we should init a new object here, if its 0 or 1,
+ // then we can just return 'empty' string (minor problem).
+ return "";
+ } else {
+ return " new "+getListFieldClassName()+"( )";
+ }
+ }
+
+}
+
+
+#include "cppcodeclassfield.moc"