Added a replace function to linked_list_t.
This commit is contained in:
@@ -476,6 +476,19 @@ METHOD(linked_list_t, insert_after, void,
|
|||||||
insert_item_after(this, enumerator->current, item);
|
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,
|
METHOD(linked_list_t, get_last, status_t,
|
||||||
private_linked_list_t *this, void **item)
|
private_linked_list_t *this, void **item)
|
||||||
{
|
{
|
||||||
@@ -722,6 +735,7 @@ linked_list_t *linked_list_create()
|
|||||||
.insert_last = _insert_last,
|
.insert_last = _insert_last,
|
||||||
.insert_after = (void*)_insert_after,
|
.insert_after = (void*)_insert_after,
|
||||||
.insert_before = (void*)_insert_before,
|
.insert_before = (void*)_insert_before,
|
||||||
|
.replace = (void*)_replace,
|
||||||
.remove_first = _remove_first,
|
.remove_first = _remove_first,
|
||||||
.remove_last = _remove_last,
|
.remove_last = _remove_last,
|
||||||
.remove = _remove_,
|
.remove = _remove_,
|
||||||
|
|||||||
@@ -125,6 +125,16 @@ struct linked_list_t {
|
|||||||
void (*insert_after)(linked_list_t *this, enumerator_t *enumerator,
|
void (*insert_after)(linked_list_t *this, enumerator_t *enumerator,
|
||||||
void *item);
|
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.
|
* Remove an item from the list where the enumerator points to.
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user