From ecef36edcab5219ce1a759eb0d2d24e061b4e886 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 16:49:18 +0200 Subject: Create irc::equals() from StrHashComp Make StrHashComp a wrapper around it --- include/hashcomp.h | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 168ecb289..aa204ace6 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -98,15 +98,27 @@ template const T& SearchAndReplace(T& text, const T& pattern, const namespace irc { + /** Check if two IRC object (e.g. nick or channel) names are equal. + * This function uses national_case_insensitive_map to determine equality, which, by default does comparison + * according to RFC 1459, treating certain otherwise non-identical characters as identical. + * @param s1 First string to compare + * @param s2 Second string to compare + * @return True if the two names are equal, false otherwise + */ + CoreExport bool equals(const std::string& s1, const std::string& s2); + /** This class returns true if two strings match. * Case sensitivity is ignored, and the RFC 'character set' * is adhered to */ - struct CoreExport StrHashComp + struct StrHashComp { /** The operator () does the actual comparison in hash_map */ - bool operator()(const std::string& s1, const std::string& s2) const; + bool operator()(const std::string& s1, const std::string& s2) const + { + return equals(s1, s2); + } }; struct insensitive -- cgit v1.3.1-10-gc9f91