Added a replace function to linked_list_t.
This commit is contained in:
parent
fbf014b0c1
commit
0b6ff2a9fe
|
@ -476,6 +476,19 @@ METHOD(linked_list_t, insert_after, void,
|
|||
insert_item_after(this, enumerator->current, item);
|
||||
}
|
||||
|
||||
METHOD(linked_list_t, replace, void*,
|
||||
private_linked_list_t *this, private_enumerator_t *enumerator,
|
||||
void *item)
|
||||
{
|
||||
void *old = NULL;
|
||||
if (enumerator->current)
|
||||
{
|
||||
old = enumerator->current->value;
|
||||
enumerator->current->value = item;
|
||||
}
|
||||
return old;
|
||||
}
|
||||
|
||||
METHOD(linked_list_t, get_last, status_t,
|
||||
private_linked_list_t *this, void **item)
|
||||
{
|
||||
|
@ -722,6 +735,7 @@ linked_list_t *linked_list_create()
|
|||
.insert_last = _insert_last,
|
||||
.insert_after = (void*)_insert_after,
|
||||
.insert_before = (void*)_insert_before,
|
||||
.replace = (void*)_replace,
|
||||
.remove_first = _remove_first,
|
||||
.remove_last = _remove_last,
|
||||
.remove = _remove_,
|
||||
|
|
|
@ -125,6 +125,16 @@ struct linked_list_t {
|
|||
void (*insert_after)(linked_list_t *this, enumerator_t *enumerator,
|
||||
void *item);
|
||||
|
||||
/**
|
||||
* Replaces the item the enumerator currently points to with the given item.
|
||||
*
|
||||
* @param enumerator enumerator with position
|
||||
* @param item item value to replace current item with
|
||||
* @return current item or NULL if the enumerator is at an
|
||||
* invalid position
|
||||
*/
|
||||
void *(*replace)(linked_list_t *this, enumerator_t *enumerator, void *item);
|
||||
|
||||
/**
|
||||
* Remove an item from the list where the enumerator points to.
|
||||
*
|
||||
|
|
Loading…
Reference in New Issue