From 4b3a61106a7d38cd904ab021b82a4a487df61f0a Mon Sep 17 00:00:00 2001 From: bigfoot547 Date: Sat, 10 Feb 2024 14:28:38 -0500 Subject: changes --- src/nbt/nbt.c | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'src/nbt') diff --git a/src/nbt/nbt.c b/src/nbt/nbt.c index 5948bce..596ec1c 100644 --- a/src/nbt/nbt.c +++ b/src/nbt/nbt.c @@ -6,6 +6,29 @@ #include #include +const char *const nbt__type_names[] = { + "TAG_End", + "TAG_Byte", + "TAG_Short", + "TAG_Int", + "TAG_Long", + "TAG_Float", + "TAG_Double", + "TAG_Byte_Array", + "TAG_String", + "TAG_List", + "TAG_Compound", + "TAG_Int_Array", + "TAG_Long_Array", + NULL +}; + +nbt_type_t nbt_tag_type(nbt_tag_t *tag) +{ + if (!tag) return NBT_TAG_END; + return tag->type; +} + nbt_tag_t *nbt__new_val(nbt_type_t type) { nbt_tag_t *tag = calloc(1, sizeof(nbt_tag_t)); @@ -117,11 +140,15 @@ nbt_tag_t *nbt_listn(nbt_size_t cap) { nbt_tag_t *tag = nbt__new_val(NBT_TAG_LIST); if (!tag) return NULL; - if (!cap) cap = 16; tag->value.nbt_list.len = 0; tag->value.nbt_list.cap = cap; + if (!cap) { + tag->value.nbt_list.ptags = NULL; + return tag; + } + nbt_tag_t **tags = calloc(cap, sizeof(nbt_tag_t *)); if (!tags) goto cleanup; @@ -205,3 +232,9 @@ void nbt__tag_free(nbt_tag_t *tag) free(tag); } + +const char *nbt_typestr(nbt_type_t type) +{ + if (type < 0 || type >= NBT_TAG_MAX) return NULL; + return nbt__type_names[type]; +} -- cgit v1.2.3-70-g09d2