X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c514cd532c8515061bcd69df61d685b45b29da4f..0be9ace27e0a278272cbb1e9daa988b65898eca1:/include/wx/dynarray.h diff --git a/include/wx/dynarray.h b/include/wx/dynarray.h index cc79f0a680..b836cffb72 100644 --- a/include/wx/dynarray.h +++ b/include/wx/dynarray.h @@ -24,9 +24,6 @@ #include #include #include "wx/afterstd.h" - #if defined(__WXMSW__) && defined(__MINGW32__) - #include "wx/msw/winundef.h" - #endif #endif /* @@ -114,7 +111,7 @@ protected: \ size_t IndexForInsert(T lItem, CMPFUNC fnCompare) const; \ void Add(T lItem, size_t nInsert = 1) \ { insert(end(), nInsert, lItem); } \ - void Add(T lItem, CMPFUNC fnCompare); \ + size_t Add(T lItem, CMPFUNC fnCompare); \ void Insert(T lItem, size_t uiIndex, size_t nInsert = 1) \ { insert(begin() + uiIndex, nInsert, lItem); } \ void Remove(T lItem); \ @@ -170,7 +167,7 @@ protected: \ int Index(T lItem, CMPFUNC fnCompare) const; \ size_t IndexForInsert(T lItem, CMPFUNC fnCompare) const; \ void Add(T lItem, size_t nInsert = 1); \ - void Add(T lItem, CMPFUNC fnCompare); \ + size_t Add(T lItem, CMPFUNC fnCompare); \ void Insert(T lItem, size_t uiIndex, size_t nInsert = 1); \ void Remove(T lItem); \ void RemoveAt(size_t uiIndex, size_t nRemove = 1); \ @@ -350,10 +347,16 @@ public: \ typedef value_type& reference; \ typedef value_type* pointer; \ typedef reverse_iterator itor; \ - friend itor operator+(int o, const itor& it); \ - friend itor operator+(const itor& it, int o); \ - friend itor operator-(const itor& it, int o); \ - friend difference_type operator -(const itor& i1, const itor& i2);\ + friend inline itor operator+(int o, const itor& it) \ + { return it.m_ptr - o; } \ + friend inline itor operator+(const itor& it, int o) \ + { return it.m_ptr - o; } \ + friend inline itor operator-(const itor& it, int o) \ + { return it.m_ptr + o; } \ + friend inline difference_type operator-(const itor& i1, \ + const itor& i2) \ + { return i1.m_ptr - i2.m_ptr; } \ + \ public: \ pointer m_ptr; \ reverse_iterator() : m_ptr(NULL) { } \ @@ -376,10 +379,16 @@ public: \ typedef const value_type& reference; \ typedef const value_type* pointer; \ typedef const_reverse_iterator itor; \ - friend itor operator+(int o, const itor& it); \ - friend itor operator+(const itor& it, int o); \ - friend itor operator-(const itor& it, int o); \ - friend difference_type operator -(const itor& i1, const itor& i2);\ + friend inline itor operator+(int o, const itor& it) \ + { return it.m_ptr - o; } \ + friend inline itor operator+(const itor& it, int o) \ + { return it.m_ptr - o; } \ + friend inline itor operator-(const itor& it, int o) \ + { return it.m_ptr + o; } \ + friend inline difference_type operator-(const itor& i1, \ + const itor& i2) \ + { return i1.m_ptr - i2.m_ptr; } \ + \ public: \ pointer m_ptr; \ const_reverse_iterator() : m_ptr(NULL) { } \ @@ -434,21 +443,8 @@ public: \ void reserve(size_type n) { base::reserve(n); }; \ void resize(size_type n, value_type v = value_type()); \ size_type size() const { return base::size(); } \ -}; \ - \ -inline name::reverse_iterator operator+(int o, const name::reverse_iterator& it) { return it.m_ptr - o; } \ -inline name::reverse_iterator operator+(const name::reverse_iterator& it, int o) { return it.m_ptr - o; } \ -inline name::reverse_iterator operator-(const name::reverse_iterator& it, int o) { return it.m_ptr + o; } \ -inline name::difference_type operator -(const name::reverse_iterator& i1, \ - const name::reverse_iterator& i2) \ - { return i1.m_ptr - i2.m_ptr; } \ - \ -inline name::const_reverse_iterator operator+(int o, const name::const_reverse_iterator& it) { return it.m_ptr - o; } \ -inline name::const_reverse_iterator operator+(const name::const_reverse_iterator& it, int o) { return it.m_ptr - o; } \ -inline name::const_reverse_iterator operator-(const name::const_reverse_iterator& it, int o) { return it.m_ptr + o; } \ -inline name::difference_type operator -(const name::const_reverse_iterator& i1,\ - const name::const_reverse_iterator& i2) \ - { return i1.m_ptr - i2.m_ptr; } \ +} + #endif // !wxUSE_STL @@ -457,12 +453,8 @@ inline name::difference_type operator -(const name::const_reverse_iterator& i1,\ // cannot handle types with size greater than pointer because of sorting // ---------------------------------------------------------------------------- -#define _WX_DEFINE_SORTED_TYPEARRAY(T, name, base, defcomp, classexp) \ -typedef int (CMPFUNC_CONV *SCMPFUNC##T)(T pItem1, T pItem2); \ -_WX_DEFINE_SORTED_TYPEARRAY_2(T, name, base, defcomp, classexp, SCMPFUNC##T) - #define _WX_DEFINE_SORTED_TYPEARRAY_2(T, name, base, defcomp, classexp, comptype)\ -wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(void *), \ +wxCOMPILE_TIME_ASSERT2(sizeof(T) <= sizeof(base::base_type), \ TypeTooBigToBeStoredInSorted##base, \ name); \ classexp name : public base \ @@ -492,8 +484,8 @@ public: \ void AddAt(T item, size_t index) \ { base::insert(begin() + index, item); } \ \ - void Add(T Item) \ - { base::Add(Item, (CMPFUNC)m_fnCompare); } \ + size_t Add(T Item) \ + { return base::Add(Item, (CMPFUNC)m_fnCompare); } \ \ void RemoveAt(size_t uiIndex, size_t nRemove = 1) \ { base::erase(begin() + uiIndex, begin() + uiIndex + nRemove); } \ @@ -660,8 +652,9 @@ private: \ #define WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY(T, name, base, expmode) \ typedef T _wxArray##name; \ - _WX_DEFINE_SORTED_TYPEARRAY(_wxArray##name, name, base, \ - wxARRAY_EMPTY_CMP, class expmode) + typedef int (CMPFUNC_CONV *SCMPFUNC##name)(T pItem1, T pItem2); \ + _WX_DEFINE_SORTED_TYPEARRAY_2(_wxArray##name, name, base, \ + wxARRAY_EMPTY_CMP, class expmode, SCMPFUNC##name) // ---------------------------------------------------------------------------- // WX_DEFINE_SORTED_TYPEARRAY_CMP: exactly the same as above but the comparison @@ -686,8 +679,9 @@ private: \ #define WX_DEFINE_SORTED_USER_EXPORTED_TYPEARRAY_CMP(T, cmpfunc, name, base, \ expmode) \ typedef T _wxArray##name; \ - _WX_DEFINE_SORTED_TYPEARRAY(_wxArray##name, name, base, = cmpfunc, \ - class expmode) + typedef int (CMPFUNC_CONV *SCMPFUNC##name)(T pItem1, T pItem2); \ + _WX_DEFINE_SORTED_TYPEARRAY_2(_wxArray##name, name, base, = cmpfunc, \ + class expmode, SCMPFUNC##name) // ---------------------------------------------------------------------------- // WX_DECLARE_OBJARRAY(T, name): this macro generates a new array class