57 CoreExport
extern unsigned const char *national_case_insensitive_map;
62 CoreExport
extern unsigned const char rfc_case_insensitive_map[256];
68 CoreExport
extern unsigned const char ascii_case_insensitive_map[256];
72 CoreExport
extern unsigned const char rfc_case_sensitive_map[256];
74 template<
typename T>
const T& SearchAndReplace(T& text,
const T& pattern,
const T& replace)
77 if ((!pattern.empty()) && (!text.empty()))
79 for (std::string::size_type n = 0; n != text.length(); ++n)
81 if (text.length() >= pattern.length() && text.substr(n, pattern.length()) == pattern)
84 replacement.append(replace);
85 n = n + pattern.length() - 1;
89 replacement += text[n];
110 bool operator()(
const std::string& s1,
const std::string& s2)
const;
124 static bool eq(
char c1st,
char c2nd);
131 static bool ne(
char c1st,
char c2nd);
138 static bool lt(
char c1st,
char c2nd);
147 static CoreExport
int compare(
const char* str1,
const char* str2,
size_t n);
155 static CoreExport
const char*
find(
const char* s1,
int n,
char c);
163 CoreExport std::string
hex(
const unsigned char *raw,
size_t rawsz);
167 typedef std::basic_string<char, irc_char_traits, std::allocator<char> >
string;
191 stringjoiner(
const std::string &seperator,
const std::vector<std::string> &sequence,
int begin,
int end);
199 stringjoiner(
const std::string &seperator,
const std::deque<std::string> &sequence,
int begin,
int end);
207 stringjoiner(
const std::string &seperator,
const char*
const* sequence,
int begin,
int end);
212 std::string& GetJoined();
224 std::deque<std::string> sequence;
247 void Push(
char modeletter,
const std::string ¶meter);
256 void Push(
char modeletter);
282 int GetStackedLine(std::vector<std::string> &result,
int max_line_size = 360);
286 std::vector<std::string> r;
287 int n = GetStackedLine(r, max_line_size);
289 result.insert(result.end(), r.begin(), r.end());
316 std::string::iterator last_starting_position;
320 std::string::iterator n;
339 bool GetToken(std::string &token);
351 bool GetToken(
int &token);
357 bool GetToken(
long &token);
373 std::string::iterator last_starting_position;
376 std::string::iterator n;
383 sepstream(
const std::string &source,
char seperator);
393 virtual bool GetToken(std::string &token);
398 virtual const std::string GetRemaining();
403 virtual bool StreamEnd();
465 std::set<long> overlap_set;
469 bool Overlaps(
long val);
476 portparser(
const std::string &source,
bool allow_overlapped =
true);
488 CoreExport
const char*
Spacify(
const char* n);
506 inline std::ostream& operator<<(std::ostream &os,
const irc::string &str) {
return os << str.c_str(); }
510 inline std::istream& operator>>(std::istream &is,
irc::string &str)
523 inline std::string operator+ (std::string& leftval,
irc::string& rightval)
525 return leftval + std::string(rightval.c_str());
543 inline bool operator== (
const std::string& leftval,
const irc::string& rightval)
545 return (leftval.c_str() == rightval);
553 inline bool operator== (
const irc::string& leftval,
const std::string& rightval)
555 return (leftval == rightval.c_str());
560 inline bool operator!= (
const irc::string& leftval,
const std::string& rightval)
562 return !(leftval == rightval.c_str());
567 inline bool operator!= (
const std::string& leftval,
const irc::string& rightval)
569 return !(leftval.c_str() == rightval);
574 inline std::string assign(
const irc::string &other) {
return other.c_str(); }
578 inline irc::string assign(
const std::string &other) {
return other.c_str(); }
582 inline std::string& trim(std::string &str)
584 std::string::size_type start = str.find_first_not_of(
" ");
585 std::string::size_type end = str.find_last_not_of(
" ");
586 if (start == std::string::npos || end == std::string::npos)
589 str = str.substr(start, end-start+1);
597 BEGIN_HASHMAP_NAMESPACE
601 #if defined(_WIN32) && !defined(HAS_TR1_UNORDERED)
602 template<>
class CoreExport hash_compare<
irc::
string, std::less<irc::string> >
605 enum { bucket_size = 4, min_buckets = 8 };
611 if(s1.length() != s2.length())
return true;
620 template<>
class CoreExport hash_compare<std::
string, std::less<std::string> >
623 enum { bucket_size = 4, min_buckets = 8 };
627 bool operator()(
const std::string & s1,
const std::string & s2)
const
629 if(s1.length() != s2.length())
return true;
637 size_t operator()(
const std::string & s)
const;
643 #ifdef HASHMAP_DEPRECATED
646 CoreExport template<> struct hash<std::string>
649 size_t CoreExport operator()(
const std::string &s)
const;
657 void strlower(
char *n);
659 END_HASHMAP_NAMESPACE