X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/371a5b4e62eb415107e045588f614fa49e866e78..32efab35c14e1cf09cc0c3edd3d2345a66fcea3d:/include/wx/vector.h diff --git a/include/wx/vector.h b/include/wx/vector.h index 39f2fbd145..8ffc4a74f1 100644 --- a/include/wx/vector.h +++ b/include/wx/vector.h @@ -13,7 +13,7 @@ #include "wx/defs.h" -class WXDLLEXPORT wxVectorBase +class WXDLLIMPEXP_BASE wxVectorBase { public: typedef size_t size_type; @@ -39,7 +39,7 @@ protected: m_objects = (void **) mem; m_capacity = sz; return true; - }; + } // untyped destructor of elements - must be overriden virtual void Free(void *) = 0; @@ -48,20 +48,20 @@ protected: const void *GetItem(size_type idx) const { - wxASSERT(idx >= 0 && idx < m_size); + wxASSERT(idx < m_size); return m_objects[idx]; - }; + } void Append(void *obj) { wxASSERT(m_size < m_capacity); m_objects[m_size] = obj; m_size++; - }; + } void RemoveAt(size_type idx) { - wxASSERT(idx >= 0 && idx < m_size); + wxASSERT(idx < m_size); Free(m_objects[idx]); if (idx < m_size - 1) memcpy( @@ -69,7 +69,7 @@ protected: m_objects + idx + 1, ( m_size - idx - 1 ) * sizeof(void*) ); m_size--; - }; + } bool copy(const wxVectorBase& vb) { @@ -83,10 +83,10 @@ protected: if (! o) return false; Append(o); - }; + } return true; - }; + } public: wxVectorBase() : m_allocsize(16), m_size(0), m_capacity(0), m_objects(0) {} @@ -99,7 +99,7 @@ public: free(m_objects); m_objects = 0; m_size = m_capacity = 0; - }; + } void reserve(size_type n) { @@ -107,7 +107,7 @@ public: { wxFAIL_MSG( _T("out of memory in wxVector::reserve()") ); } - }; + } size_type size() const { @@ -117,37 +117,35 @@ public: size_type capacity() const { return m_capacity; - }; + } bool empty() const { return size() == 0; - }; + } wxVectorBase& operator = (const wxVectorBase& vb) { - bool rc = copy(vb); - wxASSERT(rc); + wxCHECK(copy(vb), *this); return *this; } }; #define WX_DECLARE_VECTORBASE(obj, cls)\ -private:\ +protected:\ virtual void Free(void *o)\ {\ delete (obj *) o;\ - };\ + }\ virtual void *Copy(const void *o) const\ {\ return new obj(*(obj *) o);\ - };\ + }\ public:\ cls() {}\ - cls(const cls& c)\ + cls(const cls& c) : wxVectorBase()\ {\ - bool rc = copy(c);\ - wxASSERT(rc);\ + wxCHECK2(copy(c), return);\ }\ ~cls()\ {\ @@ -161,51 +159,50 @@ class exp cls : public wxVectorBase\ public:\ void push_back(const obj& o)\ {\ - bool rc = Alloc(size() + 1);\ - wxASSERT(rc);\ + wxCHECK2(Alloc(size() + 1), return);\ Append(new obj(o));\ - };\ + }\ void pop_back()\ {\ RemoveAt(size() - 1);\ - };\ + }\ const obj& at(size_type idx) const\ {\ return *(obj *) GetItem(idx);\ - };\ + }\ obj& at(size_type idx)\ {\ return *(obj *) GetItem(idx);\ - };\ + }\ const obj& operator[](size_type idx) const\ {\ return at(idx);\ - };\ + }\ obj& operator[](size_type idx)\ {\ return at(idx);\ - };\ + }\ const obj& front() const\ {\ return at(0);\ - };\ + }\ obj& front()\ {\ return at(0);\ - };\ + }\ const obj& back() const\ {\ return at(size() - 1);\ - };\ + }\ obj& back()\ {\ return at(size() - 1);\ - };\ + }\ size_type erase(size_type idx)\ {\ RemoveAt(idx);\ return idx;\ - };\ + }\ } #define WX_DECLARE_VECTOR(obj, cls) \