get rid of unused iterator hook functions
This commit is contained in:
@@ -26,43 +26,6 @@
|
|||||||
|
|
||||||
#include <library.h>
|
#include <library.h>
|
||||||
|
|
||||||
typedef enum hook_result_t hook_result_t;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Return value of an iterator hook.
|
|
||||||
*
|
|
||||||
* Returning HOOK_AGAIN is useful to "inject" additional elements in an
|
|
||||||
* iteration, HOOK_NEXT is the normal iterator behavior, and HOOK_SKIP may
|
|
||||||
* be used to filter elements out.
|
|
||||||
*/
|
|
||||||
enum hook_result_t {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A value was placed in out, hook is called again with the same "in"
|
|
||||||
*/
|
|
||||||
HOOK_AGAIN,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A value was placed in out, hook is called again with next "in" (if any)
|
|
||||||
*/
|
|
||||||
HOOK_NEXT,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* No value in out, call again with next "in" (if any)
|
|
||||||
*/
|
|
||||||
HOOK_SKIP,
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Iterator hook function prototype.
|
|
||||||
*
|
|
||||||
* @param param user supplied parameter
|
|
||||||
* @param in the value the hook receives from the iterator
|
|
||||||
* @param out the value supplied as a result to the iterator
|
|
||||||
* @return a hook_result_t
|
|
||||||
*/
|
|
||||||
typedef hook_result_t (iterator_hook_t)(void *param, void *in, void **out);
|
|
||||||
|
|
||||||
|
|
||||||
typedef struct iterator_t iterator_t;
|
typedef struct iterator_t iterator_t;
|
||||||
|
|
||||||
@@ -93,24 +56,6 @@ struct iterator_t {
|
|||||||
*/
|
*/
|
||||||
bool (*iterate) (iterator_t *this, void** value);
|
bool (*iterate) (iterator_t *this, void** value);
|
||||||
|
|
||||||
/**
|
|
||||||
* Hook a function into the iterator.
|
|
||||||
*
|
|
||||||
* Sometimes it is useful to hook in an iterator. The hook function is
|
|
||||||
* called before any successful return of iterate(). It takes the
|
|
||||||
* iterator value, may manipulate it (or the references object), and returns
|
|
||||||
* the value that the iterate() function returns. Depending on the hook
|
|
||||||
* return value, the hook is called again, called with next, or skipped.
|
|
||||||
* A value of NULL deactivates the iterator hook.
|
|
||||||
* If an iterator is hooked, only the iterate() method is valid,
|
|
||||||
* all other methods behave undefined.
|
|
||||||
*
|
|
||||||
* @param hook iterator hook which manipulates the iterated value
|
|
||||||
* @param param user supplied parameter to pass back to the hook
|
|
||||||
*/
|
|
||||||
void (*set_iterator_hook) (iterator_t *this, iterator_hook_t *hook,
|
|
||||||
void *param);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Inserts a new item before the given iterator position.
|
* Inserts a new item before the given iterator position.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -119,16 +119,6 @@ struct private_iterator_t {
|
|||||||
* Direction of iterator.
|
* Direction of iterator.
|
||||||
*/
|
*/
|
||||||
bool forward;
|
bool forward;
|
||||||
|
|
||||||
/**
|
|
||||||
* iteration hook
|
|
||||||
*/
|
|
||||||
iterator_hook_t *hook;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* user parameter for iterator hook
|
|
||||||
*/
|
|
||||||
void *hook_param;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct private_enumerator_t private_enumerator_t;
|
typedef struct private_enumerator_t private_enumerator_t;
|
||||||
@@ -202,75 +192,22 @@ static int get_list_count(private_iterator_t *this)
|
|||||||
return this->list->count;
|
return this->list->count;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* default iterator hook which does nothing
|
|
||||||
*/
|
|
||||||
static hook_result_t iterator_hook(void *param, void *in, void **out)
|
|
||||||
{
|
|
||||||
*out = in;
|
|
||||||
return HOOK_NEXT;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Implementation of iterator_t.set_iterator_hook.
|
|
||||||
*/
|
|
||||||
static void set_iterator_hook(private_iterator_t *this, iterator_hook_t *hook,
|
|
||||||
void* param)
|
|
||||||
{
|
|
||||||
if (hook == NULL)
|
|
||||||
{
|
|
||||||
this->hook = iterator_hook;
|
|
||||||
this->hook_param = NULL;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this->hook = hook;
|
|
||||||
this->hook_param = param;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Implementation of iterator_t.iterate.
|
* Implementation of iterator_t.iterate.
|
||||||
*/
|
*/
|
||||||
static bool iterate(private_iterator_t *this, void** value)
|
static bool iterate(private_iterator_t *this, void** value)
|
||||||
{
|
{
|
||||||
while (TRUE)
|
if (this->forward)
|
||||||
{
|
{
|
||||||
if (this->forward)
|
this->current = this->current ? this->current->next : this->list->first;
|
||||||
{
|
}
|
||||||
this->current = this->current ? this->current->next : this->list->first;
|
else
|
||||||
}
|
{
|
||||||
else
|
this->current = this->current ? this->current->previous : this->list->last;
|
||||||
{
|
}
|
||||||
this->current = this->current ? this->current->previous : this->list->last;
|
if (this->current == NULL)
|
||||||
}
|
{
|
||||||
|
return FALSE;
|
||||||
if (this->current == NULL)
|
|
||||||
{
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (this->hook(this->hook_param, this->current->value, value))
|
|
||||||
{
|
|
||||||
case HOOK_AGAIN:
|
|
||||||
/* rewind */
|
|
||||||
if (this->forward)
|
|
||||||
{
|
|
||||||
this->current = this->current->previous;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
this->current = this->current->next;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case HOOK_NEXT:
|
|
||||||
/* normal iteration */
|
|
||||||
break;
|
|
||||||
case HOOK_SKIP:
|
|
||||||
/* advance */
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
@@ -786,7 +723,6 @@ static iterator_t *create_iterator(private_linked_list_t *linked_list, bool forw
|
|||||||
|
|
||||||
this->public.get_count = (int (*) (iterator_t*)) get_list_count;
|
this->public.get_count = (int (*) (iterator_t*)) get_list_count;
|
||||||
this->public.iterate = (bool (*) (iterator_t*, void **value)) iterate;
|
this->public.iterate = (bool (*) (iterator_t*, void **value)) iterate;
|
||||||
this->public.set_iterator_hook = (void(*)(iterator_t*, iterator_hook_t*, void*))set_iterator_hook;
|
|
||||||
this->public.insert_before = (void (*) (iterator_t*, void *item)) insert_before;
|
this->public.insert_before = (void (*) (iterator_t*, void *item)) insert_before;
|
||||||
this->public.insert_after = (void (*) (iterator_t*, void *item)) insert_after;
|
this->public.insert_after = (void (*) (iterator_t*, void *item)) insert_after;
|
||||||
this->public.replace = (status_t (*) (iterator_t*, void **, void *)) replace;
|
this->public.replace = (status_t (*) (iterator_t*, void **, void *)) replace;
|
||||||
@@ -797,7 +733,6 @@ static iterator_t *create_iterator(private_linked_list_t *linked_list, bool forw
|
|||||||
this->forward = forward;
|
this->forward = forward;
|
||||||
this->current = NULL;
|
this->current = NULL;
|
||||||
this->list = linked_list;
|
this->list = linked_list;
|
||||||
this->hook = iterator_hook;
|
|
||||||
|
|
||||||
return &this->public;
|
return &this->public;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user