1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
2  *
3  * Copyright (C) 2014-2017 Richard Hughes <richard@hughsie.com`
4  *
5  * SPDX-License-Identifier: LGPL-2.1+
6  */
7 
8 #pragma once
9 
10 #if !defined (__APPSTREAM_GLIB_H_INSIDE__) && !defined (AS_COMPILATION)
11 #error "Only <appstream-glib.h> can be included directly."
12 #endif
13 
14 #include <glib.h>
15 
16 G_BEGIN_DECLS
17 
18 /**
19  * AsTag:
20  * @AS_TAG_UNKNOWN:			Type invalid or not known
21  * @AS_TAG_COMPONENTS:			`components`
22  * @AS_TAG_COMPONENT:			`component`
23  * @AS_TAG_ID:				`id`
24  * @AS_TAG_PKGNAME:			`pkgname`
25  * @AS_TAG_NAME:			`name`
26  * @AS_TAG_SUMMARY:			`summary`
27  * @AS_TAG_DESCRIPTION:			`description`
28  * @AS_TAG_URL:				`url`
29  * @AS_TAG_ICON:			`icon`
30  * @AS_TAG_CATEGORIES:			`categories`
31  * @AS_TAG_CATEGORY:			`category`
32  * @AS_TAG_KEYWORDS:			`keywords`
33  * @AS_TAG_KEYWORD:			`keyword`
34  * @AS_TAG_MIMETYPES:			`mimetypes`
35  * @AS_TAG_MIMETYPE:			`mimetype`
36  * @AS_TAG_PROJECT_GROUP:		`project_group`
37  * @AS_TAG_PROJECT_LICENSE:		`project_license`
38  * @AS_TAG_SCREENSHOT:			`screenshot`
39  * @AS_TAG_SCREENSHOTS:			`screenshots`
40  * @AS_TAG_UPDATE_CONTACT:		`update_contact`
41  * @AS_TAG_IMAGE:			`image`
42  * @AS_TAG_COMPULSORY_FOR_DESKTOP:	`compulsory_for_desktop`
43  * @AS_TAG_PRIORITY:			`priority`
44  * @AS_TAG_CAPTION:			`caption`
45  * @AS_TAG_LANGUAGES:			`languages`
46  * @AS_TAG_LANG:			`lang`
47  * @AS_TAG_METADATA:			`metadata`
48  * @AS_TAG_VALUE:			`value`
49  * @AS_TAG_RELEASES:			`releases`
50  * @AS_TAG_RELEASE:			`release`
51  * @AS_TAG_ARCHITECTURES:		`architectures`
52  * @AS_TAG_ARCH:			`arch`
53  * @AS_TAG_METADATA_LICENSE:		`metadata_license`
54  * @AS_TAG_PROVIDES:			`provides`
55  * @AS_TAG_EXTENDS:			`extends`
56  * @AS_TAG_DEVELOPER_NAME:		`developer_name`
57  * @AS_TAG_KUDOS:			`kudos`
58  * @AS_TAG_KUDO:			`kudo`
59  * @AS_TAG_SOURCE_PKGNAME:		`source_pkgname`
60  * @AS_TAG_VETOS:			`vetos`
61  * @AS_TAG_VETO:			`veto`
62  * @AS_TAG_BUNDLE:			`bundle`
63  * @AS_TAG_PERMISSIONS:			`permissions`
64  * @AS_TAG_PERMISSION:			`permission`
65  * @AS_TAG_LOCATION:			`location`
66  * @AS_TAG_CHECKSUM:			`checksum`
67  * @AS_TAG_SIZE:			`size`
68  * @AS_TAG_TRANSLATION:			`translation`
69  * @AS_TAG_CONTENT_RATING:		`content_rating`
70  * @AS_TAG_CONTENT_ATTRIBUTE:		`content_attribute`
71  * @AS_TAG_VERSION:			`version`
72  * @AS_TAG_REVIEWS:			`reviews`
73  * @AS_TAG_REVIEW:			`review`
74  * @AS_TAG_REVIEWER_NAME:		`reviewer_name`
75  * @AS_TAG_REVIEWER_ID:			`reviewer_id`
76  * @AS_TAG_SUGGESTS:			`suggests`
77  * @AS_TAG_REQUIRES:			`requires`
78  * @AS_TAG_CUSTOM:			`custom`
79  * @AS_TAG_LAUNCHABLE:			`launchable`
80  * @AS_TAG_AGREEMENT:			`agreement`
81  * @AS_TAG_AGREEMENT_SECTION:		`agreement_section`
82  *
83  * The tag type.
84  **/
85 typedef enum {
86 	AS_TAG_UNKNOWN,			/* Since: 0.1.0 */
87 	AS_TAG_COMPONENTS,		/* Since: 0.5.0 */
88 	AS_TAG_COMPONENT,		/* Since: 0.5.0 */
89 	AS_TAG_ID,			/* Since: 0.1.0 */
90 	AS_TAG_PKGNAME,			/* Since: 0.1.0 */
91 	AS_TAG_NAME,			/* Since: 0.1.0 */
92 	AS_TAG_SUMMARY,			/* Since: 0.1.0 */
93 	AS_TAG_DESCRIPTION,		/* Since: 0.1.0 */
94 	AS_TAG_URL,			/* Since: 0.1.0 */
95 	AS_TAG_ICON,			/* Since: 0.1.0 */
96 	AS_TAG_CATEGORIES,		/* Since: 0.1.0 */
97 	AS_TAG_CATEGORY,		/* Since: 0.1.0 */
98 	AS_TAG_KEYWORDS,		/* Since: 0.1.0 */
99 	AS_TAG_KEYWORD,			/* Since: 0.1.0 */
100 	AS_TAG_MIMETYPES,		/* Since: 0.1.0 */
101 	AS_TAG_MIMETYPE,		/* Since: 0.1.0 */
102 	AS_TAG_PROJECT_GROUP,		/* Since: 0.1.0 */
103 	AS_TAG_PROJECT_LICENSE,		/* Since: 0.1.0 */
104 	AS_TAG_SCREENSHOT,		/* Since: 0.1.0 */
105 	AS_TAG_SCREENSHOTS,		/* Since: 0.1.0 */
106 	AS_TAG_UPDATE_CONTACT,		/* Since: 0.1.0 */
107 	AS_TAG_IMAGE,			/* Since: 0.1.0 */
108 	AS_TAG_COMPULSORY_FOR_DESKTOP,	/* Since: 0.1.0 */
109 	AS_TAG_PRIORITY,		/* Since: 0.1.0 */
110 	AS_TAG_CAPTION,			/* Since: 0.1.0 */
111 	AS_TAG_LANGUAGES,		/* Since: 0.1.0 */
112 	AS_TAG_LANG,			/* Since: 0.1.0 */
113 	AS_TAG_METADATA,		/* Since: 0.1.0 */
114 	AS_TAG_VALUE,			/* Since: 0.1.0 */
115 	AS_TAG_RELEASES,		/* Since: 0.1.0 */
116 	AS_TAG_RELEASE,			/* Since: 0.1.0 */
117 	AS_TAG_ARCHITECTURES,		/* Since: 0.1.1 */
118 	AS_TAG_ARCH,			/* Since: 0.1.1 */
119 	AS_TAG_METADATA_LICENSE,	/* Since: 0.1.4 */
120 	AS_TAG_PROVIDES,		/* Since: 0.1.6 */
121 	AS_TAG_EXTENDS,			/* Since: 0.1.7 */
122 	AS_TAG_DEVELOPER_NAME,		/* Since: 0.1.8 */
123 	AS_TAG_KUDOS,			/* Since: 0.2.1 */
124 	AS_TAG_KUDO,			/* Since: 0.2.1 */
125 	AS_TAG_SOURCE_PKGNAME,		/* Since: 0.2.4 */
126 	AS_TAG_VETOS,			/* Since: 0.3.0 */
127 	AS_TAG_VETO,			/* Since: 0.3.0 */
128 	AS_TAG_BUNDLE,			/* Since: 0.3.5 */
129 	AS_TAG_PERMISSIONS,		/* Since: 0.3.5 */
130 	AS_TAG_PERMISSION,		/* Since: 0.3.5 */
131 	AS_TAG_LOCATION,		/* Since: 0.3.5 */
132 	AS_TAG_CHECKSUM,		/* Since: 0.3.5 */
133 	AS_TAG_SIZE,			/* Since: 0.5.2 */
134 	AS_TAG_TRANSLATION,		/* Since: 0.5.8 */
135 	AS_TAG_CONTENT_RATING,		/* Since: 0.5.12 */
136 	AS_TAG_CONTENT_ATTRIBUTE,	/* Since: 0.5.12 */
137 	AS_TAG_VERSION,			/* Since: 0.6.1 */
138 	AS_TAG_REVIEWS,			/* Since: 0.6.1 */
139 	AS_TAG_REVIEW,			/* Since: 0.6.1 */
140 	AS_TAG_REVIEWER_NAME,		/* Since: 0.6.1 */
141 	AS_TAG_REVIEWER_ID,		/* Since: 0.6.1 */
142 	AS_TAG_SUGGESTS,		/* Since: 0.6.1 */
143 	AS_TAG_REQUIRES,		/* Since: 0.6.7 */
144 	AS_TAG_CUSTOM,			/* Since: 0.6.8 */
145 	AS_TAG_LAUNCHABLE,		/* Since: 0.6.13 */
146 	AS_TAG_AGREEMENT,		/* Since: 0.7.8 */
147 	AS_TAG_AGREEMENT_SECTION,	/* Since: 0.7.8 */
148 	AS_TAG_P,			/* Since: 0.7.9 */
149 	AS_TAG_LI,			/* Since: 0.7.9 */
150 	AS_TAG_UL,			/* Since: 0.7.9 */
151 	AS_TAG_OL,			/* Since: 0.7.9 */
152 	AS_TAG_BINARY,			/* Since: 0.7.9 */
153 	AS_TAG_FONT,			/* Since: 0.7.9 */
154 	AS_TAG_DBUS,			/* Since: 0.7.9 */
155 	AS_TAG_MODALIAS,		/* Since: 0.7.9 */
156 	AS_TAG_LIBRARY,			/* Since: 0.7.9 */
157 	/*< private >*/
158 	AS_TAG_LAST
159 } AsTag;
160 
161 /**
162  * AsTagFlags:
163  * @AS_TAG_FLAG_NONE:			No special actions to use
164  * @AS_TAG_FLAG_USE_FALLBACKS:		Use fallback tag names
165  * @AS_TAG_FLAG_USE_TRANSLATED:		Use translated tag names
166  *
167  * The flags to use when matching %AsTag's.
168  **/
169 typedef enum {
170 	AS_TAG_FLAG_NONE,
171 	AS_TAG_FLAG_USE_FALLBACKS 	= 1,	/* Since: 0.1.4 */
172 	AS_TAG_FLAG_USE_TRANSLATED	= 2,	/* Since: 0.1.6 */
173 	/*< private >*/
174 	AS_TAG_FLAG_LAST
175 } AsTagFlags;
176 
177 AsTag		 as_tag_from_string		(const gchar	*tag);
178 AsTag		 as_tag_from_string_full	(const gchar	*tag,
179 						 AsTagFlags	 flags);
180 const gchar	*as_tag_to_string		(AsTag		 tag);
181 
182 G_END_DECLS
183