-/*
-
-
-*/
+/* +------------------------------------+
+ * | Inspire Internet Relay Chat Daemon |
+ * +------------------------------------+
+ *
+ * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.
+ * E-mail:
+ * <brain@chatspike.net>
+ * <Craig@chatspike.net>
+ *
+ * Written by Craig Edwards, Craig McLure, and others.
+ * This program is free but copyrighted software; see
+ * the file COPYING for details.
+ *
+ * ---------------------------------------------------
+ */
#include "inspircd_config.h"
#include "base.h"
#include <time.h>
#include <vector>
+#include <string>
#ifndef __CHANNELS_H__
#define __CHANNELS_H__
};
+/** Holds a custom parameter to a module-defined channel mode
+ * e.g. for +L this would hold the channel name.
+ */
+
+class ModeParameter : public classbase
+{
+ public:
+ char mode;
+ char parameter[MAXBUF];
+ char channel[CHANMAX];
+};
+
/** Holds a complete ban list
*/
-typedef vector<BanItem> BanList;
+typedef std::vector<BanItem> BanList;
/** Holds a complete exempt list
*/
-typedef vector<ExemptItem> ExemptList;
+typedef std::vector<ExemptItem> ExemptList;
/** Holds a complete invite list
*/
-typedef vector<InviteItem> InviteList;
+typedef std::vector<InviteItem> InviteList;
/** Holds all relevent information for a channel.
* This class represents a channel, and contains its name, modes, time created, topic, topic set time,
* etc, and an instance of the BanList type.
*/
-class chanrec : public classbase
+class chanrec : public Extensible
{
public:
/** The channels name.
* Plugins may use this field in any way they see fit.
*/
char custom_modes[MAXMODES]; /* modes handled by modules */
+
/** Channel topic.
* If this is an empty string, no channel topic is set.
*/
/** The list of all bans set on the channel.
*/
BanList bans;
+
+ /** Sets or unsets a custom mode in the channels info
+ */
+ void SetCustomMode(char mode,bool mode_on);
+
+ /** Sets or unsets the parameters for a custom mode in a channels info
+ */
+ void SetCustomModeParam(char mode,char* parameter,bool mode_on);
+
+ /** Returns true if a custom mode is set on a channel
+ */
+ bool IsCustomModeSet(char mode);
+
+ /** Returns the parameter for a custom mode on a channel.
+ * For example if "+L #foo" is set, and you pass this method
+ * 'L', it will return '#foo'. If the mode is not set on the
+ * channel, or the mode has no parameters associated with it,
+ * it will return an empty string.
+ */
+ std::string GetModeParameter(char mode);
/** Creates a channel record and initialises it with default values
*/
- chanrec()
- {
- strcpy(name,"");
- strcpy(custom_modes,"");
- strcpy(topic,"");
- strcpy(setby,"");
- strcpy(key,"");
- created = topicset = limit = 0;
- topiclock = noexternal = inviteonly = moderated = secret = c_private = false;
- }
+ chanrec();
virtual ~chanrec() { /* stub */ }
};