diff options
author | pippijn <pippijn@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-06-12 21:25:46 +0000 |
---|---|---|
committer | pippijn <pippijn@e03df62e-2008-0410-955e-edbf42e46eb7> | 2008-06-12 21:25:46 +0000 |
commit | 63ee682557f9d63daeaa17788923223b58f83452 (patch) | |
tree | 5606f9651b9e8aef3bc95d1246acb8b56442b18f /include | |
parent | 8a51d8969cd1b3800d15af8cf8dc6e15284da7aa (diff) |
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
Diffstat (limited to 'include')
-rw-r--r-- | include/hashcomp.h | 25 |
1 files changed, 25 insertions, 0 deletions
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 <cstring> //#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<std::size_t N> +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<std::size_t N> +static inline bool operator != (std::string const &lhs, char const (&rhs)[N]) +{ + return !(lhs == rhs); +} + +template<std::size_t N> +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<std::size_t N> +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(); } |