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 File Reference

Application-level callbacks for library code. More...

Go to the source code of this file.

Data Structures

struct  app_callbacks_t

Macros

#define APP_CALLBACK_VOID(callback_name)
#define APP_CALLBACK_BOOL(callback_name)
#define APP_CALLBACK_UINT64(callback_name)
#define APP_CALLBACK_VOID_UINT(callback_name, value)

Typedefs

typedef void(* app_debug_write_fn) (const char *text, void *context)

Functions

void app_callbacks_register (const app_callbacks_t *callbacks)
 Callbacks and operations used by app callbacks. Register application callbacks.
const app_callbacks_t * app_callbacks_get (void)

Detailed Description

Application-level callbacks for library code.

Allows lib/ code to call application-level functions without direct dependency.

Definition in file app_callbacks.h.

Macro Definition Documentation

◆ APP_CALLBACK_BOOL

#define APP_CALLBACK_BOOL ( callback_name)
Value:
({ \
(__cb && __cb->callback_name) ? __cb->callback_name() : false; \
})
const app_callbacks_t * app_callbacks_get(void)

Call a void(void) callback and return bool Usage: bool result = APP_CALLBACK_BOOL(should_exit)

Definition at line 69 of file app_callbacks.h.

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 })

Referenced by api_server_main(), and mcp_http_run().

◆ APP_CALLBACK_UINT64

#define APP_CALLBACK_UINT64 ( callback_name)
Value:
({ \
(__cb && __cb->callback_name) ? __cb->callback_name() : 0ULL; \
})

Call a uint64_t(void) callback Usage: uint64_t now = APP_CALLBACK_UINT64(platform_get_monotonic_time_us)

Definition at line 79 of file app_callbacks.h.

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 })

◆ APP_CALLBACK_VOID

#define APP_CALLBACK_VOID ( callback_name)
Value:
do { \
if (__cb && __cb->callback_name) { \
__cb->callback_name(); \
} \
} while (0)

Call a void(void) callback safely Usage: APP_CALLBACK_VOID(audio_stop_thread)

Definition at line 57 of file app_callbacks.h.

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)

Referenced by client_video_render_thread(), session_display_write_ascii_frame(), session_render_loop(), ui_input_password(), and update_banner_install_update().

◆ APP_CALLBACK_VOID_UINT

#define APP_CALLBACK_VOID_UINT ( callback_name,
value )
Value:
do { \
if (__cb && __cb->callback_name) { \
__cb->callback_name(value); \
} \
} while (0)

Call a void(unsigned int) callback Usage: APP_CALLBACK_VOID_UINT(platform_sleep_ms, ms)

Definition at line 89 of file app_callbacks.h.

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)

Typedef Documentation

◆ app_debug_write_fn

typedef void(* app_debug_write_fn) (const char *text, void *context)

Definition at line 15 of file app_callbacks.h.

Function Documentation

◆ app_callbacks_get()

const app_callbacks_t * app_callbacks_get ( void )

Get registered callbacks (returns NULL if not registered)

Definition at line 24 of file app_callbacks.c.

24 {
25 return atomic_load_explicit(&g_app_callbacks, memory_order_acquire);
26}

◆ app_callbacks_register()

void app_callbacks_register ( const app_callbacks_t * callbacks)

Callbacks and operations used by app callbacks. Register application callbacks.

Referenced by main().