]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/arrimpl.cpp
Applied patch for wxComboBox and wxListBox to
[wxWidgets.git] / include / wx / arrimpl.cpp
index 3e7b1a3b92d9605da3da3254e7b149a785b0fa7f..cf1e290613de8a451181146552657c2a793fae71 100644 (file)
@@ -2,7 +2,7 @@
 // Name:        listimpl.cpp
 // Purpose:     helper file for implementation of dynamic lists
 // Author:      Vadim Zeitlin
-// Modified by: 
+// Modified by:
 // Created:     16.10.97
 // RCS-ID:      $Id$
 // Copyright:   (c) 1997 Vadim Zeitlin <zeitlin@dptmaths.ens-cachan.fr>
  *          4) WX_DEFINE_OBJARRAY                                            *
  *****************************************************************************/
 
+// needed to resolve the conflict between global T and macro parameter T
+
+// VC++ can't cope with string concatenation in Unicode mode
+#if defined(wxUSE_UNICODE) && wxUSE_UNICODE
+#define _WX_ERROR_REMOVE2(x)     wxT("bad index in ::RemoveAt()")
+#else
+#define _WX_ERROR_REMOVE2(x)     wxT("bad index in " #x "::RemoveAt()")
+#endif
+
 // macro implements remaining (not inline) methods of template list
 // (it's private to this file)
-#define _DEFINE_OBJARRAY(T, name)                                                 \
+#undef  _DEFINE_OBJARRAY
+#define _DEFINE_OBJARRAY(T, name)                                             \
 name::~name()                                                                 \
 {                                                                             \
   Empty();                                                                    \
@@ -30,7 +40,7 @@ name::~name()                                                                 \
                                                                               \
 void name::DoCopy(const name& src)                                            \
 {                                                                             \
-  for ( uint ui = 0; ui < src.Count(); ui++ )                                 \
+  for ( size_t ui = 0; ui < src.Count(); ui++ )                               \
     Add(src[ui]);                                                             \
 }                                                                             \
                                                                               \
@@ -47,21 +57,19 @@ name::name(const name& src)                                                   \
   DoCopy(src);                                                                \
 }                                                                             \
                                                                               \
-void name::Empty()                                                            \
+void name::DoEmpty()                                                          \
 {                                                                             \
-  for ( uint ui = 0; ui < Count(); ui++ )                                     \
-    delete (T*)BaseArray::Item(ui);                                           \
-                                                                              \
-  BaseArray::Clear();                                                         \
+  for ( size_t ui = 0; ui < Count(); ui++ )                                   \
+    delete (T*)wxBaseArray::Item(ui);                                         \
 }                                                                             \
                                                                               \
-void name::Remove(uint uiIndex)                                               \
+void name::RemoveAt(size_t uiIndex)                                           \
 {                                                                             \
-  wxCHECK( uiIndex < Count() );                                               \
+  wxCHECK_RET( uiIndex < Count(), _WX_ERROR_REMOVE2(name) );                  \
                                                                               \
-  delete (T*)BaseArray::Item(uiIndex);                                        \
+  delete (T*)wxBaseArray::Item(uiIndex);                                      \
                                                                               \
-  BaseArray::Remove(uiIndex);                                                 \
+  wxBaseArray::RemoveAt(uiIndex);                                             \
 }                                                                             \
                                                                               \
 void name::Add(const T& item)                                                 \
@@ -71,20 +79,20 @@ void name::Add(const T& item)                                                 \
     Add(pItem);                                                               \
 }                                                                             \
                                                                               \
-void name::Insert(const T& item, uint uiIndex)                                \
+void name::Insert(const T& item, size_t uiIndex)                              \
 {                                                                             \
   T* pItem = new T(item);                                                     \
   if ( pItem != NULL )                                                        \
     Insert(pItem, uiIndex);                                                   \
 }                                                                             \
                                                                               \
-int name::Index(const T& Item, Bool bFromEnd) const                           \
+int name::Index(const T& Item, bool bFromEnd) const                           \
 {                                                                             \
   if ( bFromEnd ) {                                                           \
     if ( Count() > 0 ) {                                                      \
-      uint ui = Count() - 1;                                                  \
+      size_t ui = Count() - 1;                                                \
       do {                                                                    \
-        if ( (T*)BaseArray::Item(ui) == &Item )                               \
+        if ( (T*)wxBaseArray::Item(ui) == &Item )                             \
           return ui;                                                          \
         ui--;                                                                 \
       }                                                                       \
@@ -92,20 +100,16 @@ int name::Index(const T& Item, Bool bFromEnd) const                           \
     }                                                                         \
   }                                                                           \
   else {                                                                      \
-    for( uint ui = 0; ui < Count(); ui++ ) {                                  \
-      if( (T*)BaseArray::Item(ui) == &Item )                                  \
+    for( size_t ui = 0; ui < Count(); ui++ ) {                                \
+      if( (T*)wxBaseArray::Item(ui) == &Item )                                \
         return ui;                                                            \
     }                                                                         \
   }                                                                           \
                                                                               \
-  return NOT_FOUND;                                                           \
-}                                                                             
+  return wxNOT_FOUND;                                                         \
+}
 
 // redefine the macro so that now it will generate the class implementation
 // old value would provoke a compile-time error if this file is not included
 #undef  WX_DEFINE_OBJARRAY
 #define WX_DEFINE_OBJARRAY(name) _DEFINE_OBJARRAY(_L##name, name)
-
-// don't pollute preprocessor's name space
-#undef  _DEFINE_OBJARRAY
-