diff options
-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(); } |