X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fhashcomp.cpp;h=e948134205827e3f2380189273ca311d2576a464;hb=59b1a8955142935b02af6446005ab47fc7c3fc8c;hp=96811715d52a70fe93aaa3c555cb6a1d874476e8;hpb=76317750956e2bf4b80478e4f0f04160d12347ce;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/hashcomp.cpp b/src/hashcomp.cpp index 96811715d..e94813420 100644 --- a/src/hashcomp.cpp +++ b/src/hashcomp.cpp @@ -2,7 +2,7 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * Inspire is copyright (C) 2002-2005 ChatSpike-Dev. + * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. * E-mail: * * @@ -14,8 +14,11 @@ * --------------------------------------------------- */ -#include +using namespace std; + +#include "inspircd_config.h" #include "inspircd.h" +#include #include "hashcomp.h" #include "helperfuncs.h" #ifdef GCC3 @@ -31,7 +34,7 @@ #endif // from helperfuncs.cpp -extern char lowermap[255]; +extern const char lowermap[255]; /****************************************************** * @@ -89,13 +92,7 @@ bool irc::StrHashComp::operator()(const std::string& s1, const std::string& s2) bool irc::InAddr_HashComp::operator()(const in_addr &s1, const in_addr &s2) const { - size_t q; - size_t p; - - memcpy(&q,&s1,sizeof(size_t)); - memcpy(&p,&s2,sizeof(size_t)); - - return (q == p); + return (s1.s_addr == s1.s_addr); } /****************************************************** @@ -113,27 +110,27 @@ bool irc::InAddr_HashComp::operator()(const in_addr &s1, const in_addr &s2) cons bool irc::irc_char_traits::eq(char c1st, char c2nd) { - return lowermap[c1st] == lowermap[c2nd]; + return lowermap[(unsigned)c1st] == lowermap[(unsigned)c2nd]; } bool irc::irc_char_traits::ne(char c1st, char c2nd) { - return lowermap[c1st] != lowermap[c2nd]; + return lowermap[(unsigned)c1st] != lowermap[(unsigned)c2nd]; } bool irc::irc_char_traits::lt(char c1st, char c2nd) { - return lowermap[c1st] < lowermap[c2nd]; + return lowermap[(unsigned)c1st] < lowermap[(unsigned)c2nd]; } int irc::irc_char_traits::compare(const char* str1, const char* str2, size_t n) { - for(int i = 0; i < n; i++) + for(unsigned int i = 0; i < n; i++) { - if(lowermap[*str1] > lowermap[*str2]) + if(lowermap[(unsigned)*str1] > lowermap[(unsigned)*str2]) return 1; - if(lowermap[*str1] < lowermap[*str2]) + if(lowermap[(unsigned)*str1] < lowermap[(unsigned)*str2]) return -1; if(*str1 == 0 || *str2 == 0) @@ -145,9 +142,43 @@ int irc::irc_char_traits::compare(const char* str1, const char* str2, size_t n) return 0; } +std::string operator+ (std::string& leftval, irc::string& rightval) +{ + return leftval + std::string(rightval.c_str()); +} + +irc::string operator+ (irc::string& leftval, std::string& rightval) +{ + return leftval + irc::string(rightval.c_str()); +} + +bool operator== (std::string& leftval, irc::string& rightval) +{ + return (leftval == std::string(rightval.c_str())); +} + +bool operator== (irc::string& leftval, std::string& rightval) +{ + return (rightval == std::string(leftval.c_str())); +} + const char* irc::irc_char_traits::find(const char* s1, int n, char c) { - while(n-- > 0 && lowermap[*s1] != lowermap[c]) + while(n-- > 0 && lowermap[(unsigned)*s1] != lowermap[(unsigned)c]) s1++; return s1; } + +/* See hashcomp.h if you care about these... */ +std::ostream& operator<<(std::ostream &os, const irc::string &str) +{ + return os << str.c_str(); +} + +std::istream& operator>>(std::istream &is, irc::string &str) +{ + std::string tmp; + is >> tmp; + str = tmp.c_str(); + return is; +}