]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
1. wxAppBase class appers, wxApp in wxGTK and wxMSW modified accordingly
[wxWidgets.git] / include / wx / string.h
index c3992d5f47e02dd591bf12229fee884f52675d78..661c893f5759a526a5e493c5e4ffe3b239b0fab3 100644 (file)
     #include <ctype.h>
 #endif
 
+#ifdef __EMX__
+    #include <std.h>
+#endif
+
 #include <string.h>
 #include <stdio.h>
 #include <stdarg.h>
@@ -89,17 +93,19 @@ inline size_t WXDLLEXPORT Strlen(const char *psz)
 // portable strcasecmp/_stricmp
 inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2)
 {
-#if     defined(__VISUALC__) || ( defined(__MWERKS__) && defined(__INTEL__) )
+#if defined(__VISUALC__) || ( defined(__MWERKS__) && defined(__INTEL__) )
   return _stricmp(psz1, psz2);
-#elif     defined(__SC__)
+#elif defined(__SC__)
   return _stricmp(psz1, psz2);
-#elif     defined(__SALFORDC__)
+#elif defined(__SALFORDC__)
   return stricmp(psz1, psz2);
 #elif defined(__BORLANDC__)
   return stricmp(psz1, psz2);
 #elif defined(__WATCOMC__)
   return stricmp(psz1, psz2);
-#elif   defined(__UNIX__) || defined(__GNUWIN32__)
+#elif defined(__EMX__)
+  return stricmp(psz1, psz2);
+#elif defined(__UNIX__) || defined(__GNUWIN32__)
   return strcasecmp(psz1, psz2);
 #elif defined(__MWERKS__) && !defined(__INTEL__)
   register char c1, c2;
@@ -192,7 +198,6 @@ class WXDLLEXPORT wxMBConv
 #endif
 };
 WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc;
-#define wxConv_libc wxConvLibc
 
 #define wxANOTHER_MBCONV(type) \
 class type : public wxMBConv { \
@@ -202,14 +207,11 @@ class type : public wxMBConv { \
 }
 
 WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvFile)) wxConvFile;
-#define wxConv_file wxConvFile
 WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvUTF7)) wxConvUTF7;
 WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvUTF8)) wxConvUTF8;
-#define wxConv_UTF8 wxConvUTF8
-#if defined(__WXGTK12__)
+#ifdef __WXGTK12__
     WXDLLEXPORT_DATA(extern wxANOTHER_MBCONV(wxMBConvGdk)) wxConvGdk;
-    #define wxConv_gdk wxConvGdk
-#endif // GTK > 1.0
+#endif
 
 class wxCharacterSet;
 class WXDLLEXPORT wxCSConv : public wxMBConv
@@ -254,10 +256,7 @@ public:
   const char* cWX2MB(const char *psz) const { return psz; }
 };
 WXDLLEXPORT_DATA(extern wxMBConv) wxConvLibc, wxConvFile;
-#define wxConv_libc wxConvLibc
-#define wxConv_file wxConvFile
 WXDLLEXPORT_DATA(extern wxMBConv *) wxConvCurrent;
-#define wxConv_current wxConvCurrent
 #define wxFNCONV(name) name
 #define FNSTRINGCAST WXSTRINGCAST
 #endif//wxUSE_WCHAR_T
@@ -573,13 +572,19 @@ public:
 
   // string comparison
     // case-sensitive comparison (returns a value < 0, = 0 or > 0)
-  int  Cmp(const wxChar *psz) const { return wxStrcmp(c_str(), psz); }
+  int Cmp(const wxChar *psz) const { return wxStrcmp(c_str(), psz); }
     // same as Cmp() but not case-sensitive
-  int  CmpNoCase(const wxChar *psz) const { return wxStricmp(c_str(), psz); }
+  int CmpNoCase(const wxChar *psz) const { return wxStricmp(c_str(), psz); }
     // test for the string equality, either considering case or not
     // (if compareWithCase then the case matters)
   bool IsSameAs(const wxChar *psz, bool compareWithCase = TRUE) const
     { return (compareWithCase ? Cmp(psz) : CmpNoCase(psz)) == 0; }
+    // comparison with a signle character: returns TRUE if equal
+  bool IsSameAs(wxChar c, bool compareWithCase = TRUE) const
+    {
+      return (Len() == 1) && (compareWithCase ? GetChar(0u) == c
+                              : wxToupper(GetChar(0u)) == wxToupper(c));
+    }
 
   // simple sub-string extraction
       // return substring starting at nFirst of length nCount (or till the end
@@ -713,6 +718,10 @@ public:
 #ifdef  wxSTD_STRING_COMPATIBILITY
   // std::string compatibility functions
 
+  // standard types
+  typedef wxChar value_type;
+  typedef const value_type *const_iterator;
+
   // an 'invalid' value for string index
   static const size_t npos;
 
@@ -746,6 +755,11 @@ public:
     // returns the writable character at position n
   wxChar& at(size_t n) { return GetWritableChar(n); }
 
+    // first valid index position
+  const_iterator begin() const { return wx_str(); }
+    // position one after the last valid one
+  const_iterator end() const { return wx_str() + length(); }
+
   // lib.string.modifiers
     // append a string
   wxString& append(const wxString& str)
@@ -985,6 +999,7 @@ private:
 // ---------------------------------------------------------------------------
 // wxString comparison functions: operator versions are always case sensitive
 // ---------------------------------------------------------------------------
+
 //
 inline bool operator==(const wxString& s1, const wxString& s2) { return (s1.Cmp(s2) == 0); }
 //
@@ -1022,6 +1037,24 @@ inline bool operator>=(const wxString& s1, const wxChar  * s2) { return (s1.Cmp(
 //
 inline bool operator>=(const wxChar  * s1, const wxString& s2) { return (s2.Cmp(s1) <= 0); }
 
+// comparison with char
+inline bool operator==(wxChar c, const wxString& s) { return s.IsSameAs(c); }
+inline bool operator==(const wxString& s, wxChar c) { return s.IsSameAs(c); }
+inline bool operator!=(wxChar c, const wxString& s) { return !s.IsSameAs(c); }
+inline bool operator!=(const wxString& s, wxChar c) { return !s.IsSameAs(c); }
+
+#if wxUSE_UNICODE
+inline bool operator==(const wxString& s1, const wxWCharBuffer& s2)
+    { return (s1.Cmp((const wchar_t *)s2) == 0); }
+inline bool operator==(const wxWCharBuffer& s1, const wxString& s2)
+    { return (s2.Cmp((const wchar_t *)s1) == 0); }
+#else
+inline bool operator==(const wxString& s1, const wxCharBuffer& s2)
+    { return (s1.Cmp((const char *)s2) == 0); }
+inline bool operator==(const wxCharBuffer& s1, const wxString& s2)
+    { return (s2.Cmp((const char *)s1) == 0); }
+#endif
+
 wxString WXDLLEXPORT operator+(const wxString& string1,  const wxString& string2);
 wxString WXDLLEXPORT operator+(const wxString& string, wxChar ch);
 wxString WXDLLEXPORT operator+(wxChar ch, const wxString& string);
@@ -1043,7 +1076,7 @@ inline wxString WXDLLEXPORT operator+(const wxCharBuffer& buf, const wxString& s
 // Implementation only from here until the end of file
 // ---------------------------------------------------------------------------
 
-#ifdef wxSTD_STRING_COMPATIBILITY
+#if defined(wxSTD_STRING_COMPATIBILITY) && wxUSE_STD_IOSTREAM
 
 #include "wx/ioswrap.h"