// we don't need an extra ctor from std::string when copy ctor already does
// the work
#undef wxUSE_STD_STRING
+ #define wxUSE_STD_STRING 0
#if (defined(__GNUG__) && (__GNUG__ < 3)) || \
(defined(_MSC_VER) && (_MSC_VER <= 1200))
// initializes the string to the empty value (must be called only from
// ctors, use Reinit() otherwise)
void Init() { m_pchData = (wxChar *)wxEmptyString; }
- // initializaes the string with (a part of) C-string
+ // initializes the string with (a part of) C-string
void InitWith(const wxChar *psz, size_t nPos = 0, size_t nLen = npos);
// as Init, but also frees old data
void Reinit() { GetStringData()->Unlock(); Init(); }
wxString(const wxWCharBuffer& psz) : wxStringBase(psz.data()) { }
#else // ANSI
// from C string (for compilers using unsigned char)
- wxString(const unsigned char* psz, size_t nLength = npos)
+ wxString(const unsigned char* psz)
+ : wxStringBase((const char*)psz) { }
+ // from part of C string (for compilers using unsigned char)
+ wxString(const unsigned char* psz, size_t nLength)
: wxStringBase((const char*)psz, nLength) { }
#if wxUSE_WCHAR_T
// insert an unsigned long into string
wxString& operator<<(unsigned long ul)
{ return (*this) << Format(_T("%lu"), ul); }
+#if defined wxLongLong_t && !defined wxLongLongIsLong
+ // insert a long long if they exist and aren't longs
+ wxString& operator<<(wxLongLong_t ll)
+ {
+ const wxChar *fmt = _T("%") wxLongLongFmtSpec _T("d");
+ return (*this) << Format(fmt, ll);
+ }
+ // insert an unsigned long long
+ wxString& operator<<(wxULongLong_t ull)
+ {
+ const wxChar *fmt = _T("%") wxLongLongFmtSpec _T("u");
+ return (*this) << Format(fmt , ull);
+ }
+#endif
// insert a float into string
wxString& operator<<(float f)
{ return (*this) << Format(_T("%f"), f); }
// convert to a double
bool ToDouble(double *val) const;
- // formated input/output
+ // formatted input/output
// as sprintf(), returns the number of characters written or < 0 on error
// (take 'this' into account in attribute parameter count)
int Printf(const wxChar *pszFormat, ...) ATTRIBUTE_PRINTF_2;
{ return (wxString&)wxStringBase::operator+=(ch); }
};
+// IBM xlC compiler needs these operators to be declared in global scope,
+// although this shouldn't be a problem for the other compilers we prefer to
+// only do it for it in stable 2.6 branch
+#ifdef __IBMCPP__
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string1, const wxString& string2);
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string, wxChar ch);
+wxString WXDLLIMPEXP_BASE operator+(wxChar ch, const wxString& string);
+wxString WXDLLIMPEXP_BASE operator+(const wxString& string, const wxChar *psz);
+wxString WXDLLIMPEXP_BASE operator+(const wxChar *psz, const wxString& string);
+#endif // __IBMCPP__
+
// define wxArrayString, for compatibility
#if WXWIN_COMPATIBILITY_2_4 && !wxUSE_STL
#include "wx/arrstr.h"