/home/matthew/data/programming/current/libircpp/irclist.h

00001 /* 
00002  * libircpp++ irclist.h
00003  */
00004 #ifndef __IRCLIST_H__
00005 #define __IRCLIST_H__
00006 
00007 #include <string>
00008 #include <set>
00009 #include <iostream>
00010 
00011 namespace ircpp {
00012         class session;
00013 
00020         enum listmode {off, automatic, manual};
00021 
00022 
00023         template <class T>
00024         class irclist
00025         {
00026                 public:
00027                         /* Iterator */
00028                         class iterator
00029                         {
00030                                 public:
00031                                         iterator();
00032                                         ~iterator();
00033                                         explicit iterator(const typename std::set<T*>::iterator& it);
00034                                         T& operator* () const;
00035                                         const iterator& operator++ (int);
00036                                         const iterator& operator= (const iterator& rhs);
00037                                         bool operator== (const iterator& rhs);
00038                                         bool operator!= (const iterator& rhs);
00039                                         const typename std::set<T*>::iterator set_iterator() const;
00040                                 private:
00041                                         typename std::set<T*>::iterator _it;
00042                         };
00043 
00044                 /* Interface functions */
00045                 public:
00046                         /* Constructors and destructors */
00047                         explicit irclist(session& parent);
00048                         ~irclist();
00049 
00050                         /* Data access functions */
00051                         T* find(const std::string& name) const;
00052                         T* add(T* item);
00053                         iterator begin() const;
00054                         iterator end() const;
00055                         size_t count() const;
00056                         bool remove(T& item);
00057 
00058                 /* Private data */
00059                 private:
00060                         class compare {
00061                                 public:
00062                                 bool operator()(const T* a, const T* b) const {
00063                                         return (*a < *b);
00064                                 }
00065                         };
00066                         std::set<T*, compare> _set;
00067                         session& s;
00068         };
00069 
00070 } /* namespace ircpp */
00071 
00072 #endif /* __IRCLIST_H__ */

Generated on Sat Oct 13 23:35:40 2007 for libircpp by  doxygen 1.5.3