X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fmode.h;h=280284bfa8c77b775f2e6009dfacf0a758ba1857;hb=50eebfeac8ebe501b021ebf62b0b01464fd79a21;hp=467e7e2ae033ded7e052e0582c2626f579a0eda7;hpb=db7a49b071134cf3deadf05ce84fa6c7c46d80bf;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/mode.h b/include/mode.h index 467e7e2ae..280284bfa 100644 --- a/include/mode.h +++ b/include/mode.h @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -17,6 +17,7 @@ /* Forward declarations. */ class User; +#include "ctables.h" #include "channels.h" /** @@ -125,6 +126,10 @@ class CoreExport ModeHandler : public Extensible * MODETYPE_CHANNEL. */ ModeType m_type; + /** + * The mode parameter translation type + */ + TranslateType m_paramtype; /** * True if the mode requires oper status * to set. @@ -161,7 +166,8 @@ class CoreExport ModeHandler : public Extensible * and the rank values OP_VALUE, HALFOP_VALUE and VOICE_VALUE respectively. Any prefixes you define should have unique values proportional * to these three defaults or proportional to another mode in a module you depend on. See src/cmode_o.cpp as an example. */ - ModeHandler(InspIRCd* Instance, char modeletter, int parameters_on, int parameters_off, bool listmode, ModeType type, bool operonly, char mprefix = 0, char prefixrequired = '%'); + ModeHandler(InspIRCd* Instance, char modeletter, int parameters_on, int parameters_off, bool listmode, ModeType type, bool operonly, + char mprefix = 0, char prefixrequired = '%', TranslateType translate = TR_TEXT); /** * The default destructor does nothing */ @@ -191,9 +197,13 @@ class CoreExport ModeHandler : public Extensible */ virtual unsigned int GetPrefixRank(); /** - * Returns the modes type + * Returns the mode's type */ ModeType GetModeType(); + /** + * Returns the mode's parameter translation type + */ + TranslateType GetTranslateType(); /** * Returns true if the mode can only be set/unset by an oper */ @@ -213,7 +223,7 @@ class CoreExport ModeHandler : public Extensible /** For user modes, return the current parameter, if any */ - std::string GetUserParameter(User* user); + virtual std::string GetUserParameter(User* useor); /** * Called when a mode change for your mode occurs. @@ -435,6 +445,8 @@ class CoreExport ModeParser : public classbase * Use GetLastParse() to get this value, to be used for display purposes. */ std::string LastParse; + std::deque LastParseParams; + std::deque LastParseTranslate; unsigned int sent[256]; @@ -460,22 +472,24 @@ class CoreExport ModeParser : public classbase * E.g. * * nick -> nick!*@* - * + * * nick!ident -> nick!ident@* - * + * * host.name -> *!*@host.name - * + * * ident@host.name -> *!ident@host.name * * This method can be used on both IPV4 and IPV6 user masks. */ static void CleanMask(std::string &mask); - /** Get the last string to be processed, as it was sent to the user or channel. + /** Get the last string to be processed, as it was sent to the user or channel. * Use this to display a string you just sent to be parsed, as the actual output * may be different to what you sent after it has been 'cleaned up' by the parser. * @return Last parsed string, as seen by users. */ const std::string& GetLastParse(); + const std::deque& GetLastParseParams() { return LastParseParams; } + const std::deque& GetLastParseTranslate() { return LastParseTranslate; } /** Add a mode to the mode parser. * @return True if the mode was successfully added. */ @@ -544,9 +558,14 @@ class CoreExport ModeParser : public classbase */ std::string ParaModeList(); - /** Generates the CHANMODES= 005 sequence + /** Generates a list of modes, comma seperated by type: + * 1; Listmodes EXCEPT those with a prefix + * 2; Modes that take a param when adding or removing + * 3; Modes that only take a param when adding + * 4; Modes that dont take a param */ - std::string ChanModes(); + std::string GiveModeList(ModeMasks m); + /** Used by this class internally during std::sort and 005 generation */ static bool PrefixComparison(prefixtype one, prefixtype two); @@ -569,4 +588,3 @@ class CoreExport ModeParser : public classbase }; #endif -