summaryrefslogtreecommitdiffstats
path: root/src/uml/qumlclassifier.h
blob: 68ec91b1153fa945316c6357d82a58463339f1f4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
/****************************************************************************
**
** Copyright (C) 2013 Sandro S. Andrade <sandroandrade@kde.org>
** Contact: http://www.qt-project.org/legal
**
** This file is part of the QtUml module of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial License Usage
** Licensees holding valid commercial Qt licenses may use this file in
** accordance with the commercial license agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Digia.  For licensing terms and
** conditions see http://qt.digia.com/licensing.  For further information
** use the contact form at http://qt.digia.com/contact-us.
**
** GNU Lesser General Public License Usage
** Alternatively, this file may be used under the terms of the GNU Lesser
** General Public License version 2.1 as published by the Free Software
** Foundation and appearing in the file LICENSE.LGPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU Lesser General Public License version 2.1 requirements
** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
**
** In addition, as a special exception, Digia gives you certain additional
** rights.  These rights are described in the Digia Qt LGPL Exception
** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file.  Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
**
** $QT_END_LICENSE$
**
****************************************************************************/
#ifndef QUMLCLASSIFIER_H
#define QUMLCLASSIFIER_H

#include <QtUml/QtUmlGlobal>

#include <QtUml/QUmlNamespace>
#include <QtUml/QUmlType>
#include <QtUml/QUmlRedefinableElement>
#include <QtUml/QUmlTemplateableElement>

QT_BEGIN_HEADER

QT_BEGIN_NAMESPACE

QT_MODULE(QtUml)

class QUmlClassifierTemplateParameter;
class QUmlCollaborationUse;
class QUmlFeature;
class QUmlGeneralization;
class QUmlGeneralizationSet;
class QUmlNamedElement;
class QUmlProperty;
class QUmlRedefinableTemplateSignature;
class QUmlSubstitution;
class QUmlUseCase;

class Q_UML_EXPORT QUmlClassifier : public QUmlNamespace, public QUmlType, public QUmlRedefinableElement, public QUmlTemplateableElement
{
public:
    Q_DECL_HIDDEN virtual QModelingElement *clone() const;

    // Owned attributes
    const QSet<QUmlProperty *> attributes() const;
    Q_DECL_HIDDEN void addAttribute(QUmlProperty *attribute);
    Q_DECL_HIDDEN void removeAttribute(QUmlProperty *attribute);
    const QSet<QUmlCollaborationUse *> collaborationUses() const;
    void addCollaborationUse(QUmlCollaborationUse *collaborationUse);
    void removeCollaborationUse(QUmlCollaborationUse *collaborationUse);
    const QSet<QUmlFeature *> features() const;
    Q_DECL_HIDDEN void addFeature(QUmlFeature *feature);
    Q_DECL_HIDDEN void removeFeature(QUmlFeature *feature);
    const QSet<QUmlClassifier *> generals() const;
    void addGeneral(QUmlClassifier *general);
    void removeGeneral(QUmlClassifier *general);
    const QSet<QUmlGeneralization *> generalizations() const;
    void addGeneralization(QUmlGeneralization *generalization);
    void removeGeneralization(QUmlGeneralization *generalization);
    const QSet<QUmlNamedElement *> inheritedMembers() const;
    Q_DECL_HIDDEN void addInheritedMember(QUmlNamedElement *inheritedMember);
    Q_DECL_HIDDEN void removeInheritedMember(QUmlNamedElement *inheritedMember);
    bool isAbstract() const;
    void setAbstract(bool isAbstract);
    bool isFinalSpecialization() const;
    void setFinalSpecialization(bool isFinalSpecialization);
    QUmlRedefinableTemplateSignature *ownedTemplateSignature() const;
    void setOwnedTemplateSignature(QUmlRedefinableTemplateSignature *ownedTemplateSignature);
    const QSet<QUmlUseCase *> ownedUseCases() const;
    void addOwnedUseCase(QUmlUseCase *ownedUseCase);
    void removeOwnedUseCase(QUmlUseCase *ownedUseCase);
    const QSet<QUmlGeneralizationSet *> powertypeExtents() const;
    void addPowertypeExtent(QUmlGeneralizationSet *powertypeExtent);
    void removePowertypeExtent(QUmlGeneralizationSet *powertypeExtent);
    const QSet<QUmlClassifier *> redefinedClassifiers() const;
    void addRedefinedClassifier(QUmlClassifier *redefinedClassifier);
    void removeRedefinedClassifier(QUmlClassifier *redefinedClassifier);
    QUmlCollaborationUse *representation() const;
    void setRepresentation(QUmlCollaborationUse *representation);
    const QSet<QUmlSubstitution *> substitutions() const;
    void addSubstitution(QUmlSubstitution *substitution);
    void removeSubstitution(QUmlSubstitution *substitution);
    QUmlClassifierTemplateParameter *templateParameter() const;
    void setTemplateParameter(QUmlClassifierTemplateParameter *templateParameter);
    const QSet<QUmlUseCase *> useCases() const;
    void addUseCase(QUmlUseCase *useCase);
    void removeUseCase(QUmlUseCase *useCase);

    // Operations
    QSet<QUmlFeature *> allFeatures() const;
    QSet<QUmlClassifier *> allParents() const;
    bool conformsTo(QUmlClassifier *other) const;
    bool hasVisibilityOf(QUmlNamedElement *n) const;
    QSet<QUmlNamedElement *> inherit(QSet<QUmlNamedElement *> inhs) const;
    QSet<QUmlNamedElement *> inheritableMembers(QUmlClassifier *c) const;
    bool isTemplate() const;
    bool maySpecializeType(QUmlClassifier *c) const;
    QSet<QUmlClassifier *> parents() const;

protected:
    explicit QUmlClassifier();

    QSet<QUmlProperty *> _attributes;
    QSet<QUmlCollaborationUse *> _collaborationUses;
    QSet<QUmlFeature *> _features;
    QSet<QUmlGeneralization *> _generalizations;
    bool _isAbstract;
    bool _isFinalSpecialization;
    QUmlRedefinableTemplateSignature *_ownedTemplateSignature;
    QSet<QUmlUseCase *> _ownedUseCases;
    QSet<QUmlGeneralizationSet *> _powertypeExtents;
    QSet<QUmlClassifier *> _redefinedClassifiers;
    QUmlCollaborationUse *_representation;
    QSet<QUmlSubstitution *> _substitutions;
    QUmlClassifierTemplateParameter *_templateParameter;
    QSet<QUmlUseCase *> _useCases;
};

QT_END_NAMESPACE

Q_DECLARE_METATYPE(QT_PREPEND_NAMESPACE(QUmlClassifier) *)

QT_END_HEADER

#endif // QUMLCLASSIFIER_H