// Author: Julian Smart
// Modified by: VZ at 16/11/98: WX_DECLARE_LIST() and typesafe lists added
// Created: 29/01/98
-// RCS-ID: $Id$
// Copyright: (c) 1998 Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/defs.h"
#include "wx/object.h"
#include "wx/string.h"
+#include "wx/vector.h"
#if wxUSE_STD_CONTAINERS
#include "wx/beforestd.h"
decl _WX_LIST_HELPER_##liT \
{ \
typedef elT _WX_LIST_ITEM_TYPE_##liT; \
+ typedef std::list<elT> BaseListType; \
public: \
+ static BaseListType EmptyList; \
static void DeleteFunction( _WX_LIST_ITEM_TYPE_##liT X ); \
}; \
\
WX_LIST_VC6_WORKAROUND(elT, liT, decl) \
- decl liT : public std::list<elT> \
+ class liT : public std::list<elT> \
{ \
private: \
typedef std::list<elT> BaseListType; \
- static BaseListType EmptyList; \
\
bool m_destroy; \
\
public: \
- decl compatibility_iterator \
+ class compatibility_iterator \
{ \
private: \
/* Workaround for broken VC6 nested class name resolution */ \
\
public: \
compatibility_iterator() \
- : m_iter(EmptyList.end()), m_list( NULL ) {} \
+ : m_iter(_WX_LIST_HELPER_##liT::EmptyList.end()), m_list( NULL ) {} \
compatibility_iterator( liT* li, iterator i ) \
: m_iter( i ), m_list( li ) {} \
compatibility_iterator( const liT* li, iterator i ) \
} \
int IndexOf() const \
{ \
- return *this ? std::distance( m_list->begin(), m_iter ) \
+ return *this ? (int)std::distance( m_list->begin(), m_iter ) \
: wxNOT_FOUND; \
} \
}; \
// compatibility methods
void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); }
#endif // !wxUSE_STD_CONTAINERS
+
+#ifndef __VISUALC6__
+ template<typename T>
+ wxVector<T> AsVector() const
+ {
+ wxVector<T> vector(size());
+ size_t i = 0;
+
+ for ( const_iterator it = begin(); it != end(); ++it )
+ {
+ vector[i++] = static_cast<T>(*it);
+ }
+
+ return vector;
+ }
+#endif // !__VISUALC6__
+
};
#if !wxUSE_STD_CONTAINERS