From 09e0c5b9fadb9e1156ccabd850aa55278644f28b Mon Sep 17 00:00:00 2001 From: zontreck Date: Wed, 31 Jul 2024 00:18:15 -0700 Subject: [PATCH] Fixes compile errors --- CMakeLists.txt | 2 +- Makefile | 2 +- src/nbt/Tag.h | 4 +--- src/types/dynamic.cpp | 25 +++++++++++++++++++------ src/types/dynamic.h | 3 +++ 5 files changed, 25 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7cdece6..2f2638a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED True) # Add source files -file(GLOB SOURCES "src/utils/*.cpp" "src/types/*.cpp") +file(GLOB SOURCES "src/utils/*.cpp" "src/types/*.cpp" "src/nbt/*.cpp") # Add an shared library target add_library(ac SHARED ${SOURCES}) diff --git a/Makefile b/Makefile index 98810c4..b106e80 100644 --- a/Makefile +++ b/Makefile @@ -9,7 +9,7 @@ all: clean build build: mkdir build - cd build && cmake .. && make && mv libac.so .. + cd build && cmake .. && make && mv libac.so .. && cd .. # Clean up build artifacts clean: diff --git a/src/nbt/Tag.h b/src/nbt/Tag.h index b22d8f7..79bacf5 100644 --- a/src/nbt/Tag.h +++ b/src/nbt/Tag.h @@ -81,8 +81,7 @@ namespace nbt _parentTagType = type; } - virtual void writeValue(ByteLayer &data) const = 0; - virtual void readValue(ByteLayer &data) = 0; + virtual void readValue(ByteLayer &data); std::string getKey() const { @@ -95,7 +94,6 @@ namespace nbt } virtual void writeStringifiedValue(StringBuilder &stream, int indent, bool isList) const = 0; - virtual void readStringifiedValue(StringReader &reader) = 0; virtual void writeValue(ByteLayer &data) const; virtual void setValue(const dynamic &val); virtual void prettyPrint(int indent, bool recurse) const; diff --git a/src/types/dynamic.cpp b/src/types/dynamic.cpp index c6d41ca..c2b6932 100644 --- a/src/types/dynamic.cpp +++ b/src/types/dynamic.cpp @@ -7,8 +7,22 @@ using namespace std; namespace libac { + + dynamic::~dynamic() + { + // Properly destroy the union members if needed. + if (Type == 8) + { // Assuming type 8 is std::string + x.str.~basic_string(); + } + else if (Type == 9) + { // Assuming type 9 is std::vector + x.u8l.~vector(); + } + } + template - dynamic::dynamic(T y) + dynamic::dynamic(T y) : Type(0) { if constexpr (std::is_same_v) { @@ -55,15 +69,11 @@ namespace libac Type = 9; x.u8 = y; } - else if constexpr (std::is_same_v < T, vector) + else if constexpr (std::is_same_v>) { Type = 10; x.u8l = y; } - else - { - static_assert(!std::is_same_v, "Unsupported type for dynamic"); - } } template @@ -115,6 +125,7 @@ namespace libac } } +/* template dynamic::dynamic(char); template dynamic::dynamic(unsigned char); template dynamic::dynamic(short); @@ -136,4 +147,6 @@ namespace libac template std::string dynamic::get() const; template uint8_t dynamic::get() const; template vector dynamic::get>() const; + + */ } \ No newline at end of file diff --git a/src/types/dynamic.h b/src/types/dynamic.h index 8e011a6..40be457 100644 --- a/src/types/dynamic.h +++ b/src/types/dynamic.h @@ -23,6 +23,9 @@ namespace libac string str; uint8_t u8; vector u8l; + + all() {} // Default constructor + ~all() {} // Default destructor }; class dynamic