#if wxUSE_WCHAR_T
// from wide string
-wxString::wxString(const wchar_t *pwz, wxMBConv& conv)
+wxString::wxString(const wchar_t *pwz, wxMBConv& conv, size_t nLength)
{
// first get necessary size
- size_t nLen = pwz ? conv.WC2MB((char *) NULL, pwz, 0) : 0;
+ size_t nLen = 0;
+ if (pwz)
+ {
+ if (nLength == wxSTRING_MAXLEN)
+ nLen = conv.WC2MB((char *) NULL, pwz, 0);
+ else
+ nLen = nLength;
+ }
// empty?
if ( (nLen != 0) && (nLen != (size_t)-1) ) {
#define STRING(p) ((wxString *)(&(p)))
// ctor
-wxArrayString::wxArrayString(bool autoSort)
+void wxArrayString::Init(bool autoSort)
{
m_nSize =
m_nCount = 0;
// copy ctor
wxArrayString::wxArrayString(const wxArrayString& src)
{
- m_nSize =
- m_nCount = 0;
- m_pItems = (wxChar **) NULL;
- m_autoSort = src.m_autoSort;
+ Init(src.m_autoSort);
*this = src;
}
// pre-allocates memory (frees the previous data!)
void wxArrayString::Alloc(size_t nSize)
{
- wxASSERT( nSize > 0 );
-
// only if old buffer was not big enough
if ( nSize > m_nSize ) {
Free();
static bool gs_sortAscending = TRUE;
// function which is called by quick sort
-static int LINKAGEMODE wxStringCompareFunction(const void *first, const void *second)
+extern "C" int LINKAGEMODE
+wxStringCompareFunction(const void *first, const void *second)
{
wxString *strFirst = (wxString *)first;
wxString *strSecond = (wxString *)second;