]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
SetEventData for a few widgets
[wxWidgets.git] / include / wx / string.h
index af979150b0d0319b12584cf872ca229d0b456413..e239f8bca782feb06a7159beaa8bed92a7ec2628 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"
@@ -112,10 +112,10 @@ inline int WXDLLEXPORT Stricmp(const char *psz1, const char *psz2)
 // ----------------------------------------------------------------------------
 
 // global pointer to empty string
-extern const char *g_szNul;
+WXDLLEXPORT_DATA(extern const char*) g_szNul;
 
 // return an empty wxString
-class wxString; // not yet defined
+class WXDLLEXPORT wxString; // not yet defined
 inline const wxString& wxGetEmptyString() { return *(wxString *)&g_szNul; }
 
 // ---------------------------------------------------------------------------
@@ -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 );
@@ -375,13 +375,13 @@ public:
   /** @name string comparison */
   //@{
     /**
-    case-sensitive comparaison
+    case-sensitive comparison
     @return 0 if equal, +1 if greater or -1 if less
     @see CmpNoCase, IsSameAs
     */
   int  Cmp(const char *psz) const { return strcmp(c_str(), psz); }
     /**
-    case-insensitive comparaison, return code as for wxString::Cmp()
+    case-insensitive comparison, return code as for wxString::Cmp()
     @see: Cmp, IsSameAs
     */
   int  CmpNoCase(const char *psz) const { return Stricmp(c_str(), psz); }
@@ -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);
       }
@@ -758,14 +754,14 @@ public:
       //@{
         /// just like strcmp()
         int compare(const wxString& str) const { return Cmp(str); }
-        /// comparaison with a substring
+        /// comparison with a substring
         int compare(size_t nStart, size_t nLen, const wxString& str) const;
-        /// comparaison of 2 substrings
+        /// comparison of 2 substrings
         int compare(size_t nStart, size_t nLen,
                     const wxString& str, size_t nStart2, size_t nLen2) const;
         /// just like strcmp()
         int compare(const char* sz) const { return Cmp(sz); }
-        /// substring comparaison with first nCount characters of sz
+        /// substring comparison with first nCount characters of sz
         int compare(size_t nStart, size_t nLen,
                     const char* sz, size_t nCount = npos) const;
       //@}
@@ -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; }
   //@}
@@ -843,7 +839,7 @@ public:
     /**
       Search the element in the array, starting from the either side
       @param if bFromEnd reverse search direction
-      @param if bCase, comparaison is case sensitive (default)
+      @param if bCase, comparison is case sensitive (default)
       @return index of the first item matched or NOT_FOUND
       @see NOT_FOUND
      */
@@ -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,15 +861,15 @@ 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
 };
 
 // ---------------------------------------------------------------------------
-/** @name wxString comparaison functions
-    @memo Comparaisons are case sensitive
+/** @name wxString comparison functions
+    @memo Comparisons are case sensitive
  */
 // ---------------------------------------------------------------------------
 //@{
@@ -923,12 +919,23 @@ 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
+// N.B. BC++ doesn't have istream.h, ostream.h
+#include <iostream.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__
 
 //@}