00001 #ifndef PARTREP_H 00002 #define PARTREP_H 00003 00004 #include "string" 00005 00006 #include "AspectRep.h" 00007 #include "RoleRep.h" 00008 class ModelRep; 00009 class AspectRep; 00010 class RoleRep; 00011 class FCO; 00012 00014 class PartRep 00015 { 00016 public: 00017 PartRep( const RoleRep & role, 00018 AspectRep * aspect_ptr) 00019 //AspectRep * kind_aspect_ptr = 0, 00020 //bool primary = true) 00021 : m_rolePtr( &role), 00022 m_containerAspect( aspect_ptr), 00023 m_kindAspectPtr( 0), //m_kindAspectPtr( kind_aspect_ptr), 00024 m_primary( true) //m_primary( primary) 00025 { } 00026 00027 PartRep( const PartRep& peer): 00028 m_rolePtr( peer.m_rolePtr), 00029 m_containerAspect( peer.m_containerAspect), 00030 m_kindAspectPtr( peer.m_kindAspectPtr), 00031 m_primary( peer.m_primary) 00032 { } 00033 00034 const PartRep& operator=( const PartRep& peer) 00035 { 00036 if ( this == &peer) return *this; 00037 m_rolePtr = peer.m_rolePtr; 00038 m_containerAspect = peer.m_containerAspect; 00039 m_kindAspectPtr = peer.m_kindAspectPtr; 00040 m_primary = peer.m_primary; 00041 return *this; 00042 } 00043 00044 bool operator!=( const PartRep& peer) const 00045 { 00046 return 00047 ( m_rolePtr != peer.m_rolePtr || 00048 m_containerAspect != peer.m_containerAspect || 00049 m_kindAspectPtr != peer.m_kindAspectPtr || 00050 m_primary != peer.m_primary ); 00051 } 00052 00053 bool operator==( const PartRep& peer) const 00054 { 00055 return !this->operator!=(peer); 00056 } 00057 00058 public: 00059 inline const ModelRep* getParentPtr() const { return m_rolePtr->getModelRepPtr(); } 00060 inline const FCO* getFCOPtr() const { return m_rolePtr->getFCOPtr(); } 00061 00062 inline const RoleRep* getRoleRepPtr() const { return m_rolePtr; } 00063 inline const AspectRep* getContainerAspectPtr() const { return m_containerAspect; } 00064 00065 inline void setKindAspectPtr( const AspectRep* a_rep) { m_kindAspectPtr = a_rep; } 00066 inline const AspectRep* getKindAspectPtr() const { return m_kindAspectPtr; } 00067 00068 inline void setPrimary( bool is_primary) { m_primary = is_primary; } 00069 inline bool isPrimary() const { return m_primary; } 00070 00071 protected: 00072 const RoleRep * m_rolePtr; // role the part belongs to 00073 const AspectRep * m_containerAspect; // aspect the part belongs to 00074 const AspectRep * m_kindAspectPtr; // the selected aspect in case of mOdel part 00075 bool m_primary; 00076 }; 00077 #endif //PARTREP_H