-
-#define WX_DECLARE_LIST_2(T, name, nodetype) \
- typedef int (*wxSortFuncFor_##name)(const T *, const T *); \
+//
+// 3. The macro which is usually used (WX_DECLARE_LIST) is defined in terms of
+// a more generic WX_DECLARE_LIST_2 macro which, in turn, uses the most
+// generic WX_DECLARE_LIST_3 one. The last macro adds a sometimes
+// interesting capability to store polymorphic objects in the list and is
+// particularly useful with, for example, "wxWindow *" list where the
+// wxWindowBase pointers are put into the list, but wxWindow pointers are
+// retrieved from it.
+
+#define WX_DECLARE_LIST_3(T, Tbase, name, nodetype) \
+ typedef int (*wxSortFuncFor_##name)(const T **, const T **); \