]> git.saurik.com Git - wxWidgets.git/commitdiff
Fix link errors with VC 11 in DLL STL build.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sat, 10 Nov 2012 00:53:42 +0000 (00:53 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sat, 10 Nov 2012 00:53:42 +0000 (00:53 +0000)
Don't declare wxWindowList as DLL-exported. It's unnecessary and appears to
create problems for VC 11.

Closes #14741.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/list.h
include/wx/listimpl.cpp
include/wx/utils.h
src/common/list.cpp

index 2144dea9db8c68c848b166f7f376e249c1960616..cb6bcbae62a60459b2ce2735998e619fb90ffaae 100644 (file)
@@ -148,21 +148,22 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str)
     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 */      \
@@ -174,7 +175,7 @@ inline const void *wxListCastElementToVoidPtr(const wxString& str)
                                                                               \
         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 )               \
index fec23d206c1fc447be6e4482b8fc5c6296e96ca3..d9a4ffadf273d78259f76152648fdc64458a74b4 100644 (file)
@@ -17,7 +17,7 @@
     {                                                                         \
         delete X;                                                             \
     }                                                                         \
-    name::BaseListType name::EmptyList;
+    _WX_LIST_HELPER_##name::BaseListType _WX_LIST_HELPER_##name::EmptyList;
 
 #else // !wxUSE_STD_CONTAINERS
     #undef WX_DEFINE_LIST_2
index 1eed877f4bff3d3b145b8f0f39325a9c319ef3fa..3df820da5737c656e889c433c0a22541fe11c766 100644 (file)
@@ -54,7 +54,7 @@ class WXDLLIMPEXP_FWD_BASE wxArrayInt;
 class WXDLLIMPEXP_FWD_BASE wxProcess;
 class WXDLLIMPEXP_FWD_CORE wxFrame;
 class WXDLLIMPEXP_FWD_CORE wxWindow;
-class WXDLLIMPEXP_FWD_CORE wxWindowList;
+class wxWindowList;
 class WXDLLIMPEXP_FWD_CORE wxEventLoop;
 
 // ----------------------------------------------------------------------------
index 01fb9664bb76020e32abc7f3681d788e16336a41..58c38ea33a856e912446ae9a750cd3ebff93bb50 100644 (file)
@@ -762,6 +762,6 @@ void _WX_LIST_HELPER_wxStringListBase::DeleteFunction( wxString WXUNUSED(X) )
 {
 }
 
-wxStringListBase::BaseListType wxStringListBase::EmptyList;
+_WX_LIST_HELPER_wxStringListBase::BaseListType _WX_LIST_HELPER_wxStringListBase::EmptyList;
 
 #endif // !wxUSE_STD_CONTAINERS