diff --git a/src/common/coll.c b/src/common/coll.c index f2cd52f7e..c552cbf0d 100644 --- a/src/common/coll.c +++ b/src/common/coll.c @@ -195,10 +195,24 @@ const void* CollConstLast (const Collection* C) +void* CollPop (Collection* C) +/* Remove the last segment from the stack and return it. Calls FAIL if the + * collection is empty. + */ +{ + /* We must have at least one entry */ + PRECONDITION (C->Count > 0); + + /* Return the element */ + return C->Items[--C->Count]; +} + + + int CollIndex (Collection* C, const void* Item) /* Return the index of the given item in the collection. Return -1 if the * item was not found in the collection. - */ + */ { /* Linear search */ unsigned I; diff --git a/src/common/coll.h b/src/common/coll.h index bab2ffc48..83d3e9d22 100644 --- a/src/common/coll.h +++ b/src/common/coll.h @@ -102,6 +102,11 @@ void* CollLast (Collection* C); const void* CollConstLast (const Collection* C); /* Return the last item in a collection */ +void* CollPop (Collection* C); +/* Remove the last segment from the stack and return it. Calls FAIL if the + * collection is empty. + */ + int CollIndex (Collection* C, const void* Item); /* Return the index of the given item in the collection. Return -1 if the * item was not found in the collection.