1 /////////////////////////////////////////////////////////////////////////////
3 // Purpose: interface of wxList<T>
4 // Author: wxWidgets team
6 // Licence: wxWindows license
7 /////////////////////////////////////////////////////////////////////////////
12 The wxListT class provides linked list functionality. It has been rewritten
13 to be type safe and to provide the full API of the STL std::list container and
14 should be used like it. The exception is that wxListT actually stores
15 pointers and therefore its iterators return pointers and not references
16 to the actual objets in the list (see example below) and @e value_type
17 is defined as @e T*. wxListT destroys an object after removing it only
18 if wxList::DeleteContents has been called.
20 wxListT is not a real template and it requires that you declare and define
21 each wxListT class in your program. This is done with @e WX_DECLARE_LIST
22 and @e WX_DEFINE_LIST macros (see example). We hope that we'll be able
23 to provide a proper template class providing both the STL std::list
24 and the old wxList API in the future.
26 Please refer to the STL std::list documentation for further
27 information on how to use the class. Below we documented both
28 the supported STL and the legacy API that originated from the
29 old wxList class and which can still be used alternatively for
32 Note that if you compile wxWidgets in STL mode (wxUSE_STL defined as 1)
33 then wxListT will actually derive from std::list and just add a legacy
34 compatibility layer for the old wxList class.
39 @see wxArrayT(), wxVectorT()
49 wxListT(size_t count
, T
* elements
[]);
53 Destroys the list, but does not delete the objects stored in the list
54 unless you called DeleteContents(@true ).
59 Appends the pointer to @a object to the list.
61 wxListT::compatibility_iterator
Append(T
* object
);
64 Clears the list, but does not delete the objects stored in the list
65 unless you called DeleteContents(@true ).
70 If @a destroy is @true, instructs the list to call @e delete
71 on objects stored in the list whenever they are removed.
72 The default is @false.
74 void DeleteContents(bool destroy
);
77 Deletes the given element refered to by @c iter from the list,
78 returning @true if successful.
80 bool DeleteNode(const compatibility_iterator
& iter
);
83 Finds the given @a object and removes it from the list, returning
84 @true if successful. The application must delete the actual object
87 bool DeleteObject(T
* object
);
90 Removes element refered to be @c iter.
92 void Erase(const compatibility_iterator
& iter
);
95 Returns the iterator refering to @a object or @NULL if none found.
97 wxListT::compatibility_iterator
Find(T
* object
) const;
100 Returns the number of elements in the list.
102 size_t GetCount() const;
105 Returns the first iterator in the list (@NULL if the list is empty).
107 wxListT::compatibility_iterator
GetFirst() const;
110 Returns the last iterator in the list (@NULL if the list is empty).
112 wxListT::compatibility_iterator
GetLast() const;
115 Returns the index of @a obj within the list or @c wxNOT_FOUND if
116 @a obj is not found in the list.
118 int IndexOf(T
* obj
) const;
122 Inserts the object before the object refered to be @e iter.
124 wxListT::compatibility_iterator
Insert(T
* object
);
125 wxListT::compatibility_iterator
Insert(size_t position
,
127 wxListT::compatibility_iterator
Insert(compatibility_iterator iter
,
132 Returns @true if the list is empty, @false otherwise.
134 bool IsEmpty() const;
137 Returns the iterator refering to the object at the given
138 @c index in the list.
140 wxListT::compatibility_iterator
Item(size_t index
) const;
143 @note This function is deprecated, use wxList::Find instead.
145 wxListT::compatibility_iterator
Member(T
* object
) const;
148 @note This function is deprecated, use @ref wxList::itemfunc Item instead.
149 Returns the @e nth node in the list, indexing from zero (@NULL if the list is
151 or the nth node could not be found).
153 wxListT::compatibility_iterator
Nth(int n
) const;
156 @note This function is deprecated, use wxList::GetCount instead.
157 Returns the number of elements in the list.
162 Allows the sorting of arbitrary lists by giving a function to compare
163 two list elements. We use the system @b qsort function for the actual
166 void Sort(wxSortCompareFunction compfunc
);
172 void assign(const_iterator first
, const const_iterator
& last
);
173 void assign(size_type n
);
178 Returns the last item of the list.
180 reference
back() const;
181 const_reference
back() const;
186 Returns a (const) iterator pointing to the beginning of the list.
188 iterator
begin() const;
189 const_iterator
begin() const;
193 Removes all items from the list.
198 Returns @e @true if the list is empty.
204 Returns a (const) iterator pointing at the end of the list.
206 iterator
end() const;
207 const_iterator
end() const;
212 Erases the items from @a first to @e last.
214 iterator
erase(const iterator
& it
);
215 iterator
erase(const iterator
& first
,
216 const iterator
& last
);
221 Returns the first item in the list.
223 reference
front() const;
224 const_reference
front() const;
229 Inserts an item (or several) at the given position.
231 iterator
insert(const iterator
& it
);
232 void insert(const iterator
& it
, size_type n
);
233 void insert(const iterator
& it
, const_iterator first
,
234 const const_iterator
& last
);
238 Returns the largest possible size of the list.
240 size_type
max_size() const;
243 Removes the last item from the list.
248 Removes the first item from the list.
254 Adds an item to end of the list.
260 Adds an item to the front of the list.
266 Returns a (const) reverse iterator pointing to the beginning of the
269 reverse_iterator
rbegin() const;
270 const_reverse_iterator
rbegin() const;
274 Removes an item from the list.
276 void remove(const_reference v
);
280 Returns a (const) reverse iterator pointing to the end of the
283 reverse_iterator
rend() const;
284 const_reverse_iterator
rend() const;
289 Resizes the list. If the the list is enlarges items with
290 the value @e v are appended to the list.
292 void resize(size_type n
);
300 Returns the size of the list.
302 size_type
size() const;
311 wxNodeBase is the node structure used in linked lists (see
312 wxList) and derived classes. You should never use wxNodeBase
313 class directly, however, because it works with untyped (@c void *) data and
314 this is unsafe. Use wxNodeBase-derived classes which are automatically defined
315 by WX_DECLARE_LIST and WX_DEFINE_LIST macros instead as described in
316 wxList documentation (see example there). Also note that
317 although there is a class called wxNode, it is defined for backwards
318 compatibility only and usage of this class is strongly deprecated.
320 In the documentation below, the type @c T should be thought of as a
321 "template" parameter: this is the type of data stored in the linked list or,
322 in other words, the first argument of WX_DECLARE_LIST macro. Also, wxNode is
323 written as wxNodeT even though it isn't really a template class -- but it
324 helps to think of it as if it were.
329 @see wxList, wxHashTable
335 Retrieves the client data pointer associated with the node.
340 Retrieves the next node or @NULL if this node is the last one.
342 wxNodeT
* GetNext() const;
345 Retrieves the previous node or @NULL if this node is the first one in the list.
347 wxNodeT
* GetPrevious();
350 Returns the zero-based index of this node within the list. The return value
351 will be @c wxNOT_FOUND if the node has not been added to a list yet.
356 Sets the data associated with the node (usually the pointer will have been
357 set when the node was created).
359 void SetData(T
* data
);