]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/dynarray.h
addind nonowned window implementation
[wxWidgets.git] / interface / dynarray.h
index d4c824ef56b808b9388d683552f8c1ed3972806c..fbb76b2f069d4b06d5604e739f79d50576c9cb61 100644 (file)
@@ -7,7 +7,6 @@
 /////////////////////////////////////////////////////////////////////////////
 
 /**
-    @class wxArrayT
     @wxheader{dynarray.h}
 
     This section describes the so called @e dynamic arrays. This is a C
     @library{wxbase}
     @category{FIXME}
 
-    @see @ref overview_wxcontaineroverview, wxListT(), wxVectorT()
+    @see @ref overview_container, wxList<T>, wxVector<T>
 */
 class wxArray<T>
 {
@@ -192,15 +191,15 @@ public:
 
     /**
         wxArray::Add
-        
+
         wxArray::AddAt
-        
+
         wxArray::Insert
-        
+
         wxArray::SetCount
-        
+
         WX_APPEND_ARRAY()
-        
+
         WX_PREPEND_ARRAY()
     */
 
@@ -230,9 +229,9 @@ public:
         never use wxBaseArray anyhow it shouldn't be a problem) and that you should not
         derive your own classes from the array classes.
         @ref wxArray::ctordef "wxArray default constructor"
-        
+
         @ref wxArray::ctorcopy "wxArray copy constructors and assignment operators"
-        
+
         @ref wxArray::dtor ~wxArray
     */
 
@@ -349,25 +348,25 @@ public:
         WX_DECLARE_OBJARRAY macros and must be fully declared before you use
         WX_DEFINE_OBJARRAY macro.
         WX_DEFINE_ARRAY()
-        
+
         WX_DEFINE_EXPORTED_ARRAY()
-        
+
         WX_DEFINE_USER_EXPORTED_ARRAY()
-        
+
         WX_DEFINE_SORTED_ARRAY()
-        
+
         WX_DEFINE_SORTED_EXPORTED_ARRAY()
-        
+
         WX_DEFINE_SORTED_USER_EXPORTED_ARRAY()
-        
+
         WX_DECLARE_EXPORTED_OBJARRAY()
-        
+
         WX_DECLARE_USER_EXPORTED_OBJARRAY()
-        
+
         WX_DEFINE_OBJARRAY()
-        
+
         WX_DEFINE_EXPORTED_OBJARRAY()
-        
+
         WX_DEFINE_USER_EXPORTED_OBJARRAY()
         To slightly complicate the matters even further, the operator - defined by
         default for the array iterators by these macros only makes sense if the array
@@ -375,33 +374,33 @@ public:
         provokes warnings from some compilers and to avoid them you should use the
         @c _PTR versions of the macros above. For example, to define an array of
         pointers to @c double you should use:
-        
+
         Note that the above macros are generally only useful for
         wxObject types.  There are separate macros for declaring an array of a simple
         type,
         such as an int.
         The following simple types are supported:
-        
+
         int
-        
+
         long
-        
+
         size_t
-        
+
         double
         To create an array of a simple type, simply append the type you want in CAPS to
         the array definition.
         For example, for an integer array, you'd use one of the following variants:
         WX_DEFINE_ARRAY_INT()
-        
+
         WX_DEFINE_EXPORTED_ARRAY_INT()
-        
+
         WX_DEFINE_USER_EXPORTED_ARRAY_INT()
-        
+
         WX_DEFINE_SORTED_ARRAY_INT()
-        
+
         WX_DEFINE_SORTED_EXPORTED_ARRAY_INT()
-        
+
         WX_DEFINE_SORTED_USER_EXPORTED_ARRAY_INT()
     */
 
@@ -420,7 +419,7 @@ public:
         going to put in the array and will prevent the array code from reallocating the
         memory more times than needed.
         wxArray::Alloc
-        
+
         wxArray::Shrink
     */
 
@@ -430,11 +429,11 @@ public:
         retrieve them - possibly using just the C array indexing [] operator which
         does exactly the same as wxArray::Item method.
         wxArray::GetCount
-        
+
         wxArray::IsEmpty
-        
+
         wxArray::Item
-        
+
         wxArray::Last
     */
 
@@ -447,7 +446,7 @@ public:
         Detach() if you don't want this to happen. On the
         other hand, when an object is removed from a wxArray nothing happens - you
         should delete it manually if required:
-        
+
         See also WX_CLEAR_ARRAY() macro which deletes all
         elements of a wxArray (supposed to contain pointers).
     */
@@ -459,7 +458,7 @@ public:
         Detach() if you don't want this to happen. On
         the other hand, when an object is removed from a wxArray nothing happens -
         you should delete it manually if required:
-        
+
         See also WX_CLEAR_ARRAY() macro which deletes all
         elements of a wxArray (supposed to contain pointers).
     */
@@ -467,22 +466,22 @@ public:
 
     /**
         WX_CLEAR_ARRAY()
-        
+
         wxArray::Empty
-        
+
         wxArray::Clear
-        
+
         wxArray::RemoveAt
-        
+
         wxArray::Remove
     */
 
 
     /**
         wxArray::Index
-        
+
         wxArray::IndexForInsert
-        
+
         wxArray::Sort
     */
 
@@ -493,7 +492,7 @@ public:
         @e count. If the array has already @a count or more items, nothing is
         done. Otherwise, @c count - GetCount() elements are added and initialized to
         the value @e defval.
-        
+
         @see wxArray::GetCount
     */
     void SetCount(size_t count);
@@ -508,7 +507,7 @@ public:
 
     /**
         The notation CMPFUNCT should be read as if we had the following declaration:
-        
+
         where @e T is the type of the array elements. I.e. it is a function returning
         @e int which is passed two arguments of type @e T *.
         Sorts the array using the specified compare function: this function should
@@ -518,92 +517,6 @@ public:
     */
     void Sort(CMPFUNC<T> compareFunction);
 
-    /**
-        This macro may be used to append all elements of the @a other array to the
-        @e array. The two arrays must be of the same type.
-    */
-#define void WX_APPEND_ARRAY(wxArray& array, wxArray& other)     /* implementation is private */
-
-    /**
-        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 anyhow
-        when you call Empty().
-    */
-#define void WX_CLEAR_ARRAY(wxArray& array)     /* implementation is private */
-
-    //@{
-    /**
-        This macro declares a new object array class named @a name and containing
-        the elements of type @e T. The second form is used when compiling wxWidgets as
-        a DLL under Windows and array needs to be visible outside the DLL.  The third is
-        needed for exporting an array from a user DLL.
-        Example:
-        
-        You must use WX_DEFINE_OBJARRAY() macro to define
-        the array class - otherwise you would get link errors.
-    */
-    WX_DECLARE_OBJARRAY(T, name);
-    WX_DECLARE_EXPORTED_OBJARRAY(T, name);
-    WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name);
-    //@}
-
-    //@{
-    /**
-        This macro defines a new array class named @a name and containing the
-        elements of type @e T. The second form is used when compiling wxWidgets as
-        a DLL under Windows and array needs to be visible outside the DLL.  The third is
-        needed for exporting an array from a user DLL.
-        Example:
-        
-        Note that wxWidgets predefines the following standard array classes: @b
-        wxArrayInt,
-        @b wxArrayLong, @b wxArrayShort, @b wxArrayDouble,  @b wxArrayPtrVoid.
-    */
-    WX_DEFINE_ARRAY(T, name);
-    WX_DEFINE_EXPORTED_ARRAY(T, name);
-    WX_DEFINE_USER_EXPORTED_ARRAY(T, name, exportspec);
-    //@}
-
-    //@{
-    /**
-        This macro defines the methods of the array class @a name not defined by the
-        WX_DECLARE_OBJARRAY() macro. You must include the
-        file wx/arrimpl.cpp before using this macro and you must have the full
-        declaration of the class of array elements in scope! If you forget to do the
-        first, the error will be caught by the compiler, but, unfortunately, many
-        compilers will not give any warnings if you forget to do the second - but the
-        objects of the class will not be copied correctly and their real destructor will
-        not be called.  The latter two forms are merely aliases of the first to satisfy
-        some people's sense of symmetry when using the exported declarations.
-        Example of usage:
-    */
-    WX_DEFINE_OBJARRAY(name);
-    WX_DEFINE_EXPORTED_OBJARRAY(name);
-    WX_DEFINE_USER_EXPORTED_OBJARRAY(name);
-    //@}
-
-    //@{
-    /**
-        This macro defines a new sorted array class named @a name and containing
-        the elements of type @e T. The second form is used when compiling wxWidgets as
-        a DLL under Windows and array needs to be visible outside the DLL.  The third is
-        needed for exporting an array from a user DLL.
-        Example:
-        
-        You will have to initialize the objects of this class by passing a comparison
-        function to the array object constructor like this:
-    */
-    WX_DEFINE_SORTED_ARRAY(T, name);
-    WX_DEFINE_SORTED_EXPORTED_ARRAY(T, name);
-    WX_DEFINE_SORTED_USER_EXPORTED_ARRAY(T, name);
-    //@}
-
-    /**
-        This macro may be used to prepend all elements of the @a other array to the
-        @e array. The two arrays must be of the same type.
-    */
-#define void WX_PREPEND_ARRAY(wxArray& array, wxArray& other)     /* implementation is private */
-
     //@{
     /**
         The copy constructors and assignment operators perform a shallow array copy
@@ -631,3 +544,89 @@ public:
     //@}
 };
 
+
+/**
+    This macro may be used to append all elements of the @a other array to the
+    @e array. The two arrays must be of the same type.
+*/
+#define WX_APPEND_ARRAY(wxArray& array, wxArray& other)     /* implementation is private */
+
+/**
+    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 anyhow
+    when you call Empty().
+*/
+#define WX_CLEAR_ARRAY(wxArray& array)     /* implementation is private */
+
+//@{
+/**
+    This macro declares a new object array class named @a name and containing
+    the elements of type @e T. The second form is used when compiling wxWidgets as
+    a DLL under Windows and array needs to be visible outside the DLL.  The third is
+    needed for exporting an array from a user DLL.
+    Example:
+
+    You must use WX_DEFINE_OBJARRAY() macro to define
+    the array class - otherwise you would get link errors.
+*/
+#define WX_DECLARE_OBJARRAY(T, name)                   /* implementation is private */
+#define WX_DECLARE_EXPORTED_OBJARRAY(T, name)          /* implementation is private */
+#define WX_DECLARE_USER_EXPORTED_OBJARRAY(T, name)     /* implementation is private */
+//@}
+
+//@{
+/**
+    This macro defines a new array class named @a name and containing the
+    elements of type @e T. The second form is used when compiling wxWidgets as
+    a DLL under Windows and array needs to be visible outside the DLL.  The third is
+    needed for exporting an array from a user DLL.
+    Example:
+
+    Note that wxWidgets predefines the following standard array classes: @b
+    wxArrayInt,
+    @b wxArrayLong, @b wxArrayShort, @b wxArrayDouble,  @b wxArrayPtrVoid.
+*/
+#define WX_DEFINE_ARRAY(T, name)                            /* implementation is private */
+#define WX_DEFINE_EXPORTED_ARRAY(T, name)                   /* implementation is private */
+#define WX_DEFINE_USER_EXPORTED_ARRAY(T, name, exportspec)  /* implementation is private */
+//@}
+
+//@{
+/**
+    This macro defines the methods of the array class @a name not defined by the
+    WX_DECLARE_OBJARRAY() macro. You must include the
+    file wx/arrimpl.cpp before using this macro and you must have the full
+    declaration of the class of array elements in scope! If you forget to do the
+    first, the error will be caught by the compiler, but, unfortunately, many
+    compilers will not give any warnings if you forget to do the second - but the
+    objects of the class will not be copied correctly and their real destructor will
+    not be called.  The latter two forms are merely aliases of the first to satisfy
+    some people's sense of symmetry when using the exported declarations.
+    Example of usage:
+*/
+#define WX_DEFINE_OBJARRAY(name)                    /* implementation is private */
+#define WX_DEFINE_EXPORTED_OBJARRAY(name)           /* implementation is private */
+#define WX_DEFINE_USER_EXPORTED_OBJARRAY(name)      /* implementation is private */
+//@}
+
+//@{
+/**
+    This macro defines a new sorted array class named @a name and containing
+    the elements of type @e T. The second form is used when compiling wxWidgets as
+    a DLL under Windows and array needs to be visible outside the DLL.  The third is
+    needed for exporting an array from a user DLL.
+    Example:
+
+    You will have to initialize the objects of this class by passing a comparison
+    function to the array object constructor like this:
+*/
+#define WX_DEFINE_SORTED_ARRAY(T, name)                 /* implementation is private */
+#define WX_DEFINE_SORTED_EXPORTED_ARRAY(T, name)        /* implementation is private */
+#define WX_DEFINE_SORTED_USER_EXPORTED_ARRAY(T, name)   /* implementation is private */
+//@}
+
+/**
+    This macro may be used to prepend all elements of the @a other array to the
+    @e array. The two arrays must be of the same type.
+*/
+#define WX_PREPEND_ARRAY(wxArray& array, wxArray& other)     /* implementation is private */