mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-11 07:42:18 +00:00
78 lines
1.4 KiB
R
78 lines
1.4 KiB
R
|
/*
|
||
|
Stack.r
|
||
|
|
||
|
A general-purpose stack class
|
||
|
|
||
|
Copyright (C) 2003 Jeff Teunissen <deek@quakeforge.net>
|
||
|
|
||
|
This file is part of the Ruamoko Standard Library.
|
||
|
|
||
|
This library is free software; you can redistribute it and/or modify it
|
||
|
under the terms of the GNU Lesser General Public License as published by
|
||
|
the Free Software Foundation; either version 2.1 of the License, or (at
|
||
|
your option) any later version.
|
||
|
|
||
|
This library is distributed in the hope that it will be useful, but
|
||
|
WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
|
||
|
See the GNU Lesser General Public License for more details.
|
||
|
|
||
|
You should have received a copy of the GNU Lesser General Public
|
||
|
License along with this program; if not, write to:
|
||
|
|
||
|
Free Software Foundation, Inc.
|
||
|
59 Temple Place - Suite 330
|
||
|
Boston, MA 02111-1307, USA
|
||
|
|
||
|
$Id$
|
||
|
*/
|
||
|
|
||
|
#include "Object.h"
|
||
|
#include "ListNode.h"
|
||
|
#include "Stack.h"
|
||
|
|
||
|
@implementation Stack
|
||
|
|
||
|
- (void) removeAllObjects
|
||
|
{
|
||
|
while ([self count] > 0)
|
||
|
[self pop];
|
||
|
}
|
||
|
|
||
|
- (void) addObject: (id)anObject
|
||
|
{
|
||
|
top = [[[ListNode alloc] initWithObject: anObject] setNextNode: top];
|
||
|
stackSize++;
|
||
|
}
|
||
|
|
||
|
- (id) pop
|
||
|
{
|
||
|
local id data;
|
||
|
local id oldTop = NIL;
|
||
|
|
||
|
if (!top)
|
||
|
return NIL;
|
||
|
|
||
|
oldTop = top;
|
||
|
top = [top next];
|
||
|
stackSize--;
|
||
|
|
||
|
data = [[oldTop object] retain];
|
||
|
[oldTop release];
|
||
|
|
||
|
return [data autorelease];
|
||
|
}
|
||
|
|
||
|
- (id) peek
|
||
|
{
|
||
|
return [top object];
|
||
|
}
|
||
|
|
||
|
- (integer) count
|
||
|
{
|
||
|
|
||
|
}
|
||
|
|
||
|
@end
|