66 lines
1.9 KiB
C
Raw Permalink Normal View History

// Generated by nim-ffi C codegen. Do not edit by hand.
//
// Native (zero-serialization) C ABI. Each call delivers its result to the
// callback. On RET_OK:
// - string-returning procs: (msg, len) is the raw string bytes (not
// NUL-terminated; use len).
// - struct-returning procs: msg is a pointer to the returned C struct — cast
// it to `const <Type>*` (len is sizeof). It is valid ONLY for the duration
// of the callback; copy out anything you need before returning. The library
// deep-frees it right after the callback (you free nothing).
// On RET_ERR, (msg, len) is the raw error text. A `<name>_cbor` variant of each
// proc also exists for generic/cross-language callers that prefer CBOR.
#ifndef NIM_FFI_GEN_ECHO_H
#define NIM_FFI_GEN_ECHO_H
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef NIM_FFI_RET_CODES
#define NIM_FFI_RET_CODES
#define RET_OK 0
#define RET_ERR 1
#define RET_MISSING_CALLBACK 2
#endif
#ifndef NIM_FFI_CALLBACK_T
#define NIM_FFI_CALLBACK_T
typedef void (*FFICallBack)(int callerRet, const char *msg, size_t len, void *userData);
#endif
// --- {.ffi.}-annotated types, exposed as C structs ----------
typedef struct {
const char* prefix;
} EchoConfig;
typedef struct {
const char* text;
} ShoutRequest;
typedef struct {
const char* shouted;
const char* prefix;
} ShoutResponse;
void *echo_create(EchoConfig config, FFICallBack callback, void *userData);
int echo_shout(void *ctx, FFICallBack callback, void *userData, ShoutRequest req);
int echo_version(void *ctx, FFICallBack callback, void *userData);
int echo_destroy(void *ctx);
uint64_t echo_add_event_listener(void *ctx, const char *eventName, FFICallBack callback, void *userData);
int echo_remove_event_listener(void *ctx, uint64_t listenerId);
#ifdef __cplusplus
} // extern "C"
#endif
#endif /* NIM_FFI_GEN_ECHO_H */