#ifndef __MESSAGEBAG_H #define __MESSAGEBAG_H #include #include #include #include "time.h" class BasicPortMessage; class MessageBag { public: typedef list< const BasicPortMessage * > MessageList; private: typedef map< string, MessageList, less > MessagesOnPort; MessagesOnPort msgs; int count; Time msgtime; public: MessageBag(); ~MessageBag(); MessageBag &add(const BasicPortMessage*); bool portHasMsgs(const string& portName) const; int size() const { return count; } const Time &time() const { return msgtime; } MessageBag &eraseAll(); const MessageList &msgsOnPort(const string& portName) const; struct iterator { iterator(); iterator(const MessagesOnPort::const_iterator &begin,const MessagesOnPort::const_iterator &end, const MessageList* currentList); iterator(const MessagesOnPort::const_iterator &begin,const MessagesOnPort::const_iterator &end); iterator &operator ++(int); const BasicPortMessage *operator *() const; bool operator==(const iterator &it) const; iterator &operator=(const iterator &it); MessagesOnPort::const_iterator msgsxport, msgsEnd; const MessageList *currentList; MessageList::const_iterator msgs; }; iterator begin() const; iterator end() const; }; //MessageBag inline MessageBag::iterator::iterator() : currentList(NULL) {} #endif //__MESSAGEBAG_H