1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- 2 * 3 * Copyright (C) 2014-2018 Richard Hughes <richard@hughsie.com> 4 * Copyright (C) 2018 Matthias Klumpp <matthias@tenstral.net> 5 * 6 * SPDX-License-Identifier: LGPL-2.1+ 7 */ 8 9 #pragma once 10 11 #if !defined (__APPSTREAM_GLIB_H_INSIDE__) && !defined (AS_COMPILATION) 12 #error "Only <appstream-glib.h> can be included directly." 13 #endif 14 15 #include <glib-object.h> 16 17 #include "as-checksum.h" 18 19 G_BEGIN_DECLS 20 21 #define AS_TYPE_RELEASE (as_release_get_type ()) 22 G_DECLARE_DERIVABLE_TYPE (AsRelease, as_release, AS, RELEASE, GObject) 23 24 struct _AsReleaseClass 25 { 26 GObjectClass parent_class; 27 /*< private >*/ 28 void (*_as_reserved1) (void); 29 void (*_as_reserved2) (void); 30 void (*_as_reserved3) (void); 31 void (*_as_reserved4) (void); 32 void (*_as_reserved5) (void); 33 void (*_as_reserved6) (void); 34 void (*_as_reserved7) (void); 35 void (*_as_reserved8) (void); 36 }; 37 38 /** 39 * AsReleaseKind: 40 * @AS_RELEASE_KIND_UNKNOWN: Unknown release type 41 * @AS_RELEASE_KIND_STABLE: A stable release 42 * @AS_RELEASE_KIND_DEVELOPMENT: A development release 43 * 44 * The release size kind. 45 * 46 * Since: 0.7.6 47 **/ 48 typedef enum { 49 AS_RELEASE_KIND_UNKNOWN, /* Since: 0.7.6 */ 50 AS_RELEASE_KIND_STABLE, /* Since: 0.7.6 */ 51 AS_RELEASE_KIND_DEVELOPMENT, /* Since: 0.7.6 */ 52 /*< private >*/ 53 AS_RELEASE_KIND_LAST 54 } AsReleaseKind; 55 56 /** 57 * AsReleaseState: 58 * @AS_RELEASE_STATE_UNKNOWN: Unknown state 59 * @AS_RELEASE_STATE_INSTALLED: Release is installed 60 * @AS_RELEASE_STATE_AVAILABLE: Release is available 61 * 62 * The release state. 63 **/ 64 typedef enum { 65 AS_RELEASE_STATE_UNKNOWN, /* Since: 0.5.8 */ 66 AS_RELEASE_STATE_INSTALLED, /* Since: 0.5.8 */ 67 AS_RELEASE_STATE_AVAILABLE, /* Since: 0.5.8 */ 68 /*< private >*/ 69 AS_RELEASE_STATE_LAST 70 } AsReleaseState; 71 72 AsRelease *as_release_new (void); 73 gint as_release_vercmp (AsRelease *rel1, 74 AsRelease *rel2); 75 76 AsReleaseKind as_release_kind_from_string (const gchar *kind_str); 77 const gchar *as_release_kind_to_string (AsReleaseKind kind); 78 AsReleaseState as_release_state_from_string (const gchar *state); 79 const gchar *as_release_state_to_string (AsReleaseState state); 80 81 /* getters */ 82 const gchar *as_release_get_version (AsRelease *release); 83 GBytes *as_release_get_blob (AsRelease *release, 84 const gchar *filename); 85 guint64 as_release_get_timestamp (AsRelease *release); 86 guint64 as_release_get_install_duration(AsRelease *release); 87 const gchar *as_release_get_description (AsRelease *release, 88 const gchar *locale); 89 GPtrArray *as_release_get_locations (AsRelease *release); 90 const gchar *as_release_get_location_default (AsRelease *release); 91 AsChecksum *as_release_get_checksum_by_fn (AsRelease *release, 92 const gchar *fn); 93 AsChecksum *as_release_get_checksum_by_target (AsRelease *release, 94 AsChecksumTarget target); 95 GPtrArray *as_release_get_checksums (AsRelease *release); 96 AsUrgencyKind as_release_get_urgency (AsRelease *release); 97 AsReleaseKind as_release_get_kind (AsRelease *release); 98 AsReleaseState as_release_get_state (AsRelease *release); 99 guint64 as_release_get_size (AsRelease *release, 100 AsSizeKind kind); 101 const gchar *as_release_get_url (AsRelease *release, 102 AsUrlKind url_kind); 103 104 /* setters */ 105 void as_release_set_version (AsRelease *release, 106 const gchar *version); 107 void as_release_set_blob (AsRelease *release, 108 const gchar *filename, 109 GBytes *blob); 110 void as_release_set_timestamp (AsRelease *release, 111 guint64 timestamp); 112 void as_release_set_install_duration(AsRelease *release, 113 guint64 install_duration); 114 void as_release_set_description (AsRelease *release, 115 const gchar *locale, 116 const gchar *description); 117 void as_release_add_location (AsRelease *release, 118 const gchar *location); 119 void as_release_add_checksum (AsRelease *release, 120 AsChecksum *checksum); 121 void as_release_set_urgency (AsRelease *release, 122 AsUrgencyKind urgency); 123 void as_release_set_kind (AsRelease *release, 124 AsReleaseKind kind); 125 void as_release_set_state (AsRelease *release, 126 AsReleaseState state); 127 void as_release_set_size (AsRelease *release, 128 AsSizeKind kind, 129 guint64 size); 130 void as_release_set_url (AsRelease *release, 131 AsUrlKind url_kind, 132 const gchar *url); 133 134 G_END_DECLS 135