This is ToDoList.m in view mode; [Download] [Up]
/*
* ToDoList - list that sorts its elements based on the priority of the
* ToDoItems that it contains
*
* You may freely copy, distribute and reuse the code in this example.
* This code is provided AS IS without warranty of any kind, expressed
* or implied, as to its fitness for any particular use.
*
* Copyright 1995 Ralph Zazula (rzazula@next.com). All Rights Reserved.
*
*/
#import "ToDoList.h"
#import "ToDoItem.h"
#import <time.h>
#import <stdlib.h>
@implementation ToDoList
static int toDoCompare(const void *x, const void *y)
{
ToDoItem *xi = *(ToDoItem **)x;
ToDoItem *yi = *(ToDoItem **)y;
long xp = [xi priority];
long yp = [yi priority];
/* sort by priority */
if(xp != yp) {
return yp - xp;
}
/* items of similar priorty sort by creation date */
return [yi startDate] - [xi startDate];
}
- sort
{
qsort((ToDoItem **)dataPtr, numElements, sizeof(id), toDoCompare);
return self;
}
- insertObject:anObject at:(unsigned)index
{
if(![super insertObject:anObject at:index]) {
return nil;
}
[self sort];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.