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 const* src, int count)
24 for (int i_shadows_local=0; i_shadows_local < count ; i_shadows_local++)
28 urg: wierd egcs-1.1.2-12c (stock LinuxPPC R5) bug on ppc
30 fixed in egcs-1.1.2-12f
31 ftp://dev.linuxppc.org/users/fsirl/R5/RPMS/ppc/
41 template<class T> INLINE void
42 Array<T>::insert (T k, int j)
44 assert (j >=0 && j<= size_);
46 for (int i=size_-1; i > j; i--)
47 array_p_[i] = array_p_[i-1];
51 template<class T> INLINE void
52 Array<T>::sort (int (*compare)(T const&,T const&),
53 int lower = -1, int upper = -1)
62 swap (lower, (lower+upper)/2);
64 for (int i= lower +1; i <= upper; i++)
65 if (compare (array_p_[i], array_p_[lower]) < 0)
68 sort (compare, lower, last-1);
69 sort (compare, last+1, upper);
72 template<class T> INLINE void
76 for (int i =0,j = size_-1; i < h; i++,j--)
80 template<class T> INLINE
84 assert (max_ >= size_ && size_ >=0);
85 if (max_) assert (array_p_);
88 template<class T> INLINE
90 Array<T>::remove_array_p ()
99 template<class T> INLINE
101 Array<T>::slice (int lower, int upper) const
103 assert (lower >= 0 && lower <=upper&& upper <= size_);
107 arrcpy (r.array_p_, array_p_ + lower, s);