]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Convert IsNick to std::function.
authorPeter Powell <petpow@saberuk.com>
Sat, 25 Nov 2017 12:15:35 +0000 (12:15 +0000)
committerPeter Powell <petpow@saberuk.com>
Sat, 25 Nov 2017 13:38:02 +0000 (13:38 +0000)
include/compat.h
include/inspircd.h
src/helperfuncs.cpp
src/inspircd.cpp
src/modules/m_nationalchars.cpp

index 1e6fc3d45512aecb23373b0d9d34d43d78cf921c..4678de12a3960ef94c5edeca5ccb4393a6f4d2ab 100644 (file)
 #if defined _LIBCPP_VERSION || defined _WIN32
 # define TR1NS std
 # include <array>
+# include <functional>
 # include <unordered_map>
 # include <type_traits>
 #else
 # define TR1NS std::tr1
 # include <tr1/array>
+# include <tr1/functional>
 # include <tr1/unordered_map>
 # include <tr1/type_traits>
 #endif
index 47ec9e0e2f71ebf9b6dec96a5c88035080aecede..da86698a6d75977749731ebf9895e1862b00e140 100644 (file)
@@ -165,7 +165,6 @@ class serverstats
        }
 };
 
-DEFINE_HANDLER1(IsNickHandler, bool, const std::string&);
 DEFINE_HANDLER2(GenRandomHandler, void, char*, size_t);
 DEFINE_HANDLER1(IsIdentHandler, bool, const std::string&);
 DEFINE_HANDLER1(IsChannelHandler, bool, const std::string&);
@@ -213,8 +212,6 @@ class CoreExport InspIRCd
        ActionList AtomicActions;
 
        /**** Functors ****/
-
-       IsNickHandler HandleIsNick;
        IsIdentHandler HandleIsIdent;
        IsChannelHandler HandleIsChannel;
        GenRandomHandler HandleGenRandom;
@@ -417,11 +414,15 @@ class CoreExport InspIRCd
        static const char* Format(const char* formatString, ...) CUSTOM_PRINTF(1, 2);
        static const char* Format(va_list &vaList, const char* formatString) CUSTOM_PRINTF(2, 0);
 
-       /** Return true if a nickname is valid
-        * @param n A nickname to verify
-        * @return True if the nick is valid
+       /** Determines whether a nickname is valid. */
+       TR1NS::function<bool(const std::string&)> IsNick;
+
+       /** Determines whether a nickname is valid according to the RFC 1459 rules.
+        * This is the default function for InspIRCd::IsNick.
+        * @param nick The nickname to validate.
+        * @return True if the nickname is valid according to RFC 1459 rules; otherwise, false.
         */
-       caller1<bool, const std::string&> IsNick;
+       static bool DefaultIsNick(const std::string& nick);
 
        /** Return true if an ident is valid
         * @param An ident to verify
index ddcff5e550a5f5f4d5e7fe4c99f2fe55b8358ae9..5d4778b63db6961e7faf51fc63014a03e0b46a23 100644 (file)
@@ -216,7 +216,7 @@ bool IsChannelHandler::Call(const std::string& chname)
 }
 
 /* true for valid nickname, false else */
-bool IsNickHandler::Call(const std::string& n)
+bool InspIRCd::DefaultIsNick(const std::string& n)
 {
        if (n.empty() || n.length() > ServerInstance->Config->Limits.NickMax)
                return false;
index 6c45a1a0d6331a8abfeb84b44aacc335d40a3891..20001dbca19ec20f07a41cf4bfb9f09ee8e74936 100644 (file)
@@ -228,7 +228,7 @@ InspIRCd::InspIRCd(int argc, char** argv) :
          */
         GenRandom(&HandleGenRandom),
         IsChannel(&HandleIsChannel),
-        IsNick(&HandleIsNick),
+        IsNick(&DefaultIsNick),
         IsIdent(&HandleIsIdent)
 {
        ServerInstance = this;
index bb95ecc930685a7b299012bebda28a3250b48842..81c2d2959f0fce348f93500a6266fc0c4a66070c 100644 (file)
 #include "inspircd.h"
 #include <fstream>
 
-class lwbNickHandler : public HandlerBase1<bool, const std::string&>
+class lwbNickHandler
 {
  public:
-       bool Call(const std::string&) CXX11_OVERRIDE;
+       static bool Call(const std::string&);
 };
 
                                                                 /*,m_reverse_additionalUp[256];*/
@@ -217,10 +217,9 @@ bool lwbNickHandler::Call(const std::string& nick)
 
 class ModuleNationalChars : public Module
 {
-       lwbNickHandler myhandler;
        std::string charset;
        unsigned char m_additional[256], m_additionalUp[256], m_lower[256], m_upper[256];
-       caller1<bool, const std::string&> rememberer;
+       TR1NS::function<bool(const std::string&)> rememberer;
        bool forcequit;
        const unsigned char * lowermap_rememberer;
        unsigned char prev_map[256];
@@ -259,7 +258,7 @@ class ModuleNationalChars : public Module
                memcpy(m_lower, rfc_case_insensitive_map, 256);
                national_case_insensitive_map = m_lower;
 
-               ServerInstance->IsNick = &myhandler;
+               ServerInstance->IsNick = &lwbNickHandler::Call;
        }
 
        void ReadConfig(ConfigStatus& status) CXX11_OVERRIDE