]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/vector.h
Prevent seg fault for older GTK+
[wxWidgets.git] / include / wx / vector.h
index 36bb252b1708000c5ba9a6a64929dc9af10cf244..f8aa5625eb410384461db5c36cb7dfde6f7f1fb1 100644 (file)
@@ -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,12 +117,12 @@ public:
     size_type capacity() const
     {
         return m_capacity;
-    };
+    }
 
     bool empty() const
     {
         return size() == 0;
-    };
+    }
 
     wxVectorBase& operator = (const wxVectorBase& vb)
     {
@@ -132,18 +132,18 @@ public:
 };
 
 #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()\
     {\
         wxCHECK2(copy(c), return);\
     }\
@@ -155,54 +155,54 @@ public:\
 #define _WX_DECLARE_VECTOR(obj, cls, exp)\
 class exp cls : public wxVectorBase\
 {\
-    WX_DECLARE_VECTORBASE(obj, cls);\
+    WX_DECLARE_VECTORBASE(obj, cls)\
 public:\
     void push_back(const obj& o)\
     {\
         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) \