mirror of
https://github.com/1dot13/source.git
synced 2026-07-22 13:40:22 +02:00
git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@1871 3b4a5df2-a311-0410-b5c6-a8a6f20db521
42 lines
857 B
C++
42 lines
857 B
C++
//
|
|
// Snap: Implementation of case-insensitive string comparison classes
|
|
//
|
|
#include "stringicmp.h"
|
|
#include <ctype.h>
|
|
|
|
|
|
|
|
bool TStringiLess::operator() (std::string const& s1, std::string const& s2) const
|
|
{
|
|
// An MSVC compliance issue...
|
|
//using std::toupper;
|
|
|
|
#if 0
|
|
std::string::const_iterator p1 = s1.begin();
|
|
std::string::const_iterator p2 = s2.begin();
|
|
|
|
while (p1 != s1.end() && p2 != s2.end() && toupper(*p1) == toupper(*p2)) {
|
|
++p1;
|
|
++p2;
|
|
}
|
|
|
|
if (p1 == s1.end()) return p2 != s2.end();
|
|
if (p2 == s2.end()) return false;
|
|
|
|
return toupper(*p1) < toupper(*p2);
|
|
#else
|
|
const char *p1 = s1.c_str();
|
|
const char *p2 = s2.c_str();
|
|
|
|
while (*p1 && *p2 && toupper(*p1) == toupper(*p2)) {
|
|
++p1;
|
|
++p2;
|
|
}
|
|
|
|
if (!*p1) return *p2 != 0;
|
|
if (!*p2) return false;
|
|
|
|
return toupper(*p1) < toupper(*p2);
|
|
#endif
|
|
}
|