From 3e43c30bcb96d4be49ab0739a6854767534da920 Mon Sep 17 00:00:00 2001 From: Linus Probert Date: Sun, 10 Mar 2019 07:30:12 +0100 Subject: [PATCH] Adds funny casting to avoid pedantic ISO C warning --- src/event.c | 26 ++++++++++++++------------ src/event.h | 14 +++++++------- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/event.c b/src/event.c index c7586ef..da4500b 100644 --- a/src/event.c +++ b/src/event.c @@ -22,25 +22,27 @@ static LinkedList *callbacks = NULL; -void + void event_register_listener(EventCallback cb) { - linkedlist_append(&callbacks, cb); + // Cast a pointer to a pointer to avoid -wpedantic iso warning + linkedlist_append(&callbacks, *(void**)(&cb)); } -void + void event_clear_listeners(void) { - while (callbacks) - linkedlist_pop(&callbacks); + while (callbacks) + linkedlist_pop(&callbacks); } -void + void event_trigger(Event *event) { - LinkedList *cbs = callbacks; - while (cbs) { - ((EventCallback) cbs->data)(event); - cbs = cbs->next; - } -} \ No newline at end of file + LinkedList *cbs = callbacks; + while (cbs) { + // Reverse the cast from the register (-pedantic ISO warning) + (*(EventCallback*)(&cbs->data))(event); + cbs = cbs->next; + } +} diff --git a/src/event.h b/src/event.h index dfaa414..0f607ae 100644 --- a/src/event.h +++ b/src/event.h @@ -21,18 +21,18 @@ #include "player.h" typedef enum EventType { - MONSTER_KILLED_EVENT + MONSTER_KILLED_EVENT } EventType; typedef struct MonsterKilledEvent { - EventType *type; - Player *player; - Monster *monster; + EventType *type; + Player *player; + Monster *monster; } MonsterKilledEvent; typedef union Event { - EventType type; - MonsterKilledEvent monsterKilled; + EventType type; + MonsterKilledEvent monsterKilled; } Event; typedef void (*EventCallback)(Event*); @@ -44,4 +44,4 @@ void event_clear_listeners(void); void -event_trigger(Event *event); \ No newline at end of file +event_trigger(Event *event);