166[[gnu::nonnull(1, 3)]]
175[[gnu::nonnull(1, 3)]]
195[[gnu::nonnull(1, 2)]]
A bit-partitioned trie with a tail buffer, used as a growable indexed sequence in the runtime.
Error handling for the runtime.
void * srn_fiber_result_t
What a fiber's entry produces, type-erased.
srn_sexp_node_t * srn_sexp_make_list(srn_context_t *ctx)
srn_sexp_node_t * srn_sexp_make_atom(srn_context_t *ctx, const char *name)
srn_sexp_node_t * read_expr(srn_sexp_parser_t *parser, srn_error_t **err)
srn_sexp_node_t * srn_sexp_make_num(srn_context_t *ctx, const char *text)
const char * srn_sexp_to_debug_string(srn_context_t *ctx, srn_sexp_tree_t *tree)
Convert the given sexp to a string for debugging purposes.
srn_sexp_tree_t * srn_sexp_read_from_string(srn_context_t *ctx, void *reading_context, const char *buf)
Read the symbolic expressions from a buffer.
srn_sexp_node_t * srn_sexp_make_str(srn_context_t *ctx, const char *data)
srn_fiber_result_t read_from_buffer(srn_context_t *ctx, void *arg)
struct array_list_t array_list_t
srn_sexp_node_t * srn_sexp_make_node(srn_context_t *ctx, srn_sexp_node_type_e type)
srn_sexp_node_t * srn_sexp_make_cons(srn_context_t *ctx, srn_sexp_node_t *head, srn_sexp_node_t *tail)
srn_sexp_tree_t * srn_sexp_read_from_file(srn_context_t *ctx, void *reading_context, const char *path)
Read the symbolic expressions from a file.
Source manager is what that read the source files and own the buffer that contains the data.
size_t srn_sm_buffer_id_t
srn_sexp_parser_t * parser
A runtime error, a tag classifying the failure and a human-readable message.
union srn_sexp_node_t::@313353022266020117306231170157030062126255275140 as
srn_sexp_node_type_e type
srn_metadata_t * metadata
A number literal, kept as the raw text it was written with (e.g.
const unsigned char * buffer
void * reading_context
We store whatever the caller passes as reading context to pass it back later on in the parsed tree.
const srn_sm_buffer_id_t buffer_id