From 63ee682557f9d63daeaa17788923223b58f83452 Mon Sep 17 00:00:00 2001 From: pippijn Date: Thu, 12 Jun 2008 21:25:46 +0000 Subject: optimise string comparison.. this time I've done it right.. sheesh shitty C++ name lookup :-( git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9900 e03df62e-2008-0410-955e-edbf42e46eb7 --- include/hashcomp.h | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'include') diff --git a/include/hashcomp.h b/include/hashcomp.h index 6a6022a21..24d0af600 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -14,6 +14,7 @@ #ifndef _HASHCOMP_H_ #define _HASHCOMP_H_ +#include //#include "inspircd_config.h" //#include "socket.h" #include "hash_map.h" @@ -620,6 +621,30 @@ inline bool operator!= (const std::string& leftval, const irc::string& rightval) return !(leftval.c_str() == rightval); } +template +static inline bool operator == (std::string const &lhs, char const (&rhs)[N]) +{ + return lhs.length() == N - 1 && !std::memcmp(lhs.data(), rhs, N - 1); +} + +template +static inline bool operator != (std::string const &lhs, char const (&rhs)[N]) +{ + return !(lhs == rhs); +} + +template +static inline bool operator == (irc::string const &lhs, char const (&rhs)[N]) +{ + return lhs.length() == N - 1 && !std::memcmp(lhs.data(), rhs, N - 1); +} + +template +static inline bool operator != (irc::string const &lhs, char const (&rhs)[N]) +{ + return !(lhs == rhs); +} + /** Assign an irc::string to a std::string. */ inline std::string assign(const irc::string &other) { return other.c_str(); } -- cgit v1.2.3