00001 #ifndef SETREP_H 00002 #define SETREP_H 00003 00004 #include "BON.h" 00005 #include "BONImpl.h" 00006 00007 #include "Any.h" 00008 #include "FCO.h" 00009 #include "PointerItem.h" 00010 #include "ModelRep.h" 00011 #include "logger.h" 00012 00013 class SetRep : public FCO 00014 { 00015 public: // types 00016 typedef std::vector<FCO*> SetMemberList; 00017 typedef std::vector<FCO*>::iterator SetMemberList_Iterator; 00018 typedef std::vector<FCO*>::const_iterator SetMemberList_ConstIterator; 00019 00020 typedef std::vector< PointerItem> PointerItemSeries; 00021 typedef std::vector< PointerItem>::iterator PointerItemSeries_Iterator; 00022 typedef std::vector< PointerItem>::const_iterator PointerItemSeries_ConstIterator; 00023 typedef const ModelRep* Key; 00024 typedef std::map< Key, PointerItemSeries> SetMembersMap; 00025 typedef SetMembersMap::iterator SetMembersMap_Iterator; 00026 00027 public: 00028 SetRep( BON::FCO& ptr, BON::FCO& resp_ptr); 00029 ~SetRep(); 00030 00031 /*virtual*/ std::string doDump(); 00032 00033 inline Any::KIND_TYPE getMyKind() const { return Any::SET; } 00034 00035 // adds new elements to the m_memberList vector 00036 void addMember( FCO * member); 00037 00038 // adds new elements to the m_extMemberList vector 00039 void inherit(); 00040 00041 void addSetMemberRole( const ModelRep * model, const RoleRep& member); 00042 00043 void addSetMemberRole( const ModelRep * model, const RoleRep::RoleRepSeries & role_series); 00044 00045 00046 bool checkSetElements(); 00047 00048 protected: 00049 // stores those FCO-s which are in SET_MEMBER relationship with (*this) 00050 // coresponds to "initial" 00051 SetMemberList m_memberList; 00052 00053 // stores all rolenames for the members above and their intInherited desc's 00054 // coresponds to "final" 00055 SetMembersMap m_memberMap; 00056 00057 private: // forbiding copy 00058 SetRep( const SetRep&); 00059 const SetRep& operator=( const SetRep&); 00060 00061 }; 00062 00063 #endif //SETREP_H