aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Horn2006-07-30 12:17:51 +0000
committerMax Horn2006-07-30 12:17:51 +0000
commitbd49091afd55cf2663095a1882bab34496ef01f0 (patch)
tree5021859989d486cc62987b0998dd1323793833e7
parent1f8066c333e24d0abc3c552b8ef517109058dff6 (diff)
downloadscummvm-rg350-bd49091afd55cf2663095a1882bab34496ef01f0.tar.gz
scummvm-rg350-bd49091afd55cf2663095a1882bab34496ef01f0.tar.bz2
scummvm-rg350-bd49091afd55cf2663095a1882bab34496ef01f0.zip
Added new equals(IgnoreCase) and compareTo(IgnoreCase) methods to class String
svn-id: r23633
-rw-r--r--common/str.cpp78
-rw-r--r--common/str.h15
2 files changed, 76 insertions, 17 deletions
diff --git a/common/str.cpp b/common/str.cpp
index 575bb6bdf8..a170099f70 100644
--- a/common/str.cpp
+++ b/common/str.cpp
@@ -22,6 +22,7 @@
#include "common/stdafx.h"
#include "common/str.h"
+#include "common/hash.h"
#include "common/util.h"
#include <ctype.h>
@@ -283,40 +284,92 @@ void String::ensureCapacity(int new_len, bool keep_old) {
_str = newStr;
}
+uint String::hash() const {
+ return hashit(c_str());
+}
+
#pragma mark -
bool String::operator ==(const String &x) const {
- return (0 == strcmp(c_str(), x.c_str()));
+ return equals(x);
}
bool String::operator ==(const char *x) const {
assert(x != 0);
- return (0 == strcmp(c_str(), x));
+ return equals(x);
}
bool String::operator !=(const String &x) const {
- return (0 != strcmp(c_str(), x.c_str()));
+ return !equals(x);
}
bool String::operator !=(const char *x) const {
assert(x != 0);
- return (0 != strcmp(c_str(), x));
+ return !equals(x);
}
bool String::operator < (const String &x) const {
- return strcmp(c_str(), x.c_str()) < 0;
+ return compareTo(x) < 0;
}
bool String::operator <= (const String &x) const {
- return strcmp(c_str(), x.c_str()) <= 0;
+ return compareTo(x) <= 0;
}
bool String::operator > (const String &x) const {
- return (x < *this);
+ return compareTo(x) > 0;
}
bool String::operator >= (const String &x) const {
- return (x <= *this);
+ return compareTo(x) >= 0;
+}
+
+#pragma mark -
+
+bool operator == (const char* y, const String &x) {
+ return (x == y);
+}
+
+bool operator != (const char* y, const String &x) {
+ return x != y;
+}
+
+#pragma mark -
+
+bool String::equals(const String &x) const {
+ return (0 == compareTo(x));
+}
+
+bool String::equals(const char *x) const {
+ assert(x != 0);
+ return (0 == compareTo(x));
+}
+
+bool String::equalsIgnoreCase(const String &x) const {
+ return (0 == compareToIgnoreCase(x));
+}
+
+bool String::equalsIgnoreCase(const char *x) const {
+ assert(x != 0);
+ return (0 == compareToIgnoreCase(x));
+}
+
+int String::compareTo(const String &x) const {
+ return compareTo(x.c_str());
+}
+
+int String::compareTo(const char *x) const {
+ assert(x != 0);
+ return strcmp(c_str(), x);
+}
+
+int String::compareToIgnoreCase(const String &x) const {
+ return compareToIgnoreCase(x.c_str());
+}
+
+int String::compareToIgnoreCase(const char *x) const {
+ assert(x != 0);
+ return scumm_stricmp(c_str(), x);
}
#pragma mark -
@@ -339,14 +392,5 @@ String operator +(const String &x, const char *y) {
return temp;
}
-#pragma mark -
-
-bool operator == (const char* y, const String &x) {
- return (x == y);
-}
-
-bool operator != (const char* y, const String &x) {
- return x != y;
-}
} // End of namespace Common
diff --git a/common/str.h b/common/str.h
index 3d0053618b..5110fdf6d6 100644
--- a/common/str.h
+++ b/common/str.h
@@ -60,11 +60,24 @@ public:
bool operator ==(const char *x) const;
bool operator !=(const String &x) const;
bool operator !=(const char *x) const;
+
bool operator <(const String &x) const;
bool operator <=(const String &x) const;
bool operator >(const String &x) const;
bool operator >=(const String &x) const;
+ bool equals(const String &x) const;
+ bool equalsIgnoreCase(const String &x) const;
+ int compareTo(const String &x) const; // strcmp clone
+ int compareToIgnoreCase(const String &x) const; // stricmp clone
+
+ bool equals(const char *x) const;
+ bool equalsIgnoreCase(const char *x) const;
+ int compareTo(const char *x) const; // strcmp clone
+ int compareToIgnoreCase(const char *x) const; // stricmp clone
+
+
+
bool hasSuffix(const char *x) const;
bool hasPrefix(const char *x) const;
@@ -92,6 +105,8 @@ public:
void toLowercase();
void toUppercase();
+ uint hash() const;
+
public:
typedef char * iterator;
typedef const char * const_iterator;