*/
class CoreExport Channel : public Extensible, public InviteBase<Channel>
{
+ public:
+ /** A map of Memberships on a channel keyed by User pointers
+ */
+ typedef std::map<User*, insp::aligned_storage<Membership> > MemberMap;
+
+ private:
/** Set default modes for the channel on creation
*/
void SetDefaultModes();
* This function does not remove the channel from User::chanlist.
* Since the parameter is an iterator to the target, the complexity
* of this function is constant.
- * @param membiter The UserMembIter to remove, must be valid
+ * @param membiter The MemberMap iterator to remove, must be valid
*/
- void DelUser(const UserMembIter& membiter);
+ void DelUser(const MemberMap::iterator& membiter);
public:
/** Creates a channel record and initialises it with default values
/** User list.
*/
- UserMembList userlist;
+ MemberMap userlist;
/** Channel topic.
* If this is an empty string, no channel topic is set.
*
* @return This function returns pointer to a map of User pointers (CUList*).
*/
- const UserMembList& GetUsers() const { return userlist; }
+ const MemberMap& GetUsers() const { return userlist; }
/** Returns true if the user given is on the given channel.
* @param user The user to look for
* @param victimiter Iterator to the user being kicked, must be valid
* @param reason The reason for the kick
*/
- void KickUser(User* src, const UserMembIter& victimiter, const std::string& reason);
+ void KickUser(User* src, const MemberMap::iterator& victimiter, const std::string& reason);
/** Make src kick user from this channel with the given reason.
* @param src The source of the kick
*/
void KickUser(User* src, User* user, const std::string& reason)
{
- UserMembIter it = userlist.find(user);
+ MemberMap::iterator it = userlist.find(user);
if (it != userlist.end())
KickUser(src, it, reason);
}