32#include "xtc_export.h"
39typedef struct xtc_mctx xtc_mctx_t;
41typedef enum xtc_mctx_flags {
43 XTC_MCTX_THREAD_SAFE = 1u << 0
46typedef void (*xtc_mctx_cleanup_fn)(
void *user);
67XTC_API
int xtc_mctx_create(xtc_mctx_t *parent,
const char *name,
68 unsigned flags, xtc_mctx_t **out);
72XTC_API
void xtc_mctx_destroy(xtc_mctx_t *m);
76XTC_API
void xtc_mctx_reset(xtc_mctx_t *m);
79XTC_API
void *xtc_mctx_alloc(xtc_mctx_t *m,
size_t size);
80XTC_API
void *xtc_mctx_calloc(xtc_mctx_t *m,
size_t n,
size_t size);
83XTC_API
void *xtc_mctx_strdup(xtc_mctx_t *m,
const char *s);
87XTC_API
void xtc_mctx_free(xtc_mctx_t *m,
void *p);
91XTC_API
int xtc_mctx_register_cleanup(xtc_mctx_t *m,
92 xtc_mctx_cleanup_fn fn,
void *user);
94XTC_API
const char *xtc_mctx_name(
const xtc_mctx_t *m);
95XTC_API
size_t xtc_mctx_total_bytes(
const xtc_mctx_t *m);
96XTC_API
size_t xtc_mctx_total_chunks(
const xtc_mctx_t *m);