]> git.saurik.com Git - wxWidgets.git/blobdiff - docs/latex/wx/array.tex
added and documented wxSize::IsFullySpecified() and SetDefaults()
[wxWidgets.git] / docs / latex / wx / array.tex
index 1918006e7478ebfeac7c1a7011b5ef294a5d5bf9..e814dfad1e1468c20b4bb9a5b89811c2893a3fa8 100644 (file)
@@ -97,7 +97,7 @@ class MyDirectory
 // now that we have MyDirectory declaration in scope we may finish the
 // definition of ArrayOfDirectories -- note that this expands into some C++
 // code and so should only be compiled once (i.e., don't put this in the
-// header, but into a source file or you will get linkin errors)
+// header, but into a source file or you will get linking errors)
 #include <wx/arrimpl.cpp> // this is a magic incantation which must be done!
 WX_DEFINE_OBJARRAY(ArrayOfDirectories);
 
@@ -117,10 +117,14 @@ Things are much simpler for wxArray and wxSortedArray however: it is enough
 just to write
 
 \begin{verbatim} 
-WX_DEFINE_ARRAY(MyDirectory *, ArrayOfDirectories);
-WX_DEFINE_SORTED_ARRAY(MyFile *, ArrayOfFiles);
+WX_DEFINE_ARRAY(int, ArrayOfDirectories);
+WX_DEFINE_SORTED_ARRAY(int, ArrayOfFiles);
 \end{verbatim}
 
+i.e. there is only one {\tt DEFINE} macro and no need for separate 
+{\tt DECLARE} one.
+
+
 \wxheading{See also:}
 
 \helpref{Container classes overview}{wxcontaineroverview}, \helpref{wxList}{wxlist}
@@ -152,6 +156,17 @@ WX\_DEFINE\_OBJARRAY macro.
 \helpref{WX\_DEFINE\_EXPORTED\_OBJARRAY}{wxdefineobjarray}\\
 \helpref{WX\_DEFINE\_USER\_EXPORTED\_OBJARRAY}{wxdefineobjarray}
 
+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
+element type is not a pointer itself and, although it still works, this
+provokes warnings from some compilers and to avoid them you should use the 
+{\tt \_PTR} versions of the macros above. For example, to define an array of
+pointers to {\tt double} you should use
+
+\begin{verbatim} 
+WX_DEFINE_ARRAY_PTR(double *, MyArrayOfDoublePointers);
+\end{verbatim}
+
 \membersection{Constructors and destructors}
 
 Array classes are 100\% C++ objects and as such they have the appropriate copy
@@ -177,7 +192,7 @@ amount, but no more than some maximal number which is defined by
 ARRAY\_MAXSIZE\_INCREMENT constant. Of course, this may lead to some memory
 being wasted (ARRAY\_MAXSIZE\_INCREMENT in the worst case, i.e. 4Kb in the
 current implementation), so the \helpref{Shrink()}{wxarrayshrink} function is
-provided to unallocate the extra memory. The \helpref{Alloc()}{wxarrayalloc} 
+provided to deallocate the extra memory. The \helpref{Alloc()}{wxarrayalloc} 
 function can also be quite useful if you know in advance how many items you are
 going to put in the array and will prevent the array code from reallocating the
 memory more times than needed.
@@ -201,6 +216,7 @@ does exactly the same as \helpref{Item()}{wxarrayitem} method.
 
 \helpref{Add}{wxarrayadd}\\
 \helpref{Insert}{wxarrayinsert}\\
+\helpref{SetCount}{wxarraysetcount}\\
 \helpref{WX\_APPEND\_ARRAY}{wxappendarray}
 
 \membersection{Removing items}
@@ -307,7 +323,7 @@ Example:
 
 \begin{verbatim}
 class MyClass;
-WX_DEFINE_OBJARRAY(MyClass, wxArrayOfMyClass); // note: not "MyClass *"!
+WX_DECLARE_OBJARRAY(MyClass, wxArrayOfMyClass); // note: not "MyClass *"!
 \end{verbatim}
 
 You must use \helpref{WX\_DEFINE\_OBJARRAY()}{wxdefineobjarray} macro to define
@@ -485,7 +501,7 @@ Return the number of items in the array.
 
 \membersection{wxArray::Index}\label{wxarrayindex}
 
-\func{int}{Index}{\param{T\& }{item}, \param{bool }{searchFromEnd = FALSE}}
+\func{int}{Index}{\param{T\& }{item}, \param{bool }{searchFromEnd = false}}
 
 \func{int}{Index}{\param{T\& }{item}}
 
@@ -526,7 +542,7 @@ between the overloaded versions of this function.
 
 \constfunc{bool}{IsEmpty}{\void}
 
-Returns TRUE if the array is empty, FALSE otherwise.
+Returns true if the array is empty, false otherwise.
 
 \membersection{wxArray::Item}\label{wxarrayitem}
 
@@ -573,7 +589,7 @@ elements of a wxArray (supposed to contain pointers).
 
 \membersection{wxArray::RemoveAt}\label{wxarrayremoveat}
 
-\func{\void}{RemoveAt}{\param{size\_t }{index}, \param{size\_t }{count = $1$}
+\func{\void}{RemoveAt}{\param{size\_t }{index}, \param{size\_t }{count = $1$}}
 
 Removes {\it count} elements starting at {\it index} from the array. When an
 element is removed from wxObjArray it is deleted by the array - use
@@ -590,6 +606,19 @@ array.RemoveAt(n)
 See also \helpref{WX\_CLEAR\_ARRAY}{wxcleararray} macro which deletes all
 elements of a wxArray (supposed to contain pointers).
 
+\membersection{wxArray::SetCount}\label{wxarraysetcount}
+
+\func{void}{SetCount}{\param{size\_t }{count}, \param{T }{defval = T($0$)}}
+
+This function ensures that the number of array elements is at least 
+{\it count}. If the array has already {\it count} or mroe items, nothing is
+done. Otherwise, {\tt count - GetCount()} elements are added and initialized to
+the value {\it defval}.
+
+\wxheading{See also}
+
+\helpref{GetCount}{wxarraygetcount}
+
 \membersection{wxArray::Shrink}\label{wxarrayshrink}
 
 \func{void}{Shrink}{\void}