diff options
author | Sandro S. Andrade <sandroandrade@kde.org> | 2013-09-02 22:02:41 -0300 |
---|---|---|
committer | Sandro S. Andrade <sandroandrade@kde.org> | 2013-09-03 03:04:37 +0200 |
commit | a143fe8c5451493b128b4c6f0750f02b58af8666 (patch) | |
tree | 4b74787f6ece9256db04dc65002cae749f6936b3 /src/uml/qumlparameterableelement.cpp | |
parent | 2bfe659e4d30b449747585e18eeb84bfc5d73f43 (diff) |
Add initial version of new UML metamodel implementation
Change-Id: Ic29a04dc49fac075d9c736237573b7f4e3da85ef
Reviewed-by: Sandro S. Andrade <sandroandrade@kde.org>
Diffstat (limited to 'src/uml/qumlparameterableelement.cpp')
-rw-r--r-- | src/uml/qumlparameterableelement.cpp | 122 |
1 files changed, 44 insertions, 78 deletions
diff --git a/src/uml/qumlparameterableelement.cpp b/src/uml/qumlparameterableelement.cpp index e8ebf4ef..eed8a093 100644 --- a/src/uml/qumlparameterableelement.cpp +++ b/src/uml/qumlparameterableelement.cpp @@ -40,98 +40,88 @@ ****************************************************************************/ #include "qumlparameterableelement.h" -#include <QtUml/QUmlComment> -#include <QtUml/QUmlElement> #include <QtUml/QUmlTemplateParameter> -QT_BEGIN_NAMESPACE - /*! - \class UmlParameterableElement + \class QUmlParameterableElement \inmodule QtUml \brief A parameterable element is an element that can be exposed as a formal template parameter for a template, or specified as an actual parameter in a binding of a template. */ - -QUmlParameterableElement::QUmlParameterableElement(QObject *parent) : - QObject(parent) +QUmlParameterableElement::QUmlParameterableElement() : + _owningTemplateParameter(0), + _templateParameter(0) { } -// OWNED ATTRIBUTES [Element] - -/*! - The Comments owned by this element. - */ -const QSet<QUmlComment *> QUmlParameterableElement::ownedComment() const +QUmlParameterableElement::~QUmlParameterableElement() { - return *(reinterpret_cast<const QSet<QUmlComment *> *>(&_ownedComment)); } +// OWNED ATTRIBUTES + /*! - The Elements owned by this element. + The formal template parameter that owns this element. */ -const QSet<QUmlElement *> QUmlParameterableElement::ownedElement() const +QUmlTemplateParameter * +QUmlParameterableElement::owningTemplateParameter() const { - return *(reinterpret_cast<const QSet<QUmlElement *> *>(&_ownedElement)); + // This is a read-write association end + + return _owningTemplateParameter; } -/*! - The Element that owns this element. - */ -QUmlElement *QUmlParameterableElement::owner() const +void QUmlParameterableElement::setOwningTemplateParameter(QUmlTemplateParameter *owningTemplateParameter) { - return reinterpret_cast<QUmlElement *>(_owner); -} + // This is a read-write association end -// OWNED ATTRIBUTES [ParameterableElement] + if (_owningTemplateParameter != owningTemplateParameter) { + // Adjust subsetted properties -/*! - The formal template parameter that owns this element. - */ -QUmlTemplateParameter *QUmlParameterableElement::owningTemplateParameter() const -{ - return reinterpret_cast<QUmlTemplateParameter *>(_owningTemplateParameter); + _owningTemplateParameter = owningTemplateParameter; + if (owningTemplateParameter->asQObject() && this->asQObject()) + QObject::connect(owningTemplateParameter->asQObject(), SIGNAL(destroyed()), this->asQObject(), SLOT(setOwningTemplateParameter())); + + // Adjust subsetted properties + setTemplateParameter(owningTemplateParameter); + setOwner(owningTemplateParameter); + } } /*! The template parameter that exposes this element as a formal parameter. */ -QUmlTemplateParameter *QUmlParameterableElement::templateParameter() const +QUmlTemplateParameter * +QUmlParameterableElement::templateParameter() const { - return reinterpret_cast<QUmlTemplateParameter *>(_templateParameter); -} - -// OPERATIONS [Element] + // This is a read-write association end -/*! - The query allOwnedElements() gives all of the direct and indirect owned elements of an element. - */ -QSet<QUmlElement *> QUmlParameterableElement::allOwnedElements() const -{ - QSet<QUmlElement *> r; - foreach (UmlElement *element, UmlElement::allOwnedElements()) - r.insert(reinterpret_cast<QUmlElement *>(element)); - return r; + return _templateParameter; } -/*! - The query mustBeOwned() indicates whether elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation. - */ -bool QUmlParameterableElement::mustBeOwned() const +void QUmlParameterableElement::setTemplateParameter(QUmlTemplateParameter *templateParameter) { - return UmlElement::mustBeOwned(); + // This is a read-write association end + + if (_templateParameter != templateParameter) { + _templateParameter = templateParameter; + if (templateParameter->asQObject() && this->asQObject()) + QObject::connect(templateParameter->asQObject(), SIGNAL(destroyed()), this->asQObject(), SLOT(setTemplateParameter())); + } } -// OPERATIONS [ParameterableElement] +// OPERATIONS /*! The query isCompatibleWith() determines if this parameterable element is compatible with the specified parameterable element. By default parameterable element P is compatible with parameterable element Q if the kind of P is the same or a subtype as the kind of Q. Subclasses should override this operation to specify different compatibility constraints. */ bool QUmlParameterableElement::isCompatibleWith(QUmlParameterableElement *p) const { - return UmlParameterableElement::isCompatibleWith(p); + qWarning("UmlParameterableElement::isCompatibleWith(): to be implemented (operation)"); + + Q_UNUSED(p); + return bool (); } /*! @@ -139,32 +129,8 @@ bool QUmlParameterableElement::isCompatibleWith(QUmlParameterableElement *p) con */ bool QUmlParameterableElement::isTemplateParameter() const { - return UmlParameterableElement::isTemplateParameter(); -} + qWarning("UmlParameterableElement::isTemplateParameter(): to be implemented (operation)"); -// SLOTS FOR OWNED ATTRIBUTES [Element] - -void QUmlParameterableElement::addOwnedComment(UmlComment *ownedComment) -{ - UmlElement::addOwnedComment(ownedComment); -} - -void QUmlParameterableElement::removeOwnedComment(UmlComment *ownedComment) -{ - UmlElement::removeOwnedComment(ownedComment); + return bool (); } -// SLOTS FOR OWNED ATTRIBUTES [ParameterableElement] - -void QUmlParameterableElement::setOwningTemplateParameter(QUmlTemplateParameter *owningTemplateParameter) -{ - UmlParameterableElement::setOwningTemplateParameter(owningTemplateParameter); -} - -void QUmlParameterableElement::setTemplateParameter(QUmlTemplateParameter *templateParameter) -{ - UmlParameterableElement::setTemplateParameter(templateParameter); -} - -QT_END_NAMESPACE - |