* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2007 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2008 InspIRCd Development Team
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
* ---------------------------------------------------
*/
+/* $Core: libIRCDhash */
+
#include "inspircd.h"
#include "hashcomp.h"
#ifndef WIN32
*
******************************************************/
-using namespace irc::sockets;
-
/* convert a string to lowercase. Note following special circumstances
* taken from RFC 1459. Many "official" server branches still hold to this
* rule so i will too;
}
#ifndef WIN32
-size_t nspace::hash<string>::operator()(const string &s) const
+size_t nspace::hash<std::string>::operator()(const std::string &s) const
#else
-size_t nspace::hash_compare<string, std::less<string> >::operator()(const string &s) const
+size_t nspace::hash_compare<std::string, std::less<std::string> >::operator()(const std::string &s) const
#endif
{
/* XXX: NO DATA COPIES! :)
n = tokens.begin();
}
-const std::string irc::sepstream::GetToken()
+bool irc::sepstream::GetToken(std::string &token)
{
std::string::iterator lsp = last_starting_position;
while (n != tokens.end())
{
- /** Skip multi seps, converting "<sep><sep>" into "<sep>"
- */
- while ((n+1 != tokens.end()) && (*n == sep) && (*(n+1) == sep))
- n++;
-
if ((*n == sep) || (n+1 == tokens.end()))
{
last_starting_position = n+1;
- std::string strip = std::string(lsp, n+1 == tokens.end() ? n+1 : n++);
+ token = std::string(lsp, n+1 == tokens.end() ? n+1 : n++);
- while ((strip.length()) && (strip.find_last_of(sep) == strip.length() - 1))
- strip.erase(strip.end() - 1);
+ while ((token.length()) && (token.find_last_of(sep) == token.length() - 1))
+ token.erase(token.end() - 1);
+
+ if (token.empty())
+ n++;
- return strip;
+ return n == tokens.end() ? false : true;
}
n++;
}
- return "";
+ token = "";
+ return false;
}
const std::string irc::sepstream::GetRemaining()
joined.append(sequence[end]);
}
-irc::stringjoiner::stringjoiner(const std::string &seperator, const char** sequence, int begin, int end)
+irc::stringjoiner::stringjoiner(const std::string &seperator, const char* const* sequence, int begin, int end)
{
for (int v = begin; v < end; v++)
joined.append(sequence[v]).append(seperator);
in_range = 0;
}
- std::string x = sep->GetToken();
+ std::string x;
+ sep->GetToken(x);
if (x.empty())
return 0;
while (Overlaps(atoi(x.c_str())))
{
- x = sep->GetToken();
-
- if (x.empty())
+ if (!sep->GetToken(x))
return 0;
}