1
0
mirror of https://github.com/cc65/cc65.git synced 2025-01-06 22:31:52 +00:00

Added CollReplaceExpand.

git-svn-id: svn://svn.cc65.org/cc65/trunk@5249 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2011-08-21 17:30:25 +00:00
parent d0d550be66
commit 37ac033370
2 changed files with 45 additions and 5 deletions

View File

@ -306,6 +306,39 @@ void CollReplace (Collection* C, void* Item, unsigned Index)
void CollReplaceExpand (Collection* C, void* Item, unsigned Index)
/* If Index is a valid index for the collection, replace the item at this
* position by the one passed. If the collection is too small, expand it,
* filling unused pointers with NULL, then add the new item at the given
* position.
*/
{
if (Index < C->Count) {
/* Collection is already large enough */
C->Items[Index] = Item;
} else {
/* Must expand the collection */
unsigned Size = C->Size;
if (Size == 0) {
Size = 4;
}
while (Index >= Size) {
Size *= 2;
}
CollGrow (C, Size);
/* Fill up unused slots with NULL */
while (C->Count < Index) {
C->Items[C->Count++] = 0;
}
/* Fill in the item */
C->Items[C->Count++] = Item;
}
}
void CollMove (Collection* C, unsigned OldIndex, unsigned NewIndex)
/* Move an item from one position in the collection to another. OldIndex
* is the current position of the item, NewIndex is the new index after

View File

@ -6,7 +6,7 @@
/* */
/* */
/* */
/* (C) 2000-2010, Ullrich von Bassewitz */
/* (C) 2000-2011, Ullrich von Bassewitz */
/* Roemerstrasse 52 */
/* D-70794 Filderstadt */
/* EMail: uz@cc65.org */
@ -259,6 +259,13 @@ void CollReplace (Collection* C, void* Item, unsigned Index);
*/
#endif
void CollReplaceExpand (Collection* C, void* Item, unsigned Index);
/* If Index is a valid index for the collection, replace the item at this
* position by the one passed. If the collection is too small, expand it,
* filling unused pointers with NULL, then add the new item at the given
* position.
*/
void CollMove (Collection* C, unsigned OldIndex, unsigned NewIndex);
/* Move an item from one position in the collection to another. OldIndex
* is the current position of the item, NewIndex is the new index after