2 (c) Han-Wen Nienhuys 1995,96,97,98
4 Distributed under GNU GPL
18 functions with loops don't inline
21 template<class T> INLINE void
22 arrcpy (T*dest, T*src, int count)
24 for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++)
28 urg: wierd egcs-1.1.2 bug on ppc
39 template<class T> INLINE void
40 Array<T>::insert (T k, int j)
42 assert (j >=0 && j<= size_);
44 for (int i=size_-1; i > j; i--)
45 array_p_[i] = array_p_[i-1];
49 template<class T> INLINE void
50 Array<T>::sort (int (*compare)(T const&,T const&),
51 int lower = -1, int upper = -1)
60 swap (lower, (lower+upper)/2);
62 for (int i= lower +1; i <= upper; i++)
63 if (compare (array_p_[i], array_p_[lower]) < 0)
66 sort (compare, lower, last-1);
67 sort (compare, last+1, upper);
70 template<class T> INLINE void
74 for (int i =0,j = size_-1; i < h; i++,j--)
78 template<class T> INLINE
82 assert (max_ >= size_ && size_ >=0);
83 if (max_) assert (array_p_);
86 template<class T> INLINE
88 Array<T>::remove_array_p ()
97 template<class T> INLINE
99 Array<T>::slice (int lower, int upper)
101 assert (lower >= 0 && lower <=upper&& upper <= size_);
105 arrcpy (r.array_p_, array_p_ + lower, s);