X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f172cb8200f08ba1c6735a0d507991c877c0d68f..09b895cb4a954494063eb17d3dc302a654fd99e5:/include/wx/list.h diff --git a/include/wx/list.h b/include/wx/list.h index df7eed1cb7..a09bc6158d 100644 --- a/include/wx/list.h +++ b/include/wx/list.h @@ -22,8 +22,8 @@ like the old class. */ -#ifndef _WX_LISTH__ -#define _WX_LISTH__ +#ifndef _WX_LIST_H_ +#define _WX_LIST_H_ // ----------------------------------------------------------------------------- // headers @@ -80,7 +80,7 @@ typedef int (* LINKAGEMODE wxListIterateFunction)(void *current); #if !defined(__VISUALC__) || __VISUALC__ >= 1300 // == !VC6 template -class WXDLLIMPEXP_BASE wxList_SortFunction +class wxList_SortFunction { public: wxList_SortFunction(wxSortCompareFunction f) : m_f(f) { } @@ -131,7 +131,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) for mingw 3.2.3 compiler bug that prevents a static function of liT class from being exported into dll. A minimal code snippet reproducing the bug: - struct WXDLLEXPORT Foo + struct WXDLLIMPEXP_CORE Foo { static void Bar(); struct SomeInnerClass @@ -342,7 +342,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str) WX_DECLARE_LIST(elementtype, listname) #define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \ - WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLEXPORT) + WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLIMPEXP_CORE) #define WX_DECLARE_EXPORTED_LIST_PTR(elementtype, listname) \ WX_DECLARE_EXPORTED_LIST(elementtype, listname) @@ -469,7 +469,7 @@ protected: virtual void DeleteData() { } public: // for wxList::iterator - void** GetDataPtr() const { return &(((wxNodeBase*)this)->m_data); } + void** GetDataPtr() const { return &(wx_const_cast(wxNodeBase*, this)->m_data); } private: // optional key stuff wxListKeyValue m_key; @@ -732,7 +732,7 @@ private: : wxListBase(count, (void **)elements) { } \ \ name& operator=(const name& list) \ - { Assign(list); return *this; } \ + { if (&list != this) Assign(list); return *this; } \ \ nodetype *GetFirst() const \ { return (nodetype *)wxListBase::GetFirst(); } \ @@ -1097,11 +1097,11 @@ private: WX_DECLARE_LIST_2(elementtype, listname, wx##listname##Node, decl) #define WX_DECLARE_EXPORTED_LIST(elementtype, listname) \ - WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLEXPORT) + WX_DECLARE_LIST_WITH_DECL(elementtype, listname, class WXDLLIMPEXP_CORE) #define WX_DECLARE_EXPORTED_LIST_PTR(elementtype, listname) \ typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \ - WX_DECLARE_LIST_PTR_2(elementtype, listname, wx##listname##Node, class WXDLLEXPORT) + WX_DECLARE_LIST_PTR_2(elementtype, listname, wx##listname##Node, class WXDLLIMPEXP_CORE) #define WX_DECLARE_USER_EXPORTED_LIST(elementtype, listname, usergoo) \ typedef elementtype _WX_LIST_ITEM_TYPE_##listname; \ @@ -1178,7 +1178,7 @@ public: #if !wxUSE_STL wxList& operator=(const wxList& list) - { Assign(list); return *this; } + { if (&list != this) Assign(list); return *this; } // compatibility methods void Sort(wxSortCompareFunction compfunc) { wxListBase::Sort(compfunc); } @@ -1214,7 +1214,14 @@ public: // inefficient!) wxStringList(const wxStringList& other) : wxStringListBase() { DeleteContents(true); DoCopy(other); } wxStringList& operator=(const wxStringList& other) - { Clear(); DoCopy(other); return *this; } + { + if (&other != this) + { + Clear(); + DoCopy(other); + } + return *this; + } // operations // makes a copy of the string