#include <string>
#include <map>
+/** RFC1459 channel modes
+ */
enum ChannelModes {
- CM_TOPICLOCK = 1,
- CM_NOEXTERNAL = 2,
- CM_INVITEONLY = 4,
- CM_MODERATED = 8,
- CM_SECRET = 16,
- CM_PRIVATE = 32
+ CM_TOPICLOCK = 't'-65,
+ CM_NOEXTERNAL = 'n'-65,
+ CM_INVITEONLY = 'i'-65,
+ CM_MODERATED = 'm'-65,
+ CM_SECRET = 's'-65,
+ CM_PRIVATE = 'p'-65,
+ CM_KEY = 'k'-65,
+ CM_LIMIT = 'l'-65
};
class userrec;
virtual ~HostItem() { /* stub */ }
};
-// banlist is inherited from HostList mainly for readability
-// reasons only
-
/** A subclass of HostItem designed to hold channel bans (+b)
*/
class BanItem : public HostItem
{
};
-// same with this...
-
/** A subclass of HostItem designed to hold channel exempts (+e)
*/
class ExemptItem : public HostItem
{
};
-// and this...
-
/** A subclass of HostItem designed to hold channel invites (+I)
*/
class InviteItem : public HostItem
*/
typedef std::vector<InviteItem> InviteList;
-class userrec;
-
/** A list of users on a channel
*/
typedef std::map<userrec*,userrec*> CUList;
+/** Shorthand for CUList::iterator
+ */
+typedef CUList::iterator CUListIter;
+typedef CUList::const_iterator CUListConstIter;
+
/** A list of custom modes parameters on a channel
*/
typedef std::map<char,char*> CustomModeList;
/** The channels name.
*/
char name[CHANMAX]; /* channel name */
- /** Custom modes for the channel.
- * Plugins may use this field in any way they see fit.
+ /** Modes for the channel.
+ * This is not a null terminated string! It is a hash where
+ * each item in it represents if a mode is set. For example
+ * for mode +A, index 0. Use modechar-65 to calculate which
+ * field to check.
*/
- char custom_modes[64]; /* modes handled by modules */
+ char modes[64];
/** User lists
* There are four user lists, one for
/** Contains a bitmask of the CM_* builtin (RFC) binary mode symbols
*/
- char binarymodes;
+ //char binarymodes;
/** The list of all bans set on the channel.
*/
* @param mode The mode character to set or unset
* @param mode_on True if you want to set the mode or false if you want to remove it
*/
- void SetCustomMode(char mode,bool mode_on);
+ void SetMode(char mode,bool mode_on);
/** Sets or unsets the parameters for a custom mode in a channels info
* @param mode The mode character to set or unset
* @param parameter The parameter string to associate with this mode character
* @param mode_on True if you want to set the mode or false if you want to remove it
*/
- void SetCustomModeParam(char mode,char* parameter,bool mode_on);
+ void SetModeParam(char mode,const char* parameter,bool mode_on);
- /** Returns true if a custom mode is set on a channel
+ /** Returns true if a mode is set on a channel
* @param mode The mode character you wish to query
* @return True if the custom mode is set, false if otherwise
*/
- bool IsCustomModeSet(char mode);
+ bool IsModeSet(char mode);
/** Returns the parameter for a custom mode on a channel.
* @param mode The mode character you wish to query
/** Delete a user pointer to the internal reference list
* @param user The user to delete
+ * @return number of users left on the channel
*/
- void DelUser(userrec* user);
+ unsigned long DelUser(userrec* user);
void DelOppedUser(userrec* user);
void DelHalfoppedUser(userrec* user);
void DelVoicedUser(userrec* user);
- /** Obrain the internal reference list
+ /** Obtain the internal reference list
* The internal reference list contains a list of userrec*.
* These are used for rapid comparison to determine
* channel membership for PRIVMSG, NOTICE, QUIT, PART etc.
CUList* GetHalfoppedUsers();
CUList* GetVoicedUsers();
+ /** Returns true if the user given is on the given channel.
+ */
bool HasUser(userrec* user);
/** Creates a channel record and initialises it with default values
*/
chanrec();
+ /** Destructor for chanrec
+ */
virtual ~chanrec() { /* stub */ }
};
*/
chanrec *channel;
+ /** Constructor for ucrec
+ */
ucrec() : uc_modes(0), channel(NULL) { /* stub */ }
+
+ /** Destructor for ucrec
+ */
virtual ~ucrec() { /* stub */ }
};
void server_kick_channel(userrec* user, chanrec* Ptr, char* reason, bool triggerevents);
#endif
-