xref: /haiku/docs/user/support/ObjectList.dox (revision c4b9309a9964a8bf18a834cf41aa97f1172bab0d)
1*c4b9309aSJohn Scipione/*
2*c4b9309aSJohn Scipione * Copyright 2014 Haiku, Inc. All rights reserved.
3*c4b9309aSJohn Scipione * Distributed under the terms of the MIT License.
4*c4b9309aSJohn Scipione *
5*c4b9309aSJohn Scipione * Authors:
6*c4b9309aSJohn Scipione *		John Scipione, jscipione@gmail.com
7*c4b9309aSJohn Scipione *
8*c4b9309aSJohn Scipione * Corresponds to:
9*c4b9309aSJohn Scipione *		headers/os/support/ObjectList.h	hrev40252
10*c4b9309aSJohn Scipione */
11*c4b9309aSJohn Scipione
12*c4b9309aSJohn Scipione
13*c4b9309aSJohn Scipione/*!
14*c4b9309aSJohn Scipione	\file ObjectList.h
15*c4b9309aSJohn Scipione	\ingroup support
16*c4b9309aSJohn Scipione	\ingroup libbe
17*c4b9309aSJohn Scipione	\brief Defines the BObjectList class.
18*c4b9309aSJohn Scipione*/
19*c4b9309aSJohn Scipione
20*c4b9309aSJohn Scipione
21*c4b9309aSJohn Scipione/*!
22*c4b9309aSJohn Scipione	\class BObjectList
23*c4b9309aSJohn Scipione	\ingroup support
24*c4b9309aSJohn Scipione	\ingroup libbe
25*c4b9309aSJohn Scipione	\brief BObjectList is a wrapper around BList that adds type safety,
26*c4b9309aSJohn Scipione	       optional object ownership, search, and insert operations.
27*c4b9309aSJohn Scipione
28*c4b9309aSJohn Scipione	\since Haiku R1
29*c4b9309aSJohn Scipione*/
30*c4b9309aSJohn Scipione
31*c4b9309aSJohn Scipione
32*c4b9309aSJohn Scipione/*!
33*c4b9309aSJohn Scipione	\fn template<class T> BObjectList<T>::BObjectList(int32 itemsPerBlock,
34*c4b9309aSJohn Scipione		bool owning)
35*c4b9309aSJohn Scipione	\brief Creates a new BObjectList.
36*c4b9309aSJohn Scipione
37*c4b9309aSJohn Scipione	\param itemsPerBlock The number of items per block to allocate.
38*c4b9309aSJohn Scipione	\param owning Whether or not the BObjectList deletes its items when
39*c4b9309aSJohn Scipione	       it is emptied or deleted.
40*c4b9309aSJohn Scipione
41*c4b9309aSJohn Scipione	\since Haiku R1
42*c4b9309aSJohn Scipione*/
43*c4b9309aSJohn Scipione
44*c4b9309aSJohn Scipione
45*c4b9309aSJohn Scipione/*!
46*c4b9309aSJohn Scipione	\fn template<class T> BObjectList<T>::BObjectList(
47*c4b9309aSJohn Scipione		const BObjectList<T>& list)
48*c4b9309aSJohn Scipione	\brief Creates a new BObjectList as a copy of another \a list.
49*c4b9309aSJohn Scipione
50*c4b9309aSJohn Scipione	\param list The \a list to copy from.
51*c4b9309aSJohn Scipione
52*c4b9309aSJohn Scipione	\since Haiku R1
53*c4b9309aSJohn Scipione*/
54*c4b9309aSJohn Scipione
55*c4b9309aSJohn Scipione
56*c4b9309aSJohn Scipione/*!
57*c4b9309aSJohn Scipione	\fn template<class T> BObjectList<T>::~BObjectList()
58*c4b9309aSJohn Scipione	\brief Deletes the list.
59*c4b9309aSJohn Scipione
60*c4b9309aSJohn Scipione	If the list owns its items they are deleted too.
61*c4b9309aSJohn Scipione
62*c4b9309aSJohn Scipione	\since Haiku R1
63*c4b9309aSJohn Scipione*/
64*c4b9309aSJohn Scipione
65*c4b9309aSJohn Scipione
66*c4b9309aSJohn Scipione/*!
67*c4b9309aSJohn Scipione	\name Operators
68*c4b9309aSJohn Scipione*/
69*c4b9309aSJohn Scipione
70*c4b9309aSJohn Scipione
71*c4b9309aSJohn Scipione//! @{
72*c4b9309aSJohn Scipione
73*c4b9309aSJohn Scipione
74*c4b9309aSJohn Scipione/*!
75*c4b9309aSJohn Scipione	\fn template<class T> BObjectList<T>& BObjectList<T>::operator=(
76*c4b9309aSJohn Scipione		const BObjectList<T>& list)
77*c4b9309aSJohn Scipione	\brief Creates a new BObjectList as a copy of another \a list by
78*c4b9309aSJohn Scipione	       overloading the = operator.
79*c4b9309aSJohn Scipione
80*c4b9309aSJohn Scipione	\param list The \a list to copy from.
81*c4b9309aSJohn Scipione
82*c4b9309aSJohn Scipione	\since Haiku R1
83*c4b9309aSJohn Scipione*/
84*c4b9309aSJohn Scipione
85*c4b9309aSJohn Scipione
86*c4b9309aSJohn Scipione//! @}
87*c4b9309aSJohn Scipione
88*c4b9309aSJohn Scipione
89*c4b9309aSJohn Scipione/*!
90*c4b9309aSJohn Scipione	\name Adding and Removing Items
91*c4b9309aSJohn Scipione*/
92*c4b9309aSJohn Scipione
93*c4b9309aSJohn Scipione
94*c4b9309aSJohn Scipione//! @{
95*c4b9309aSJohn Scipione
96*c4b9309aSJohn Scipione
97*c4b9309aSJohn Scipione/*!
98*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::AddItem(T* item)
99*c4b9309aSJohn Scipione	\brief Append the \a item to the end of the list.
100*c4b9309aSJohn Scipione
101*c4b9309aSJohn Scipione	\param item The \a item to append.
102*c4b9309aSJohn Scipione
103*c4b9309aSJohn Scipione	\return Whether or not the \a item was appended.
104*c4b9309aSJohn Scipione	\retval true The \a item was appended.
105*c4b9309aSJohn Scipione	\retval false \a item was not appended, since resizing the BObjectList
106*c4b9309aSJohn Scipione	        failed.
107*c4b9309aSJohn Scipione
108*c4b9309aSJohn Scipione	\since Haiku R1
109*c4b9309aSJohn Scipione*/
110*c4b9309aSJohn Scipione
111*c4b9309aSJohn Scipione
112*c4b9309aSJohn Scipione/*!
113*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::AddItem(T* item, int32 index)
114*c4b9309aSJohn Scipione	\brief Add \a item at the specified \a index.
115*c4b9309aSJohn Scipione
116*c4b9309aSJohn Scipione	\param item The \a item to add.
117*c4b9309aSJohn Scipione	\param index The place in the list to add the \a item.
118*c4b9309aSJohn Scipione
119*c4b9309aSJohn Scipione	\return Whether or not the item was added.
120*c4b9309aSJohn Scipione	\retval true The item was added.
121*c4b9309aSJohn Scipione	\retval false Item was not added. Either the index is negative or invalid,
122*c4b9309aSJohn Scipione	        or resizing the BObjectList failed.
123*c4b9309aSJohn Scipione
124*c4b9309aSJohn Scipione	\since Haiku R1
125*c4b9309aSJohn Scipione*/
126*c4b9309aSJohn Scipione
127*c4b9309aSJohn Scipione
128*c4b9309aSJohn Scipione/*!
129*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::AddList(BObjectList<T>* list)
130*c4b9309aSJohn Scipione	\brief Append a \a list of items to this list.
131*c4b9309aSJohn Scipione
132*c4b9309aSJohn Scipione	The original list is not altered.
133*c4b9309aSJohn Scipione
134*c4b9309aSJohn Scipione	\param list The \a list to be added.
135*c4b9309aSJohn Scipione
136*c4b9309aSJohn Scipione	\return Whether or not the \a list was added.
137*c4b9309aSJohn Scipione	\retval true The \a list was added.
138*c4b9309aSJohn Scipione	\retval false Failed to append the list, resizing failed.
139*c4b9309aSJohn Scipione
140*c4b9309aSJohn Scipione	\since Haiku R1
141*c4b9309aSJohn Scipione*/
142*c4b9309aSJohn Scipione
143*c4b9309aSJohn Scipione
144*c4b9309aSJohn Scipione/*!
145*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::AddList(BObjectList<T>* list,
146*c4b9309aSJohn Scipione		int32 index)
147*c4b9309aSJohn Scipione	\brief Add a \a list of items to this list at the specified \a index.
148*c4b9309aSJohn Scipione
149*c4b9309aSJohn Scipione	The original list is not altered.
150*c4b9309aSJohn Scipione
151*c4b9309aSJohn Scipione	\param list The \a list to be added.
152*c4b9309aSJohn Scipione	\param index The position in the current \a list where the new item(s) are
153*c4b9309aSJohn Scipione	       added.
154*c4b9309aSJohn Scipione
155*c4b9309aSJohn Scipione	\return Whether or not the \a list was added.
156*c4b9309aSJohn Scipione	\retval true The \a list was added.
157*c4b9309aSJohn Scipione	\retval false Failed to insert the \a list resizing failed.
158*c4b9309aSJohn Scipione
159*c4b9309aSJohn Scipione	\since Haiku R1
160*c4b9309aSJohn Scipione*/
161*c4b9309aSJohn Scipione
162*c4b9309aSJohn Scipione
163*c4b9309aSJohn Scipione/*!
164*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::RemoveItem(T* item,
165*c4b9309aSJohn Scipione		bool deleteIfOwning)
166*c4b9309aSJohn Scipione	\brief Remove \a item from the list.
167*c4b9309aSJohn Scipione
168*c4b9309aSJohn Scipione	\param item The \a item to be removed.
169*c4b9309aSJohn Scipione	\param deleteIfOwning Also delete the \a item if owned.
170*c4b9309aSJohn Scipione
171*c4b9309aSJohn Scipione	\return Whether or not the \a item was removed.
172*c4b9309aSJohn Scipione	\retval true The \a item was found and removed.
173*c4b9309aSJohn Scipione	\retval false The \a item was not in this list and thus not removed.
174*c4b9309aSJohn Scipione
175*c4b9309aSJohn Scipione	\since Haiku R1
176*c4b9309aSJohn Scipione*/
177*c4b9309aSJohn Scipione
178*c4b9309aSJohn Scipione
179*c4b9309aSJohn Scipione/*!
180*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::RemoveItemAt(int32 index)
181*c4b9309aSJohn Scipione	\brief Remove the item at \a index from the list.
182*c4b9309aSJohn Scipione
183*c4b9309aSJohn Scipione	\param index The \a index of the item to be removed.
184*c4b9309aSJohn Scipione
185*c4b9309aSJohn Scipione	\return The pointer to the item that was removed, or \c NULL if the
186*c4b9309aSJohn Scipione	        \a index was invalid.
187*c4b9309aSJohn Scipione
188*c4b9309aSJohn Scipione	\since Haiku R1
189*c4b9309aSJohn Scipione*/
190*c4b9309aSJohn Scipione
191*c4b9309aSJohn Scipione
192*c4b9309aSJohn Scipione/*!
193*c4b9309aSJohn Scipione	\fn template<class T> inline T* BObjectList<T>::ItemAt(int32 index) const
194*c4b9309aSJohn Scipione	\brief Return a pointer to the item at the given \a index.
195*c4b9309aSJohn Scipione
196*c4b9309aSJohn Scipione	\param index The item to retrieve.
197*c4b9309aSJohn Scipione
198*c4b9309aSJohn Scipione	\return A pointer to the item in that position, or \c NULL if the
199*c4b9309aSJohn Scipione	        \a index is out of bounds.
200*c4b9309aSJohn Scipione
201*c4b9309aSJohn Scipione	\since Haiku R1
202*c4b9309aSJohn Scipione*/
203*c4b9309aSJohn Scipione
204*c4b9309aSJohn Scipione
205*c4b9309aSJohn Scipione/*!
206*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::ReplaceItem(int32 index, T* item)
207*c4b9309aSJohn Scipione	\brief Replace an item with another one.
208*c4b9309aSJohn Scipione
209*c4b9309aSJohn Scipione	\param index The offset in the list where to put the \a item.
210*c4b9309aSJohn Scipione	\param item The new \a item to put in the list.
211*c4b9309aSJohn Scipione
212*c4b9309aSJohn Scipione	\return Whether or not the item was replaced.
213*c4b9309aSJohn Scipione	\retval true The item was replaced.
214*c4b9309aSJohn Scipione	\retval false The \a index was invalid.
215*c4b9309aSJohn Scipione
216*c4b9309aSJohn Scipione	\since Haiku R1
217*c4b9309aSJohn Scipione*/
218*c4b9309aSJohn Scipione
219*c4b9309aSJohn Scipione
220*c4b9309aSJohn Scipione/*!
221*c4b9309aSJohn Scipione	\fn template<class T> void BObjectList<T>::MakeEmpty(bool deleteIfOwning)
222*c4b9309aSJohn Scipione	\brief Clear all the items from the list.
223*c4b9309aSJohn Scipione
224*c4b9309aSJohn Scipione	\param deleteIfOwning Also deletes items if owned.
225*c4b9309aSJohn Scipione
226*c4b9309aSJohn Scipione	\since Haiku R1
227*c4b9309aSJohn Scipione*/
228*c4b9309aSJohn Scipione
229*c4b9309aSJohn Scipione
230*c4b9309aSJohn Scipione//! @}
231*c4b9309aSJohn Scipione
232*c4b9309aSJohn Scipione
233*c4b9309aSJohn Scipione/*!
234*c4b9309aSJohn Scipione	\name Reordering Items
235*c4b9309aSJohn Scipione*/
236*c4b9309aSJohn Scipione
237*c4b9309aSJohn Scipione
238*c4b9309aSJohn Scipione//! @{
239*c4b9309aSJohn Scipione
240*c4b9309aSJohn Scipione
241*c4b9309aSJohn Scipione/*!
242*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::SwapWithItem(int32 index, T* item)
243*c4b9309aSJohn Scipione	\brief Swap the \a item with the item at \a index.
244*c4b9309aSJohn Scipione
245*c4b9309aSJohn Scipione	\param index The offset in the list where to put the \a item.
246*c4b9309aSJohn Scipione	\param item The new \a item to put in the list.
247*c4b9309aSJohn Scipione
248*c4b9309aSJohn Scipione	\return A pointer to the item in that position, or \c NULL if the
249*c4b9309aSJohn Scipione	        \a index is out of bounds.
250*c4b9309aSJohn Scipione
251*c4b9309aSJohn Scipione	\since Haiku R1
252*c4b9309aSJohn Scipione*/
253*c4b9309aSJohn Scipione
254*c4b9309aSJohn Scipione
255*c4b9309aSJohn Scipione/*!
256*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::MoveItem(int32 from, int32 to)
257*c4b9309aSJohn Scipione	\brief Move the item at \a from to the position of \a to.
258*c4b9309aSJohn Scipione
259*c4b9309aSJohn Scipione	\param from The index to move the item \a from.
260*c4b9309aSJohn Scipione	\param to The index to move the item \a to.
261*c4b9309aSJohn Scipione
262*c4b9309aSJohn Scipione	\return Whether or not the items were moved.
263*c4b9309aSJohn Scipione	\retval true The items were moved.
264*c4b9309aSJohn Scipione	\retval false The \a from or \a to index was invalid.
265*c4b9309aSJohn Scipione
266*c4b9309aSJohn Scipione	\see BList::MoveItem()
267*c4b9309aSJohn Scipione
268*c4b9309aSJohn Scipione	\since Haiku R1
269*c4b9309aSJohn Scipione*/
270*c4b9309aSJohn Scipione
271*c4b9309aSJohn Scipione
272*c4b9309aSJohn Scipione//! @}
273*c4b9309aSJohn Scipione
274*c4b9309aSJohn Scipione
275*c4b9309aSJohn Scipione/*!
276*c4b9309aSJohn Scipione	\name Querying Items
277*c4b9309aSJohn Scipione*/
278*c4b9309aSJohn Scipione
279*c4b9309aSJohn Scipione
280*c4b9309aSJohn Scipione//! @{
281*c4b9309aSJohn Scipione
282*c4b9309aSJohn Scipione
283*c4b9309aSJohn Scipione/*!
284*c4b9309aSJohn Scipione	\fn template<class T> int32 BObjectList<T>::IndexOf(const T* item) const
285*c4b9309aSJohn Scipione	\brief Return the index of \a item.
286*c4b9309aSJohn Scipione
287*c4b9309aSJohn Scipione	\return The index of the item, or -1 when the item is not in the list.
288*c4b9309aSJohn Scipione
289*c4b9309aSJohn Scipione	\since Haiku R1
290*c4b9309aSJohn Scipione*/
291*c4b9309aSJohn Scipione
292*c4b9309aSJohn Scipione
293*c4b9309aSJohn Scipione/*!
294*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::FirstItem() const
295*c4b9309aSJohn Scipione	\brief Return a pointer to the first item in the list.
296*c4b9309aSJohn Scipione
297*c4b9309aSJohn Scipione	\return A pointer to the first item or \c NULL if the list is empty.
298*c4b9309aSJohn Scipione
299*c4b9309aSJohn Scipione	\see BObjectList<T>::LastItem() const
300*c4b9309aSJohn Scipione
301*c4b9309aSJohn Scipione	\since Haiku R1
302*c4b9309aSJohn Scipione*/
303*c4b9309aSJohn Scipione
304*c4b9309aSJohn Scipione
305*c4b9309aSJohn Scipione/*!
306*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::LastItem() const
307*c4b9309aSJohn Scipione	\brief Return a pointer to the last item in the list.
308*c4b9309aSJohn Scipione
309*c4b9309aSJohn Scipione	\return A pointer to the last item or \c NULL if the list is empty.
310*c4b9309aSJohn Scipione
311*c4b9309aSJohn Scipione	\see BObjectList<T>::FirstItem() const
312*c4b9309aSJohn Scipione
313*c4b9309aSJohn Scipione	\since Haiku R1
314*c4b9309aSJohn Scipione*/
315*c4b9309aSJohn Scipione
316*c4b9309aSJohn Scipione
317*c4b9309aSJohn Scipione/*!
318*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::HasItem(const T* item) const
319*c4b9309aSJohn Scipione	\brief Return whether or not \a item is in the list.
320*c4b9309aSJohn Scipione
321*c4b9309aSJohn Scipione	\return \c true if the \a item was in the list, \c false otherwise.
322*c4b9309aSJohn Scipione
323*c4b9309aSJohn Scipione	\since Haiku R1
324*c4b9309aSJohn Scipione*/
325*c4b9309aSJohn Scipione
326*c4b9309aSJohn Scipione
327*c4b9309aSJohn Scipione/*!
328*c4b9309aSJohn Scipione	\fn template<class T> bool BObjectList<T>::IsEmpty() const
329*c4b9309aSJohn Scipione	\brief Return whether or not there are items in the list.
330*c4b9309aSJohn Scipione
331*c4b9309aSJohn Scipione	\return \c true if the list was empty, \c false otherwise.
332*c4b9309aSJohn Scipione
333*c4b9309aSJohn Scipione	\since Haiku R1
334*c4b9309aSJohn Scipione*/
335*c4b9309aSJohn Scipione
336*c4b9309aSJohn Scipione
337*c4b9309aSJohn Scipione/*!
338*c4b9309aSJohn Scipione	\fn template<class T> int32 BObjectList<T>::CountItems() const
339*c4b9309aSJohn Scipione	\brief Returns the number of items in the list.
340*c4b9309aSJohn Scipione
341*c4b9309aSJohn Scipione	\return The number of items in the list as an int32.
342*c4b9309aSJohn Scipione
343*c4b9309aSJohn Scipione	\since Haiku R1
344*c4b9309aSJohn Scipione*/
345*c4b9309aSJohn Scipione
346*c4b9309aSJohn Scipione
347*c4b9309aSJohn Scipione//! @}
348*c4b9309aSJohn Scipione
349*c4b9309aSJohn Scipione
350*c4b9309aSJohn Scipione/*!
351*c4b9309aSJohn Scipione	\name Iterating Over Items
352*c4b9309aSJohn Scipione*/
353*c4b9309aSJohn Scipione
354*c4b9309aSJohn Scipione
355*c4b9309aSJohn Scipione//! @{
356*c4b9309aSJohn Scipione
357*c4b9309aSJohn Scipione
358*c4b9309aSJohn Scipione/*!
359*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::EachElement(EachFunction func,
360*c4b9309aSJohn Scipione		void* params)
361*c4b9309aSJohn Scipione	\brief Perform an action on each item in the list.
362*c4b9309aSJohn Scipione
363*c4b9309aSJohn Scipione	\param func A function that takes a \c void* argument and returns a
364*c4b9309aSJohn Scipione	       boolean.
365*c4b9309aSJohn Scipione	\param params parameters for \a func.
366*c4b9309aSJohn Scipione
367*c4b9309aSJohn Scipione	\return A pointer to the item.
368*c4b9309aSJohn Scipione
369*c4b9309aSJohn Scipione	\since Haiku R1
370*c4b9309aSJohn Scipione*/
371*c4b9309aSJohn Scipione
372*c4b9309aSJohn Scipione
373*c4b9309aSJohn Scipione/*!
374*c4b9309aSJohn Scipione	\fn template<class T> const T* BObjectList<T>::EachElement(
375*c4b9309aSJohn Scipione		ConstEachFunction func, void* params) const
376*c4b9309aSJohn Scipione	\brief Perform an action on each item in the list.
377*c4b9309aSJohn Scipione
378*c4b9309aSJohn Scipione	\param func A function that takes a \c void* argument and returns a
379*c4b9309aSJohn Scipione	       boolean.
380*c4b9309aSJohn Scipione	\param params parameters for \a func.
381*c4b9309aSJohn Scipione
382*c4b9309aSJohn Scipione	\return A pointer to the item.
383*c4b9309aSJohn Scipione
384*c4b9309aSJohn Scipione	\since Haiku R1
385*c4b9309aSJohn Scipione*/
386*c4b9309aSJohn Scipione
387*c4b9309aSJohn Scipione
388*c4b9309aSJohn Scipione//! @}
389*c4b9309aSJohn Scipione
390*c4b9309aSJohn Scipione
391*c4b9309aSJohn Scipione/*!
392*c4b9309aSJohn Scipione	\name Finding Items
393*c4b9309aSJohn Scipione*/
394*c4b9309aSJohn Scipione
395*c4b9309aSJohn Scipione
396*c4b9309aSJohn Scipione//! @{
397*c4b9309aSJohn Scipione
398*c4b9309aSJohn Scipione
399*c4b9309aSJohn Scipione/*!
400*c4b9309aSJohn Scipione	\fn template<class T> const T* BObjectList<T>::FindIf(
401*c4b9309aSJohn Scipione		const UnaryPredicate<T>& predicate) const
402*c4b9309aSJohn Scipione	\brief Find items that match \a predicate.
403*c4b9309aSJohn Scipione
404*c4b9309aSJohn Scipione	\return A const pointer to T.
405*c4b9309aSJohn Scipione
406*c4b9309aSJohn Scipione	\since Haiku R1
407*c4b9309aSJohn Scipione*/
408*c4b9309aSJohn Scipione
409*c4b9309aSJohn Scipione
410*c4b9309aSJohn Scipione/*!
411*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::FindIf(
412*c4b9309aSJohn Scipione		const UnaryPredicate<T>& predicate)
413*c4b9309aSJohn Scipione	\brief Find items that match \a predicate.
414*c4b9309aSJohn Scipione
415*c4b9309aSJohn Scipione	\return A pointer to T.
416*c4b9309aSJohn Scipione
417*c4b9309aSJohn Scipione	\since Haiku R1
418*c4b9309aSJohn Scipione*/
419*c4b9309aSJohn Scipione
420*c4b9309aSJohn Scipione
421*c4b9309aSJohn Scipione/*!
422*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::BinarySearch(const T& key,
423*c4b9309aSJohn Scipione		CompareFunction func) const
424*c4b9309aSJohn Scipione	\brief Search for \a key in the list of items using the supplied comparison
425*c4b9309aSJohn Scipione	       function via a binary search algorithm.
426*c4b9309aSJohn Scipione
427*c4b9309aSJohn Scipione	\param key The \a key to search for.
428*c4b9309aSJohn Scipione	\param func The comparison function to use.
429*c4b9309aSJohn Scipione
430*c4b9309aSJohn Scipione	\return A pointer to T.
431*c4b9309aSJohn Scipione
432*c4b9309aSJohn Scipione	\since Haiku R1
433*c4b9309aSJohn Scipione*/
434*c4b9309aSJohn Scipione
435*c4b9309aSJohn Scipione
436*c4b9309aSJohn Scipione/*!
437*c4b9309aSJohn Scipione	\fn template<class T> T* BObjectList<T>::BinarySearch(const T& key,
438*c4b9309aSJohn Scipione		CompareFunctionWithState func, void* state) const
439*c4b9309aSJohn Scipione	\brief Search for \a key in the list of items using the supplied comparison
440*c4b9309aSJohn Scipione	       function via a binary search algorithm.
441*c4b9309aSJohn Scipione
442*c4b9309aSJohn Scipione	\param key The \a key to search for.
443*c4b9309aSJohn Scipione	\param func The comparison function to use.
444*c4b9309aSJohn Scipione	\param state Additional information used to search for the item.
445*c4b9309aSJohn Scipione
446*c4b9309aSJohn Scipione	\return A pointer to T.
447*c4b9309aSJohn Scipione
448*c4b9309aSJohn Scipione	\since Haiku R1
449*c4b9309aSJohn Scipione*/
450*c4b9309aSJohn Scipione
451*c4b9309aSJohn Scipione
452*c4b9309aSJohn Scipione//! @}
453*c4b9309aSJohn Scipione
454*c4b9309aSJohn Scipione
455*c4b9309aSJohn Scipione/*!
456*c4b9309aSJohn Scipione	\name Reordering Items
457*c4b9309aSJohn Scipione*/
458*c4b9309aSJohn Scipione
459*c4b9309aSJohn Scipione
460*c4b9309aSJohn Scipione//! @{
461*c4b9309aSJohn Scipione
462*c4b9309aSJohn Scipione
463*c4b9309aSJohn Scipione/*!
464*c4b9309aSJohn Scipione	\fn template<class T> void BObjectList<T>::SortItems(
465*c4b9309aSJohn Scipione		CompareFunction function)
466*c4b9309aSJohn Scipione	\brief Sort the items with the use of a supplied comparison \a function.
467*c4b9309aSJohn Scipione
468*c4b9309aSJohn Scipione	\param function The \a function used to sort the items.
469*c4b9309aSJohn Scipione
470*c4b9309aSJohn Scipione	\since Haiku R1
471*c4b9309aSJohn Scipione*/
472*c4b9309aSJohn Scipione
473*c4b9309aSJohn Scipione
474*c4b9309aSJohn Scipione/*!
475*c4b9309aSJohn Scipione	\fn template<class T> void BObjectList<T>::SortItems(
476*c4b9309aSJohn Scipione		CompareFunctionWithState function, void* state)
477*c4b9309aSJohn Scipione	\brief Sort the items with the use of a supplied comparison \a function and
478*c4b9309aSJohn Scipione	       addtional \a state.
479*c4b9309aSJohn Scipione
480*c4b9309aSJohn Scipione	\param function The \a function used to sort the items.
481*c4b9309aSJohn Scipione	\param state Additional information used to sort the items.
482*c4b9309aSJohn Scipione
483*c4b9309aSJohn Scipione	\since Haiku R1
484*c4b9309aSJohn Scipione*/
485*c4b9309aSJohn Scipione
486*c4b9309aSJohn Scipione
487*c4b9309aSJohn Scipione/*!
488*c4b9309aSJohn Scipione	\fn template<class T> void BObjectList<T>::HSortItems(
489*c4b9309aSJohn Scipione		CompareFunction function)
490*c4b9309aSJohn Scipione	\brief Sort the items with the use of a supplied comparison \a function.
491*c4b9309aSJohn Scipione
492*c4b9309aSJohn Scipione	\param function The \a function used to sort the items.
493*c4b9309aSJohn Scipione
494*c4b9309aSJohn Scipione	\since Haiku R1
495*c4b9309aSJohn Scipione*/
496*c4b9309aSJohn Scipione
497*c4b9309aSJohn Scipione
498*c4b9309aSJohn Scipione/*
499*c4b9309aSJohn Scipione	\fn template<class T> void BObjectList<T>::HSortItems(
500*c4b9309aSJohn Scipione		CompareFunctionWithState function, void* state)
501*c4b9309aSJohn Scipione
502*c4b9309aSJohn Scipione	\param function The \a function used to sort the items.
503*c4b9309aSJohn Scipione	\param state Additional information used to sort the items.
504*c4b9309aSJohn Scipione
505*c4b9309aSJohn Scipione	\since Haiku R1
506*c4b9309aSJohn Scipione*/
507*c4b9309aSJohn Scipione
508*c4b9309aSJohn Scipione
509*c4b9309aSJohn Scipione//! @}
510