]> git.saurik.com Git - wxWidgets.git/blobdiff - src/common/list.cpp
small optimization in ProcessEvent() (IsKindOf(wxWindow) only called once)
[wxWidgets.git] / src / common / list.cpp
index 041d609db325ed59a9bdcdaa5931b6291bb5dbb2..f15ace4deff2be38dac5c573d02ea0a8adecf295 100644 (file)
 #endif
 
 // Sun CC compatibility (interference with xview/pkg.h, apparently...)
-#if defined(SUN_CC) && defined(__XVIEW__)
+// But XView is no longer supported.
+/*
+#if defined (SUN_CC) || defined(__SUNCC__) && defined(__XVIEW__)
     #undef va_start
     #undef va_end
     #undef va_arg
     #undef va_list
 #endif
+*/
 
 // =============================================================================
 // implementation
@@ -142,7 +145,7 @@ int wxNodeBase::IndexOf() const
 // wxListBase
 // -----------------------------------------------------------------------------
 
-void wxListBase::Init(wxKeyType keyType = wxKEY_NONE)
+void wxListBase::Init(wxKeyType keyType)
 {
   m_nodeFirst =
   m_nodeLast = (wxNodeBase *) NULL;
@@ -289,7 +292,7 @@ wxNodeBase *wxListBase::Item(size_t n) const
         }
     }
 
-//    wxFAIL_MSG( "invalid index in wxListBase::Item" );
+    wxFAIL_MSG( "invalid index in wxListBase::Item" );
 
     return (wxNodeBase *)NULL;
 }
@@ -394,7 +397,6 @@ bool wxListBase::DeleteObject(void *object)
     return FALSE;
 }
 
-
 void wxListBase::Clear()
 {
     wxNodeBase *current = m_nodeFirst;
@@ -517,6 +519,23 @@ void wxStringListNode::DeleteData()
     delete [] (char *)GetData();
 }
 
+bool wxStringList::Delete(const char *s)
+{
+    wxStringListNode *current;
+
+    for ( current = GetFirst(); current; current = current->GetNext() )
+    {
+        if ( strcmp(current->GetData(), s) == 0 )
+        {
+            DeleteNode(current);
+            return TRUE;
+        }
+    }
+
+    // not found
+    return FALSE;
+}
+
 void wxStringList::DoCopy(const wxStringList& other)
 {
     wxASSERT( GetCount() == 0 );    // this list must be empty before copying!
@@ -601,19 +620,20 @@ void wxStringList::Sort()
 {
     size_t N = GetCount();
     char **array = new char *[N];
+    wxStringListNode *node;
 
     size_t i = 0;
-    for ( wxStringListNode *node = GetFirst(); node; node = node->GetNext() )
+    for ( node = GetFirst(); node; node = node->GetNext() )
     {
         array[i++] = node->GetData();
     }
 
     qsort (array, N, sizeof (char *), wx_comparestrings);
-    Clear();
 
-    for (i = 0; i < N; i++)
-        Append (array[i]);
+    i = 0;
+    for ( node = GetFirst(); node; node = node->GetNext() )
+        node->SetData( array[i++] );
 
-    delete[]array;
+    delete [] array;
 }