26#define CLOD_NBT_ZERO (uint8_t)(0)
27#define CLOD_NBT_INT8 (uint8_t)(1)
28#define CLOD_NBT_INT16 (uint8_t)(2)
29#define CLOD_NBT_INT32 (uint8_t)(3)
30#define CLOD_NBT_INT64 (uint8_t)(4)
31#define CLOD_NBT_FLOAT32 (uint8_t)(5)
32#define CLOD_NBT_FLOAT64 (uint8_t)(6)
33#define CLOD_NBT_INT8_ARRAY (uint8_t)(7)
34#define CLOD_NBT_INT32_ARRAY (uint8_t)(11)
35#define CLOD_NBT_INT64_ARRAY (uint8_t)(12)
36#define CLOD_NBT_STRING (uint8_t)(8)
37#define CLOD_NBT_LIST (uint8_t)(9)
38#define CLOD_NBT_COMPOUND (uint8_t)(10)
40#define CLOD_NBT_ROOT_COMPOUND_INIT ((uint8_t[]){CLOD_NBT_COMPOUND, 0, 0, 0})
41#define CLOD_NBT_ROOT_LIST_INIT(type) ((uint8_t[]){CLOD_NBT_LIST, type, 0, 0, 0, 0})
52CLOD_API CLOD_PURE CLOD_NONNULL(1, 2)
54 const uint8_t *restrict payload,
66CLOD_API CLOD_PURE CLOD_NONNULL(1)
76CLOD_API CLOD_PURE CLOD_NONNULL(1, 2)
86CLOD_API CLOD_PURE CLOD_NONNULL(1, 2)
107#define CLOD_NBT_ITER_ZERO { .type = CLOD_NBT_ZERO }
122CLOD_API CLOD_USE_RETURN CLOD_NONNULL(1, 2, 4)
124 const uint8_t *restrict payload,
126 uint8_t payload_type,
138CLOD_API CLOD_NONNULL(1, 2)
140 const uint8_t *restrict compound,
160CLOD_API CLOD_NONNULL(2, 3)
162 uint8_t *restrict compound,
178CLOD_API CLOD_NONNULL(1, 2, 3)
180 uint8_t *restrict compound,
197CLOD_API CLOD_NONNULL(2)
199 uint8_t *restrict list,
bool clod_nbt_iter_next(const uint8_t *restrict payload, const void *end, uint8_t payload_type, struct clod_nbt_iter *iter)
size_t clod_nbt_payload_size(const uint8_t *restrict payload, const void *end, uint8_t payload_type)
size_t clod_nbt_tag_size(const uint8_t *restrict tag, const void *end)
uint8_t * clod_nbt_compound_add(uint8_t *restrict compound, const void **end, ptrdiff_t *free, struct clod_string name, uint8_t type)
bool clod_nbt_list_resize(uint8_t *restrict list, const uint8_t **end, ptrdiff_t *free, uint8_t type, uint32_t length)
struct clod_string clod_nbt_tag_name(const uint8_t *tag, const void *end)
bool clod_nbt_compound_del(uint8_t *restrict compound, const void **end, ptrdiff_t *free, struct clod_string name)
uint8_t * clod_nbt_tag_payload(const uint8_t *restrict tag, const void *end)
uint8_t * clod_nbt_compound_get(const uint8_t *restrict compound, const void *end, struct clod_string name)