// wxNodeBase class is a (base for) node in a double linked list
// -----------------------------------------------------------------------------
// wxNodeBase class is a (base for) node in a double linked list
// -----------------------------------------------------------------------------
wxNodeBase *previous = (wxNodeBase *)NULL,
wxNodeBase *next = (wxNodeBase *)NULL,
void *data = NULL,
wxNodeBase *previous = (wxNodeBase *)NULL,
wxNodeBase *next = (wxNodeBase *)NULL,
void *data = NULL,
// all methods here are "overloaded" in derived classes to provide compile
// time type checking
// create a node for the list of this type
virtual wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next,
void *data,
// all methods here are "overloaded" in derived classes to provide compile
// time type checking
// create a node for the list of this type
virtual wxNodeBase *CreateNode(wxNodeBase *prev, wxNodeBase *next,
void *data,
// from a sequence of objects
wxListBase(void *object, ... /* terminate with NULL */);
// from a sequence of objects
wxListBase(void *object, ... /* terminate with NULL */);
// common part of copy ctor and assignment operator
void DoCopy(const wxListBase& list);
// common part of all Append()s
// common part of copy ctor and assignment operator
void DoCopy(const wxListBase& list);
// common part of all Append()s
// declare a list type named 'name' and containing elements of type 'T *'
// (as a by product of macro expansion you also get wx##name##Node
// declare a list type named 'name' and containing elements of type 'T *'
// (as a by product of macro expansion you also get wx##name##Node
// for the list of given type - this allows us to pass only the list name
// to WX_DEFINE_LIST() even if it needs both the name and the type
//
// for the list of given type - this allows us to pass only the list name
// to WX_DEFINE_LIST() even if it needs both the name and the type
//
-// 2. We redefine all not type-safe wxList functions withtype-safe versions
-// which don't take any place (everything is inline), but bring compile
+// 2. We redefine all non-type-safe wxList functions with type-safe versions
+// which don't take any space (everything is inline), but bring compile
nodetype *previous = (nodetype *)NULL, \
nodetype *next = (nodetype *)NULL, \
T *data = (T *)NULL, \
nodetype *previous = (nodetype *)NULL, \
nodetype *next = (nodetype *)NULL, \
T *data = (T *)NULL, \
: wxNodeBase(list, previous, next, data, key) { } \
\
nodetype *GetNext() const \
: wxNodeBase(list, previous, next, data, key) { } \
\
nodetype *GetNext() const \
name(wxKeyType keyType = wxKEY_NONE) : wxListBase(keyType) \
{ } \
name(size_t count, T *elements[]) \
name(wxKeyType keyType = wxKEY_NONE) : wxListBase(keyType) \
{ } \
name(size_t count, T *elements[]) \
{ \
return new nodetype(this, \
(nodetype *)prev, (nodetype *)next, \
{ \
return new nodetype(this, \
(nodetype *)prev, (nodetype *)next, \