es_register_event and es_add_event_listener takes a pointer

This commit is contained in:
Abdelrahman Said 2025-01-25 18:09:37 +00:00
parent 7cb1b59cf7
commit 8e5a421753
3 changed files with 13 additions and 13 deletions

View File

@ -131,19 +131,19 @@ void es_deinit(EventSystem *event_system) {
event_system->id = 0;
}
Event es_register_event(EventSystem event_system) {
Event es_register_event(EventSystem *event_system) {
Event event = INVALID_EVENT;
if (IS_INVALID_SYSTEM(event_system)) {
if (!event_system || IS_INVALID_SYSTEM((*event_system))) {
goto RETURN_EVENT;
}
ESInternal *es = get_event_system_internal(event_system);
ESInternal *es = get_event_system_internal(*event_system);
if (!VALID_MAGIC(es)) {
goto RETURN_EVENT;
}
event.system = event_system;
event.system = *event_system;
EventSlot *event_slots_array = get_event_slots_array(es);
@ -170,12 +170,12 @@ RETURN_EVENT:
return event;
}
void es_deregister_event(EventSystem event_system, Event *event) {
if (IS_INVALID_SYSTEM(event_system) || IS_INVALID_EVENT((*event)) || event_system.id != event->system.id) {
void es_deregister_event(EventSystem *event_system, Event *event) {
if (!event_system || IS_INVALID_SYSTEM((*event_system)) || IS_INVALID_EVENT((*event)) || event_system->id != event->system.id) {
return;
}
ESInternal *es = get_event_system_internal(event_system);
ESInternal *es = get_event_system_internal(*event_system);
if (!VALID_MAGIC(es) || event->id > es->event_count) {
return;
}

View File

@ -30,8 +30,8 @@ typedef void (*EventCallback)(void *data);
EventSystem es_init(u64 initial_event_capacity, u64 initial_listeners_capacity);
void es_deinit(EventSystem *event_system);
Event es_register_event(EventSystem event_system);
void es_deregister_event(EventSystem event_system, Event *event);
Event es_register_event(EventSystem *event_system);
void es_deregister_event(EventSystem *event_system, Event *event);
EventListener es_add_event_listener(EventSystem event_system, Event event, EventCallback callback);
void es_remove_event_listener(EventSystem event_system, EventListener listener);
void es_emit_event(EventSystem event_system, Event event, void *data);

View File

@ -40,7 +40,7 @@ int main(void) {
EventSystem es = es_init(COUNT_EVENTS, 64);
for (int i = 0; i < COUNT_EVENTS; ++i) {
events[i] = es_register_event(es);
events[i] = es_register_event(&es);
listeners[i] = es_add_event_listener(es, events[i], callbacks[i]);
}
@ -61,15 +61,15 @@ int main(void) {
es_emit_event(es, events[EVENT_MOUSE], (void *)&mouse_event);
// You can also add other events not stored in an array
Event extra_event = es_register_event(es);
Event extra_event = es_register_event(&es);
EventListener listener = es_add_event_listener(es, extra_event, extra_event_handler);
es_emit_event(es, extra_event, NULL);
es_remove_event_listener(es, listener);
es_deregister_event(es, &extra_event);
es_deregister_event(&es, &extra_event);
for (int i = 0; i < COUNT_EVENTS; ++i) {
es_remove_event_listener(es, listeners[i]);
es_deregister_event(es, &events[i]);
es_deregister_event(&es, &events[i]);
}
es_deinit(&es);