]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/dynarray.h
don't place NULL pointers in the GDK window array in GTKGetWindow()
[wxWidgets.git] / interface / wx / dynarray.h
index 54e1f22f737c7b83870ea75db8c9e281356acbd3..6001afe7454bd485705d3b8d00ea6d5c6bb21775 100644 (file)
     - WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_INT()
 
 
     - WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_INT()
 
 
+    @section array_predef Predefined array types
+
+    wxWidgets defines the following dynamic array types:
+    - ::wxArrayShort
+    - ::wxArrayInt
+    - ::wxArrayDouble
+    - ::wxArrayLong
+    - ::wxArrayPtrVoid
+
+    To use them you don't need any macro; you just need to include @c dynarray.h.
+
+
     @library{wxbase}
     @category{containers}
 
     @see @ref overview_container, wxList<T>, wxVector<T>
 */
     @library{wxbase}
     @category{containers}
 
     @see @ref overview_container, wxList<T>, wxVector<T>
 */
+template <typename T>
 class wxArray<T>
 {
 public:
 class wxArray<T>
 {
 public:
@@ -224,10 +237,12 @@ public:
         Default constructor.
     */
     wxArray();
         Default constructor.
     */
     wxArray();
+
     /**
         Default constructor initializes an empty array object.
     */
     wxObjArray();
     /**
         Default constructor initializes an empty array object.
     */
     wxObjArray();
+
     /**
         There is no default constructor for wxSortedArray classes - you must
         initialize it with a function to use for item comparison. It is a
     /**
         There is no default constructor for wxSortedArray classes - you must
         initialize it with a function to use for item comparison. It is a
@@ -243,11 +258,13 @@ public:
         even if the source array contains the items of pointer type).
     */
     wxArray(const wxArray& array);
         even if the source array contains the items of pointer type).
     */
     wxArray(const wxArray& array);
+
     /**
         Performs a shallow array copy (i.e. doesn't copy the objects pointed to
         even if the source array contains the items of pointer type).
     */
     wxSortedArray(const wxSortedArray& array);
     /**
         Performs a shallow array copy (i.e. doesn't copy the objects pointed to
         even if the source array contains the items of pointer type).
     */
     wxSortedArray(const wxSortedArray& array);
+
     /**
         Performs a deep copy (i.e. the array element are copied too).
     */
     /**
         Performs a deep copy (i.e. the array element are copied too).
     */
@@ -258,11 +275,13 @@ public:
         even if the source array contains the items of pointer type).
     */
     wxArray& operator=(const wxArray& array);
         even if the source array contains the items of pointer type).
     */
     wxArray& operator=(const wxArray& array);
+
     /**
         Performs a shallow array copy (i.e. doesn't copy the objects pointed to
         even if the source array contains the items of pointer type).
     */
     wxSortedArray& operator=(const wxSortedArray& array);
     /**
         Performs a shallow array copy (i.e. doesn't copy the objects pointed to
         even if the source array contains the items of pointer type).
     */
     wxSortedArray& operator=(const wxSortedArray& array);
+
     /**
         Performs a deep copy (i.e. the array element are copied too).
     */
     /**
         Performs a deep copy (i.e. the array element are copied too).
     */
@@ -273,11 +292,13 @@ public:
         may use the WX_CLEAR_ARRAY() macro for this.
     */
     ~wxArray();
         may use the WX_CLEAR_ARRAY() macro for this.
     */
     ~wxArray();
+
     /**
         This destructor does not delete all the items owned by the array, you
         may use the WX_CLEAR_ARRAY() macro for this.
     */
     ~wxSortedArray();
     /**
         This destructor does not delete all the items owned by the array, you
         may use the WX_CLEAR_ARRAY() macro for this.
     */
     ~wxSortedArray();
+
     /**
         This destructor deletes all the items owned by the array.
     */
     /**
         This destructor deletes all the items owned by the array.
     */
@@ -384,6 +405,7 @@ public:
         a lot of items.
     */
     void Add(T item, size_t copies = 1);
         a lot of items.
     */
     void Add(T item, size_t copies = 1);
+
     /**
         Appends the @a item to the array consisting of the elements of type
         @c T.
     /**
         Appends the @a item to the array consisting of the elements of type
         @c T.
@@ -392,6 +414,7 @@ public:
         @a item is stored.
     */
     size_t Add(T item);
         @a item is stored.
     */
     size_t Add(T item);
+
     /**
         Appends the @a item to the array consisting of the elements of type
         @c T.
     /**
         Appends the @a item to the array consisting of the elements of type
         @c T.
@@ -407,6 +430,7 @@ public:
         a lot of items.
     */
     void Add(T* item);
         a lot of items.
     */
     void Add(T* item);
+
     /**
         Appends the given number of @a copies of the @a item to the array
         consisting of the elements of type @c T.
     /**
         Appends the given number of @a copies of the @a item to the array
         consisting of the elements of type @c T.
@@ -445,6 +469,7 @@ public:
         overloaded versions of this function.
     */
     void Insert(T item, size_t n, size_t copies = 1);
         overloaded versions of this function.
     */
     void Insert(T item, size_t n, size_t copies = 1);
+
     /**
         Insert the @a item into the array before the existing item @a n - thus,
         @e Insert(something, 0u) will insert an item in such way that it will
     /**
         Insert the @a item into the array before the existing item @a n - thus,
         @e Insert(something, 0u) will insert an item in such way that it will
@@ -457,6 +482,7 @@ public:
         overloaded versions of this function.
     */
     void Insert(T* item, size_t n);
         overloaded versions of this function.
     */
     void Insert(T* item, size_t n);
+
     /**
         Insert the given number of @a copies of the @a item into the array
         before the existing item @a n - thus, @e Insert(something, 0u) will
     /**
         Insert the given number of @a copies of the @a item into the array
         before the existing item @a n - thus, @e Insert(something, 0u) will
@@ -520,14 +546,16 @@ public:
 
         @code
         T *item = array[n];
 
         @code
         T *item = array[n];
+        array.Remove(item);
         delete item;
         delete item;
-        array.Remove(n);
         @endcode
 
         See also WX_CLEAR_ARRAY() macro which deletes all elements of a wxArray
         (supposed to contain pointers).
         @endcode
 
         See also WX_CLEAR_ARRAY() macro which deletes all elements of a wxArray
         (supposed to contain pointers).
+
+        @see RemoveAt()
     */
     */
-    Remove(T item);
+    void Remove(T item);
 
     /**
         Removes @a count elements starting at @a index from the array. When an
 
     /**
         Removes @a count elements starting at @a index from the array. When an
@@ -545,7 +573,7 @@ public:
         See also WX_CLEAR_ARRAY() macro which deletes all elements of a wxArray
         (supposed to contain pointers).
     */
         See also WX_CLEAR_ARRAY() macro which deletes all elements of a wxArray
         (supposed to contain pointers).
     */
-    RemoveAt(size_t index, size_t count = 1);
+    void RemoveAt(size_t index, size_t count = 1);
 
     //@}
 
 
     //@}
 
@@ -570,6 +598,7 @@ public:
               another, identical, element is in the array.
     */
     int Index(T& item, bool searchFromEnd = false) const;
               another, identical, element is in the array.
     */
     int Index(T& item, bool searchFromEnd = false) const;
+
     /**
         This version of Index() is for wxSortedArray only.
 
     /**
         This version of Index() is for wxSortedArray only.
 
@@ -578,7 +607,7 @@ public:
         @c wxNOT_FOUND is returned if the element is not found, otherwise the
         index of the element is returned.
     */
         @c wxNOT_FOUND is returned if the element is not found, otherwise the
         index of the element is returned.
     */
-    const int Index(T& item) const;
+    int Index(T& item) const;
 
     /**
         Search for a place to insert @a item into the sorted array (binary
 
     /**
         Search for a place to insert @a item into the sorted array (binary
@@ -619,17 +648,17 @@ public:
 
 
 /**
 
 
 /**
-    This macro may be used to append all elements of the @a other array to the
-    @a array. The two arrays must be of the same type.
+    This macro may be used to append all elements of the @a wxArray_arrayToBeAppended
+    array to the @a wxArray_arrayToModify. The two arrays must be of the same type.
 */
 */
-#define WX_APPEND_ARRAY(wxArray& array, wxArray& other)
+#define WX_APPEND_ARRAY(wxArray_arrayToModify, wxArray_arrayToBeAppended)
 
 /**
     This macro may be used to delete all elements of the array before emptying
     it. It can not be used with wxObjArrays - but they will delete their
     elements anyway when you call Empty().
 */
 
 /**
     This macro may be used to delete all elements of the array before emptying
     it. It can not be used with wxObjArrays - but they will delete their
     elements anyway when you call Empty().
 */
-#define WX_CLEAR_ARRAY(wxArray& array)
+#define WX_CLEAR_ARRAY(wxArray_arrayToBeCleared)
 
 //@{
 /**
 
 //@{
 /**
@@ -764,8 +793,18 @@ public:
 //@}
 
 /**
 //@}
 
 /**
-    This macro may be used to prepend all elements of the @a other array to the
-    @a array. The two arrays must be of the same type.
+    This macro may be used to prepend all elements of the @a wxArray_arrayToBePrepended
+    array to the @a wxArray_arrayToModify. The two arrays must be of the same type.
 */
 */
-#define WX_PREPEND_ARRAY(wxArray& array, wxArray& other)
+#define WX_PREPEND_ARRAY(wxArray_arrayToModify, wxArray_arrayToBePrepended)
 
 
+//@{
+/**
+    Predefined specialization of wxArray<T> for standard types.
+*/
+typedef wxArray<int> wxArrayInt;
+typedef wxArray<long> wxArrayLong;
+typedef wxArray<short> wxArrayShort;
+typedef wxArray<double> wxArrayDouble;
+typedef wxArray<void*> wxArrayPtrVoid;
+//@}