16#include <miktex/Util/config.h>
23MIKTEX_UTIL_BEGIN_NAMESPACE;
25inline const char* StrChr(
const char* s,
int ch)
30inline const wchar_t* StrChr(
const wchar_t* s, wint_t ch)
35template<
typename CharType>
size_t StrLen(
const CharType* s)
37 const CharType* start = s;
44template<>
inline size_t StrLen<char>(
const char* s)
49template<>
inline size_t StrLen<wchar_t>(
const wchar_t* s)
54inline int CeeStringCompare(
const char* s1,
const char* s2,
bool ignoreCase)
57 return ignoreCase ? _stricmp(s1, s2) : strcmp(s1, s2);
59 return ignoreCase ? strcasecmp(s1, s2) : strcmp(s1, s2);
63inline int CeeStringCompare(
const char* s1,
const char* s2,
size_t n,
bool ignoreCase)
66 return ignoreCase ? _strnicmp(s1, s2, n) : strncmp(s1, s2, n);
68 return ignoreCase ? strncasecmp(s1, s2, n) : strncmp(s1, s2, n);
72inline int CeeStringCompare(
const char* s1,
const char* s2)
74 return CeeStringCompare(s1, s2,
false);
77inline int StringCompare(
const std::string& s1,
const std::string& s2,
bool ignoreCase)
79 return CeeStringCompare(s1.c_str(), s2.c_str(), ignoreCase);
82inline int StringCompare(
const std::string& s1,
const std::string& s2)
84 return StringCompare(s1, s2,
false);
87MIKTEX_UTIL_END_NAMESPACE;