39 .stdio_ops = stdio_ops,
51 if (!backend || (n > 0 && !buf)) {
85 if (!backend || (n > 0 && !buf)) {
191 switch (args->
kind) {
242 mem->
free((
void *)ud);
#define LEXLEO_ASSERT(expr)
void * osal_memcpy(void *dest, const void *src, size_t n)
stream_status_t stdio_stream_ctor(const void *ud, const void *args, stream_t **out)
Factory-compatible constructor callback for the stdio_stream adapter.
static const stream_vtbl_t STDIO_STREAM_VTBL
static void stdio_stream_destroy_ud_ctor(const void *ud, const osal_mem_ops_t *mem)
stream_status_t stdio_stream_create_stream(stream_t **out, const stdio_stream_args_t *args, const stdio_stream_cfg_t *cfg, const stdio_stream_env_t *env)
Create a standard-I/O-backed stream instance.
stdio_stream_env_t stdio_stream_default_env(const osal_stdio_ops_t *stdio_ops, const osal_mem_ops_t *mem, const stream_env_t *port_env)
Build a default environment for the stdio_stream adapter.
static stream_status_t stdio_stream_flush(void *backend)
static stream_status_t stdio_stream_close(void *backend)
static size_t stdio_stream_write(void *backend, const void *buf, size_t n, stream_status_t *st)
stdio_stream_cfg_t stdio_stream_default_cfg(void)
Return a default configuration for the stdio_stream adapter.
stream_status_t stdio_stream_create_desc(stream_adapter_desc_t *out, stream_key_t key, const stdio_stream_cfg_t *cfg, const stdio_stream_env_t *env, const osal_mem_ops_t *mem)
Build a stream adapter descriptor for the stdio_stream adapter.
static size_t stdio_stream_read(void *backend, void *buf, size_t n, stream_status_t *st)
Composition Root API for wiring the stdio_stream adapter into the stream factory.
Private constructor user-data stored in stdio_stream factory descriptors.
Private backend handle definition for the stdio_stream adapter.
@ STDIO_STREAM_KIND_STDERR
Standard error stream.
@ STDIO_STREAM_KIND_STDOUT
Standard output stream.
@ STDIO_STREAM_KIND_STDIN
Standard input stream.
@ STDIO_STREAM_KIND_COUNT
Number of supported standard I/O stream kinds.
stream_status_t stream_create(stream_t **out, const stream_vtbl_t *vtbl, void *backend, const stream_env_t *env)
Create a generic stream handle from adapter-provided backend bindings.
Public environment type for the stream port.
const char * stream_key_t
Public identifier type for a registered stream adapter.
stream_status_t
Public status codes used by the stream port.
void *(* calloc)(size_t nmemb, size_t size)
OSAL_STDIO *(* stdin)(void)
size_t(* write)(const void *ptr, size_t size, size_t nmemb, OSAL_STDIO *stdio)
size_t(* read)(void *ptr, size_t size, size_t nmemb, OSAL_STDIO *stdio)
OSAL_STDIO *(* stderr)(void)
OSAL_STDIO *(* stdout)(void)
int(* flush)(OSAL_STDIO *stdio)
Creation arguments for the stdio_stream adapter.
stdio_stream_kind_t kind
Requested standard I/O stream kind.
Configuration type for the stdio_stream adapter.
int reserved
Reserved configuration field.
Private constructor user-data for stdio_stream factory registration.
Injected dependencies for the stdio_stream adapter.
const osal_stdio_ops_t * stdio_ops
Borrowed OSAL stdio operations table.
stream_env_t port_env
Borrowed stream port environment.
const osal_mem_ops_t * mem
Borrowed memory operations table for adapter-owned allocations.
Private backend handle for the stdio_stream adapter.
const osal_mem_ops_t * mem_ops
const osal_stdio_ops_t * stdio_ops
Public descriptor used to register a concrete stream adapter.
stream_key_t key
Public key used to identify the adapter.
const void * ud
Optional opaque user data bound to the constructor.
ud_dtor_fn_t ud_dtor
Optional destructor for ud.
stream_ctor_fn_t ctor
Adapter constructor used to create a stream_t.
Runtime environment for the stream port.
Private handle structure for a stream_t.
Adapter dispatch table bound to a stream_t instance.