[Uml-devel] kdesdk/umbrello/umbrello
Oliver Kellogg
okellogg at users.sourceforge.net
Sun Aug 22 23:41:02 UTC 2004
CVS commit by okellogg:
resolveTypes(): Override parent method for resolving the origin type.
M +28 -9 datatype.cpp 1.9
M +7 -0 datatype.h 1.8
--- kdesdk/umbrello/umbrello/datatype.cpp #1.8:1.9
@@ -59,13 +59,4 @@ bool UMLDatatype::isReference() {
}
-void UMLDatatype::saveToXMI(QDomDocument& qDoc, QDomElement& qElement) {
- QDomElement classElement = UMLObject::save("UML:DataType", qDoc);
- qElement.appendChild( classElement );
-}
-
-bool UMLDatatype::load(QDomElement&) {
- return true;
-}
-
void UMLDatatype::init() {
m_BaseType = ot_Datatype;
@@ -79,2 +70,30 @@ bool UMLDatatype::isInterface() {
}
+bool UMLDatatype::resolveTypes() {
+ if (m_idStr.isEmpty())
+ return true;
+ int id = m_idStr.toInt();
+ UMLDoc *pDoc = UMLApp::app()->getDocument();
+ UMLObject *typeObj = pDoc->findUMLObject(id);
+ m_pOrigType = static_cast<UMLClassifier*>(typeObj);
+ return true;
+}
+
+void UMLDatatype::saveToXMI(QDomDocument& qDoc, QDomElement& qElement) {
+ QDomElement classElement = UMLObject::save("UML:DataType", qDoc);
+ if (m_pOrigType)
+ classElement.setAttribute( "elementReference", m_pOrigType->getID() );
+ qElement.appendChild( classElement );
+}
+
+bool UMLDatatype::load(QDomElement& element) {
+ //CHECK: Does our usage of the elementReference attribute
+ // violate the XMI standard? - See resolveTypes()
+ m_idStr = element.attribute( "elementReference", "" );
+ if (!m_idStr.isEmpty()) {
+ // @todo We do not currently support composition.
+ m_isRef = true;
+ }
+ return true;
+}
+
--- kdesdk/umbrello/umbrello/datatype.h #1.7:1.8
@@ -72,4 +72,10 @@ public:
/**
+ * Overrides parent method for resolving the origin type
+ * in case of a pointer.
+ */
+ bool resolveTypes();
+
+ /**
* Set the origin type (in case of e.g. typedef)
*/
@@ -104,4 +110,5 @@ protected:
UMLClassifier *m_pOrigType;
bool m_isRef;
+ QString m_idStr;
};
More information about the umbrello-devel
mailing list