* ---------------------------------------------------
*/
-/* $Core: libIRCDhash */
+/* $Core */
#include "inspircd.h"
#include "hashcomp.h"
-#ifndef WIN32
-#include <ext/hash_map>
-#define nspace __gnu_cxx
-#else
-#include <hash_map>
-#define nspace stdext
-using stdext::hash_map;
-#endif
+#include "hash_map.h"
/******************************************************
*
}
#ifndef WIN32
-size_t nspace::hash<std::string>::operator()(const std::string &s) const
+ #ifdef HASHMAP_DEPRECATED
+ size_t nspace::insensitive::operator()(const std::string &s) const
+ #else
+ size_t nspace::hash<std::string>::operator()(const std::string &s) const
+ #endif
#else
-size_t nspace::hash_compare<string, std::less<std::string> >::operator()(const std::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! :)
return t;
}
+
#ifndef WIN32
size_t nspace::hash<irc::string>::operator()(const irc::string &s) const
#else
bool irc::StrHashComp::operator()(const std::string& s1, const std::string& s2) const
{
- unsigned char* n1 = (unsigned char*)s1.c_str();
- unsigned char* n2 = (unsigned char*)s2.c_str();
+ const unsigned char* n1 = (const unsigned char*)s1.c_str();
+ const unsigned char* n2 = (const unsigned char*)s2.c_str();
for (; *n1 && *n2; n1++, n2++)
if (lowermap[*n1] != lowermap[*n2])
return false;
}
-irc::modestacker::modestacker(bool add) : adding(add)
+irc::modestacker::modestacker(InspIRCd* Instance, bool add) : ServerInstance(Instance), adding(add)
{
sequence.clear();
sequence.push_back("");
if (sequence.size() > 1)
nextsize = sequence[1].length() + 2;
- while (!sequence[0].empty() && (sequence.size() > 1) && (result.size() < MAXMODES) && ((size + nextsize) < max_line_size))
+ while (!sequence[0].empty() && (sequence.size() > 1) && (result.size() < ServerInstance->Config->Limits.MaxModes) && ((size + nextsize) < max_line_size))
{
result[0] += *(sequence[0].begin());
if (!sequence[1].empty())
irc::stringjoiner::stringjoiner(const std::string &seperator, const std::vector<std::string> &sequence, int begin, int end)
{
+ if (end < begin)
+ throw "stringjoiner logic error, this causes problems.";
+
for (int v = begin; v < end; v++)
joined.append(sequence[v]).append(seperator);
joined.append(sequence[end]);
irc::stringjoiner::stringjoiner(const std::string &seperator, const std::deque<std::string> &sequence, int begin, int end)
{
+ if (end < begin)
+ throw "stringjoiner logic error, this causes problems.";
+
for (int v = begin; v < end; v++)
joined.append(sequence[v]).append(seperator);
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)
{
+ if (end < begin)
+ throw "stringjoiner logic error, this causes problems.";
+
for (int v = begin; v < end; v++)
joined.append(sequence[v]).append(seperator);
joined.append(sequence[end]);