summaryrefslogtreecommitdiff
path: root/include/mode.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/mode.h')
-rw-r--r--include/mode.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/include/mode.h b/include/mode.h
index 08ac33597..cfac562e6 100644
--- a/include/mode.h
+++ b/include/mode.h
@@ -35,6 +35,66 @@ enum UserModeBits {
UM_WALLOPS = 4
};
+enum ModeType {
+ MODETYPE_USER = 0,
+ MODETYPE_CHANNEL = 1
+};
+
+enum ModeAction {
+ MODEACTION_DENY = 0, /* Drop the mode change, AND a parameter if its a parameterized mode */
+ MODEACTION_ALLOW = 1 /* Allow the mode */
+};
+
+class ModeOutput
+{
+ private:
+ std::string par;
+ ModeAction act;
+ public:
+ ModeOutput(std::string parameter, ModeAction action);
+ ModeAction GetAction();
+ std::string& GetParameter();
+};
+
+class ModeHandler
+{
+ char mode;
+ int n_params;
+ bool list;
+ ModeType m_type;
+ bool oper;
+
+ public:
+ ModeHandler(char modeletter, int parameters, bool listmode, ModeType type, bool operonly);
+ virtual ~ModeHandler();
+
+ bool IsListMode();
+ ModeType GetModeType();
+ bool NeedsOper();
+ int GetNumParams();
+ char GetModeChar();
+
+ virtual ModeOutput OnModeChange(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter, bool adding);
+ virtual void DisplayList(userrec* user, chanrec* channel);
+ virtual bool CheckTimeStamp(time_t theirs, time_t ours, const std::string &their_param, const std::string &our_param, chanrec* channel);
+};
+
+class ModeWatcher
+{
+ char mode;
+ ModeType m_type;
+
+ public:
+ ModeWatcher(char modeletter, ModeType type);
+ virtual ~ModeWatcher();
+
+ char GetModeChar();
+ ModeType GetModeType();
+
+ virtual bool BeforeMode(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter, bool adding);
+ virtual void AfterMode(userrec* source, userrec* dest, chanrec* channel, const std::string &parameter, bool adding);
+};
+
class ModeParser
{
private: