Added AList_RemoveString
git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@2703 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
Changes towards version 0.7:
|
Changes towards version 0.7:
|
||||||
|
- Added ability to remove entries from ALists - Michael
|
||||||
- Cleaned up FRAME, CONTEXT, and FONT abstraction layers - Michael
|
- Cleaned up FRAME, CONTEXT, and FONT abstraction layers - Michael
|
||||||
- Added Input Frames to pause code to stop infinite loops - Michael
|
- Added Input Frames to pause code to stop infinite loops - Michael
|
||||||
- Added more netplay debug code - SvdB
|
- Added more netplay debug code - SvdB
|
||||||
|
|||||||
@@ -104,6 +104,46 @@ Alist_PutAll (alist *dst, alist *src)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Remove operation. Returns the old value, or NULL if it didn't exist. */
|
||||||
|
|
||||||
|
/* NOTE: The actual strings representing the key and the value in the
|
||||||
|
* stringbank will still stay in the bank, since there's no way to
|
||||||
|
* ensure they aren't still in use somewhere. In fact, that's the
|
||||||
|
* only reason returning the value is safe at all. */
|
||||||
|
|
||||||
|
const char *
|
||||||
|
Alist_RemoveString (alist *m, const char *key)
|
||||||
|
{
|
||||||
|
alist_entry *todel = NULL;
|
||||||
|
if (!strcmp (m->first->key, key))
|
||||||
|
{
|
||||||
|
todel = m->first;
|
||||||
|
m->first = m->first->next;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
alist_entry *x = m->first;
|
||||||
|
while (x->next != NULL) {
|
||||||
|
if (!strcmp (x->next->key, key))
|
||||||
|
{
|
||||||
|
todel = x->next;
|
||||||
|
x->next = x->next->next;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
x = x->next;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (todel)
|
||||||
|
{
|
||||||
|
const char *result = todel->value;
|
||||||
|
todel->next = NULL;
|
||||||
|
AlistEntry_Free (todel);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
alist *
|
alist *
|
||||||
Alist_New_FromFile (uio_Stream *f)
|
Alist_New_FromFile (uio_Stream *f)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -59,6 +59,9 @@ const char *Alist_GetString (alist *m, const char *key);
|
|||||||
void Alist_PutString (alist *m, const char *key, const char *value);
|
void Alist_PutString (alist *m, const char *key, const char *value);
|
||||||
void Alist_PutAll (alist *dest, alist *src);
|
void Alist_PutAll (alist *dest, alist *src);
|
||||||
|
|
||||||
|
/* Remove operation. Returns the old value, or NULL if it didn't exist. */
|
||||||
|
const char *Alist_RemoveString (alist *m, const char *key);
|
||||||
|
|
||||||
/* Dump the alist to the specified stream in a form that could be
|
/* Dump the alist to the specified stream in a form that could be
|
||||||
read later by the Alist_New_From* routines. Dump only keys
|
read later by the Alist_New_From* routines. Dump only keys
|
||||||
that begin with the prefix; NULL means all keys. */
|
that begin with the prefix; NULL means all keys. */
|
||||||
|
|||||||
Reference in New Issue
Block a user