]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/string.h
getting rid of wxBuffer
[wxWidgets.git] / include / wx / string.h
index 7f4245d2aadaf1b3e86eadd9927e229542928a9b..c9169837c7e0494cd48885ddf23e75aabf072df6 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef _WX_WXSTRINGH__
 #define _WX_WXSTRINGH__
 
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
     #pragma interface "string.h"
 #endif
 
@@ -165,33 +165,6 @@ inline int Stricmp(const char *psz1, const char *psz2)
 #endif  // OS/compiler
 }
 
-#ifndef wxSnprintf   
-// wxSnprintf() is like snprintf() if it's available and sprintf() (always
-// available, but dangerous!) if not.
-extern int WXDLLEXPORT wxSnprintf(wxChar *buf, size_t len,
-                                  const wxChar *format,
-                                  ...) ATTRIBUTE_PRINTF_3;
-#else
-// GNU libc 2.2 only has for wxSnprintf for Unicode called swprintf
-// so we imitate wxSprintf using it.
-extern int WXDLLEXPORT wxSprintf(wxChar *buf,
-                                  const wxChar *format,
-                                  ...) ATTRIBUTE_PRINTF_2;
-#endif
-
-#ifndef wxVsnprintf
-// and wxVsnprintf() is like vsnprintf() or vsprintf()
-extern int WXDLLEXPORT wxVsnprintf(wxChar *buf, size_t len,
-                                   const wxChar *format,
-                                   va_list argptr);
-#else
-// GNU libc 2.2 only has for wxVsnprintf for Unicode called vswprintf
-// so we imitate wxVsprintf using it.
-extern int WXDLLEXPORT wxVsprintf(wxChar *buf,
-                                  const wxChar *format,
-                                  va_list argptr);
-#endif
-
 // return an empty wxString
 class WXDLLEXPORT wxString; // not yet defined
 inline const wxString& wxGetEmptyString() { return *(wxString *)&wxEmptyString; }
@@ -341,7 +314,7 @@ public:
     // from multibyte string
     // (NB: nLength is right now number of Unicode characters, not
     //  characters in psz! So try not to use it yet!)
-  wxString(const char *psz, wxMBConv& conv = wxConvLibc, size_t nLength = wxSTRING_MAXLEN);
+  wxString(const char *psz, wxMBConv& conv, size_t nLength = wxSTRING_MAXLEN);
     // from wxWCharBuffer (i.e. return from wxGetString)
   wxString(const wxWCharBuffer& psz)
     { InitWith(psz, 0, wxSTRING_MAXLEN); }
@@ -473,14 +446,31 @@ public:
 
     // implicit conversion to C string
     operator const wxChar*() const { return m_pchData; }
+
     // explicit conversion to C string (use this with printf()!)
     const wxChar* c_str()   const { return m_pchData; }
-    // identical to c_str()
+    // identical to c_str(), for wxWin 1.6x compatibility
     const wxChar* wx_str()  const { return m_pchData; }
-    // identical to c_str()
+    // identical to c_str(), for MFC compatibility
     const wxChar* GetData() const { return m_pchData; }
 
-    // conversions with (possible) format convertions: have to return a
+    // conversion to/from plain (i.e. 7 bit) ASCII: this is useful for
+    // converting numbers or strings which are certain not to contain special
+    // chars (typically system functions, X atoms, environment variables etc.)
+    //
+    // the behaviour of these functions with the strings containing anything
+    // else than 7 bit ASCII characters is undefined, use at your own risk.
+#if wxUSE_UNICODE
+    static wxString FromAscii(const char *ascii);  // string
+    static wxString FromAscii(const char ascii);   // char
+    const wxCharBuffer ToAscii() const;
+#else // ANSI
+    static wxString FromAscii(const char *ascii) { return wxString( ascii ); }
+    static wxString FromAscii(const char ascii) { return wxString( ascii ); }
+    const char *ToAscii() const { return c_str(); }
+#endif // Unicode/!Unicode
+
+    // conversions with (possible) format conversions: have to return a
     // buffer with temporary data
     //
     // the functions defined (in either Unicode or ANSI) mode are mb_str() to
@@ -845,7 +835,7 @@ public:
     // returns true if the string is empty
   bool empty() const { return IsEmpty(); }
     // inform string about planned change in size
-  void reserve(size_t size) { Alloc(size); }
+  void reserve(size_t sz) { Alloc(sz); }
 
   // lib.string.access
     // return the character at position n
@@ -1162,20 +1152,20 @@ public:
 
 class WXDLLEXPORT wxStringBuffer
 {
-    DECLARE_NO_COPY_CLASS(wxStringBuffer)
-    
 public:
     wxStringBuffer(wxString& str, size_t lenWanted = 1024)
         : m_str(str), m_buf(NULL)
         { m_buf = m_str.GetWriteBuf(lenWanted); }
-    
+
     ~wxStringBuffer() { m_str.UngetWriteBuf(); }
-    
+
     operator wxChar*() const { return m_buf; }
-    
+
 private:
     wxString& m_str;
     wxChar   *m_buf;
+
+    DECLARE_NO_COPY_CLASS(wxStringBuffer)
 };
 
 // ---------------------------------------------------------------------------
@@ -1271,7 +1261,7 @@ inline wxString operator+(const wxCharBuffer& buf, const wxString& string)
 
 #if defined(wxSTD_STRING_COMPATIBILITY) && wxUSE_STD_IOSTREAM
 
-#include "wx/ioswrap.h"
+#include "wx/iosfwrap.h"
 
 WXDLLEXPORT wxSTD istream& operator>>(wxSTD istream&, wxString&);
 WXDLLEXPORT wxSTD ostream& operator<<(wxSTD ostream&, const wxString&);