summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2014-08-15 14:03:13 +0100
committerRichard Hughes <richard@hughsie.com>2014-08-18 10:44:28 +0100
commit8ab63662d0a7047b07baefc20b81b6ba52be1714 (patch)
treef5774b26f799a1ba6b47f53c8d7ad063817f7aca
parent6ef740fa895b3cda529c8c809bd8dfa5e3fd971a (diff)
downloadappstream-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.c10
-rw-r--r--libappstream-glib/as-store.c18
-rw-r--r--libappstream-glib/as-store.h1
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,