26cmd_find_v_impl(
const char *fmt, va_list ap, bool_t force)
34 l = vsnprintf(NULL, 0, fmt, ap2);
38 vsnprintf(name, l + 1, fmt, ap);
39 ref = XPLMFindCommand(name);
40 if (ref == NULL && force)
41 VERIFY_MSG(0,
"Command \"%s\" not found", name);
47API_EXPORT XPLMCommandRef
54 ref = cmd_find_v_impl(fmt, ap, B_FALSE);
60API_EXPORT XPLMCommandRef
67 ref = cmd_find_v_impl(fmt, ap, B_TRUE);
73API_EXPORT XPLMCommandRef
76 return (cmd_find_v_impl(fmt, ap, B_FALSE));
79API_EXPORT XPLMCommandRef
82 return (cmd_find_v_impl(fmt, ap, B_TRUE));
85API_EXPORT XPLMCommandRef
86cmd_bind_v(
const char *fmt, cmd_cb_t cb, bool_t before,
void *refcon,
95 len = vsnprintf(NULL, 0, fmt, ap2);
98 VERIFY3S(vsnprintf(name, len + 1, fmt, ap), ==, len);
100 ref = XPLMFindCommand(name);
102 XPLMRegisterCommandHandler(ref, cb, before, refcon);
109API_EXPORT XPLMCommandRef
110cmd_bind(
const char *fmt, cmd_cb_t cb, bool_t before,
void *refcon, ...)
115 va_start(ap, refcon);
116 ref =
cmd_bind_v(fmt, cb, before, refcon, ap);
122API_EXPORT XPLMCommandRef
123fcmd_bind(
const char *fmt, cmd_cb_t cb, bool_t before,
void *refcon, ...)
128 va_start(ap, refcon);
129 ref =
cmd_bind_v(fmt, cb, before, refcon, ap);
134 va_start(ap, refcon);
135 vsnprintf(name,
sizeof (name), fmt, ap);
153 len = vsnprintf(NULL, 0, fmt, ap2);
156 VERIFY3S(vsnprintf(name, len + 1, fmt, ap), ==, len);
158 ref = XPLMFindCommand(name);
163 XPLMUnregisterCommandHandler(ref, cb, before, refcon);
171cmd_unbind(
const char *fmt, cmd_cb_t cb, bool_t before,
void *refcon, ...)
176 va_start(ap, refcon);
184fcmd_unbind(
const char *fmt, cmd_cb_t cb, bool_t before,
void *refcon, ...)
189 va_start(ap, refcon);
195 va_start(ap, refcon);
196 vsnprintf(name,
sizeof (name), fmt, ap);
#define VERIFY3S(x, op, y)
#define VERIFY_MSG(x, fmt,...)
XPLMCommandRef cmd_bind(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon,...)
XPLMCommandRef fcmd_find(const char *fmt,...)
XPLMCommandRef fcmd_find_v(const char *fmt, va_list ap)
void fcmd_unbind(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon,...)
XPLMCommandRef cmd_find(const char *fmt,...)
XPLMCommandRef cmd_bind_v(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon, va_list ap)
bool_t cmd_unbind(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon,...)
XPLMCommandRef fcmd_bind(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon,...)
bool_t cmd_unbind_v(const char *fmt, cmd_cb_t cb, bool_t before, void *refcon, va_list ap)
XPLMCommandRef cmd_find_v(const char *fmt, va_list ap)
static void * safe_malloc(size_t size)