git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36191 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -1,3 +1,14 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Name: array.tex
|
||||||
|
%% Purpose: wxArray
|
||||||
|
%% Author: wxWidgets Team
|
||||||
|
%% Modified by:
|
||||||
|
%% Created:
|
||||||
|
%% RCS-ID: $Id$
|
||||||
|
%% Copyright: (c) wxWidgets Team
|
||||||
|
%% License: wxWindows license
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
\section{\class{wxArray}}\label{wxarray}
|
\section{\class{wxArray}}\label{wxarray}
|
||||||
|
|
||||||
This section describes the so called {\it dynamic arrays}. This is a C
|
This section describes the so called {\it dynamic arrays}. This is a C
|
||||||
@@ -51,7 +62,7 @@ wxArrayDouble class is scheduled for the next release of wxWidgets).
|
|||||||
wxSortedArray is a wxArray variant which should be used when searching in the
|
wxSortedArray is a wxArray variant which should be used when searching in the
|
||||||
array is a frequently used operation. It requires you to define an additional
|
array is a frequently used operation. It requires you to define an additional
|
||||||
function for comparing two elements of the array element type and always stores
|
function for comparing two elements of the array element type and always stores
|
||||||
its items in the sorted order (according to this function). Thus, it is
|
its items in the sorted order (according to this function). Thus, it is
|
||||||
\helpref{Index()}{wxarrayindex} function execution time is $O(log(N))$ instead of
|
\helpref{Index()}{wxarrayindex} function execution time is $O(log(N))$ instead of
|
||||||
$O(N)$ for the usual arrays but the \helpref{Add()}{wxarrayadd} method is
|
$O(N)$ for the usual arrays but the \helpref{Add()}{wxarrayadd} method is
|
||||||
slower: it is $O(log(N))$ instead of constant time (neglecting time spent in
|
slower: it is $O(log(N))$ instead of constant time (neglecting time spent in
|
||||||
@@ -106,7 +117,7 @@ WX_DEFINE_OBJARRAY(ArrayOfDirectories);
|
|||||||
|
|
||||||
It is not as elegant as writing
|
It is not as elegant as writing
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
typedef std::vector<MyDirectory> ArrayOfDirectories;
|
typedef std::vector<MyDirectory> ArrayOfDirectories;
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
@@ -116,12 +127,12 @@ dumb, C++ compiler in the world.
|
|||||||
Things are much simpler for wxArray and wxSortedArray however: it is enough
|
Things are much simpler for wxArray and wxSortedArray however: it is enough
|
||||||
just to write
|
just to write
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
WX_DEFINE_ARRAY(int, ArrayOfDirectories);
|
WX_DEFINE_ARRAY(int, ArrayOfDirectories);
|
||||||
WX_DEFINE_SORTED_ARRAY(int, ArrayOfFiles);
|
WX_DEFINE_SORTED_ARRAY(int, ArrayOfFiles);
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
i.e. there is only one {\tt DEFINE} macro and no need for separate
|
i.e. there is only one {\tt DEFINE} macro and no need for separate
|
||||||
{\tt DECLARE} one.
|
{\tt DECLARE} one.
|
||||||
|
|
||||||
|
|
||||||
@@ -159,12 +170,16 @@ WX\_DEFINE\_OBJARRAY macro.
|
|||||||
To slightly complicate the matters even further, the operator $->$ defined by
|
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
|
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
|
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
|
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
|
{\tt \_PTR} versions of the macros above. For example, to define an array of
|
||||||
pointers to {\tt double} you should use.
|
pointers to {\tt double} you should use:
|
||||||
|
|
||||||
Note that the above macros are generally only useful for
|
\begin{verbatim}
|
||||||
wxObject types. There are separate macros for declaring an array of a simple type,
|
WX_DEFINE_ARRAY_PTR(double *, MyArrayOfDoublePointers);
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
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.
|
such as an int.
|
||||||
|
|
||||||
The following simple types are supported:\\
|
The following simple types are supported:\\
|
||||||
@@ -185,10 +200,6 @@ For example, for an integer array, you'd use one of the following variants:
|
|||||||
\helpref{WX\_DEFINE\_SORTED\_EXPORTED\_ARRAY\_INT}{wxdefinesortedarray}\\
|
\helpref{WX\_DEFINE\_SORTED\_EXPORTED\_ARRAY\_INT}{wxdefinesortedarray}\\
|
||||||
\helpref{WX\_DEFINE\_SORTED\_USER\_EXPORTED\_ARRAY\_INT}{wxdefinesortedarray}\\
|
\helpref{WX\_DEFINE\_SORTED\_USER\_EXPORTED\_ARRAY\_INT}{wxdefinesortedarray}\\
|
||||||
|
|
||||||
\begin{verbatim}
|
|
||||||
WX_DEFINE_ARRAY_PTR(double *, MyArrayOfDoublePointers);
|
|
||||||
\end{verbatim}
|
|
||||||
|
|
||||||
\membersection{Constructors and destructors}\label{arrayconstructorsdestructors}
|
\membersection{Constructors and destructors}\label{arrayconstructorsdestructors}
|
||||||
|
|
||||||
Array classes are 100\% C++ objects and as such they have the appropriate copy
|
Array classes are 100\% C++ objects and as such they have the appropriate copy
|
||||||
@@ -214,7 +225,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
|
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
|
being wasted (ARRAY\_MAXSIZE\_INCREMENT in the worst case, i.e. 4Kb in the
|
||||||
current implementation), so the \helpref{Shrink()}{wxarrayshrink} function is
|
current implementation), so the \helpref{Shrink()}{wxarrayshrink} function is
|
||||||
provided to deallocate 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
|
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
|
going to put in the array and will prevent the array code from reallocating the
|
||||||
memory more times than needed.
|
memory more times than needed.
|
||||||
@@ -277,7 +288,7 @@ needed for exporting an array from a user DLL.
|
|||||||
Example:
|
Example:
|
||||||
|
|
||||||
\begin{verbatim}
|
\begin{verbatim}
|
||||||
WX_DEFINE_ARRAY_INT(wxArrayInt);
|
WX_DEFINE_ARRAY_INT(int, wxArrayInt);
|
||||||
|
|
||||||
class MyClass;
|
class MyClass;
|
||||||
WX_DEFINE_ARRAY(MyClass *, wxArrayOfMyClass);
|
WX_DEFINE_ARRAY(MyClass *, wxArrayOfMyClass);
|
||||||
@@ -359,10 +370,10 @@ the array class - otherwise you would get link errors.
|
|||||||
|
|
||||||
\func{}{WX\_DEFINE\_USER\_EXPORTED\_OBJARRAY}{\param{}{name}}
|
\func{}{WX\_DEFINE\_USER\_EXPORTED\_OBJARRAY}{\param{}{name}}
|
||||||
|
|
||||||
This macro defines the methods of the array class {\it name} not defined by the
|
This macro defines the methods of the array class {\it name} not defined by the
|
||||||
\helpref{WX\_DECLARE\_OBJARRAY()}{wxdeclareobjarray} macro. You must include the
|
\helpref{WX\_DECLARE\_OBJARRAY()}{wxdeclareobjarray} macro. You must include the
|
||||||
file <wx/arrimpl.cpp> before using this macro and you must have the full
|
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
|
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
|
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
|
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
|
objects of the class will not be copied correctly and their real destructor will
|
||||||
@@ -391,7 +402,7 @@ WX_DEFINE_OBJARRAY(wxArrayOfMyClass);
|
|||||||
|
|
||||||
\func{void}{WX\_APPEND\_ARRAY}{\param{wxArray\& }{array}, \param{wxArray\& }{other}}
|
\func{void}{WX\_APPEND\_ARRAY}{\param{wxArray\& }{array}, \param{wxArray\& }{other}}
|
||||||
|
|
||||||
This macro may be used to append all elements of the {\it other} array to the
|
This macro may be used to append all elements of the {\it other} array to the
|
||||||
{\it array}. The two arrays must be of the same type.
|
{\it array}. The two arrays must be of the same type.
|
||||||
|
|
||||||
\membersection{WX\_CLEAR\_ARRAY}\label{wxcleararray}
|
\membersection{WX\_CLEAR\_ARRAY}\label{wxcleararray}
|
||||||
@@ -446,7 +457,7 @@ the array element are copied too) for wxObjArray.
|
|||||||
\func{}{\destruct{wxObjArray}}{\void}
|
\func{}{\destruct{wxObjArray}}{\void}
|
||||||
|
|
||||||
The wxObjArray destructor deletes all the items owned by the array. This is not
|
The wxObjArray destructor deletes all the items owned by the array. This is not
|
||||||
done by wxArray and wxSortedArray versions - you may use
|
done by wxArray and wxSortedArray versions - you may use
|
||||||
\helpref{WX\_CLEAR\_ARRAY}{wxcleararray} macro for this.
|
\helpref{WX\_CLEAR\_ARRAY}{wxcleararray} macro for this.
|
||||||
|
|
||||||
\membersection{wxArray::Add}\label{wxarrayadd}
|
\membersection{wxArray::Add}\label{wxarrayadd}
|
||||||
@@ -471,7 +482,7 @@ that you cannot append more than one pointer as reusing it would lead to
|
|||||||
deleting it twice (or more) and hence to a crash.
|
deleting it twice (or more) and hence to a crash.
|
||||||
|
|
||||||
You may also use \helpref{WX\_APPEND\_ARRAY}{wxappendarray} macro to append all
|
You may also use \helpref{WX\_APPEND\_ARRAY}{wxappendarray} macro to append all
|
||||||
elements of one array to another one but it is more efficient to use
|
elements of one array to another one but it is more efficient to use
|
||||||
{\it copies} parameter and modify the elements in place later if you plan to
|
{\it copies} parameter and modify the elements in place later if you plan to
|
||||||
append a lot of items.
|
append a lot of items.
|
||||||
|
|
||||||
@@ -502,7 +513,7 @@ it exists only for compatibility.
|
|||||||
|
|
||||||
\func{T *}{Detach}{\param{size\_t }{index}}
|
\func{T *}{Detach}{\param{size\_t }{index}}
|
||||||
|
|
||||||
Removes the element from the array, but, unlike,
|
Removes the element from the array, but, unlike,
|
||||||
\helpref{Remove()}{wxarrayremove} doesn't delete it. The function returns the
|
\helpref{Remove()}{wxarrayremove} doesn't delete it. The function returns the
|
||||||
pointer to the removed element.
|
pointer to the removed element.
|
||||||
|
|
||||||
@@ -512,7 +523,7 @@ pointer to the removed element.
|
|||||||
|
|
||||||
Empties the array. For wxObjArray classes, this destroys all of the array
|
Empties the array. For wxObjArray classes, this destroys all of the array
|
||||||
elements. For wxArray and wxSortedArray this does nothing except marking the
|
elements. For wxArray and wxSortedArray this does nothing except marking the
|
||||||
array of being empty - this function does not free the allocated memory, use
|
array of being empty - this function does not free the allocated memory, use
|
||||||
\helpref{Clear()}{wxarrayclear} for this.
|
\helpref{Clear()}{wxarrayclear} for this.
|
||||||
|
|
||||||
\membersection{wxArray::GetCount}\label{wxarraygetcount}
|
\membersection{wxArray::GetCount}\label{wxarraygetcount}
|
||||||
@@ -595,7 +606,7 @@ Removes an element from the array by value: the first item of the
|
|||||||
array equal to {\it item} is removed, an assert failure will result from an
|
array equal to {\it item} is removed, an assert failure will result from an
|
||||||
attempt to remove an item which doesn't exist in the array.
|
attempt to remove an item which doesn't exist in the array.
|
||||||
|
|
||||||
When an element is removed from wxObjArray it is deleted by the array - use
|
When an element is removed from wxObjArray it is deleted by the array - use
|
||||||
\helpref{Detach()}{wxobjarraydetach} if you don't want this to happen. On the
|
\helpref{Detach()}{wxobjarraydetach} if you don't want this to happen. On the
|
||||||
other hand, when an object is removed from a wxArray nothing happens - you
|
other hand, when an object is removed from a wxArray nothing happens - you
|
||||||
should delete it manually if required:
|
should delete it manually if required:
|
||||||
@@ -632,7 +643,7 @@ elements of a wxArray (supposed to contain pointers).
|
|||||||
|
|
||||||
\func{void}{SetCount}{\param{size\_t }{count}, \param{T }{defval = T($0$)}}
|
\func{void}{SetCount}{\param{size\_t }{count}, \param{T }{defval = T($0$)}}
|
||||||
|
|
||||||
This function ensures that the number of array elements is at least
|
This function ensures that the number of array elements is at least
|
||||||
{\it count}. If the array has already {\it count} or more items, nothing is
|
{\it count}. If the array has already {\it count} or more items, nothing is
|
||||||
done. Otherwise, {\tt count - GetCount()} elements are added and initialized to
|
done. Otherwise, {\tt count - GetCount()} elements are added and initialized to
|
||||||
the value {\it defval}.
|
the value {\it defval}.
|
||||||
@@ -660,7 +671,7 @@ The notation CMPFUNC<T> should be read as if we had the following declaration:
|
|||||||
template int CMPFUNC(T *first, T *second);
|
template int CMPFUNC(T *first, T *second);
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
where {\it T} is the type of the array elements. I.e. it is a function returning
|
where {\it T} is the type of the array elements. I.e. it is a function returning
|
||||||
{\it int} which is passed two arguments of type {\it T *}.
|
{\it int} which is passed two arguments of type {\it T *}.
|
||||||
|
|
||||||
Sorts the array using the specified compare function: this function should
|
Sorts the array using the specified compare function: this function should
|
||||||
@@ -668,4 +679,3 @@ return a negative, zero or positive value according to whether the first element
|
|||||||
passed to it is less than, equal to or greater than the second one.
|
passed to it is less than, equal to or greater than the second one.
|
||||||
|
|
||||||
wxSortedArray doesn't have this function because it is always sorted.
|
wxSortedArray doesn't have this function because it is always sorted.
|
||||||
|
|
||||||
|
@@ -1,3 +1,14 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Name: list.tex
|
||||||
|
%% Purpose: wxList
|
||||||
|
%% Author: wxWidgets Team
|
||||||
|
%% Modified by:
|
||||||
|
%% Created:
|
||||||
|
%% RCS-ID: $Id$
|
||||||
|
%% Copyright: (c) wxWidgets Team
|
||||||
|
%% License: wxWindows license
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
|
||||||
\section{\class{wxList}}\label{wxlist}
|
\section{\class{wxList}}\label{wxlist}
|
||||||
|
|
||||||
wxList classes provide linked list functionality for wxWidgets, and for an
|
wxList classes provide linked list functionality for wxWidgets, and for an
|
||||||
@@ -51,7 +62,7 @@ macros):
|
|||||||
// also have MyList::Node type which is the type-safe version of wxNode.
|
// also have MyList::Node type which is the type-safe version of wxNode.
|
||||||
MyList list;
|
MyList list;
|
||||||
MyListElement element;
|
MyListElement element;
|
||||||
list.Append(element); // ok
|
list.Append(&element); // ok
|
||||||
list.Append(17); // error: incorrect type
|
list.Append(17); // error: incorrect type
|
||||||
|
|
||||||
// let's iterate over the list
|
// let's iterate over the list
|
||||||
@@ -66,7 +77,7 @@ macros):
|
|||||||
For compatibility with previous versions wxList and wxStringList classes are
|
For compatibility with previous versions wxList and wxStringList classes are
|
||||||
still defined, but their usage is deprecated and they will disappear in the
|
still defined, but their usage is deprecated and they will disappear in the
|
||||||
future versions completely. The use of the latter is especially discouraged as
|
future versions completely. The use of the latter is especially discouraged as
|
||||||
it is not only unsafe but is also much less efficient than
|
it is not only unsafe but is also much less efficient than
|
||||||
\helpref{wxArrayString}{wxarraystring} class.
|
\helpref{wxArrayString}{wxarraystring} class.
|
||||||
|
|
||||||
In the documentation of the list classes below, the template notations are
|
In the documentation of the list classes below, the template notations are
|
||||||
@@ -248,7 +259,7 @@ Returns the last node in the list (NULL if the list is empty).
|
|||||||
|
|
||||||
\func{int}{IndexOf}{\param{T*}{ obj }}
|
\func{int}{IndexOf}{\param{T*}{ obj }}
|
||||||
|
|
||||||
Returns the index of {\it obj} within the list or {\tt wxNOT\_FOUND} if {\it obj}
|
Returns the index of {\it obj} within the list or {\tt wxNOT\_FOUND} if {\it obj}
|
||||||
is not found in the list.
|
is not found in the list.
|
||||||
|
|
||||||
\membersection{wxList::Insert}\label{wxlistinsert}
|
\membersection{wxList::Insert}\label{wxlistinsert}
|
||||||
@@ -330,7 +341,7 @@ Example:
|
|||||||
int listcompare(const void *arg1, const void *arg2)
|
int listcompare(const void *arg1, const void *arg2)
|
||||||
{
|
{
|
||||||
return(compare(**(wxString **)arg1, // use the wxString 'compare'
|
return(compare(**(wxString **)arg1, // use the wxString 'compare'
|
||||||
**(wxString **)arg2)); // function
|
**(wxString **)arg2)); // function
|
||||||
}
|
}
|
||||||
|
|
||||||
void main()
|
void main()
|
||||||
@@ -343,4 +354,3 @@ Example:
|
|||||||
list.Sort(listcompare);
|
list.Sort(listcompare);
|
||||||
}
|
}
|
||||||
\end{verbatim}
|
\end{verbatim}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user