00001
00002
00003
00004 #ifndef __MAINUSERLIST_H__
00005 #define __MAINUSERLIST_H__
00006
00007 #include <string>
00008 #include <boost/signal.hpp>
00009 #include "entity.h"
00010 #include "user.h"
00011 #include "irclist.h"
00012
00013 namespace ircpp {
00014 class message;
00015
00016 class mainuserlist
00017 {
00018
00019 public:
00020
00021 mainuserlist(session& parent, listmode mode);
00022 ~mainuserlist();
00023
00024
00025 user& find(const std::string& name) const;
00026 user& add(const std::string& name);
00027 irclist<user>::iterator begin() const;
00028 irclist<user>::iterator end() const;
00029 size_t count() const;
00030 bool remove(user& u);
00031 bool clear();
00032
00033
00034 void user_deletable_slot(entity& e);
00035 void pre_names_slot(const message& msg);
00036 void post_quit_slot(message& msg);
00037 void user_deleting_slot(entity& u);
00038
00039
00040 private:
00041 session& _s;
00042 listmode _mode;
00043 irclist<user> _list;
00044
00045 boost::signals::connection post_quit_connection;
00046 };
00047
00048 }
00049
00050 #endif