37typedef struct xtc_mctx xtc_mctx_t;
39typedef enum xtc_mctx_flags {
41 XTC_MCTX_THREAD_SAFE = 1u << 0
44typedef void (*xtc_mctx_cleanup_fn)(
void *user);
65int xtc_mctx_create(xtc_mctx_t *parent,
const char *name,
66 unsigned flags, xtc_mctx_t **out);
70void xtc_mctx_destroy(xtc_mctx_t *m);
74void xtc_mctx_reset(xtc_mctx_t *m);
77void *xtc_mctx_alloc(xtc_mctx_t *m,
size_t size);
78void *xtc_mctx_calloc(xtc_mctx_t *m,
size_t n,
size_t size);
81void *xtc_mctx_strdup(xtc_mctx_t *m,
const char *s);
85void xtc_mctx_free(xtc_mctx_t *m,
void *p);
89int xtc_mctx_register_cleanup(xtc_mctx_t *m,
90 xtc_mctx_cleanup_fn fn,
void *user);
92const char *xtc_mctx_name(
const xtc_mctx_t *m);
93size_t xtc_mctx_total_bytes(
const xtc_mctx_t *m);
94size_t xtc_mctx_total_chunks(
const xtc_mctx_t *m);