23
23
#include "Callback.h"
26
s_callback_entry_new_real (const schar * name,
29
SCallbackEntry * self = malloc (sizeof (SCallbackEntry));
30
self->name = s_string_new (name);
31
self->callback = callback;
37
s_callback_entry_free (SCallbackEntry * self) {
43
s_object_install_callbacks (SObject * obj,
45
SCallbackEntry ** callback_entries) {
47
assert (callback_entries);
48
s_dbg_print ("Adding Callbacks, n_callbacks: %zd", n_callbacks);
49
for (size_t i = 0; i < n_callbacks ; i++) {
50
s_dbg_print ("Loop: Adding Callbacks");
51
SCallbackEntry * entry = callback_entries[i];
52
s_object_install_callback (obj, entry);
57
s_object_install_callback (SObject * obj,
58
SCallbackEntry * callback_entry) {
61
assert (callback_entry);
62
s_dbg_print ("Adding callback");
63
s_map_add (obj->callbacks, callback_entry->name, callback_entry);
67
s_object_notify (SObject * self,
69
spointer * user_data) {
71
SCallbackEntry * entry = s_map_get (self->callbacks, name);
72
assert (s_string_is_equal (entry->name, name));
74
Callback callback = entry->callback;
75
return callback (self, user_data);