template<class TYPE>
class List {
TYPE *split(int (*cmpr)(TYPE *a, TYPE *b),TYPE *l, TYPE *r);
- void sort(int (*cmpr)(TYPE *a, TYPE *b),TYPE *ll, TYPE *rr);
static int cmpr(TYPE *a, TYPE *b) {
if( *a == *b ) return 0;
return *a > *b ? 1 : -1;
public:
TYPE *first, *last;
void remove(TYPE *item) { if(item) delete item; }
- void remove_pointer(ListItem<TYPE> *item);
+ void remove_pointer(ListItem<TYPE> *item);
TYPE *append(TYPE *new_item);
TYPE *append() { return append(new TYPE()); }
TYPE *insert_before(TYPE *here, TYPE *item);
return p ? i : -1;
}
void swap(TYPE *item1, TYPE *item2);
- void sort(int (*cmp)(TYPE *a, TYPE *b) = 0) {
- return sort(cmp ? cmp : cmpr,0,0); }
+ void sort(TYPE *ap=0, TYPE *bp=0) { return sort(cmpr,ap,bp); }
+ void sort(int (*cmp)(TYPE *a, TYPE *b), TYPE *ap=0, TYPE *bp=0);
List() { first = last = 0; }
virtual ~List() { while(last) delete last; }
};