EFL 1.7 svn doobies
[profile/ivi/e_dbus.git] / src / lib / dbus / e_dbus_util.c
1 #ifdef HAVE_CONFIG_H
2 #include "config.h"
3 #endif
4
5 #include <stdlib.h>
6
7 #include "e_dbus_private.h"
8
9 EAPI E_DBus_Callback *
10 e_dbus_callback_new(E_DBus_Callback_Func cb_func, E_DBus_Unmarshal_Func unmarshal_func, E_DBus_Free_Func free_func, void *user_data)
11 {
12   E_DBus_Callback *cb;
13
14   if (!cb_func) return NULL;
15
16   cb = calloc(1, sizeof(E_DBus_Callback));
17   if (!cb) return NULL;
18   cb->cb_func = cb_func;
19   cb->unmarshal_func = unmarshal_func;
20   cb->free_func = free_func;
21   cb->user_data = user_data;
22   return cb;
23 }
24
25 EAPI void
26 e_dbus_callback_free(E_DBus_Callback *callback)
27 {
28   free(callback);
29 }
30
31 EAPI void
32 e_dbus_callback_call(E_DBus_Callback *cb, void *data, DBusError *error)
33 {
34   if (cb && cb->cb_func)
35     cb->cb_func(cb->user_data, data, error);
36 }
37
38 EAPI void *
39 e_dbus_callback_unmarshal(E_DBus_Callback *cb, DBusMessage *msg, DBusError *err)
40 {
41   if (cb && cb->unmarshal_func)
42     return cb->unmarshal_func(msg, err);
43   return NULL;
44 }
45
46 EAPI void
47 e_dbus_callback_return_free(E_DBus_Callback *cb, void *data)
48 {
49   if (cb && cb->free_func)
50     cb->free_func(data);
51 }
52
53 const char *
54 e_dbus_basic_type_as_string(int type)
55 {
56   switch (type)
57   {
58     case DBUS_TYPE_BYTE:
59       return DBUS_TYPE_BYTE_AS_STRING;
60     case DBUS_TYPE_BOOLEAN:
61       return DBUS_TYPE_BOOLEAN_AS_STRING;
62     case DBUS_TYPE_INT16:
63       return DBUS_TYPE_INT16_AS_STRING;
64     case DBUS_TYPE_UINT16:
65       return DBUS_TYPE_UINT16_AS_STRING;
66     case DBUS_TYPE_INT32:
67       return DBUS_TYPE_INT32_AS_STRING;
68     case DBUS_TYPE_UINT32:
69       return DBUS_TYPE_UINT32_AS_STRING;
70     case DBUS_TYPE_INT64:
71       return DBUS_TYPE_INT64_AS_STRING;
72     case DBUS_TYPE_UINT64:
73       return DBUS_TYPE_UINT64_AS_STRING;
74     case DBUS_TYPE_DOUBLE:
75       return DBUS_TYPE_DOUBLE_AS_STRING;
76     case DBUS_TYPE_STRING:
77       return DBUS_TYPE_STRING_AS_STRING;
78     case DBUS_TYPE_OBJECT_PATH:
79       return DBUS_TYPE_OBJECT_PATH_AS_STRING;
80     case DBUS_TYPE_SIGNATURE:
81       return DBUS_TYPE_SIGNATURE_AS_STRING;
82     default:
83       return NULL;
84   }
85 }