add removeItemAtHead and removeItemAtTail

This commit is contained in:
Bill Currie 2003-07-29 17:43:42 +00:00
parent 5b9b11241b
commit f2ad4dea7b
2 changed files with 39 additions and 3 deletions

View file

@ -22,7 +22,9 @@ struct list_bucket_t = {
- (id) tail;
- (void) addItemAtHead: (id) item;
- (void) addItemAtTail: (id) item;
- (void) removeItem: (id) item;
- (id) removeItem: (id) item;
- (id) removeItemAtHead;
- (id) removeItemAtTail;
- (integer) count;
-(void)makeObjectsPerformSelector:(SEL)selector;
-(void)makeObjectsPerformSelector:(SEL)selector withObject:(id)arg;

View file

@ -68,7 +68,7 @@
tail = &e.next;
}
- (void) removeItem: (id) item
- (id) removeItem: (id) item
{
local list_bucket_t [] e;
@ -77,9 +77,43 @@
e.prev[0] = e.next;
if (e.next)
e.next.prev = e.prev;
return;
obj_free (e);
return item;
}
}
return NIL;
}
- (id) removeItemAtHead
{
local list_bucket_t [] e;
local id obj;
if (!count)
return NIL;
e = head;
obj = e.obj;
e.prev[0] = e.next;
if (e.next)
e.next.prev = e.prev;
obj_free (e);
return obj;
}
- (id) removeItemAtTail
{
local list_bucket_t [] e;
local id obj;
if (!count)
return NIL;
e = (list_bucket_t []) tail;
obj = e.obj;
e.prev[0] = e.next;
if (e.next)
e.next.prev = e.prev;
obj_free (e);
return obj;
}
- (integer) count