Index: core/include/fxcrt/fx_string.h |
diff --git a/core/include/fxcrt/fx_string.h b/core/include/fxcrt/fx_string.h |
index b4d7249209c481f25fc749d95eb4749d8d01d51c..7e9b1a15f662f39b0ef6b8249345921bb1ebde2a 100644 |
--- a/core/include/fxcrt/fx_string.h |
+++ b/core/include/fxcrt/fx_string.h |
@@ -94,14 +94,17 @@ public: |
CFX_ByteStringC& operator = (const CFX_ByteString& src); |
- bool operator == (const CFX_ByteStringC& str) const |
- { |
- return str.m_Length == m_Length && FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_Length) == 0; |
+ bool operator== (const char* ptr) const { |
+ return strlen(ptr) == m_Length && |
+ FXSYS_memcmp32(ptr, m_Ptr, m_Length) == 0; |
} |
- |
- bool operator != (const CFX_ByteStringC& str) const |
- { |
- return str.m_Length != m_Length || FXSYS_memcmp32(str.m_Ptr, m_Ptr, m_Length) != 0; |
+ bool operator== (const CFX_ByteStringC& other) const { |
+ return other.m_Length == m_Length && |
+ FXSYS_memcmp32(other.m_Ptr, m_Ptr, m_Length) == 0; |
+ } |
+ bool operator!= (const char* ptr) const { return !(*this == ptr); } |
+ bool operator!= (const CFX_ByteStringC& other) const { |
+ return !(*this == other); |
} |
FX_DWORD GetID(FX_STRSIZE start_pos = 0) const; |
@@ -166,6 +169,12 @@ private: |
return NULL; |
} |
}; |
+inline bool operator== (const char* lhs, const CFX_ByteStringC& rhs) { |
+ return rhs == lhs; |
+} |
+inline bool operator!= (const char* lhs, const CFX_ByteStringC& rhs) { |
+ return rhs != lhs; |
+} |
typedef const CFX_ByteStringC& FX_BSTR; |
#define FX_BSTRC(str) CFX_ByteStringC(str, sizeof str-1) |
#define FXBSTR_ID(c1, c2, c3, c4) ((c1 << 24) | (c2 << 16) | (c3 << 8) | (c4)) |
@@ -243,36 +252,22 @@ public: |
int Compare(FX_BSTR str) const; |
- bool Equal(FX_BSTR str) const; |
- |
- |
- bool EqualNoCase(FX_BSTR str) const; |
- |
- bool operator == (FX_LPCSTR str) const |
- { |
- return Equal(str); |
- } |
- |
- bool operator == (FX_BSTR str) const |
- { |
- return Equal(str); |
- } |
+ bool Equal(const char* ptr) const; |
+ bool Equal(const CFX_ByteStringC& str) const; |
+ bool Equal(const CFX_ByteString& other) const; |
- bool operator == (const CFX_ByteString& str) const; |
+ bool EqualNoCase(FX_BSTR str) const; |
- bool operator != (FX_LPCSTR str) const |
- { |
- return !Equal(str); |
- } |
+ bool operator== (const char* ptr) const { return Equal(ptr); } |
+ bool operator== (const CFX_ByteStringC& str) const { return Equal(str); } |
+ bool operator== (const CFX_ByteString& other) const { return Equal(other); } |
- bool operator != (FX_BSTR str) const |
- { |
- return !Equal(str); |
+ bool operator!= (const char* ptr) const { return !(*this == ptr); } |
+ bool operator!= (const CFX_ByteStringC& str) const { |
+ return !(*this == str); |
} |
- |
- bool operator != (const CFX_ByteString& str) const |
- { |
- return !operator==(str); |
+ bool operator!= (const CFX_ByteString& other) const { |
+ return !(*this == other); |
} |
bool operator< (const CFX_ByteString& str) const |
@@ -398,6 +393,19 @@ inline CFX_ByteStringC& CFX_ByteStringC::operator = (const CFX_ByteString& src) |
return *this; |
} |
+inline bool operator== (const char* lhs, const CFX_ByteString& rhs) { |
+ return rhs == lhs; |
+} |
+inline bool operator== (const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) { |
+ return rhs == lhs; |
+} |
+inline bool operator!= (const char* lhs, const CFX_ByteString& rhs) { |
+ return rhs != lhs; |
+} |
+inline bool operator!= (const CFX_ByteStringC& lhs, const CFX_ByteString& rhs) { |
+ return rhs != lhs; |
+} |
+ |
inline CFX_ByteString operator + (FX_BSTR str1, FX_BSTR str2) |
{ |
return CFX_ByteString(str1, str2); |