[libvirt] [PATCH V11 1/7] Implement virHashRemoveAll function
Daniel Veillard
veillard at redhat.com
Thu Apr 19 08:40:07 UTC 2012
On Tue, Apr 17, 2012 at 10:44:02AM -0400, Stefan Berger wrote:
> Implement function to remove all entries of a hash table.
>
> ---
> src/libvirt_private.syms | 1 +
> src/util/virhash.c | 25 +++++++++++++++++++++++++
> src/util/virhash.h | 5 +++++
> 3 files changed, 31 insertions(+)
>
> Index: libvirt-acl/src/libvirt_private.syms
> ===================================================================
> --- libvirt-acl.orig/src/libvirt_private.syms
> +++ libvirt-acl/src/libvirt_private.syms
> @@ -578,6 +578,7 @@ virHashForEach;
> virHashFree;
> virHashGetItems;
> virHashLookup;
> +virHashRemoveAll;
> virHashRemoveEntry;
> virHashRemoveSet;
> virHashSearch;
> Index: libvirt-acl/src/util/virhash.c
> ===================================================================
> --- libvirt-acl.orig/src/util/virhash.c
> +++ libvirt-acl/src/util/virhash.c
> @@ -575,6 +575,31 @@ virHashRemoveSet(virHashTablePtr table,
> return count;
> }
>
> +static int
> +_virHashRemoveAllIter(const void *payload ATTRIBUTE_UNUSED,
> + const void *name ATTRIBUTE_UNUSED,
> + const void *data ATTRIBUTE_UNUSED)
> +{
> + return 1;
> +}
> +
> +/**
> + * virHashRemoveAll
> + * @table: the hash table to clear
> + *
> + * Free the hash @table's contents. The userdata is
> + * deallocated with the function provided at creation time.
> + *
> + * Returns the number of items removed on success, -1 on failure
> + */
> +ssize_t
> +virHashRemoveAll(virHashTablePtr table)
> +{
> + return virHashRemoveSet(table,
> + _virHashRemoveAllIter,
> + NULL);
> +}
> +
> /**
> * virHashSearch:
> * @table: the hash table to search
> Index: libvirt-acl/src/util/virhash.h
> ===================================================================
> --- libvirt-acl.orig/src/util/virhash.h
> +++ libvirt-acl/src/util/virhash.h
> @@ -127,6 +127,11 @@ int virHashRemoveEntry(virHashTablePtr t
> const void *name);
>
> /*
> + * Remove all entries from the hash table.
> + */
> +ssize_t virHashRemoveAll(virHashTablePtr table);
> +
> +/*
> * Retrieve the userdata.
> */
> void *virHashLookup(virHashTablePtr table, const void *name);
>
There is certainly a way to implement this in a more efficient fashion
but that's fine :-)
ACK,
Daniel
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list