#ifndef _WX_WXSTRINGH__
#define _WX_WXSTRINGH__
-#ifdef __GNUG__
+#if defined(__GNUG__) && !defined(__APPLE__)
#pragma interface "string.h"
#endif
#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; }
// 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); }
// 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; }
- // conversion to plain ascii: this is usefull for
- // converting numbers or strings which are certain
- // not to contain special chars (typically system
- // functions, X atoms, environment variables etc.)
+ // 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( char *ascii );
+ static wxString FromAscii(const char *ascii); // string
+ static wxString FromAscii(const char ascii); // char
const wxCharBuffer ToAscii() const;
-#else
- static wxString FromAscii( char *ascii ) { return wxString( ascii ); }
- const char *ToAscii() const { return m_pchData; }
-#endif
+#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 convertions: have to return a
+ // 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
// 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
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)
};
// ---------------------------------------------------------------------------
#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&);