From 664e13143ee51a6b1aa1c30d1401ac04b11bdcca Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin <vadim@wxwidgets.org> Date: Tue, 3 Feb 2009 12:01:46 +0000 Subject: [PATCH] renamed wx/ptr_shrd.h to wx/sharedptr.h; split wx/ptr_scpd.h in wx/scopedptr.h and wx/scopedarray.h; extracted common parts into new wx/checkeddelete.h git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 8 ++ build/bakefiles/files.bkl | 4 + build/msw/wx_base.dsp | 16 +++ build/msw/wx_vc7_base.vcproj | 12 ++ build/msw/wx_vc8_base.vcproj | 16 +++ build/msw/wx_vc9_base.vcproj | 16 +++ docs/changes.txt | 4 +- include/wx/checkeddelete.h | 54 +++++++ include/wx/dataview.h | 2 +- include/wx/scopedarray.h | 120 ++++++++++++++++ include/wx/{ptr_scpd.h => scopedptr.h} | 139 +----------------- include/wx/{ptr_shrd.h => sharedptr.h} | 72 +++++----- interface/wx/scopedarray.h | 172 +++++++++++++++++++++++ interface/wx/{ptr_scpd.h => scopedptr.h} | 171 +--------------------- interface/wx/{ptr_shrd.h => sharedptr.h} | 11 +- src/common/appbase.cpp | 2 +- src/common/docview.cpp | 3 +- src/common/event.cpp | 2 +- src/common/fs_filter.cpp | 2 +- src/common/gifdecod.cpp | 2 +- src/common/init.cpp | 2 +- src/common/intl.cpp | 2 +- src/common/rendcmn.cpp | 2 +- src/common/tarstrm.cpp | 2 +- src/common/zipstrm.cpp | 2 +- src/gtk/clipbrd.cpp | 5 +- src/gtk/dialog.cpp | 2 +- src/motif/clipbrd.cpp | 7 +- src/msw/dialog.cpp | 2 +- src/msw/evtloop.cpp | 1 - src/msw/menu.cpp | 2 +- src/msw/toolbar.cpp | 2 +- src/os2/dialog.cpp | 2 +- src/os2/evtloop.cpp | 2 +- src/palmos/dialog.cpp | 2 +- src/palmos/evtloop.cpp | 1 - src/xml/xml.cpp | 2 +- wxGTK.spec | 6 +- wxMotif.spec | 6 +- wxX11.spec | 6 +- 40 files changed, 504 insertions(+), 382 deletions(-) create mode 100644 include/wx/checkeddelete.h create mode 100644 include/wx/scopedarray.h rename include/wx/{ptr_scpd.h => scopedptr.h} (61%) rename include/wx/{ptr_shrd.h => sharedptr.h} (77%) create mode 100644 interface/wx/scopedarray.h rename interface/wx/{ptr_scpd.h => scopedptr.h} (63%) rename interface/wx/{ptr_shrd.h => sharedptr.h} (87%) diff --git a/Makefile.in b/Makefile.in index c6ee928f4e..ad2b1ce288 100644 --- a/Makefile.in +++ b/Makefile.in @@ -318,6 +318,7 @@ ALL_BASE_HEADERS = \ wx/buffer.h \ wx/build.h \ wx/chartype.h \ + wx/checkeddelete.h \ wx/chkconf.h \ wx/clntdata.h \ wx/cmdargs.h \ @@ -391,7 +392,10 @@ ALL_BASE_HEADERS = \ wx/ptr_shrd.h \ wx/recguard.h \ wx/regex.h \ + wx/scopedarray.h \ + wx/scopedptr.h \ wx/scopeguard.h \ + wx/sharedptr.h \ wx/snglinst.h \ wx/sstream.h \ wx/stack.h \ @@ -471,6 +475,7 @@ ALL_PORTS_BASE_HEADERS = \ wx/buffer.h \ wx/build.h \ wx/chartype.h \ + wx/checkeddelete.h \ wx/chkconf.h \ wx/clntdata.h \ wx/cmdargs.h \ @@ -544,7 +549,10 @@ ALL_PORTS_BASE_HEADERS = \ wx/ptr_shrd.h \ wx/recguard.h \ wx/regex.h \ + wx/scopedarray.h \ + wx/scopedptr.h \ wx/scopeguard.h \ + wx/sharedptr.h \ wx/snglinst.h \ wx/sstream.h \ wx/stack.h \ diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index a68221526b..450ca53e93 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -399,6 +399,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/buffer.h wx/build.h wx/chartype.h + wx/checkeddelete.h wx/chkconf.h wx/clntdata.h wx/cmdargs.h @@ -472,7 +473,10 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! wx/ptr_shrd.h wx/recguard.h wx/regex.h + wx/scopedarray.h + wx/scopedptr.h wx/scopeguard.h + wx/sharedptr.h wx/snglinst.h wx/sstream.h wx/stack.h diff --git a/build/msw/wx_base.dsp b/build/msw/wx_base.dsp index c80d3e2168..bc94929fdb 100644 --- a/build/msw/wx_base.dsp +++ b/build/msw/wx_base.dsp @@ -1071,6 +1071,10 @@ SOURCE=..\..\include\wx\chartype.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\checkeddelete.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\chkconf.h # End Source File # Begin Source File @@ -1371,10 +1375,22 @@ SOURCE=..\..\include\wx\regex.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\scopedarray.h +# End Source File +# Begin Source File + +SOURCE=..\..\include\wx\scopedptr.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\scopeguard.h # End Source File # Begin Source File +SOURCE=..\..\include\wx\sharedptr.h +# End Source File +# Begin Source File + SOURCE=..\..\include\wx\snglinst.h # End Source File # Begin Source File diff --git a/build/msw/wx_vc7_base.vcproj b/build/msw/wx_vc7_base.vcproj index 3c4d781e0f..f8994ddb02 100644 --- a/build/msw/wx_vc7_base.vcproj +++ b/build/msw/wx_vc7_base.vcproj @@ -1221,6 +1221,9 @@ <File RelativePath="..\..\include\wx\chartype.h"> </File> + <File + RelativePath="..\..\include\wx\checkeddelete.h"> + </File> <File RelativePath="..\..\include\wx\chkconf.h"> </File> @@ -1446,9 +1449,18 @@ <File RelativePath="..\..\include\wx\regex.h"> </File> + <File + RelativePath="..\..\include\wx\scopedarray.h"> + </File> + <File + RelativePath="..\..\include\wx\scopedptr.h"> + </File> <File RelativePath="..\..\include\wx\scopeguard.h"> </File> + <File + RelativePath="..\..\include\wx\sharedptr.h"> + </File> <File RelativePath="..\..\include\wx\snglinst.h"> </File> diff --git a/build/msw/wx_vc8_base.vcproj b/build/msw/wx_vc8_base.vcproj index a9ae6c9abc..f2a8489fd4 100644 --- a/build/msw/wx_vc8_base.vcproj +++ b/build/msw/wx_vc8_base.vcproj @@ -1651,6 +1651,10 @@ RelativePath="..\..\include\wx\chartype.h" > </File> + <File + RelativePath="..\..\include\wx\checkeddelete.h" + > + </File> <File RelativePath="..\..\include\wx\chkconf.h" > @@ -1951,10 +1955,22 @@ RelativePath="..\..\include\wx\regex.h" > </File> + <File + RelativePath="..\..\include\wx\scopedarray.h" + > + </File> + <File + RelativePath="..\..\include\wx\scopedptr.h" + > + </File> <File RelativePath="..\..\include\wx\scopeguard.h" > </File> + <File + RelativePath="..\..\include\wx\sharedptr.h" + > + </File> <File RelativePath="..\..\include\wx\snglinst.h" > diff --git a/build/msw/wx_vc9_base.vcproj b/build/msw/wx_vc9_base.vcproj index c8a2fe2b8b..5e214ecae5 100644 --- a/build/msw/wx_vc9_base.vcproj +++ b/build/msw/wx_vc9_base.vcproj @@ -1647,6 +1647,10 @@ RelativePath="..\..\include\wx\chartype.h" > </File> + <File + RelativePath="..\..\include\wx\checkeddelete.h" + > + </File> <File RelativePath="..\..\include\wx\chkconf.h" > @@ -1947,10 +1951,22 @@ RelativePath="..\..\include\wx\regex.h" > </File> + <File + RelativePath="..\..\include\wx\scopedarray.h" + > + </File> + <File + RelativePath="..\..\include\wx\scopedptr.h" + > + </File> <File RelativePath="..\..\include\wx\scopeguard.h" > </File> + <File + RelativePath="..\..\include\wx\sharedptr.h" + > + </File> <File RelativePath="..\..\include\wx\snglinst.h" > diff --git a/docs/changes.txt b/docs/changes.txt index 62aa60f58c..24dcd34498 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -320,7 +320,9 @@ All: Linnakangas). - wxVariant::Unshare allows exclusive allocation of data that must be shared, if the wxVariantData::Clone function is implemented. -- Added wxWeakRef<T>, wxScopedPtr<T>, wxScopedArray<T>, wxSharedPtr<T> templates. +- Added wxWeakRef<T>, wxScopedPtr<T>, wxScopedArray<T>, wxSharedPtr<T> templates + and renamed old wx/ptr_{scpd,shrd}.h headers to wx/scoped{ptr,array}.h and + wx/sharedptr.h (but old headers are still provided for compatibility). - Added wxVector<T> class templates - Added wxON_BLOCK_EXIT_SET() and wxON_BLOCK_EXIT_NULL() to wx/scopeguard.h. - Added wxEvtHandler::QueueEvent() replacing AddPendingEvent() and diff --git a/include/wx/checkeddelete.h b/include/wx/checkeddelete.h new file mode 100644 index 0000000000..a9e14c3a2e --- /dev/null +++ b/include/wx/checkeddelete.h @@ -0,0 +1,54 @@ +/////////////////////////////////////////////////////////////////////////////// +// Name: wx/checkeddelete.h +// Purpose: wxCHECKED_DELETE() macro +// Author: Vadim Zeitlin +// Created: 2009-02-03 +// RCS-ID: $Id$ +// Copyright: (c) 2002-2009 wxWidgets dev team +// Licence: wxWindows licence +/////////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_CHECKEDDELETE_H_ +#define _WX_CHECKEDDELETE_H_ + +// TODO: provide wxCheckedDelete[Array]() template functions too + +// ---------------------------------------------------------------------------- +// wxCHECKED_DELETE and wxCHECKED_DELETE_ARRAY macros +// ---------------------------------------------------------------------------- + +/* + checked deleters are used to make sure that the type being deleted is really + a complete type.: otherwise sizeof() would result in a compile-time error + + do { ... } while ( 0 ) construct is used to have an anonymous scope + (otherwise we could have name clashes between different "complete"s) but + still force a semicolon after the macro +*/ + +#ifdef __WATCOMC__ + #define wxFOR_ONCE(name) for(int name=0; name<1; name++) + #define wxPRE_NO_WARNING_SCOPE(name) wxFOR_ONCE(wxMAKE_UNIQUE_NAME(name)) + #define wxPOST_NO_WARNING_SCOPE(name) +#else + #define wxPRE_NO_WARNING_SCOPE(name) do + #define wxPOST_NO_WARNING_SCOPE(name) while ( wxFalse ) +#endif + +#define wxCHECKED_DELETE(ptr) \ + wxPRE_NO_WARNING_SCOPE(scope_var1) \ + { \ + typedef char complete[sizeof(*ptr)]; \ + delete ptr; \ + } wxPOST_NO_WARNING_SCOPE(scope_var1) + +#define wxCHECKED_DELETE_ARRAY(ptr) \ + wxPRE_NO_WARNING_SCOPE(scope_var2) \ + { \ + typedef char complete[sizeof(*ptr)]; \ + delete [] ptr; \ + } wxPOST_NO_WARNING_SCOPE(scope_var2) + + +#endif // _WX_CHECKEDDELETE_H_ + diff --git a/include/wx/dataview.h b/include/wx/dataview.h index 2ced284014..901e3ca068 100644 --- a/include/wx/dataview.h +++ b/include/wx/dataview.h @@ -791,7 +791,6 @@ public: // For drag operations void SetDataObject( wxDataObject *obj ) { m_dataObject = obj; } wxDataObject *GetDataObject() const { return m_dataObject; } -#endif // wxUSE_DRAG_AND_DROP // For drop operations void SetDataFormat( const wxDataFormat &format ) { m_dataFormat = format; } @@ -800,6 +799,7 @@ public: size_t GetDataSize() const { return m_dataSize; } void SetDataBuffer( void* buf ) { m_dataBuffer = buf;} void *GetDataBuffer() const { return m_dataBuffer; } +#endif // wxUSE_DRAG_AND_DROP virtual wxEvent *Clone() const { return new wxDataViewEvent(*this); } diff --git a/include/wx/scopedarray.h b/include/wx/scopedarray.h new file mode 100644 index 0000000000..4175fcee62 --- /dev/null +++ b/include/wx/scopedarray.h @@ -0,0 +1,120 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/scopedarray.h +// Purpose: scoped smart pointer class +// Author: Vadim Zeitlin +// Created: 2009-02-03 +// RCS-ID: $Id$ +// Copyright: (c) Jesse Lovelace and original Boost authors (see below) +// (c) 2009 Vadim Zeitlin +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#ifndef _WX_SCOPED_ARRAY_H_ +#define _WX_SCOPED_ARRAY_H_ + +#include "wx/defs.h" +#include "wx/checkeddelete.h" + +// ---------------------------------------------------------------------------- +// wxScopedArray: A scoped array +// ---------------------------------------------------------------------------- + +template <class T> +class wxScopedArray +{ +public: + typedef T element_type; + + wxEXPLICIT wxScopedArray(T * array = NULL) : m_array(array) { } + + ~wxScopedArray() { delete [] m_array; } + + // test for pointer validity: defining conversion to unspecified_bool_type + // and not more obvious bool to avoid implicit conversions to integer types + typedef T *(wxScopedArray<T>::*unspecified_bool_type)() const; + operator unspecified_bool_type() const + { + return m_array ? &wxScopedArray<T>::get : NULL; + } + + void reset(T *array = NULL) + { + if ( array != m_array ) + { + delete m_array; + m_array = array; + } + } + + T& operator[](size_t n) const { return m_array[n]; } + + T *get() const { return m_array; } + + void swap(wxScopedArray &other) + { + T * const tmp = other.m_array; + other.m_array = m_array; + m_array = tmp; + } + +private: + T *m_array; + + DECLARE_NO_COPY_TEMPLATE_CLASS(wxScopedArray, T) +}; + +// ---------------------------------------------------------------------------- +// old macro based implementation +// ---------------------------------------------------------------------------- + +// the same but for arrays instead of simple pointers +#define wxDECLARE_SCOPED_ARRAY(T, name)\ +class name \ +{ \ +private: \ + T * m_ptr; \ + name(name const &); \ + name & operator=(name const &); \ + \ +public: \ + wxEXPLICIT name(T * p = NULL) : m_ptr(p) \ + {} \ + \ + ~name(); \ + void reset(T * p = NULL); \ + \ + T & operator[](long int i) const\ + { \ + wxASSERT(m_ptr != NULL); \ + wxASSERT(i >= 0); \ + return m_ptr[i]; \ + } \ + \ + T * get() const \ + { \ + return m_ptr; \ + } \ + \ + void swap(name & ot) \ + { \ + T * tmp = ot.m_ptr; \ + ot.m_ptr = m_ptr; \ + m_ptr = tmp; \ + } \ +}; + +#define wxDEFINE_SCOPED_ARRAY(T, name) \ +name::~name() \ +{ \ + wxCHECKED_DELETE_ARRAY(m_ptr); \ +} \ +void name::reset(T * p){ \ + if (m_ptr != p) \ + { \ + wxCHECKED_DELETE_ARRAY(m_ptr); \ + m_ptr = p; \ + } \ +} + +#endif // _WX_SCOPED_ARRAY_H_ + diff --git a/include/wx/ptr_scpd.h b/include/wx/scopedptr.h similarity index 61% rename from include/wx/ptr_scpd.h rename to include/wx/scopedptr.h index ffbb01105d..a27b8dbd6b 100644 --- a/include/wx/ptr_scpd.h +++ b/include/wx/scopedptr.h @@ -1,8 +1,7 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/ptr_scpd.h +// Name: wx/scopedptr.h // Purpose: scoped smart pointer class // Author: Jesse Lovelace <jllovela@eos.ncsu.edu> -// Modified by: Vadim Zeitlin to add template wxScopedArray // Created: 06/01/02 // RCS-ID: $Id$ // Copyright: (c) Jesse Lovelace and original Boost authors (see below) @@ -26,10 +25,11 @@ // See http://www.boost.org/libs/smart_ptr/scoped_ptr.htm for documentation. // -#ifndef __WX_SCOPED_POINTER__ -#define __WX_SCOPED_POINTER__ +#ifndef _WX_SCOPED_PTR_H_ +#define _WX_SCOPED_PTR_H_ #include "wx/defs.h" +#include "wx/checkeddelete.h" // ---------------------------------------------------------------------------- // wxScopedPtr: A scoped pointer @@ -99,90 +99,10 @@ private: DECLARE_NO_COPY_TEMPLATE_CLASS(wxScopedPtr, T) }; -// ---------------------------------------------------------------------------- -// wxScopedArray: A scoped array -// ---------------------------------------------------------------------------- - -template <class T> -class wxScopedArray -{ -public: - typedef T element_type; - - wxEXPLICIT wxScopedArray(T * array = NULL) : m_array(array) { } - - ~wxScopedArray() { delete [] m_array; } - - // test for pointer validity: defining conversion to unspecified_bool_type - // and not more obvious bool to avoid implicit conversions to integer types - typedef T *(wxScopedArray<T>::*unspecified_bool_type)() const; - operator unspecified_bool_type() const - { - return m_array ? &wxScopedArray<T>::get : NULL; - } - - void reset(T *array = NULL) - { - if ( array != m_array ) - { - delete m_array; - m_array = array; - } - } - - T& operator[](size_t n) const { return m_array[n]; } - - T *get() const { return m_array; } - - void swap(wxScopedArray &other) - { - T * const tmp = other.m_array; - other.m_array = m_array; - m_array = tmp; - } - -private: - T *m_array; - - DECLARE_NO_COPY_TEMPLATE_CLASS(wxScopedArray, T) -}; - // ---------------------------------------------------------------------------- // old macro based implementation // ---------------------------------------------------------------------------- -/* - checked deleters are used to make sure that the type being deleted is really - a complete type.: otherwise sizeof() would result in a compile-time error - - do { ... } while ( 0 ) construct is used to have an anonymous scope - (otherwise we could have name clashes between different "complete"s) but - still force a semicolon after the macro -*/ - -#ifdef __WATCOMC__ - #define wxFOR_ONCE(name) for(int name=0; name<1; name++) - #define wxPRE_NO_WARNING_SCOPE(name) wxFOR_ONCE(wxMAKE_UNIQUE_NAME(name)) - #define wxPOST_NO_WARNING_SCOPE(name) -#else - #define wxPRE_NO_WARNING_SCOPE(name) do - #define wxPOST_NO_WARNING_SCOPE(name) while ( wxFalse ) -#endif - -#define wxCHECKED_DELETE(ptr) \ - wxPRE_NO_WARNING_SCOPE(scope_var1) \ - { \ - typedef char complete[sizeof(*ptr)]; \ - delete ptr; \ - } wxPOST_NO_WARNING_SCOPE(scope_var1) - -#define wxCHECKED_DELETE_ARRAY(ptr) \ - wxPRE_NO_WARNING_SCOPE(scope_var2) \ - { \ - typedef char complete[sizeof(*ptr)]; \ - delete [] ptr; \ - } wxPOST_NO_WARNING_SCOPE(scope_var2) - /* The type being used *must* be complete at the time that wxDEFINE_SCOPED_* is called or a compiler error will result. This is because the class checks for the completeness of the type @@ -257,55 +177,6 @@ name::~name() \ wxDECLARE_SCOPED_PTR(T, T ## Ptr) \ wxDEFINE_SCOPED_PTR(T, T ## Ptr) -// the same but for arrays instead of simple pointers -#define wxDECLARE_SCOPED_ARRAY(T, name)\ -class name \ -{ \ -private: \ - T * m_ptr; \ - name(name const &); \ - name & operator=(name const &); \ - \ -public: \ - wxEXPLICIT name(T * p = NULL) : m_ptr(p) \ - {} \ - \ - ~name(); \ - void reset(T * p = NULL); \ - \ - T & operator[](long int i) const\ - { \ - wxASSERT(m_ptr != NULL); \ - wxASSERT(i >= 0); \ - return m_ptr[i]; \ - } \ - \ - T * get() const \ - { \ - return m_ptr; \ - } \ - \ - void swap(name & ot) \ - { \ - T * tmp = ot.m_ptr; \ - ot.m_ptr = m_ptr; \ - m_ptr = tmp; \ - } \ -}; - -#define wxDEFINE_SCOPED_ARRAY(T, name) \ -name::~name() \ -{ \ - wxCHECKED_DELETE_ARRAY(m_ptr); \ -} \ -void name::reset(T * p){ \ - if (m_ptr != p) \ - { \ - wxCHECKED_DELETE_ARRAY(m_ptr); \ - m_ptr = p; \ - } \ -} - // ---------------------------------------------------------------------------- // "Tied" scoped pointer: same as normal one but also sets the value of // some other variable to the pointer value @@ -333,5 +204,5 @@ void name::reset(T * p){ \ T *m_pOld; \ }; -#endif // __WX_SCOPED_POINTER__ +#endif // _WX_SCOPED_PTR_H_ diff --git a/include/wx/ptr_shrd.h b/include/wx/sharedptr.h similarity index 77% rename from include/wx/ptr_shrd.h rename to include/wx/sharedptr.h index 71492d9754..5bfd215136 100644 --- a/include/wx/ptr_shrd.h +++ b/include/wx/sharedptr.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: wx/ptr_shrd.h +// Name: wx/sharedptr.h // Purpose: Shared pointer based on the counted_ptr<> template, which // is in the public domain // Author: Robert Roebling, Yonat Sharon @@ -8,8 +8,8 @@ // Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifndef _WX_SHARED_PTRH__ -#define _WX_SHARED_PTRH__ +#ifndef _WX_SHAREDPTR_H_ +#define _WX_SHAREDPTR_H_ #include "wx/defs.h" #include "wx/atomic.h" @@ -18,25 +18,25 @@ // wxSharedPtr: A smart pointer with non-intrusive reference counting. // ---------------------------------------------------------------------------- -template <class T> +template <class T> class wxSharedPtr { public: typedef T element_type; wxEXPLICIT wxSharedPtr( T* ptr = NULL ) - : m_ref(NULL) - { - if (ptr) - m_ref = new reftype(ptr); + : m_ref(NULL) + { + if (ptr) + m_ref = new reftype(ptr); } - + ~wxSharedPtr() { Release(); } wxSharedPtr(const wxSharedPtr& tocopy) { Acquire(tocopy.m_ref); } - + wxSharedPtr& operator=( const wxSharedPtr& tocopy ) { - if (this != &tocopy) + if (this != &tocopy) { Release(); Acquire(tocopy.m_ref); @@ -46,11 +46,11 @@ public: wxSharedPtr& operator=( T* ptr ) { - if (get() != ptr) + if (get() != ptr) { Release(); - if (ptr) - m_ref = new reftype(ptr); + if (ptr) + m_ref = new reftype(ptr); } return *this; } @@ -67,56 +67,56 @@ public: } T& operator*() const - { - wxASSERT(m_ref != NULL); - wxASSERT(m_ref->m_ptr != NULL); + { + wxASSERT(m_ref != NULL); + wxASSERT(m_ref->m_ptr != NULL); return *(m_ref->m_ptr); } - + T* operator->() const - { - wxASSERT(m_ref != NULL); - wxASSERT(m_ref->m_ptr != NULL); + { + wxASSERT(m_ref != NULL); + wxASSERT(m_ref->m_ptr != NULL); return m_ref->m_ptr; } - - T* get() const - { - return m_ref ? m_ref->m_ptr : NULL; + + T* get() const + { + return m_ref ? m_ref->m_ptr : NULL; } - + void reset( T* ptr = NULL ) { Release(); - if (ptr) - m_ref = new reftype(ptr); + if (ptr) + m_ref = new reftype(ptr); } - + bool unique() const { return (m_ref ? m_ref->m_count == 1 : true); } long use_count() const { return (m_ref ? (long)m_ref->m_count : 0); } private: - struct reftype + struct reftype { reftype( T* ptr = NULL, unsigned count = 1 ) : m_ptr(ptr), m_count(count) {} T* m_ptr; wxAtomicInt m_count; }* m_ref; - void Acquire(reftype* ref) + void Acquire(reftype* ref) { m_ref = ref; - if (ref) + if (ref) wxAtomicInc( ref->m_count ); } void Release() { - if (m_ref) + if (m_ref) { wxAtomicDec( m_ref->m_count ); - if (m_ref->m_count == 0) + if (m_ref->m_count == 0) { delete m_ref->m_ptr; delete m_ref; @@ -138,6 +138,4 @@ bool operator != (wxSharedPtr<T> const &a, wxSharedPtr<U> const &b ) return a.get() != b.get(); } - - -#endif // _WX_SHARED_PTRH__ +#endif // _WX_SHAREDPTR_H_ diff --git a/interface/wx/scopedarray.h b/interface/wx/scopedarray.h new file mode 100644 index 0000000000..1582f3c05d --- /dev/null +++ b/interface/wx/scopedarray.h @@ -0,0 +1,172 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: wx/scopedarray.h +// Purpose: interface of wxScopedArray +// Author: wxWidgets team +// RCS-ID: $Id$ +// Licence: wxWindows license +///////////////////////////////////////////////////////////////////////////// + +/** + @class wxScopedArray + + This is a simple scoped smart pointer array implementation that is similar to + the Boost smart pointers (see http://www.boost.org/) but rewritten to + use macros instead. + + @b Example: + + Below is an example of using a wxWidgets scoped smart pointer and pointer array. + + @code + class MyClass { ... }; + + // declare a smart pointer to a MyClass called wxMyClassPtr + wxDECLARE_SCOPED_PTR(MyClass, wxMyClassPtr) + // declare a smart pointer to an array of chars + wxDECLARE_SCOPED_ARRAY(char, wxCharArray) + + ... + + // define the first pointer class, must be complete + wxDEFINE_SCOPED_PTR(MyClass, wxMyClassPtr) + // define the second pointer class + wxDEFINE_SCOPED_ARRAY(char, wxCharArray) + + // create an object with a new pointer to MyClass + wxMyClassPtr theObj(new MyClass()); + // reset the pointer (deletes the previous one) + theObj.reset(new MyClass()); + + // access the pointer + theObj->MyFunc(); + + // create an object with a new array of chars + wxCharArray theCharObj(new char[100]); + + // access the array + theCharObj[0] = "!"; + @endcode + + <b>Declaring new smart pointer types:</b> + @code + wxDECLAR_SCOPED_ARRAY( TYPE, // type of the values + CLASSNAME ); // name of the class + @endcode + + A smart pointer holds a pointer to an object (which must be complete when + wxDEFINE_SCOPED_ARRAY() is called). + + The memory used by the object is deleted when the smart pointer goes out of + scope. The first argument of the macro is the pointer type, the second is the + name of the new smart pointer class being created. Below we will use wxScopedArray + to represent the scoped pointer array class, but the user may create the class with + any legal name. + + @library{wxbase} + @category{smartpointers} + + @see wxScopedPtr +*/ +class wxScopedArray +{ +public: + /** + Creates the smart pointer with the given pointer or none if @NULL. On + compilers that support it, this uses the explicit keyword. + */ + wxScopedArray(type* T = NULL); + + /** + This operator gets the pointer stored in the smart pointer or returns @NULL if + there is none. + */ + const T* get(); + + /** + This operator acts like the standard [] indexing operator for C++ arrays. The + function does not do bounds checking. + */ + const T& operator [](long int i); + + /** + Deletes the currently held pointer and sets it to 'p' or to @NULL if no + arguments are specified. This function does check to make sure that the + pointer you are assigning is not the same pointer that is already stored. + */ + reset(T* p = NULL); + + /** + Swap the pointer inside the smart pointer with @a ot. The pointer being swapped + must be of the same type (hence the same class name). + */ + swap(wxScopedArray& ot); +}; + +/** + A scoped array template class. + + This class is similar to boost scoped_array class: + http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/scoped_array.htm + + Notice that objects of this class intentionally cannot be copied. + + @library{wxbase} + @category{smartpointers} + */ +template <class T> +class wxScopedArray +{ +public: + /// The type of the array elements. + typedef T element_type; + + /** + Constructor takes ownership of the given array. + + If @a array is @NULL, reset() must presumably be called later. + + @param array + An array allocated using @c new[] or @NULL. + */ + explicit wxScopedArray(T * array = NULL); + + /// Destructor destroy the array. + ~wxScopedArray(); + + /** + Conversion to a boolean expression (in a variant which is not + convertible to anything but a boolean expression). + + If this class contains a valid array it will return @true, if it contains + a @NULL pointer it will return @false. + */ + operator unspecified_bool_type() const; + + /** + Change the array pointer stored. + + The previously stored array is deleted. + + @param array + An array allocated using @c new[] or @NULL. + */ + void reset(T *array = NULL); + + /** + Return the n-th element of the array. + + Must not be called if the array has no valid pointer. + */ + T& operator[](size_t n) const; + + /** + Return the array pointer. + + The returned pointer may be @NULL. It must not be deleted by the + caller, call @c reset(NULL) instead. + */ + T *get() const; + + /// Swaps the contents of this array with another one. + void swap(wxScopedArray &other); +}; diff --git a/interface/wx/ptr_scpd.h b/interface/wx/scopedptr.h similarity index 63% rename from interface/wx/ptr_scpd.h rename to interface/wx/scopedptr.h index 7e0caa3a69..53d1eb4181 100644 --- a/interface/wx/ptr_scpd.h +++ b/interface/wx/scopedptr.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: ptr_scpd.h +// Name: wx/scopedptr.h // Purpose: interface of wxScopedPtr // Author: wxWidgets team // RCS-ID: $Id$ @@ -152,106 +152,6 @@ public: swap(wxScopedPtr& other); }; - - -/** - @class wxScopedArray - - This is a simple scoped smart pointer array implementation that is similar to - the Boost smart pointers (see http://www.boost.org/) but rewritten to - use macros instead. - - @b Example: - - Below is an example of using a wxWidgets scoped smart pointer and pointer array. - - @code - class MyClass { ... }; - - // declare a smart pointer to a MyClass called wxMyClassPtr - wxDECLARE_SCOPED_PTR(MyClass, wxMyClassPtr) - // declare a smart pointer to an array of chars - wxDECLARE_SCOPED_ARRAY(char, wxCharArray) - - ... - - // define the first pointer class, must be complete - wxDEFINE_SCOPED_PTR(MyClass, wxMyClassPtr) - // define the second pointer class - wxDEFINE_SCOPED_ARRAY(char, wxCharArray) - - // create an object with a new pointer to MyClass - wxMyClassPtr theObj(new MyClass()); - // reset the pointer (deletes the previous one) - theObj.reset(new MyClass()); - - // access the pointer - theObj->MyFunc(); - - // create an object with a new array of chars - wxCharArray theCharObj(new char[100]); - - // access the array - theCharObj[0] = "!"; - @endcode - - <b>Declaring new smart pointer types:</b> - @code - wxDECLAR_SCOPED_ARRAY( TYPE, // type of the values - CLASSNAME ); // name of the class - @endcode - - A smart pointer holds a pointer to an object (which must be complete when - wxDEFINE_SCOPED_ARRAY() is called). - - The memory used by the object is deleted when the smart pointer goes out of - scope. The first argument of the macro is the pointer type, the second is the - name of the new smart pointer class being created. Below we will use wxScopedArray - to represent the scoped pointer array class, but the user may create the class with - any legal name. - - @library{wxbase} - @category{smartpointers} - - @see wxScopedPtr -*/ -class wxScopedArray -{ -public: - /** - Creates the smart pointer with the given pointer or none if @NULL. On - compilers that support it, this uses the explicit keyword. - */ - wxScopedArray(type* T = NULL); - - /** - This operator gets the pointer stored in the smart pointer or returns @NULL if - there is none. - */ - const T* get(); - - /** - This operator acts like the standard [] indexing operator for C++ arrays. The - function does not do bounds checking. - */ - const T& operator [](long int i); - - /** - Deletes the currently held pointer and sets it to 'p' or to @NULL if no - arguments are specified. This function does check to make sure that the - pointer you are assigning is not the same pointer that is already stored. - */ - reset(T* p = NULL); - - /** - Swap the pointer inside the smart pointer with @a ot. The pointer being swapped - must be of the same type (hence the same class name). - */ - swap(wxScopedPtr& ot); -}; - - - /** @class wxScopedTiedPtr @@ -289,7 +189,6 @@ public: /** - A scoped pointer template class. It is the template version of the old-style @ref wxScopedPtr "scoped pointer macros". @@ -368,71 +267,3 @@ public: void swap(wxScopedPtr<T>& ot); }; -/** - A scoped array template class. - - This class is similar to boost scoped_array class: - http://www.boost.org/doc/libs/1_37_0/libs/smart_ptr/scoped_array.htm - - Notice that objects of this class intentionally cannot be copied. - - @library{wxbase} - @category{smartpointers} - */ -template <class T> -class wxScopedArray -{ -public: - /// The type of the array elements. - typedef T element_type; - - /** - Constructor takes ownership of the given array. - - If @a array is @NULL, reset() must presumably be called later. - - @param array - An array allocated using @c new[] or @NULL. - */ - explicit wxScopedArray(T * array = NULL); - - /// Destructor destroy the array. - ~wxScopedArray(); - - /** - Conversion to a boolean expression (in a variant which is not - convertible to anything but a boolean expression). - - If this class contains a valid array it will return @true, if it contains - a @NULL pointer it will return @false. - */ - operator unspecified_bool_type() const; - - /** - Change the array pointer stored. - - The previously stored array is deleted. - - @param array - An array allocated using @c new[] or @NULL. - */ - void reset(T *array = NULL); - - /** - Return the n-th element of the array. - - Must not be called if the array has no valid pointer. - */ - T& operator[](size_t n) const; - - /** - Return the array pointer. - - The returned pointer may be @NULL. It must not be deleted by the - caller, call @c reset(NULL) instead. - */ - T *get() const; - - /// Swaps the contents of this array with another one. - void swap(wxScopedArray &other); -}; diff --git a/interface/wx/ptr_shrd.h b/interface/wx/sharedptr.h similarity index 87% rename from interface/wx/ptr_shrd.h rename to interface/wx/sharedptr.h index 718e452a52..7e7f43d032 100644 --- a/interface/wx/ptr_shrd.h +++ b/interface/wx/sharedptr.h @@ -1,5 +1,5 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: ptr_shrd.h +// Name: sharedptr.h // Purpose: interface of wxSharedPtr<T> // Author: wxWidgets team // RCS-ID: $Id$ @@ -7,17 +7,16 @@ ///////////////////////////////////////////////////////////////////////////// /** + A smart pointer with non-intrusive reference counting. - A smart pointer with non-intrusive reference counting. It is modeled after - @c boost::shared_ptr<> and can be used with STL containers and wxVector<T> - - unlike @c std::auto_ptr<> and wxScopedPtr<T>. + It is modeled after @c boost::shared_ptr<> and can be used with STL + containers and wxVector<T> unlike @c std::auto_ptr<> and wxScopedPtr<T>. @library{wxbase} @category{smartpointers} @see wxScopedPtr<T>, wxWeakRef<T>, wxObjectDataPtr<T> */ - template<typename T> class wxSharedPtr<T> { @@ -47,7 +46,7 @@ public: /** Conversion to a boolean expression (in a variant which is not - convertable to anything but a boolean expression). + convertible to anything but a boolean expression). If this class contains a valid pointer it will return @true, if it contains a @NULL pointer it will return @false. diff --git a/src/common/appbase.cpp b/src/common/appbase.cpp index 740deebb2b..30c7f093b2 100644 --- a/src/common/appbase.cpp +++ b/src/common/appbase.cpp @@ -42,7 +42,7 @@ #include "wx/evtloop.h" #include "wx/filename.h" #include "wx/msgout.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/tokenzr.h" #include "wx/thread.h" diff --git a/src/common/docview.cpp b/src/common/docview.cpp index 9c5118b3c1..dc27049995 100644 --- a/src/common/docview.cpp +++ b/src/common/docview.cpp @@ -58,7 +58,8 @@ #include "wx/filename.h" #include "wx/stdpaths.h" #include "wx/vector.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedarray.h" +#include "wx/scopedptr.h" #if wxUSE_STD_IOSTREAM #include "wx/ioswrap.h" diff --git a/src/common/event.cpp b/src/common/event.cpp index 6a878fd460..a3cce6f3f3 100644 --- a/src/common/event.cpp +++ b/src/common/event.cpp @@ -47,7 +47,7 @@ #include "wx/thread.h" #if wxUSE_BASE - #include "wx/ptr_scpd.h" + #include "wx/scopedptr.h" wxDECLARE_SCOPED_PTR(wxEvent, wxEventPtr) wxDEFINE_SCOPED_PTR(wxEvent, wxEventPtr) diff --git a/src/common/fs_filter.cpp b/src/common/fs_filter.cpp index 621fed3a23..628a34af0e 100644 --- a/src/common/fs_filter.cpp +++ b/src/common/fs_filter.cpp @@ -20,7 +20,7 @@ #ifndef WX_PRECOMP #endif -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" wxDEFINE_SCOPED_PTR_TYPE(wxFSFile) wxDEFINE_SCOPED_PTR_TYPE(wxInputStream) diff --git a/src/common/gifdecod.cpp b/src/common/gifdecod.cpp index 0a2dad2724..fb55baac1b 100644 --- a/src/common/gifdecod.cpp +++ b/src/common/gifdecod.cpp @@ -24,7 +24,7 @@ #include <stdlib.h> #include <string.h> #include "wx/gifdecod.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/scopeguard.h" diff --git a/src/common/init.cpp b/src/common/init.cpp index d9d3cf0dc7..91e0abaf70 100644 --- a/src/common/init.cpp +++ b/src/common/init.cpp @@ -34,7 +34,7 @@ #include "wx/init.h" #include "wx/thread.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/except.h" #if defined(__WXMSW__) && defined(__WXDEBUG__) diff --git a/src/common/intl.cpp b/src/common/intl.cpp index d0a11eac2f..2284a72490 100644 --- a/src/common/intl.cpp +++ b/src/common/intl.cpp @@ -66,7 +66,7 @@ #include "wx/tokenzr.h" #include "wx/fontmap.h" #include "wx/encconv.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/apptrait.h" #include "wx/stdpaths.h" #include "wx/hashset.h" diff --git a/src/common/rendcmn.cpp b/src/common/rendcmn.cpp index b44fcf3a75..1206b78fa0 100644 --- a/src/common/rendcmn.cpp +++ b/src/common/rendcmn.cpp @@ -32,7 +32,7 @@ #include "wx/apptrait.h" #include "wx/renderer.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #if wxUSE_DYNLIB_CLASS #include "wx/dynlib.h" diff --git a/src/common/tarstrm.cpp b/src/common/tarstrm.cpp index 7eb827582e..033c34cf09 100644 --- a/src/common/tarstrm.cpp +++ b/src/common/tarstrm.cpp @@ -26,7 +26,7 @@ #include "wx/buffer.h" #include "wx/datetime.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/filename.h" #include "wx/thread.h" diff --git a/src/common/zipstrm.cpp b/src/common/zipstrm.cpp index 0bb02d568d..8461c74422 100644 --- a/src/common/zipstrm.cpp +++ b/src/common/zipstrm.cpp @@ -28,7 +28,7 @@ #include "wx/datstrm.h" #include "wx/zstream.h" #include "wx/mstream.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/wfstream.h" #include "zlib.h" diff --git a/src/gtk/clipbrd.cpp b/src/gtk/clipbrd.cpp index 15ffd8be44..3ab24136a8 100644 --- a/src/gtk/clipbrd.cpp +++ b/src/gtk/clipbrd.cpp @@ -29,13 +29,12 @@ #include "wx/dataobj.h" #endif -#include "wx/ptr_scpd.h" +#include "wx/scopedarray.h" #include "wx/scopeguard.h" #include "wx/gtk/private.h" -wxDECLARE_SCOPED_ARRAY(wxDataFormat, wxDataFormatArray) -wxDEFINE_SCOPED_ARRAY(wxDataFormat, wxDataFormatArray) +typedef wxScopedArray<wxDataFormat> wxDataFormatArray; // ---------------------------------------------------------------------------- // data diff --git a/src/gtk/dialog.cpp b/src/gtk/dialog.cpp index 0100682914..2a2e83a0e0 100644 --- a/src/gtk/dialog.cpp +++ b/src/gtk/dialog.cpp @@ -18,7 +18,7 @@ #include "wx/evtloop.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include <gtk/gtk.h> diff --git a/src/motif/clipbrd.cpp b/src/motif/clipbrd.cpp index 936328d7cf..6a38390943 100644 --- a/src/motif/clipbrd.cpp +++ b/src/motif/clipbrd.cpp @@ -32,7 +32,9 @@ #include "wx/dataobj.h" #endif -#include "wx/ptr_scpd.h" +#include "wx/scopedarray.h" + +typedef wxScopedArray<wxDataFormat> wxDataFormatScopedArray; #ifdef __VMS__ #pragma message disable nosimpint @@ -233,9 +235,6 @@ bool wxClipboard::SetData( wxDataObject *data ) return AddData( data ); } -wxDECLARE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray ) -wxDEFINE_SCOPED_ARRAY( wxDataFormat, wxDataFormatScopedArray ) - #if wxCHECK_LESSTIF() void wxClipboardCallback( Widget xwidget, int* data_id, int* priv, int* WXUNUSED(reason) ) diff --git a/src/msw/dialog.cpp b/src/msw/dialog.cpp index 55bd004088..1f9459d57d 100644 --- a/src/msw/dialog.cpp +++ b/src/msw/dialog.cpp @@ -40,7 +40,7 @@ #include "wx/msw/private.h" #include "wx/evtloop.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #if defined(__SMARTPHONE__) && defined(__WXWINCE__) #include "wx/msw/wince/resources.h" diff --git a/src/msw/evtloop.cpp b/src/msw/evtloop.cpp index d09faae69f..78d4ee212e 100644 --- a/src/msw/evtloop.cpp +++ b/src/msw/evtloop.cpp @@ -34,7 +34,6 @@ #include "wx/evtloop.h" #include "wx/thread.h" #include "wx/except.h" -#include "wx/ptr_scpd.h" #include "wx/msw/private.h" #if wxUSE_GUI diff --git a/src/msw/menu.cpp b/src/msw/menu.cpp index 46346acca8..b7c688c171 100644 --- a/src/msw/menu.cpp +++ b/src/msw/menu.cpp @@ -39,7 +39,7 @@ #include "wx/ownerdrw.h" #endif -#include "wx/ptr_scpd.h" +#include "wx/scopedarray.h" #include "wx/msw/private.h" #include "wx/msw/wrapcctl.h" // include <commctrl.h> "properly" diff --git a/src/msw/toolbar.cpp b/src/msw/toolbar.cpp index 140831106f..b5d1b6ef2f 100644 --- a/src/msw/toolbar.cpp +++ b/src/msw/toolbar.cpp @@ -46,7 +46,7 @@ #include "wx/artprov.h" #include "wx/sysopt.h" #include "wx/dcclient.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedarray.h" #include "wx/msw/private.h" #include "wx/msw/dc.h" diff --git a/src/os2/dialog.cpp b/src/os2/dialog.cpp index 0f299aaff5..d7da58b468 100644 --- a/src/os2/dialog.cpp +++ b/src/os2/dialog.cpp @@ -25,7 +25,7 @@ #include "wx/os2/private.h" #include "wx/evtloop.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #define wxDIALOG_DEFAULT_X 300 #define wxDIALOG_DEFAULT_Y 300 diff --git a/src/os2/evtloop.cpp b/src/os2/evtloop.cpp index da4a396c41..b054bfce48 100644 --- a/src/os2/evtloop.cpp +++ b/src/os2/evtloop.cpp @@ -33,7 +33,7 @@ #include "wx/evtloop.h" #include "wx/tooltip.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "wx/os2/private.h" #include "wx/os2/private/timer.h" // for wxTimerProc diff --git a/src/palmos/dialog.cpp b/src/palmos/dialog.cpp index 971d771aae..32989e6eef 100644 --- a/src/palmos/dialog.cpp +++ b/src/palmos/dialog.cpp @@ -36,7 +36,7 @@ #endif #include "wx/evtloop.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" // ---------------------------------------------------------------------------- // wxWin macros diff --git a/src/palmos/evtloop.cpp b/src/palmos/evtloop.cpp index 5dc164d157..5835fb3df8 100644 --- a/src/palmos/evtloop.cpp +++ b/src/palmos/evtloop.cpp @@ -33,7 +33,6 @@ #include "wx/tooltip.h" #include "wx/except.h" -#include "wx/ptr_scpd.h" #if wxUSE_THREADS #include "wx/thread.h" diff --git a/src/xml/xml.cpp b/src/xml/xml.cpp index 1555d29b72..0f5e61d83c 100644 --- a/src/xml/xml.cpp +++ b/src/xml/xml.cpp @@ -29,7 +29,7 @@ #include "wx/datstrm.h" #include "wx/zstream.h" #include "wx/strconv.h" -#include "wx/ptr_scpd.h" +#include "wx/scopedptr.h" #include "expat.h" // from Expat diff --git a/wxGTK.spec b/wxGTK.spec index 4736b7dcb6..7bd321f1ff 100644 --- a/wxGTK.spec +++ b/wxGTK.spec @@ -217,6 +217,7 @@ wx/beforestd.h wx/buffer.h wx/build.h wx/chartype.h +wx/checkeddelete.h wx/chkconf.h wx/clntdata.h wx/cmdargs.h @@ -290,7 +291,10 @@ wx/ptr_scpd.h wx/ptr_shrd.h wx/recguard.h wx/regex.h +wx/scopedarray.h +wx/scopedptr.h wx/scopeguard.h +wx/sharedptr.h wx/snglinst.h wx/sstream.h wx/stack.h @@ -341,8 +345,6 @@ wx/meta/convertible.h wx/meta/if.h wx/meta/int2type.h wx/meta/movable.h -wx/private/fdiodispatcher.h -wx/private/selectdispatcher.h wx/unix/app.h wx/unix/apptbase.h wx/unix/apptrait.h diff --git a/wxMotif.spec b/wxMotif.spec index b08d11074e..d1c674579b 100644 --- a/wxMotif.spec +++ b/wxMotif.spec @@ -122,6 +122,7 @@ wx/beforestd.h wx/buffer.h wx/build.h wx/chartype.h +wx/checkeddelete.h wx/chkconf.h wx/clntdata.h wx/cmdargs.h @@ -195,7 +196,10 @@ wx/ptr_scpd.h wx/ptr_shrd.h wx/recguard.h wx/regex.h +wx/scopedarray.h +wx/scopedptr.h wx/scopeguard.h +wx/sharedptr.h wx/snglinst.h wx/sstream.h wx/stack.h @@ -246,8 +250,6 @@ wx/meta/convertible.h wx/meta/if.h wx/meta/int2type.h wx/meta/movable.h -wx/private/fdiodispatcher.h -wx/private/selectdispatcher.h wx/unix/app.h wx/unix/apptbase.h wx/unix/apptrait.h diff --git a/wxX11.spec b/wxX11.spec index ab1b782d29..5a532f693f 100644 --- a/wxX11.spec +++ b/wxX11.spec @@ -146,6 +146,7 @@ wx/beforestd.h wx/buffer.h wx/build.h wx/chartype.h +wx/checkeddelete.h wx/chkconf.h wx/clntdata.h wx/cmdargs.h @@ -219,7 +220,10 @@ wx/ptr_scpd.h wx/ptr_shrd.h wx/recguard.h wx/regex.h +wx/scopedarray.h +wx/scopedptr.h wx/scopeguard.h +wx/sharedptr.h wx/snglinst.h wx/sstream.h wx/stack.h @@ -270,8 +274,6 @@ wx/meta/convertible.h wx/meta/if.h wx/meta/int2type.h wx/meta/movable.h -wx/private/fdiodispatcher.h -wx/private/selectdispatcher.h wx/unix/app.h wx/unix/apptbase.h wx/unix/apptrait.h -- 2.47.2