source file of the Flower Library
- (c) 1997--2005 Han-Wen Nienhuys <hanwen@cs.uu.nl>
+ (c) 1997--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
*/
#ifndef PARRAY_HH
}
/// access element
- T *&operator[] (int i)
+ T *&operator [] (int i)
{
return (T *&) Array<void *>::elem_ref (i);
}
/// access element
- T *const operator[] (int i) const
+ T *const operator [] (int i) const
{
return (T *const) Array<void *>::elem (i);
}
void substitute (T *old, T *new_p)
{
int i;
- while ((i = find_index (old)) >=0)
+ while ((i = find_index (old)) >= 0)
if (new_p)
- elem_ref (i) =new_p;
+ elem_ref (i) = new_p;
else
del (i);
}
void unordered_substitute (T *old, T *new_p)
{
int i;
- while ((i = find_index (old)) >=0)
+ while ((i = find_index (old)) >= 0)
if (new_p)
- elem_ref (i) =new_p;
+ elem_ref (i) = new_p;
else
- {
- unordered_del (i);
- }
-
+ unordered_del (i);
}
void default_sort ()
{
return (T *) Array<void *>::get (i);
}
Link_array<T>
- slice (int l, int u)
+ slice (int l, int u) const
{
return Array<void *>::slice (l, u);
}
}
};
-template < class T, class V>
+template<class T, class V>
Link_array<T>
typecasts (Link_array<V> const &a, T * /* dummy */)
{
return;
swap (lower, (lower + upper) / 2);
int last = lower;
- for (int i= lower +1; i <= upper; i++)
+ for (int i = lower +1; i <= upper; i++)
if (compare (elem (i), elem (lower)) < 0)
swap (++last, i);
swap (lower, last);
junk_pointers (Link_array<T> &a)
{
for (int i = 0; i < a.size (); i++)
- {
- delete a[i];
- }
+ delete a[i];
a.clear ();
}
int
binsearch (Array<T> const &arr, T t, int (*compare) (T const &, T const &))
{
- int lo;
- int hi;
int cmp;
int result;
- lo = 0;
- hi = Array<T>::maxkey;
+ int lo = 0;
+ int hi = arr.size ();
/* binary search */
do
lo = cmp;
}
while (hi - lo > 1);
+
if (!compare (t, arr[lo]))
return lo;
else
template<class T>
int
binsearch_links (Link_array<T> const &arr, T *t,
- int (*compare) (T *const &, T *const &),
- int lo = 0, int hi = -1)
+ int (*compare) (T *const &, T *const &))
{
int cmp;
int result;
- if (hi< 0)
- hi = arr.size ();
+ int lo = 0;
+ int hi = arr.size ();
if (hi == 0)
return -1;
lo = cmp;
}
while (hi - lo > 1);
+
if (!compare (t, arr[lo]))
return lo;
else