hashtable enumerator enumerates over both, key and values
This commit is contained in:
@@ -1751,7 +1751,7 @@ static void destroy(private_kernel_netlink_ipsec_t *this)
|
|||||||
close(this->socket_xfrm_events);
|
close(this->socket_xfrm_events);
|
||||||
this->socket_xfrm->destroy(this->socket_xfrm);
|
this->socket_xfrm->destroy(this->socket_xfrm);
|
||||||
enumerator = this->policies->create_enumerator(this->policies);
|
enumerator = this->policies->create_enumerator(this->policies);
|
||||||
while (enumerator->enumerate(enumerator, (void**)&policy))
|
while (enumerator->enumerate(enumerator, &policy, &policy))
|
||||||
{
|
{
|
||||||
free(policy);
|
free(policy);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -322,16 +322,18 @@ static u_int get_count(private_hashtable_t *this)
|
|||||||
/**
|
/**
|
||||||
* Implementation of private_enumerator_t.enumerator.enumerate.
|
* Implementation of private_enumerator_t.enumerator.enumerate.
|
||||||
*/
|
*/
|
||||||
static bool enumerate(private_enumerator_t *this, void **item)
|
static bool enumerate(private_enumerator_t *this, void **key, void **value)
|
||||||
{
|
{
|
||||||
while (this->row < this->table->capacity)
|
while (this->row < this->table->capacity)
|
||||||
{
|
{
|
||||||
if (this->current)
|
if (this->current)
|
||||||
{
|
{
|
||||||
pair_t *pair;
|
pair_t *pair;
|
||||||
if (this->current->enumerate(this->current, (void**)&pair))
|
|
||||||
|
if (this->current->enumerate(this->current, &pair))
|
||||||
{
|
{
|
||||||
*item = pair->value;
|
*key = pair->key;
|
||||||
|
*value = pair->value;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
this->current->destroy(this->current);
|
this->current->destroy(this->current);
|
||||||
@@ -340,6 +342,7 @@ static bool enumerate(private_enumerator_t *this, void **item)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
linked_list_t *list;
|
linked_list_t *list;
|
||||||
|
|
||||||
if ((list = this->table->table[this->row]) != NULL)
|
if ((list = this->table->table[this->row]) != NULL)
|
||||||
{
|
{
|
||||||
this->current = list->create_enumerator(list);
|
this->current = list->create_enumerator(list);
|
||||||
|
|||||||
@@ -52,9 +52,9 @@ typedef bool (*hashtable_equals_t)(void *key, void *other_key);
|
|||||||
struct hashtable_t {
|
struct hashtable_t {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an enumerator over the hash table.
|
* Create an enumerator over the hash table key/value pairs.
|
||||||
*
|
*
|
||||||
* @return enumerator over hash table entries
|
* @return enumerator over (void *key, void *value)
|
||||||
*/
|
*/
|
||||||
enumerator_t *(*create_enumerator) (hashtable_t *this);
|
enumerator_t *(*create_enumerator) (hashtable_t *this);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user