ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
app_callbacks.h
Go to the documentation of this file.
1
7
8#ifndef APP_CALLBACKS_H
9#define APP_CALLBACKS_H
10
11#include <stdbool.h>
12#include <stddef.h>
13#include <stdint.h>
14
15typedef void (*app_debug_write_fn)(const char *text, void *context);
16
17typedef struct {
18 // Exit signals
19 bool (*should_exit)(void);
20 void (*signal_exit)(void);
21
22 // Platform timing / wait helpers
24 void (*platform_sleep_ms)(unsigned int ms);
25 void (*platform_pump_events)(void);
26
27 // Audio
28 void (*audio_stop_thread)(void);
29
37
43
48
49/* ============================================================================
50 * Convenience Macros for Safe Callback Invocation
51 * ============================================================================ */
52
57#define APP_CALLBACK_VOID(callback_name) \
58 do { \
59 const app_callbacks_t *__cb = app_callbacks_get(); \
60 if (__cb && __cb->callback_name) { \
61 __cb->callback_name(); \
62 } \
63 } while (0)
64
69#define APP_CALLBACK_BOOL(callback_name) \
70 ({ \
71 const app_callbacks_t *__cb = app_callbacks_get(); \
72 (__cb && __cb->callback_name) ? __cb->callback_name() : false; \
73 })
74
79#define APP_CALLBACK_UINT64(callback_name) \
80 ({ \
81 const app_callbacks_t *__cb = app_callbacks_get(); \
82 (__cb && __cb->callback_name) ? __cb->callback_name() : 0ULL; \
83 })
84
89#define APP_CALLBACK_VOID_UINT(callback_name, value) \
90 do { \
91 const app_callbacks_t *__cb = app_callbacks_get(); \
92 if (__cb && __cb->callback_name) { \
93 __cb->callback_name(value); \
94 } \
95 } while (0)
96
97#endif
const app_callbacks_t * app_callbacks_get(void)
void app_callbacks_register(const app_callbacks_t *callbacks)
Callbacks and operations used by app callbacks. Register application callbacks.
void(* app_debug_write_fn)(const char *text, void *context)
unsigned long long uint64_t
Definition common.h:63
void(* signal_exit)(void)
void(* audio_stop_thread)(void)
app_debug_write_fn write_memory_report
void(* platform_pump_events)(void)
app_debug_write_fn write_backtrace
void(* platform_sleep_ms)(unsigned int ms)
app_debug_write_fn write_sync_state
uint64_t(* platform_get_monotonic_time_us)(void)
bool(* should_exit)(void)