diff options
author | Richard Hughes <richard@hughsie.com> | 2014-08-15 14:03:13 +0100 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2014-08-18 10:44:28 +0100 |
commit | 8ab63662d0a7047b07baefc20b81b6ba52be1714 (patch) | |
tree | f5774b26f799a1ba6b47f53c8d7ad063817f7aca | |
parent | 6ef740fa895b3cda529c8c809bd8dfa5e3fd971a (diff) | |
download | appstream-glib-8ab63662d0a7047b07baefc20b81b6ba52be1714.tar.gz |
Add as_store_remove_all()
This clears out all applications from the store.
-rw-r--r-- | libappstream-glib/as-self-test.c | 10 | ||||
-rw-r--r-- | libappstream-glib/as-store.c | 18 | ||||
-rw-r--r-- | libappstream-glib/as-store.h | 1 |
3 files changed, 29 insertions, 0 deletions
diff --git a/libappstream-glib/as-self-test.c b/libappstream-glib/as-self-test.c index adea0a1..82b9399 100644 --- a/libappstream-glib/as-self-test.c +++ b/libappstream-glib/as-self-test.c @@ -1825,6 +1825,16 @@ as_test_store_func (void) "</application>" "</applications>"); g_string_free (xml, TRUE); + + /* empty the store */ + as_store_remove_all (store); + g_assert_cmpint (as_store_get_size (store), ==, 0); + g_assert (as_store_get_app_by_id (store, "aaa.desktop") == NULL); + g_assert (as_store_get_app_by_id (store, "gnome-software.desktop") == NULL); + xml = as_store_to_xml (store, 0); + g_assert_cmpstr (xml->str, ==, + "<applications version=\"0.4\"/>"); + g_string_free (xml, TRUE); } static void diff --git a/libappstream-glib/as-store.c b/libappstream-glib/as-store.c index 140a08e..37f2bfa 100644 --- a/libappstream-glib/as-store.c +++ b/libappstream-glib/as-store.c @@ -198,6 +198,24 @@ as_store_get_apps (AsStore *store) } /** + * as_store_remove_all: + * @store: a #AsStore instance. + * + * Removes all applications from the store. + * + * Since: 0.2.5 + **/ +void +as_store_remove_all (AsStore *store) +{ + AsStorePrivate *priv = GET_PRIVATE (store); + g_return_if_fail (AS_IS_STORE (store)); + g_ptr_array_set_size (priv->array, 0); + g_hash_table_remove_all (priv->hash_id); + g_hash_table_remove_all (priv->hash_pkgname); +} + +/** * as_store_get_apps_by_metadata: * @store: a #AsStore instance. * @key: metadata key diff --git a/libappstream-glib/as-store.h b/libappstream-glib/as-store.h index 6a74d0d..89d54b4 100644 --- a/libappstream-glib/as-store.h +++ b/libappstream-glib/as-store.h @@ -141,6 +141,7 @@ gboolean as_store_load_path (AsStore *store, const gchar *path, GCancellable *cancellable, GError **error); +void as_store_remove_all (AsStore *store); GPtrArray *as_store_get_apps (AsStore *store); GPtrArray *as_store_get_apps_by_metadata (AsStore *store, const gchar *key, |