diff options
-rw-r--r-- | libappstream-glib/as-release.c | 40 | ||||
-rw-r--r-- | libappstream-glib/as-release.h | 3 |
2 files changed, 43 insertions, 0 deletions
diff --git a/libappstream-glib/as-release.c b/libappstream-glib/as-release.c index 35694c2..7ee7481 100644 --- a/libappstream-glib/as-release.c +++ b/libappstream-glib/as-release.c @@ -139,6 +139,46 @@ as_release_class_init (AsReleaseClass *klass) } /** + * as_release_state_from_string: + * @state: a string + * + * Converts the text representation to an enumerated value. + * + * Return value: A #AsReleaseState, e.g. %AS_RELEASE_STATE_INSTALLED. + * + * Since: 0.6.6 + **/ +AsReleaseState +as_release_state_from_string (const gchar *state) +{ + if (g_strcmp0 (state, "installed") == 0) + return AS_RELEASE_STATE_INSTALLED; + if (g_strcmp0 (state, "available") == 0) + return AS_RELEASE_STATE_AVAILABLE; + return AS_APP_MERGE_KIND_NONE; +} + +/** + * as_release_state_to_string: + * @state: the #AsReleaseState, e.g. %AS_RELEASE_STATE_INSTALLED + * + * Converts the enumerated value to an text representation. + * + * Returns: string version of @state, or %NULL for unknown + * + * Since: 0.6.6 + **/ +const gchar * +as_release_state_to_string (AsReleaseState state) +{ + if (state == AS_RELEASE_STATE_INSTALLED) + return "installed"; + if (state == AS_RELEASE_STATE_AVAILABLE) + return "available"; + return NULL; +} + +/** * as_release_vercmp: * @rel1: a #AsRelease instance. * @rel2: a #AsRelease instance. diff --git a/libappstream-glib/as-release.h b/libappstream-glib/as-release.h index 402fbc7..326a5c1 100644 --- a/libappstream-glib/as-release.h +++ b/libappstream-glib/as-release.h @@ -69,6 +69,9 @@ AsRelease *as_release_new (void); gint as_release_vercmp (AsRelease *rel1, AsRelease *rel2); +AsReleaseState as_release_state_from_string (const gchar *state); +const gchar *as_release_state_to_string (AsReleaseState state); + /* getters */ const gchar *as_release_get_version (AsRelease *release); GBytes *as_release_get_blob (AsRelease *release, |