wxList classes provide linked list functionality for wxWindows, and for an
application if it wishes. Depending on the form of constructor used, a list
can be keyed on integer or string keys to provide a primitive look-up ability.
-See \helpref{wxHashTable}{wxhashtable}\rtfsp for a faster method of storage
+See \helpref{wxHashMap}{wxhashmap}\rtfsp for a faster method of storage
when random access is required.
While wxList class in the previous versions of wxWindows only could contain
elements of type wxObject and had essentially untyped interface (thus allowing
you to put apples in the list and read back oranges from it), the new wxList
-classes family may contain elements of any type and has much more stricter type
+classes family may contain elements of any type and has much more strict type
checking. Unfortunately, it also requires an additional line to be inserted in
your program for each list class you use (which is the only solution short of
using templates which is not done in wxWindows because of portability issues).
\wxheading{Example}
-{\small%
\begin{verbatim}
// this part might be in a header or source (.cpp) file
class MyListElement
...
- // the only requirment for the rest is to be AFTER the full declaration of
+ // the only requirement for the rest is to be AFTER the full declaration of
// MyListElement (for WX_DECLARE_LIST forward declaration is enough), but
// usually it will be found in the source file and not in the header
...process the current element...
}
\end{verbatim}
-}
For compatibility with previous versions wxList and wxStringList classes are
still defined, but their usage is deprecated and they will disappear in the
-future versions completely.
+future versions completely. The use of the latter is especially discouraged as
+it is not only unsafe but is also much less efficient than
+\helpref{wxArrayString}{wxarraystring} class.
In the documentation of the list classes below, you should replace wxNode with
wxListName::Node and wxObject with the list element type (i.e. the first
\func{int}{IndexOf}{\param{wxObject*}{ obj }}
-Returns the index of {\it obj} within the list or NOT\_FOUND if {\it obj}
+Returns the index of {\it obj} within the list or wxNOT\_FOUND if {\it obj}
is not found in the list.
\membersection{wxList::Insert}\label{wxlistinsert}
Allows the sorting of arbitrary lists by giving
a function to compare two list elements. We use the system {\bf qsort} function
-for the actual sorting process. The sort function receives pointers to wxObject pointers (wxObject **),
-so be careful to dereference appropriately.
+for the actual sorting process.
+
+If you use untyped wxList the sort function receives pointers to wxObject
+pointers (wxObject **), so be careful to dereference appropriately - but,
+of course, a better solution is to use list of appropriate type defined with
+{\tt WX\_DECLARE\_LIST}.
Example: