00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
#ifndef MODEL_MODELELEMENT_HPP
00026
#define MODEL_MODELELEMENT_HPP
00027
00028
00029
#include <OMF/ModelObject.hpp>
00030
00031
00032
#include <Model/ModelPackage.hpp>
00033
00034
namespace Model
00035 {
00036
00037
class Namespace;
00038
class Constraint;
00039
00048 class ModelElement :
virtual public OMF::ModelObject
00049 {
00050
public:
00051 typedef OMF::BasicClass<ModelElement, OMF::Abstract> Proxy;
00052
00053
ModelElement();
00054
virtual ~ModelElement();
00055
00056
const OMF::String &
name() const;
00057
void setName(const OMF::String &name);
00058
void clearName();
00059
00060 const OMF::String &annotation() const;
00061
void setAnnotation(const OMF::String &annotation);
00062
void clearAnnotation();
00063
00064 const OMF::Set &requiredElements() const;
00065
void addRequiredElements(
ModelElement *element);
00066
void removeRequiredElements(
ModelElement *element);
00067
void clearRequiredElements();
00068
00069 const OMF::Set &constraints() const;
00070
void addConstraints(
Constraint *constraint);
00071
void removeConstraints(
Constraint *constraint);
00072
void clearConstraints();
00073
00074
Namespace *container();
00075
void setContainer(
Namespace *container);
00076
void clearContainer();
00077
00085 const OMF::List &qualifiedName();
00086
00101 OMF::Set findRequiredElements(const OMF::Set &kinds,
00102 const OMF::Boolean &recursive);
00103
00115 OMF::Boolean isRequiredBecause(
ModelElement *otherElement,
00116 OMF::String &reason);
00117
00126 OMF::Boolean isFrozen();
00127
00139 OMF::Boolean isVisible(
ModelElement *otherElement);
00140
00141 private:
00142 OMF::String _name;
00143 OMF::String _annotation;
00144 OMF::List _qualifiedName;
00145 OMF::Set _requiredElements;
00146 OMF::Set _constraints;
00147
Namespace *_container;
00148 };
00149 }
00150
00151 #endif