From 0424d98e0e6cbf139da4209aaacfd5585308f0ba Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 16:30:02 +0200 Subject: Remove unused trim() function --- include/hashcomp.h | 14 -------------- 1 file changed, 14 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 87b2636fc..7f6956bfc 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -427,17 +427,3 @@ inline std::string assign(const irc::string &other) { return other.c_str(); } /** Assign a std::string to an irc::string. */ inline irc::string assign(const std::string &other) { return other.c_str(); } - -/** Trim the leading and trailing spaces from a std::string. - */ -inline std::string& trim(std::string &str) -{ - std::string::size_type start = str.find_first_not_of(" "); - std::string::size_type end = str.find_last_not_of(" "); - if (start == std::string::npos || end == std::string::npos) - str = ""; - else - str = str.substr(start, end-start+1); - - return str; -} -- cgit v1.2.3 From 0612de153ff8a731992fee0d1812295cd98c6e8d Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 16:32:51 +0200 Subject: Remove unused irc::hash --- include/hashcomp.h | 9 --------- src/hashcomp.cpp | 8 -------- 2 files changed, 17 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 7f6956bfc..5b2c7215e 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -337,15 +337,6 @@ namespace irc */ long GetToken(); }; - - struct hash - { - /** Hash an irc::string using RFC1459 case sensitivity rules - * @param s A string to hash - * @return The hash value - */ - size_t CoreExport operator()(const irc::string &s) const; - }; } /* Define operators for using >> and << with irc::string to an ostream on an istream. */ diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index 35e5f3671..36a6aabc9 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -151,14 +151,6 @@ unsigned const char rfc_case_sensitive_map[256] = { 250, 251, 252, 253, 254, 255, // 250-255 }; -size_t CoreExport irc::hash::operator()(const irc::string &s) const -{ - size_t t = 0; - for (irc::string::const_iterator x = s.begin(); x != s.end(); ++x) /* ++x not x++, as its faster */ - t = 5 * t + national_case_insensitive_map[(unsigned char)*x]; - return t; -} - bool irc::StrHashComp::operator()(const std::string& s1, const std::string& s2) const { const unsigned char* n1 = (const unsigned char*)s1.c_str(); -- cgit v1.2.3 From e1e9341a84b89111c61c6c4bcceab1759b90f818 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 16:34:00 +0200 Subject: Remove unused irc::tokenstream::GetToken() overload accepting an irc::string --- include/hashcomp.h | 6 ------ src/hashcomp.cpp | 8 -------- 2 files changed, 14 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 5b2c7215e..168ecb289 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -265,12 +265,6 @@ namespace irc */ bool GetToken(std::string &token); - /** Fetch the next token from the stream as an irc::string - * @param token The next token available, or an empty string if none remain - * @return True if tokens are left to be read, false if the last token was just retrieved. - */ - bool GetToken(irc::string &token); - /** Fetch the next token from the stream as an integer * @param token The next token available, or undefined if none remain * @return True if tokens are left to be read, false if the last token was just retrieved. diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index 36a6aabc9..1bbc35d1f 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -272,14 +272,6 @@ bool irc::tokenstream::GetToken(std::string &token) return true; } -bool irc::tokenstream::GetToken(irc::string &token) -{ - std::string stdstring; - bool returnval = GetToken(stdstring); - token = assign(stdstring); - return returnval; -} - bool irc::tokenstream::GetToken(int &token) { std::string tok; -- cgit v1.2.3 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 ++++++++++++++-- src/hashcomp.cpp | 2 +- 2 files changed, 15 insertions(+), 3 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 diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index 1bbc35d1f..2c7dca5b1 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -151,7 +151,7 @@ unsigned const char rfc_case_sensitive_map[256] = { 250, 251, 252, 253, 254, 255, // 250-255 }; -bool irc::StrHashComp::operator()(const std::string& s1, const std::string& s2) const +bool irc::equals(const std::string& s1, const std::string& s2) { const unsigned char* n1 = (const unsigned char*)s1.c_str(); const unsigned char* n2 = (const unsigned char*)s2.c_str(); -- cgit v1.2.3 From 78b6ad984b846de7367e3d6042f0779906d5ab70 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 17:03:59 +0200 Subject: Remove now unused assign() functions --- include/hashcomp.h | 8 -------- 1 file changed, 8 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index aa204ace6..464fb16de 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -416,11 +416,3 @@ inline bool operator!= (const std::string& leftval, const irc::string& rightval) { return !(leftval.c_str() == rightval); } - -/** Assign an irc::string to a std::string. - */ -inline std::string assign(const irc::string &other) { return other.c_str(); } - -/** Assign a std::string to an irc::string. - */ -inline irc::string assign(const std::string &other) { return other.c_str(); } -- cgit v1.2.3 From 200062cd5e17bb3be02eb2a6fe593c9d4bfc763e Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 17:11:38 +0200 Subject: Remove now unused SearchAndReplace() function --- include/hashcomp.h | 23 ----------------------- 1 file changed, 23 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 464fb16de..ddd590db2 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -70,29 +70,6 @@ CoreExport extern unsigned const char ascii_case_insensitive_map[256]; */ CoreExport extern unsigned const char rfc_case_sensitive_map[256]; -template const T& SearchAndReplace(T& text, const T& pattern, const T& replace) -{ - T replacement; - if ((!pattern.empty()) && (!text.empty())) - { - for (std::string::size_type n = 0; n != text.length(); ++n) - { - if (text.length() >= pattern.length() && text.substr(n, pattern.length()) == pattern) - { - // Found the pattern in the text, replace it, and advance - replacement.append(replace); - n = n + pattern.length() - 1; - } - else - { - replacement += text[n]; - } - } - } - text = replacement; - return text; -} - /** The irc namespace contains a number of helper classes. */ namespace irc -- cgit v1.2.3 From 333fe87ca7cbf66ec2468f726054180a0fe85316 Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 17:13:18 +0200 Subject: Remove all non-member irc::string operators --- include/hashcomp.h | 72 ------------------------------------------------------ 1 file changed, 72 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index ddd590db2..8856d81bb 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -321,75 +321,3 @@ namespace irc long GetToken(); }; } - -/* Define operators for using >> and << with irc::string to an ostream on an istream. */ -/* This was endless fun. No. Really. */ -/* It was also the first core change Ommeh made, if anyone cares */ - -/** Operator << for irc::string - */ -inline std::ostream& operator<<(std::ostream &os, const irc::string &str) { return os << str.c_str(); } - -/** Operator >> for irc::string - */ -inline std::istream& operator>>(std::istream &is, irc::string &str) -{ - std::string tmp; - is >> tmp; - str = tmp.c_str(); - return is; -} - -/* Define operators for + and == with irc::string to std::string for easy assignment - * and comparison - * - * Operator + - */ -inline std::string operator+ (std::string& leftval, irc::string& rightval) -{ - return leftval + std::string(rightval.c_str()); -} - -/* Define operators for + and == with irc::string to std::string for easy assignment - * and comparison - * - * Operator + - */ -inline irc::string operator+ (irc::string& leftval, std::string& rightval) -{ - return leftval + irc::string(rightval.c_str()); -} - -/* Define operators for + and == with irc::string to std::string for easy assignment - * and comparison - * - * Operator == - */ -inline bool operator== (const std::string& leftval, const irc::string& rightval) -{ - return (leftval.c_str() == rightval); -} - -/* Define operators for + and == with irc::string to std::string for easy assignment - * and comparison - * - * Operator == - */ -inline bool operator== (const irc::string& leftval, const std::string& rightval) -{ - return (leftval == rightval.c_str()); -} - -/* Define operators != for irc::string to std::string for easy comparison - */ -inline bool operator!= (const irc::string& leftval, const std::string& rightval) -{ - return !(leftval == rightval.c_str()); -} - -/* Define operators != for std::string to irc::string for easy comparison - */ -inline bool operator!= (const std::string& leftval, const irc::string& rightval) -{ - return !(leftval.c_str() == rightval); -} -- cgit v1.2.3 From 0aa6c4134011006e6166c72d9c3162b054c01bbe Mon Sep 17 00:00:00 2001 From: Attila Molnar Date: Mon, 22 Aug 2016 17:22:19 +0200 Subject: Update documentation in hashcomp.h --- include/hashcomp.h | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'include/hashcomp.h') diff --git a/include/hashcomp.h b/include/hashcomp.h index 8856d81bb..f3b1ba6e9 100644 --- a/include/hashcomp.h +++ b/include/hashcomp.h @@ -40,11 +40,9 @@ * treat [ identical to {, ] identical to }, and \ * as identical to |. * - * Our hashing functions are designed to accept - * std::string and compare/hash them as type irc::string - * by converting them internally. This makes them - * backwards compatible with other code which is not - * aware of irc::string. + * There are functors that accept std::string and + * compare/hash them as type irc::string by using + * mapping arrays internally. *******************************************************/ /** Seperate from the other casemap tables so that code *can* still exclusively rely on RFC casemapping @@ -74,7 +72,6 @@ CoreExport extern unsigned const char rfc_case_sensitive_map[256]; */ 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. @@ -159,14 +156,15 @@ namespace irc /** Joins the contents of a vector to a string. * @param sequence Zero or more items to join. - * @separator The character to place between the items. + * @param separator The character to place between the items, defaults to ' ' (space). + * @return Joined string. */ std::string CoreExport stringjoiner(const std::vector& sequence, char separator = ' '); /** irc::sepstream allows for splitting token seperated lists. * Each successive call to sepstream::GetToken() returns * the next token, until none remain, at which point the method returns - * an empty string. + * false. */ class CoreExport sepstream { -- cgit v1.2.3