DETLEF C SDK
Native embedding and package authoring
Loading...
Searching...
No Matches
detlef_helpers.h
1/* Optional header-only conveniences for DETLEF's C ABI. MIT licensed.
2 * No additional library is required. Ownership and status contracts are the
3 * same as detlef.h; these helpers neither retain nor release handles.
4 */
5#ifndef DETLEF_HELPERS_D133DE2C_10B0_4F13_9F73_FA4BFACE1607
6#define DETLEF_HELPERS_D133DE2C_10B0_4F13_9F73_FA4BFACE1607
7
8#include "detlef.h"
9#include <string.h>
10
20static inline DetlefSlice detlef_slice(const void *data, size_t len) {
21 DetlefSlice result = {(const uint8_t *)data, len};
22 return result;
23}
24
33static inline DetlefSlice detlef_cstr(const char *text) {
34 return detlef_slice(text, text ? strlen(text) : 0);
35}
36
46static inline DetlefNamed detlef_named(DetlefSlice name, DetlefHandle handle) {
47 DetlefNamed result = {name, handle};
48 return result;
49}
50
59static inline DetlefNamed detlef_named_cstr(const char *name, DetlefHandle handle) {
60 return detlef_named(detlef_cstr(name), handle);
61}
62
73static inline DetlefStatus detlef_execute_cstr(DetlefAccess *access, const char *source,
74 DetlefHandle *result) {
75 return detlef_execute(access, detlef_cstr(source), result);
76}
77
88static inline DetlefStatus
89detlef_value_string_cstr(DetlefAccess *access, const char *text, DetlefHandle *result) {
90 return detlef_value_string(access, detlef_cstr(text), result);
91}
92
103static inline DetlefStatus
105 DetlefHandle *result) {
106 return detlef_function_value_string(access, detlef_cstr(text), result);
107}
108
126 DetlefAccess *access, const char *name, const DetlefNamed *parameters, size_t count,
127 const DetlefNamed *variadic, DetlefFunctionCallback callback, void *data) {
128 return detlef_register_function(access, detlef_cstr(name), parameters, count,
129 variadic, callback, data);
130}
131
144 const char *name,
145 DetlefCallback callback,
146 void *data) {
147 return detlef_register_control(access, detlef_cstr(name), callback, data);
148}
149
166static inline DetlefStatus
168 const char *name, const DetlefNamed *parameters,
169 size_t count, const DetlefNamed *variadic,
170 DetlefFunctionCallback callback, void *data) {
171 return detlef_package_function(access, package, detlef_cstr(name), parameters,
172 count, variadic, callback, data);
173}
174
187static inline DetlefStatus
189 const char *name, DetlefCallback callback, void *data) {
190 return detlef_package_control(access, package, detlef_cstr(name), callback, data);
191}
192
193#endif /* DETLEF_HELPERS_D133DE2C_10B0_4F13_9F73_FA4BFACE1607 */
DetlefStatus detlef_register_function(DetlefAccess *a, DetlefSlice input, const DetlefNamed *params, size_t count, const DetlefNamed *vararg, DetlefFunctionCallback callback, void *data)
DetlefStatus detlef_register_control(DetlefAccess *a, DetlefSlice input, DetlefCallback callback, void *data)
DetlefStatus(* DetlefCallback)(void *user_data, DetlefAccess *access, DetlefHandle *result)
Definition detlef.h:363
struct DetlefFunctionAccess DetlefFunctionAccess
Definition detlef.h:47
DetlefStatus
Definition detlef.h:55
struct DetlefAccess DetlefAccess
Definition detlef.h:41
uint64_t DetlefHandle
Definition detlef.h:114
DetlefStatus(* DetlefFunctionCallback)(void *user_data, DetlefFunctionAccess *access, DetlefHandle *result)
Definition detlef.h:376
DetlefStatus detlef_function_value_string(DetlefFunctionAccess *a, DetlefSlice input, DetlefHandle *out)
static DetlefSlice detlef_slice(const void *data, size_t len)
static DetlefStatus detlef_execute_cstr(DetlefAccess *access, const char *source, DetlefHandle *result)
static DetlefSlice detlef_cstr(const char *text)
static DetlefStatus detlef_package_function_cstr(DetlefAccess *access, DetlefHandle package, const char *name, const DetlefNamed *parameters, size_t count, const DetlefNamed *variadic, DetlefFunctionCallback callback, void *data)
static DetlefNamed detlef_named(DetlefSlice name, DetlefHandle handle)
static DetlefStatus detlef_package_control_cstr(DetlefAccess *access, DetlefHandle package, const char *name, DetlefCallback callback, void *data)
static DetlefNamed detlef_named_cstr(const char *name, DetlefHandle handle)
static DetlefStatus detlef_value_string_cstr(DetlefAccess *access, const char *text, DetlefHandle *result)
static DetlefStatus detlef_register_function_cstr(DetlefAccess *access, const char *name, const DetlefNamed *parameters, size_t count, const DetlefNamed *variadic, DetlefFunctionCallback callback, void *data)
static DetlefStatus detlef_register_control_cstr(DetlefAccess *access, const char *name, DetlefCallback callback, void *data)
static DetlefStatus detlef_function_value_string_cstr(DetlefFunctionAccess *access, const char *text, DetlefHandle *result)
DetlefStatus detlef_package_control(DetlefAccess *a, DetlefHandle handle, DetlefSlice input, DetlefCallback callback, void *data)
DetlefStatus detlef_package_function(DetlefAccess *a, DetlefHandle handle, DetlefSlice input, const DetlefNamed *params, size_t count, const DetlefNamed *vararg, DetlefFunctionCallback callback, void *data)
DetlefStatus detlef_value_string(DetlefAccess *a, DetlefSlice input, DetlefHandle *out)
DetlefStatus detlef_execute(DetlefAccess *a, DetlefSlice source, DetlefHandle *out)