New functions for stacks

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@4464 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
fedor 1999-06-24 19:23:09 +00:00
parent 134d7cac2e
commit 4d85cbdec2
3 changed files with 41 additions and 0 deletions

View file

@ -1,3 +1,9 @@
1999-06-24 Adam Fedor <fedor@gnu.org>
* Source/include/GSIArray.h (GSIArrayRemoveLastItem): New function.
(GSIArrayLastItem): Likewise.
(GSIArrayCopyWithZone): Likewise.
Tue Jun 22 16:15:00 1999 Richard Frith-Macdonald <richard@brainstorm.co.uk>
* Source/NSThread.m: Various changes to tidy up notification handling

View file

@ -313,6 +313,16 @@ GSIArrayRemoveItemAtIndex(GSIArray array, unsigned index)
GSI_ARRAY_RELEASE(tmp);
}
static INLINE void
GSIArrayRemoveLastItem(GSIArray array)
{
#ifdef GSI_ARRAY_CHECKS
NSCAssert(array->count, NSInvalidArgumentException);
#endif
GSI_ARRAY_RELEASE(array->ptr[array->count-1]);
array->count--;
}
static INLINE void
GSIArrayRemoveItemAtIndexNoRelease(GSIArray array, unsigned index)
{
@ -348,6 +358,15 @@ GSIArrayItemAtIndex(GSIArray array, unsigned index)
return array->ptr[index];
}
static INLINE GSIArrayItem
GSIArrayLastItem(GSIArray array)
{
#ifdef GSI_ARRAY_CHECKS
NSCAssert(array->count, NSInvalidArgumentException);
#endif
return array->ptr[array->count-1];
}
static INLINE void
GSIArrayClear(GSIArray array)
{
@ -423,3 +442,18 @@ GSIArrayInitWithZoneAndCapacity(GSIArray array, NSZone *zone, size_t capacity)
return array;
}
static INLINE GSIArray
GSIArrayCopyWithZone(GSIArray array, NSZone *zone)
{
int i;
GSIArray new;
new = NSZoneMalloc(zone, sizeof(GSIArray_t));
GSIArrayInitWithZoneAndCapacity(new, zone, array->count);
for (i = 0; i < array->count; i++)
{
GSI_ARRAY_RETAIN(array->ptr[i]);
new->ptr[new->count++] = array->ptr[i];
}
return new;
}

View file

@ -87,6 +87,7 @@ static void FreeList(Observation *list)
static void *RetainObs(Observation *o)
{
o->retained++;
return o;
}
static unsigned oHash(void* t, Observation *o)