f664989c87165ea6b049e899639bbe8fbf492806
[framework/uifw/edbus.git] / src / lib / hal / e_hal_util.c
1 #include <E_Hal.h>
2 #include <string.h>
3 #include "e_hal_private.h"
4
5 /**
6  * @internal
7  * @brief free a property structure
8  * @param prop the property to free
9  */
10 EAPI void
11 e_hal_property_free(E_Hal_Property *prop)
12 {
13   if (prop->type == E_HAL_PROPERTY_TYPE_STRLIST)
14     eina_list_free(prop->val.strlist);
15   free(prop);
16 }
17
18 /**
19  * @brief Retrive a string from an element of a property hash
20  * @param properties the E_Hal_Properties structure
21  * @param key the key of the property to retrieve
22  * @param err a pointer to an int, which if supplied, will be set to 0 on success and 1 on an error
23  */
24 EAPI const char *
25 e_hal_property_string_get(E_Hal_Properties *properties, const char *key, int *err)
26 {
27   E_Hal_Property *prop;
28   if (err) *err = 0;
29   if (!properties->properties) return NULL;
30   prop = eina_hash_find(properties->properties, key);
31   if (prop) return prop->val.s;
32
33   if (err) *err = 1;
34   return NULL;
35 }
36
37 EAPI Eina_Bool
38 e_hal_property_bool_get(E_Hal_Properties *properties, const char *key, int *err)
39 {
40   E_Hal_Property *prop;
41   if (err) *err = 0;
42   if (!properties->properties) return 0;
43   prop = eina_hash_find(properties->properties, key);
44   if (prop) return prop->val.b;
45   
46   if (err) *err = 1;
47   return 0;
48 }
49
50 EAPI int
51 e_hal_property_int_get(E_Hal_Properties *properties, const char *key, int *err)
52 {
53   E_Hal_Property *prop;
54   if (err) *err = 0;
55   if (!properties->properties) return 0;
56   prop = eina_hash_find(properties->properties, key);
57   if (prop) return prop->val.i;
58
59   if (err) *err = 1;
60   return 0;
61 }
62
63 EAPI dbus_uint64_t
64 e_hal_property_uint64_get(E_Hal_Properties *properties, const char *key, int *err)
65 {
66   E_Hal_Property *prop;
67   if (err) *err = 0;
68   if (!properties->properties) return 0;
69   prop = eina_hash_find(properties->properties, key);
70   if (prop) return prop->val.u64;
71
72   if (err) *err = 1;
73   return 0;
74 }
75
76 EAPI double
77 e_hal_property_double_get(E_Hal_Properties *properties, const char *key, int *err)
78 {
79   E_Hal_Property *prop;
80   if (err) *err = 0;
81   if (!properties->properties) return 0;
82   prop = eina_hash_find(properties->properties, key);
83   if (prop) return prop->val.d;
84
85   if (err) *err = 1;
86   return 0;
87 }
88
89 EAPI const Eina_List *
90 e_hal_property_strlist_get(E_Hal_Properties *properties, const char *key, int *err)
91 {
92   E_Hal_Property *prop;
93   if (err) *err = 0;
94   if (!properties->properties) return NULL;
95   prop = eina_hash_find(properties->properties, key);
96   if (prop) return prop->val.strlist;
97
98   if (err) *err = 1;
99   return NULL;
100 }