dbus-bindings.h

Go to the documentation of this file.
00001 
00027 #ifndef _PURPLE_DBUS_BINDINGS_H_
00028 #define _PURPLE_DBUS_BINDINGS_H_
00029 
00030 #include <dbus/dbus.h>
00031 #include <dbus/dbus-glib-lowlevel.h>
00032 #include <glib.h>
00033 
00034 #ifdef __cplusplus
00035 extern "C" {
00036 #endif
00037 
00038 gint purple_dbus_pointer_to_id(gconstpointer node);
00039 gpointer purple_dbus_id_to_pointer(gint id, PurpleDBusType *type);
00040 gint  purple_dbus_pointer_to_id_error(gconstpointer ptr, DBusError *error);
00041 gpointer purple_dbus_id_to_pointer_error(gint id, PurpleDBusType *type,
00042                        const char *typename, DBusError *error);
00043 
00044 #define NULLIFY(id) id = empty_to_null(id)
00045 
00046 #define CHECK_ERROR(error) if (dbus_error_is_set(error)) return NULL;
00047 
00048 #define PURPLE_DBUS_ID_TO_POINTER(ptr, id, type, error)         \
00049     G_STMT_START {                          \
00050     ptr = (type*) purple_dbus_id_to_pointer_error           \
00051         (id, PURPLE_DBUS_TYPE(type), #type, error);         \
00052     CHECK_ERROR(error);                     \
00053     } G_STMT_END
00054 
00055 
00056 #define PURPLE_DBUS_POINTER_TO_ID(id, ptr, error)               \
00057     G_STMT_START {                          \
00058     id = purple_dbus_pointer_to_id_error(ptr,error);            \
00059     CHECK_ERROR(error);                     \
00060     } G_STMT_END
00061 
00062 
00063 dbus_bool_t
00064 purple_dbus_message_get_args (DBusMessage     *message,
00065                 DBusError       *error,
00066                 int              first_arg_type,
00067                 ...);
00068 dbus_bool_t
00069 purple_dbus_message_get_args_valist (DBusMessage     *message,
00070                    DBusError       *error,
00071                    int              first_arg_type,
00072                    va_list          var_args);
00073 
00074 dbus_bool_t
00075 purple_dbus_message_iter_get_args (DBusMessageIter *iter,
00076                  DBusError       *error,
00077                  int              first_arg_type,
00078                  ...);
00079 
00080 dbus_bool_t
00081 purple_dbus_message_iter_get_args_valist (DBusMessageIter *iter,
00082                     DBusError       *error,
00083                     int              first_arg_type,
00084                     va_list          var_args);
00085 
00086 dbus_int32_t* purple_dbusify_GList(GList *list, gboolean free_memory, 
00087                  dbus_int32_t *len);
00088 dbus_int32_t* purple_dbusify_GSList(GSList *list, gboolean free_memory,
00089                   dbus_int32_t *len);
00090 gpointer* purple_GList_to_array(GList *list, gboolean free_memory,
00091                   dbus_int32_t *len);
00092 gpointer* purple_GSList_to_array(GSList *list, gboolean free_memory,
00093                   dbus_int32_t *len);
00094 GHashTable *purple_dbus_iter_hash_table(DBusMessageIter *iter, DBusError *error);
00095 
00096 const char* empty_to_null(const char *str);
00097 const char* null_to_empty(const char *s);
00098 
00099 typedef struct {
00100     const char *name;
00101     const char *parameters;
00102     DBusMessage* (*handler)(DBusMessage *request, DBusError *error);
00103 } PurpleDBusBinding;
00104 
00105 void purple_dbus_register_bindings(void *handle, PurpleDBusBinding *bindings);
00106 
00107 DBusConnection *purple_dbus_get_connection(void);
00108 
00109 #ifdef __cplusplus
00110 }
00111 #endif
00112 
00113 #endif