* This class represents a channel, and contains its name, modes, topic, topic set time,
* etc, and an instance of the BanList type.
*/
-class CoreExport Channel : public Extensible, public InviteBase<Channel>
+class CoreExport Channel : public Extensible
{
public:
/** A map of Memberships on a channel keyed by User pointers
*/
- typedef std::map<User*, Membership*> MemberMap;
+ typedef std::map<User*, insp::aligned_storage<Membership> > MemberMap;
private:
/** Set default modes for the channel on creation
* 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
* @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);
}
*/
const char* ChanModes(bool showkey);
- /** Spool the NAMES list for this channel to the given user
- * @param user The user to spool the NAMES list to
- * @param isinside If true, the user is inside the channel, if not then false
- */
- void UserList(User* user, bool isinside = true);
-
/** Get the value of a users prefix on this channel.
* @param user The user to look up
* @return The module or core-defined value of the users prefix.