]> git.saurik.com Git - wxWidgets.git/commitdiff
changed wxVectorBase and WX_DECLARE_BASE into wxVector<T> template
authorVáclav Slavík <vslavik@fastmail.fm>
Sat, 7 Jul 2007 10:09:42 +0000 (10:09 +0000)
committerVáclav Slavík <vslavik@fastmail.fm>
Sat, 7 Jul 2007 10:09:42 +0000 (10:09 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/clntdata.h
include/wx/vector.h
tests/Makefile.in
tests/makefile.bcc
tests/makefile.gcc
tests/makefile.vc
tests/makefile.wat
tests/test.bkl
tests/test_test.dsp
tests/vectors/vectors.cpp [new file with mode: 0644]

index 33fae4c1045b668ea092b765675f92a59410c819..c1d09e7c68c53b04392acb699682c26ad1717338 100644 (file)
@@ -169,12 +169,6 @@ struct WXDLLIMPEXP_BASE wxClientDataDictionaryPair
     wxClientData* data;
 };
 
     wxClientData* data;
 };
 
-_WX_DECLARE_VECTOR(
-    wxClientDataDictionaryPair,
-    wxClientDataDictionaryPairVector,
-    WXDLLIMPEXP_BASE
-);
-
 // this class is used internally to maintain the association between items
 // of (some subclasses of) wxControlWithItems and their client data
 // NOTE: this class does not keep track of whether it contains
 // this class is used internally to maintain the association between items
 // of (some subclasses of) wxControlWithItems and their client data
 // NOTE: this class does not keep track of whether it contains
@@ -266,7 +260,7 @@ private:
         return m_vec.size();
     }
 
         return m_vec.size();
     }
 
-    wxClientDataDictionaryPairVector m_vec;
+    wxVector<wxClientDataDictionaryPair> m_vec;
 };
 
 #endif // _WX_CLNTDATAH__
 };
 
 #endif // _WX_CLNTDATAH__
index f8aa5625eb410384461db5c36cb7dfde6f7f1fb1..1c181c2c18a0660dd9e4cbfcf829fbab05927522 100644 (file)
@@ -2,9 +2,10 @@
 // Name:        wx/vector.h
 // Purpose:     STL vector clone
 // Author:      Lindsay Mathieson
 // Name:        wx/vector.h
 // Purpose:     STL vector clone
 // Author:      Lindsay Mathieson
-// Modified by:
+// Modified by: Vaclav Slavik - make it a template
 // Created:     30.07.2001
 // Created:     30.07.2001
-// Copyright:   (c) 2001 Lindsay Mathieson <lindsay@mathieson.org>
+// Copyright:   (c) 2001 Lindsay Mathieson <lindsay@mathieson.org>,
+//                  2007 Vaclav Slavik <vslavik@fastmail.fm>
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 
 #include "wx/defs.h"
 
 
 #include "wx/defs.h"
 
-class WXDLLIMPEXP_BASE wxVectorBase
+#if 0 // wxUSE_STL
+
+// FIXME: can't do this yet, wxVector::erase() is different (takes index,
+//        not iterator)
+#include <vector>
+#define wxVector std::vector
+
+#else // !wxUSE_STL
+
+template<typename T>
+class wxVector
 {
 public:
     typedef size_t size_type;
 {
 public:
     typedef size_t size_type;
-private:
-    size_type m_allocsize;
-    size_type m_size,
-              m_capacity;
-    void **m_objects;
+    typedef T value_type;
+
+    wxVector() : m_allocsize(16), m_size(0), m_capacity(0), m_objects(0) {}
+
+    wxVector(const wxVector& c)
+    {
+        wxCHECK2(Copy(c), return);
+    }
+
+    ~wxVector()
+    {
+        clear();
+    }
+
+    void clear()
+    {
+        for (size_type i = 0; i < size(); i++)
+            delete m_objects[i];
+        free(m_objects);
+        m_objects = 0;
+        m_size = m_capacity = 0;
+    }
+
+    void reserve(size_type n)
+    {
+        if ( !Alloc(n) )
+        {
+            wxFAIL_MSG( _T("out of memory in wxVector::reserve()") );
+        }
+    }
+
+    size_type size() const
+    {
+        return m_size;
+    }
+
+    size_type capacity() const
+    {
+        return m_capacity;
+    }
+
+    bool empty() const
+    {
+        return size() == 0;
+    }
+
+    wxVector& operator=(const wxVector& vb)
+    {
+        wxCHECK(Copy(vb), *this);
+        return *this;
+    }
+
+    void push_back(const value_type& o)
+    {
+        wxCHECK2(Alloc(size() + 1), return);
+        Append(new value_type(o));
+    }
+
+    void pop_back()
+    {
+        RemoveAt(size() - 1);
+    }
+
+    const value_type& at(size_type idx) const
+    {
+        wxASSERT(idx < m_size);
+        return *m_objects[idx];
+    }
+
+    value_type& at(size_type idx)
+    {
+        wxASSERT(idx < m_size);
+        return *m_objects[idx];
+    }
 
 
-protected:
+    const value_type& operator[](size_type idx) const  { return at(idx); }
+    value_type& operator[](size_type idx) { return at(idx); }
+    const value_type& front() const { return at(0); }
+    value_type& front() { return at(0); }
+    const value_type& back() const { return at(size() - 1); }
+    value_type& back() { return at(size() - 1); }
+
+    size_type erase(size_type idx)
+    {
+        RemoveAt(idx);
+        return idx;
+    }
+
+private:
     bool Alloc(size_type sz)
     {
         // work in multiples of m_allocsize;
     bool Alloc(size_type sz)
     {
         // work in multiples of m_allocsize;
@@ -32,27 +125,16 @@ protected:
             return true;
 
         // try to realloc
             return true;
 
         // try to realloc
-        void *mem = realloc(m_objects, sizeof(void *) * sz);
+        void *mem = realloc(m_objects, sizeof(value_type*) * sz);
         if (! mem)
             return false; // failed
         // success
         if (! mem)
             return false; // failed
         // success
-        m_objects = (void **) mem;
+        m_objects = (value_type **) mem;
         m_capacity = sz;
         return true;
     }
 
         m_capacity = sz;
         return true;
     }
 
-    // untyped destructor of elements - must be overriden
-    virtual void Free(void *) = 0;
-    // untyped copy constructor of elements - must be overriden
-    virtual void *Copy(const void *) const = 0;
-
-    const void *GetItem(size_type idx) const
-    {
-        wxASSERT(idx < m_size);
-        return m_objects[idx];
-    }
-
-    void Append(void *obj)
+    void Append(value_type *obj)
     {
         wxASSERT(m_size < m_capacity);
         m_objects[m_size] = obj;
     {
         wxASSERT(m_size < m_capacity);
         m_objects[m_size] = obj;
@@ -62,7 +144,7 @@ protected:
     void RemoveAt(size_type idx)
     {
         wxASSERT(idx < m_size);
     void RemoveAt(size_type idx)
     {
         wxASSERT(idx < m_size);
-        Free(m_objects[idx]);
+        delete m_objects[idx];
         if (idx < m_size - 1)
             memcpy(
                 m_objects + idx,
         if (idx < m_size - 1)
             memcpy(
                 m_objects + idx,
@@ -71,7 +153,7 @@ protected:
         m_size--;
     }
 
         m_size--;
     }
 
-    bool copy(const wxVectorBase& vb)
+    bool Copy(const wxVector& vb)
     {
         clear();
         if (! Alloc(vb.size()))
     {
         clear();
         if (! Alloc(vb.size()))
@@ -79,7 +161,7 @@ protected:
 
         for (size_type i = 0; i < vb.size(); i++)
         {
 
         for (size_type i = 0; i < vb.size(); i++)
         {
-            void *o = vb.Copy(vb.GetItem(i));
+            value_type *o = new value_type(vb.at(i));
             if (! o)
                 return false;
             Append(o);
             if (! o)
                 return false;
             Append(o);
@@ -88,125 +170,19 @@ protected:
         return true;
     }
 
         return true;
     }
 
-public:
-    wxVectorBase() : m_allocsize(16), m_size(0), m_capacity(0), m_objects(0) {}
-    virtual ~wxVectorBase() {} // calm down GCC
-
-    void clear()
-    {
-        for (size_type i = 0; i < size(); i++)
-            Free(m_objects[i]);
-        free(m_objects);
-        m_objects = 0;
-        m_size = m_capacity = 0;
-    }
-
-    void reserve(size_type n)
-    {
-        if ( !Alloc(n) )
-        {
-            wxFAIL_MSG( _T("out of memory in wxVector::reserve()") );
-        }
-    }
-
-    size_type size() const
-    {
-        return m_size;
-    }
-
-    size_type capacity() const
-    {
-        return m_capacity;
-    }
-
-    bool empty() const
-    {
-        return size() == 0;
-    }
-
-    wxVectorBase& operator = (const wxVectorBase& vb)
-    {
-        wxCHECK(copy(vb), *this);
-        return *this;
-    }
+private:
+    size_type m_allocsize;
+    size_type m_size,
+              m_capacity;
+    value_type **m_objects;
 };
 
 };
 
-#define WX_DECLARE_VECTORBASE(obj, cls)\
-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) : wxVectorBase()\
-    {\
-        wxCHECK2(copy(c), return);\
-    }\
-    ~cls()\
-    {\
-        clear();\
-    }
-
-#define _WX_DECLARE_VECTOR(obj, cls, exp)\
-class exp cls : public wxVectorBase\
-{\
-    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) \
-  _WX_DECLARE_VECTOR(obj, cls, WXDLLEXPORT)
+#endif // wxUSE_STL/!wxUSE_STL
 
 
-#endif // _WX_VECTOR_H_
+#if WXWIN_COMPATIBILITY_2_8
+    #define WX_DECLARE_VECTORBASE(obj, cls) typedef wxVector<obj> cls
+    #define _WX_DECLARE_VECTOR(obj, cls, exp) WX_DECLARE_VECTORBASE(obj, cls)
+    #define WX_DECLARE_VECTOR(obj, cls) WX_DECLARE_VECTORBASE(obj, cls)
+#endif // WXWIN_COMPATIBILITY_2_8
 
 
+#endif // _WX_VECTOR_H_
index 41c9b375ef76f7d1eb6ccbdba984bfc8390d40bb..6e25a8e5e86c93a36f75f8a376504f55c6425277 100644 (file)
@@ -91,7 +91,8 @@ TEST_OBJECTS =  \
        test_zlibstream.o \
        test_textfiletest.o \
        test_atomic.o \
        test_zlibstream.o \
        test_textfiletest.o \
        test_atomic.o \
-       test_uris.o
+       test_uris.o \
+       test_vectors.o
 TEST_ODEP =  $(___pch_testprec_test_testprec_h_gch___depname)
 TEST_GUI_CXXFLAGS = $(__test_gui_PCH_INC) -D__WX$(TOOLKIT)__ \
        $(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
 TEST_ODEP =  $(___pch_testprec_test_testprec_h_gch___depname)
 TEST_GUI_CXXFLAGS = $(__test_gui_PCH_INC) -D__WX$(TOOLKIT)__ \
        $(__WXUNIV_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -437,6 +438,9 @@ test_atomic.o: $(srcdir)/thread/atomic.cpp $(TEST_ODEP)
 test_uris.o: $(srcdir)/uris/uris.cpp $(TEST_ODEP)
        $(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/uris/uris.cpp
 
 test_uris.o: $(srcdir)/uris/uris.cpp $(TEST_ODEP)
        $(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/uris/uris.cpp
 
+test_vectors.o: $(srcdir)/vectors/vectors.cpp $(TEST_ODEP)
+       $(CXXC) -c -o $@ $(TEST_CXXFLAGS) $(srcdir)/vectors/vectors.cpp
+
 test_gui_sample_rc.o: $(srcdir)/../samples/sample.rc $(TEST_GUI_ODEP)
        $(WINDRES) -i$< -o$@    --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_5)  $(__EXCEPTIONS_DEFINE_p_5) $(__RTTI_DEFINE_p_5) $(__THREAD_DEFINE_p_5)   --include-dir $(srcdir) $(__DLLFLAG_p_5) --include-dir $(srcdir)/../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
 
 test_gui_sample_rc.o: $(srcdir)/../samples/sample.rc $(TEST_GUI_ODEP)
        $(WINDRES) -i$< -o$@    --define __WX$(TOOLKIT)__ $(__WXUNIV_DEFINE_p_5)  $(__EXCEPTIONS_DEFINE_p_5) $(__RTTI_DEFINE_p_5) $(__THREAD_DEFINE_p_5)   --include-dir $(srcdir) $(__DLLFLAG_p_5) --include-dir $(srcdir)/../samples $(__RCDEFDIR_p_1) --include-dir $(top_srcdir)/include
 
index a55004cd1962b06b11d976f4f2a079d7b1bf8956..0baf188f9fa942db03a9818015e7b4ad3cf323a1 100644 (file)
@@ -79,7 +79,8 @@ TEST_OBJECTS =  \
        $(OBJS)\test_zlibstream.obj \
        $(OBJS)\test_textfiletest.obj \
        $(OBJS)\test_atomic.obj \
        $(OBJS)\test_zlibstream.obj \
        $(OBJS)\test_textfiletest.obj \
        $(OBJS)\test_atomic.obj \
-       $(OBJS)\test_uris.obj
+       $(OBJS)\test_uris.obj \
+       $(OBJS)\test_vectors.obj
 TEST_GUI_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
        $(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
        $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
 TEST_GUI_CXXFLAGS = $(__RUNTIME_LIBS) -I$(BCCDIR)\include $(__DEBUGINFO) \
        $(__OPTIMIZEFLAG) $(__THREADSFLAG_1) -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
        $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -465,6 +466,9 @@ $(OBJS)\test_atomic.obj: .\thread\atomic.cpp
 $(OBJS)\test_uris.obj: .\uris\uris.cpp
        $(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) $**
 
 $(OBJS)\test_uris.obj: .\uris\uris.cpp
        $(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) $**
 
+$(OBJS)\test_vectors.obj: .\vectors\vectors.cpp
+       $(CXX) -q -c -P -o$@ $(TEST_CXXFLAGS) $**
+
 $(OBJS)\test_gui_sample.res: .\..\samples\sample.rc
        brcc32 -32 -r -fo$@ -i$(BCCDIR)\include    -d__WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) -i$(SETUPHDIR) -i.\..\include -i. $(__DLLFLAG_p_3) -i.\..\samples -dNOPCH $**
 
 $(OBJS)\test_gui_sample.res: .\..\samples\sample.rc
        brcc32 -32 -r -fo$@ -i$(BCCDIR)\include    -d__WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) -i$(SETUPHDIR) -i.\..\include -i. $(__DLLFLAG_p_3) -i.\..\samples -dNOPCH $**
 
index 6dd6d2ac5b8be21f2936e89446cf199325d97126..b24fac7557753c8e40c2c7c5f1f1973f166903ac 100644 (file)
@@ -71,7 +71,8 @@ TEST_OBJECTS =  \
        $(OBJS)\test_zlibstream.o \
        $(OBJS)\test_textfiletest.o \
        $(OBJS)\test_atomic.o \
        $(OBJS)\test_zlibstream.o \
        $(OBJS)\test_textfiletest.o \
        $(OBJS)\test_atomic.o \
-       $(OBJS)\test_uris.o
+       $(OBJS)\test_uris.o \
+       $(OBJS)\test_vectors.o
 TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
        $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
        $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
 TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) \
        $(GCCFLAGS) -DHAVE_W32API_H -D__WXMSW__ $(__WXUNIV_DEFINE_p) \
        $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) \
@@ -443,6 +444,9 @@ $(OBJS)\test_atomic.o: ./thread/atomic.cpp
 $(OBJS)\test_uris.o: ./uris/uris.cpp
        $(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
 
 $(OBJS)\test_uris.o: ./uris/uris.cpp
        $(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
 
+$(OBJS)\test_vectors.o: ./vectors/vectors.cpp
+       $(CXX) -c -o $@ $(TEST_CXXFLAGS) $(CPPDEPS) $<
+
 $(OBJS)\test_gui_sample_rc.o: ./../samples/sample.rc
        windres --use-temp-file -i$< -o$@    --define __WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) --include-dir $(SETUPHDIR) --include-dir ./../include --include-dir . $(__DLLFLAG_p_3) --include-dir ./../samples --define NOPCH
 
 $(OBJS)\test_gui_sample_rc.o: ./../samples/sample.rc
        windres --use-temp-file -i$< -o$@    --define __WXMSW__ $(__WXUNIV_DEFINE_p_3) $(__DEBUG_DEFINE_p_3) $(__EXCEPTIONS_DEFINE_p_3) $(__RTTI_DEFINE_p_3) $(__THREAD_DEFINE_p_3) $(__UNICODE_DEFINE_p_3) $(__MSLU_DEFINE_p_3) $(__GFXCTX_DEFINE_p_3) --include-dir $(SETUPHDIR) --include-dir ./../include --include-dir . $(__DLLFLAG_p_3) --include-dir ./../samples --define NOPCH
 
index 38eb98b9332a9833c4b539f1b9d948d3426485b6..75962edb86941e95ea8013bb6836ab310c88da33 100644 (file)
@@ -72,7 +72,8 @@ TEST_OBJECTS =  \
        $(OBJS)\test_zlibstream.obj \
        $(OBJS)\test_textfiletest.obj \
        $(OBJS)\test_atomic.obj \
        $(OBJS)\test_zlibstream.obj \
        $(OBJS)\test_textfiletest.obj \
        $(OBJS)\test_atomic.obj \
-       $(OBJS)\test_uris.obj
+       $(OBJS)\test_uris.obj \
+       $(OBJS)\test_vectors.obj
 TEST_GUI_CXXFLAGS = /M$(__RUNTIME_LIBS_23)$(__DEBUGRUNTIME) /DWIN32 \
        $(__DEBUGINFO) /Fd$(OBJS)\test_gui.pdb $(____DEBUGRUNTIME) \
        $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
 TEST_GUI_CXXFLAGS = /M$(__RUNTIME_LIBS_23)$(__DEBUGRUNTIME) /DWIN32 \
        $(__DEBUGINFO) /Fd$(OBJS)\test_gui.pdb $(____DEBUGRUNTIME) \
        $(__OPTIMIZEFLAG) $(__NO_VC_CRTDBG_p) /D__WXMSW__ $(__WXUNIV_DEFINE_p) \
@@ -550,6 +551,9 @@ $(OBJS)\test_atomic.obj: .\thread\atomic.cpp
 $(OBJS)\test_uris.obj: .\uris\uris.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) $**
 
 $(OBJS)\test_uris.obj: .\uris\uris.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) $**
 
+$(OBJS)\test_vectors.obj: .\vectors\vectors.cpp
+       $(CXX) /c /nologo /TP /Fo$@ $(TEST_CXXFLAGS) $**
+
 $(OBJS)\test_gui_dummy.obj: .\dummy.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) /Yctestprec.h $**
 
 $(OBJS)\test_gui_dummy.obj: .\dummy.cpp
        $(CXX) /c /nologo /TP /Fo$@ $(TEST_GUI_CXXFLAGS) /Yctestprec.h $**
 
index b200472846dbccbc17840f5faf26bb4b240423fc..666adb58d1556b9b3c324c58f26bead73cbc5538 100644 (file)
@@ -276,7 +276,8 @@ TEST_OBJECTS =  &
        $(OBJS)\test_zlibstream.obj &
        $(OBJS)\test_textfiletest.obj &
        $(OBJS)\test_atomic.obj &
        $(OBJS)\test_zlibstream.obj &
        $(OBJS)\test_textfiletest.obj &
        $(OBJS)\test_atomic.obj &
-       $(OBJS)\test_uris.obj
+       $(OBJS)\test_uris.obj &
+       $(OBJS)\test_vectors.obj
 TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
        $(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
        $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
 TEST_GUI_CXXFLAGS = $(__DEBUGINFO) $(__OPTIMIZEFLAG) $(__THREADSFLAG) &
        $(__RUNTIME_LIBS) -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) &
        $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) &
@@ -498,6 +499,9 @@ $(OBJS)\test_atomic.obj :  .AUTODEPEND .\thread\atomic.cpp
 $(OBJS)\test_uris.obj :  .AUTODEPEND .\uris\uris.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
 
 $(OBJS)\test_uris.obj :  .AUTODEPEND .\uris\uris.cpp
        $(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
 
+$(OBJS)\test_vectors.obj :  .AUTODEPEND .\vectors\vectors.cpp
+       $(CXX) -bt=nt -zq -fo=$^@ $(TEST_CXXFLAGS) $<
+
 $(OBJS)\test_gui_sample.res :  .AUTODEPEND .\..\samples\sample.rc
        wrc -q -ad -bt=nt -r -fo=$^@    -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p)  $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\include -i=. $(__DLLFLAG_p) -i=.\..\samples -dNOPCH $<
 
 $(OBJS)\test_gui_sample.res :  .AUTODEPEND .\..\samples\sample.rc
        wrc -q -ad -bt=nt -r -fo=$^@    -d__WXMSW__ $(__WXUNIV_DEFINE_p) $(__DEBUG_DEFINE_p) $(__EXCEPTIONS_DEFINE_p) $(__RTTI_DEFINE_p) $(__THREAD_DEFINE_p) $(__UNICODE_DEFINE_p)  $(__GFXCTX_DEFINE_p) -i=$(SETUPHDIR) -i=.\..\include -i=. $(__DLLFLAG_p) -i=.\..\samples -dNOPCH $<
 
index 925a6556dce2ac9418621ea594fa3080bdaef332..410c9fc718ba00e7ad5d84929df198186d217ed4 100644 (file)
@@ -66,6 +66,7 @@
             textfile/textfiletest.cpp
             thread/atomic.cpp
             uris/uris.cpp
             textfile/textfiletest.cpp
             thread/atomic.cpp
             uris/uris.cpp
+            vectors/vectors.cpp
         </sources>
         <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
         </sources>
         <wx-lib>net</wx-lib>
         <wx-lib>base</wx-lib>
index cc3c4d0407c07a177ee0dfc162c0150c9518a7ed..647f81e22108ca1dcbe4b2d7e44b95406ea7b722 100644 (file)
@@ -597,6 +597,10 @@ SOURCE=.\strings\vararg.cpp
 # End Source File\r
 # Begin Source File\r
 \r
 # End Source File\r
 # Begin Source File\r
 \r
+SOURCE=.\vectors\vectors.cpp\r
+# End Source File\r
+# Begin Source File\r
+\r
 SOURCE=.\strings\vsnprintf.cpp\r
 # End Source File\r
 # Begin Source File\r
 SOURCE=.\strings\vsnprintf.cpp\r
 # End Source File\r
 # Begin Source File\r
diff --git a/tests/vectors/vectors.cpp b/tests/vectors/vectors.cpp
new file mode 100644 (file)
index 0000000..ca75e21
--- /dev/null
@@ -0,0 +1,66 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        tests/vectors/vectors.cpp
+// Purpose:     wxVector<T> unit test
+// Author:      Vaclav Slavik
+// Created:     2007-07-07
+// RCS-ID:      $Id$
+// Copyright:   (c) 2007 Vaclav Slavik
+///////////////////////////////////////////////////////////////////////////////
+
+// ----------------------------------------------------------------------------
+// headers
+// ----------------------------------------------------------------------------
+
+#include "testprec.h"
+
+#ifdef __BORLANDC__
+    #pragma hdrstop
+#endif
+
+#ifndef WX_PRECOMP
+    #include "wx/wx.h"
+#endif // WX_PRECOMP
+
+#include "wx/vector.h"
+
+// --------------------------------------------------------------------------
+// test class
+// --------------------------------------------------------------------------
+
+class VectorsTestCase : public CppUnit::TestCase
+{
+public:
+    VectorsTestCase() {}
+
+private:
+    CPPUNIT_TEST_SUITE( VectorsTestCase );
+        CPPUNIT_TEST( PushTest );
+    CPPUNIT_TEST_SUITE_END();
+
+    void PushTest();
+
+    DECLARE_NO_COPY_CLASS(VectorsTestCase)
+};
+
+// register in the unnamed registry so that these tests are run by default
+CPPUNIT_TEST_SUITE_REGISTRATION( VectorsTestCase );
+
+// also include in it's own registry so that these tests can be run alone
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION( VectorsTestCase, "VectorsTestCase" );
+
+void VectorsTestCase::PushTest()
+{
+    wxVector<int> v;
+
+    CPPUNIT_ASSERT( v.size() == 0 );
+    v.push_back(1);
+    CPPUNIT_ASSERT( v.size() == 1 );
+    v.push_back(2);
+    CPPUNIT_ASSERT( v.size() == 2 );
+    v.push_back(42);
+    CPPUNIT_ASSERT( v.size() == 3 );
+
+    CPPUNIT_ASSERT( v[0] == 1 );
+    CPPUNIT_ASSERT( v[1] == 2 );
+    CPPUNIT_ASSERT( v[2] == 42 );
+}