/+junk/libgego

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/%2Bjunk/libgego
1 by Gustav Hartvigsson
* Initial code.
1
#include <glib-object.h>
2
3
#ifndef GEGO_GLOBAL_NOTIFY_HEADER
4
#define GEGO_GLOBAL_NOTIFY_HEADER
5
6
G_BEGIN_DECLS
7
8
#define GEGO_TYPE_GLOBEL_NOTIFY (gego_global_notify_get_type ())
9
#define GEGO_GLOBAL_NOTIFY(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GEGO_GLOBAL_NOTIFY_TYPE, GegoGlobalNotify))
10
#define GEGO_IS_GLOBAL_NOTIFY(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GEGO_GLOBAL_NOTIFY_TYPE))
11
#define GEGO_GLOBAL_NOTIFY_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GEGO_GLOBAL_NOTIFY_TYPE, GegoGlobalNotifyClass))
12
#define GEGO_GLOBAL_IS_NOTIFY_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GEGO_GLOBAL_NOTIFY))
13
#define GEGO_GLOBAL_NOTIFY_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), G_GLOBEL_NOTIFY_TYPE, GegoGlobalNotifyClass))
14
15
typedef struct GegoGlobalNotify GegoGlobalNotify;
16
typedef struct GegoGlobalNotifyClass GegoGlobalNotifyClass;
17
typedef struct GegoGlobalNotifyPrivate GegoGlobalNotifyPrivate;
18
19
typedef struct GegoGlobalNotifyCallbackItem GegoGlobalNotifyCallbackItem;
20
21
22
struct
23
GegoGlobalNotify {
24
  GObject parent_instance;
25
};
26
27
struct
28
GegoGlobalNotifyClass {
29
  GObjectClass parent_class;
30
};
31
32
GType
33
gego_global_notify_get_type (void);
34
35
static void
36
gego_global_notify_init (GegoGlobalNotify * );
37
38
39
gboolean
40
gego_global_notify_initalize (GError * err);
41
42
43
gboolean
44
gego_global_notify_uninitalize (GError * err);
45
46
47
48
49
gint
50
gego_global_notify_add_notification (gchar * name, GError * err);
51
52
53
void
54
gego_global_notify_remove_notification (gchar * name,
55
                                        gint notification_id,
56
                                        GError * err);
57
58
gint
59
gego_global_notify_subscribe (gchar * name, GCallback callback,
60
                              gpointer subscriber_data,
61
                              GError * err);
62
63
void
64
gego_global_notify_unsubscribe (gchar * name,
65
                                gint subscription_id,
66
                                GError * err);
67
68
gint
69
gego_global_notify_call (gchar * name,
70
                         gpointer caller_data,
71
                         GError * err);
72
73
gboolean
74
gego_global_notify_is_initialized (void);
75
76
/**
77
 * gego_global_notify_return_not_initialized:
78
 * @short_description: convinience macro; returns with an error if Global Notify
79
 * is not initialized.
80
 *
81
 * @err: (type GError) An #GError to be passed to the macro.
82
 */
83
#define gego_global_notify_return_not_initialized(err)\
84
  if (!gego_global_notify_is_initialized ()) {\
85
    err = g_error_new (GEGO_GLOBAL_NOTIFY_ERROR,\
86
                       GEGO_GLOBAL_NOTIFY_ERROR_NOT_INITIALZED,\
87
                       "Global Notify is not initialized.");\
88
    return NULL;\
89
  }
90
91
92
GQuark
93
gego_global_notify_error_quark (void);
94
95
/**
96
 * GEGO_GLOBAL_NOTIFY_ERROR:
97
 * @short_description: A convinience wrapper around #gego_global_notify_error_quark()
98
 */
99
#define GEGO_GLOBAL_NOTIFY_ERROR gego_global_notify_error_quark ()
100
101
typedef enum {
102
  GEGO_GLOBAL_NOTIFY_ERROR_NONE,
103
  GEGO_GLOBAL_NOTIFY_ERROR_ALREADY_INITALIZED,
104
  GEGO_GLOBAL_NOTIFY_ERROR_NOT_INITIALZED,
105
  GEGO_GLOBAL_NOTIFY_ERROR_SIGNAL_ALREADY_EXISTS,
106
  GEGO_GLOBAL_NOTIFY_ERROR_SIGNAL_DOES_NOT_EXIST,
107
  GEGO_GLOBAL_NOTIFY_ERROR_INVALID_SUBSCRIPTION_ID,
108
  GEGO_GLOBAL_NOTIFY_ERROR_LAST
109
} GegoGlobalNotifyError;
110
111
/**
112
 * GegoGlobalNotifyErrorName:
113
 * @short_description: Get the name of the error.
114
 */
115
gchar *
116
GegoGlobalNotifyErrorName[] __attribute__((unused)) = {
117
  "NONE",
118
  "Already initialized",
119
  "Not initialized",
120
  "Signal already exists",
121
  "Signal does not exist",
122
  "Invalid subscription id",
123
  0x0
124
};
125
126
/**
127
 * Macro to get the name of the error.
128
 */
129
#define gego_global_notify_error_get_name(k)\
130
  GegoGlobalNotifyErrorName[k]
131
132
G_END_DECLS
133
134
#endif /* GEGO_GLOBAL_NOTIFY_HEADER */