Mercurial > projects > package-update-indicator
comparison pui-types.c @ 0:6884bb8130ca
Initial revision
author | Guido Berhoerster <guido+pui@berhoerster.name> |
---|---|
date | Sun, 20 May 2018 11:32:57 +0200 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:6884bb8130ca |
---|---|
1 /* | |
2 * Copyright (C) 2018 Guido Berhoerster <guido+pui@berhoerster.name> | |
3 * | |
4 * Permission is hereby granted, free of charge, to any person obtaining | |
5 * a copy of this software and associated documentation files (the | |
6 * "Software"), to deal in the Software without restriction, including | |
7 * without limitation the rights to use, copy, modify, merge, publish, | |
8 * distribute, sublicense, and/or sell copies of the Software, and to | |
9 * permit persons to whom the Software is furnished to do so, subject to | |
10 * the following conditions: | |
11 * | |
12 * The above copyright notice and this permission notice shall be included | |
13 * in all copies or substantial portions of the Software. | |
14 * | |
15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, | |
16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | |
17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | |
18 * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY | |
19 * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, | |
20 * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE | |
21 * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | |
22 */ | |
23 | |
24 #include "pui-types.h" | |
25 | |
26 #define PUI_DEFINE_ENUM_VALUE(valuename, valuenick) \ | |
27 { valuename, #valuename, #valuenick }, | |
28 #define PUI_DEFINE_ENUM_TYPE(EnumName, enum_name, values) \ | |
29 GType \ | |
30 enum_name##_get_type(void) \ | |
31 { \ | |
32 static volatile gsize g_define_type_id__volatile = 0; \ | |
33 static const GEnumValue v[] = { \ | |
34 values \ | |
35 { 0 } \ | |
36 }; \ | |
37 GType g_define_type_id; \ | |
38 if (g_once_init_enter(&g_define_type_id__volatile)) { \ | |
39 g_define_type_id = \ | |
40 g_enum_register_static(g_intern_static_string(#EnumName), \ | |
41 v); \ | |
42 g_once_init_leave(&g_define_type_id__volatile, \ | |
43 g_define_type_id); \ | |
44 } \ | |
45 return (g_define_type_id__volatile); \ | |
46 } | |
47 | |
48 PUI_DEFINE_ENUM_TYPE(PuiState, pui_state, | |
49 PUI_DEFINE_ENUM_VALUE(PUI_STATE_UP_TO_DATE, "up-to-date") | |
50 PUI_DEFINE_ENUM_VALUE(PUI_STATE_NORMAL_UPDATES_AVAILABLE, | |
51 "normal-updates-available") | |
52 PUI_DEFINE_ENUM_VALUE(PUI_STATE_IMPORTANT_UPDATES_AVAILABLE, | |
53 "important-updates-available") | |
54 PUI_DEFINE_ENUM_VALUE(PUI_STATE_ERROR, "error")) | |
55 | |
56 gchar * | |
57 pui_types_enum_to_string(GType type, gint value) | |
58 { | |
59 GTypeClass *type_class; | |
60 GEnumValue *enum_value; | |
61 | |
62 type_class = g_type_class_ref(type); | |
63 | |
64 g_return_val_if_fail(G_IS_ENUM_CLASS(type_class), NULL); | |
65 | |
66 enum_value = g_enum_get_value(G_ENUM_CLASS(type_class), value); | |
67 if (enum_value == NULL) { | |
68 return (g_strdup_printf("%d", value)); | |
69 } | |
70 | |
71 return (g_strdup(enum_value->value_nick)); | |
72 } |