]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
Commented out _CrtSetDbgFlag yet again, restored setup.h settings.
[wxWidgets.git] / include / wx / string.h
index efe6e9fbe458620d4aa4ccd0ba18c7fdcd5485c4..94ef9cb88eb1e1ecb37d43e6a31e9ddc8f0a6ccf 100644 (file)
@@ -9,8 +9,8 @@
 // Licence:     wxWindows license
 /////////////////////////////////////////////////////////////////////////////
 
-#ifndef __WXSTRINGH__
-#define __WXSTRINGH__
+#ifndef _WX_WXSTRINGH__
+#define _WX_WXSTRINGH__
 
 #ifdef __GNUG__
 #pragma interface "string.h"
@@ -125,7 +125,7 @@ inline const wxString& wxGetEmptyString() { return *(wxString *)&g_szNul; }
 struct WXDLLEXPORT wxStringData
 {
   int     nRefs;        // reference count
-  uint    nDataLength,  // actual string length
+  size_t  nDataLength,  // actual string length
           nAllocLength; // allocated memory size
 
   // mimics declaration 'char data[nAllocLength]'
@@ -182,7 +182,7 @@ struct WXDLLEXPORT wxStringData
   {
 #endif  //WXSTRING_IS_WXOBJECT
 
-friend class wxArrayString;
+friend class WXDLLEXPORT wxArrayString;
 
   // NB: special care was taken in arrangin the member functions in such order
   //     that all inline functions can be effectively inlined
@@ -254,13 +254,13 @@ public:
   /** @name generic attributes & operations */
   //@{
     /// as standard strlen()
-  uint Len() const { return GetStringData()->nDataLength; }
+  size_t Len() const { return GetStringData()->nDataLength; }
     /// string contains any characters?
   bool IsEmpty() const { return Len() == 0; }
-    /// reinitialize string (and free data!)
+    /// reinitialize string (and free memory)
   void Empty()
   {
-    if ( GetStringData()->nDataLength != 0 )
+    if ( !IsEmpty() )
       Reinit();
 
     wxASSERT( GetStringData()->nDataLength == 0 );
@@ -452,7 +452,7 @@ public:
       @param  bReplaceAll: global replace (default) or only the first occurence
       @return the number of replacements made
       */
-  uint Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE);
+  size_t Replace(const char *szOld, const char *szNew, bool bReplaceAll = TRUE);
     //@}
 
     /// check if the string contents matches a mask containing '*' and '?'
@@ -471,7 +471,7 @@ public:
   //@{
     /// ensure that string has space for at least nLen characters
     // only works if the data of this string is not shared
-  void Alloc(uint nLen);
+  void Alloc(size_t nLen);
     /// minimize the string's memory
     // only works if the data of this string is not shared
   void Shrink();
@@ -480,7 +480,7 @@ public:
         Unget() *must* be called a.s.a.p. to put string back in a reasonable
         state!
      */
-  char *GetWriteBuf(uint nLen);
+  char *GetWriteBuf(size_t nLen);
     /// call this immediately after GetWriteBuf() has been used
   void UngetWriteBuf();
   //@}
@@ -533,17 +533,13 @@ public:
   wxString& Remove(size_t pos) { return Truncate(pos); }
   wxString& RemoveLast() { return Truncate(Len() - 1); }
 
-  // Robert Roebling
-  wxString& Remove(size_t nStart, size_t nLen)
-    { return erase( nStart, nLen ); }
+  wxString& Remove(size_t nStart, size_t nLen) { return erase( nStart, nLen ); }
 
-  int First( const char ch ) const { size_t res = find(ch); return res == wxString::npos ? -1 : res; }
-  int First( const char* psz ) const { size_t res = find(psz); return res == wxString::npos ? -1 : res; }
-  int First( const wxString &str ) const { size_t res =  find(str); return res == wxString::npos ? -1 : res; }
+  int First( const char ch ) const { return Find(ch); }
+  int First( const char* psz ) const { return Find(psz); }
+  int First( const wxString &str ) const { return Find(str); }
 
-  int Last( const char ch ) const { size_t res = rfind(ch,0); return res == wxString::npos ? -1 : res; }
-  int Last( const char* psz ) const { size_t res = rfind(psz,0); return res == wxString::npos ? -1 : res; }
-  int Last( const wxString &str ) const { size_t res = rfind(str,0); return res == wxString::npos ? -1 : res; }
+  int Last( const char ch ) const { return Find(ch, TRUE); }
 
     /// same as IsEmpty
   bool IsNull() const { return IsEmpty(); }
@@ -560,7 +556,7 @@ public:
     //@{
       /// take nLen chars starting at nPos
       wxString(const wxString& str, size_t nPos, size_t nLen = npos)
-      { 
+      {
         wxASSERT( str.GetStringData()->IsValid() );
         InitWith(str.c_str(), nPos, nLen == npos ? 0 : nLen);
       }
@@ -792,7 +788,7 @@ public:
     @memo probably the most commonly used array type - array of strings
  */
 // ----------------------------------------------------------------------------
-class wxArrayString
+class WXDLLEXPORT wxArrayString
 {
 public:
   /** @name ctors and dtor */
@@ -822,7 +818,7 @@ public:
   /** @name simple accessors */
   //@{
     /// number of elements in the array
-  uint  Count() const   { return m_nCount;      }
+  size_t  Count() const   { return m_nCount;      }
     /// is it empty?
   bool  IsEmpty() const { return m_nCount == 0; }
   //@}
@@ -851,7 +847,7 @@ public:
     /// add new element at the end
   void Add   (const wxString& str);
     /// add new element at given position
-  void Insert(const wxString& str, uint uiIndex);
+  void Insert(const wxString& str, size_t uiIndex);
     /// remove first item matching this value
   void Remove(const char *sz);
     /// remove item by index
@@ -865,7 +861,7 @@ private:
   void    Grow();     // makes array bigger if needed
   void    Free();     // free the string stored
 
-  size_t  m_nSize,    // current size of the array
+  size_t    m_nSize,    // current size of the array
           m_nCount;   // current number of elements
 
   char  **m_pItems;   // pointer to data
@@ -923,12 +919,22 @@ inline bool operator>=(const char  * s1, const wxString& s2) { return s2.Cmp(s1)
 #ifdef  STD_STRING_COMPATIBILITY
 
 // fwd decl
-class WXDLLEXPORT istream;
+// Known not to work with wxUSE_IOSTREAMH set to 0, so
+// replacing with includes (on advice of ungod@pasdex.com.au)
+// class WXDLLEXPORT istream;
+#if wxUSE_IOSTREAMH
+#include <istream.h>
+#else
+#include <istream>
+#  ifdef _MSC_VER
+      using namespace std;
+#  endif
+#endif
 
 istream& WXDLLEXPORT operator>>(istream& is, wxString& str);
 
 #endif  //std::string compatibility
 
-#endif  // __WXSTRINGH__
+#endif  // _WX_WXSTRINGH__
 
 //@}