X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e99c30481090eb4ceaec74c0c1b5fac89b235e7f..6f34921d9369a31de14e4b07e4824e2d701710f0:/src/common/dynarray.cpp?ds=sidebyside diff --git a/src/common/dynarray.cpp b/src/common/dynarray.cpp index 7ea0930aef..305a1f07d4 100644 --- a/src/common/dynarray.cpp +++ b/src/common/dynarray.cpp @@ -24,6 +24,7 @@ #endif #include "wx/dynarray.h" +#include #include #include // for memmove @@ -52,7 +53,7 @@ wxBaseArray::wxBaseArray() { m_uiSize = m_uiCount = 0; - m_pItems = NULL; + m_pItems = (long *) NULL; } // copy ctor @@ -66,13 +67,20 @@ wxBaseArray::wxBaseArray(const wxBaseArray& src) memcpy(m_pItems, src.m_pItems, m_uiCount*sizeof(long)); } else - m_pItems = NULL; + m_pItems = (long *) NULL; } // assignment operator wxBaseArray& wxBaseArray::operator=(const wxBaseArray& src) { - DELETEA(m_pItems); +#if 0 + wxDELETEA(m_pItems); +#else + if ( (m_pItems)) { + delete (m_pItems); + (m_pItems) = 0; + } +#endif m_uiSize = // not src.m_uiSize to save memory m_uiCount = src.m_uiCount; @@ -82,7 +90,7 @@ wxBaseArray& wxBaseArray::operator=(const wxBaseArray& src) memcpy(m_pItems, src.m_pItems, m_uiCount*sizeof(long)); } else - m_pItems = NULL; + m_pItems = (long *) NULL; return *this; } @@ -100,7 +108,8 @@ void wxBaseArray::Grow() else { // add 50% but not too much - uint uiIncrement = m_uiSize >> 1; + size_t uiIncrement = m_uiSize < WX_ARRAY_DEFAULT_INITIAL_SIZE + ? WX_ARRAY_DEFAULT_INITIAL_SIZE : m_uiSize >> 1; if ( uiIncrement > ARRAY_MAXSIZE_INCREMENT ) uiIncrement = ARRAY_MAXSIZE_INCREMENT; m_uiSize += uiIncrement; @@ -117,7 +126,7 @@ void wxBaseArray::Grow() // dtor wxBaseArray::~wxBaseArray() { - DELETEA(m_pItems); + wxDELETEA(m_pItems); } // clears the list @@ -126,18 +135,17 @@ void wxBaseArray::Clear() m_uiSize = m_uiCount = 0; - DELETEA(m_pItems); - m_pItems = NULL; + wxDELETEA(m_pItems); } // pre-allocates memory (frees the previous data!) -void wxBaseArray::Alloc(uint uiSize) +void wxBaseArray::Alloc(size_t uiSize) { wxASSERT( uiSize > 0 ); // only if old buffer was not big enough if ( uiSize > m_uiSize ) { - DELETEA(m_pItems); + wxDELETEA(m_pItems); m_pItems = new long[uiSize]; m_uiSize = uiSize; } @@ -150,7 +158,7 @@ int wxBaseArray::Index(long lItem, bool bFromEnd) const { if ( bFromEnd ) { if ( m_uiCount > 0 ) { - uint ui = m_uiCount; + size_t ui = m_uiCount; do { if ( m_pItems[--ui] == lItem ) return ui; @@ -159,7 +167,7 @@ int wxBaseArray::Index(long lItem, bool bFromEnd) const } } else { - for( uint ui = 0; ui < m_uiCount; ui++ ) { + for( size_t ui = 0; ui < m_uiCount; ui++ ) { if( m_pItems[ui] == lItem ) return ui; } @@ -171,7 +179,7 @@ int wxBaseArray::Index(long lItem, bool bFromEnd) const // search for an item in a sorted array (binary search) int wxBaseArray::Index(long lItem, CMPFUNC fnCompare) const { - uint i, + size_t i, lo = 0, hi = m_uiCount; int res; @@ -200,7 +208,7 @@ void wxBaseArray::Add(long lItem) // add item assuming the array is sorted with fnCompare function void wxBaseArray::Add(long lItem, CMPFUNC fnCompare) { - uint i, + size_t i, lo = 0, hi = m_uiCount; int res; @@ -225,9 +233,9 @@ void wxBaseArray::Add(long lItem, CMPFUNC fnCompare) } // add item at the given position -void wxBaseArray::Insert(long lItem, uint uiIndex) +void wxBaseArray::Insert(long lItem, size_t uiIndex) { - wxCHECK_RET( uiIndex <= m_uiCount, "bad index in wxArray::Insert" ); + wxCHECK_RET( uiIndex <= m_uiCount, _("bad index in wxArray::Insert") ); Grow(); @@ -238,9 +246,9 @@ void wxBaseArray::Insert(long lItem, uint uiIndex) } // removes item from array (by index) -void wxBaseArray::Remove(uint uiIndex) +void wxBaseArray::Remove(size_t uiIndex) { - wxCHECK_RET( uiIndex <= m_uiCount, "bad index in wxArray::Remove" ); + wxCHECK_RET( uiIndex <= m_uiCount, _("bad index in wxArray::Remove") ); memmove(&m_pItems[uiIndex], &m_pItems[uiIndex + 1], (m_uiCount - uiIndex - 1)*sizeof(long)); @@ -253,9 +261,9 @@ void wxBaseArray::Remove(long lItem) int iIndex = Index(lItem); wxCHECK_RET( iIndex != NOT_FOUND, - "removing inexistent item in wxArray::Remove" ); + _("removing inexistent item in wxArray::Remove") ); - Remove((uint)iIndex); + Remove((size_t)iIndex); } // sort array elements using passed comparaison function