diff --git a/BeefLibs/Beefy2D/src/utils/Compression.bf b/BeefLibs/Beefy2D/src/utils/Compression.bf index 6514b066..1ec1fe3d 100644 --- a/BeefLibs/Beefy2D/src/utils/Compression.bf +++ b/BeefLibs/Beefy2D/src/utils/Compression.bf @@ -6,44 +6,48 @@ namespace utils class Compression { [CallingConvention(.Stdcall), CLink] - extern static Span Compression_Compress(void* ptr, int size); + extern static bool Compression_Compress(void* ptr, int size, void** outPtr, int* outSize); [CallingConvention(.Stdcall), CLink] - extern static Span Compression_Decompress(void* ptr, int size); + extern static bool Compression_Decompress(void* ptr, int size, void** outPtr, int* outSize); public static Result Compress(Span inData, List outData) { - var outSpan = Compression_Compress(inData.Ptr, inData.Length); - if ((outSpan.Length == 0) && (inData.Length != 0)) + void* outPtr = null; + int outSize = 0; + if (!Compression_Compress(inData.Ptr, inData.Length, &outPtr, &outSize)) return .Err; - outData.AddRange(outSpan); + outData.AddRange(.((.)outPtr, outSize)); return .Ok; } public static Result Compress(Span inData, String outData) { - var outSpan = Compression_Compress(inData.Ptr, inData.Length); - if ((outSpan.Length == 0) && (inData.Length != 0)) + void* outPtr = null; + int outSize = 0; + if (!Compression_Compress(inData.Ptr, inData.Length, &outPtr, &outSize)) return .Err; - outData.Insert(outData.Length, StringView((.)outSpan.Ptr, outSpan.Length)); + outData.Insert(outData.Length, StringView((.)outPtr, outSize)); return .Ok; } public static Result Decompress(Span inData, List outData) { - var outSpan = Compression_Decompress(inData.Ptr, inData.Length); - if (outSpan == default) + void* outPtr = null; + int outSize = 0; + if (!Compression_Decompress(inData.Ptr, inData.Length, &outPtr, &outSize)) return .Err; - outData.AddRange(outSpan); + outData.AddRange(.((.)outPtr, outSize)); return .Ok; } public static Result Decompress(Span inData, String outData) { - var outSpan = Compression_Decompress(inData.Ptr, inData.Length); - if (outSpan == default) + void* outPtr = null; + int outSize = 0; + if (!Compression_Decompress(inData.Ptr, inData.Length, &outPtr, &outSize)) return .Err; - outData.Insert(outData.Length, StringView((.)outSpan.Ptr, outSpan.Length)); + outData.Insert(outData.Length, StringView((.)outPtr, outSize)); return .Ok; } } diff --git a/BeefySysLib/util/Compress.cpp b/BeefySysLib/util/Compress.cpp index 547ad06f..6edb00d7 100644 --- a/BeefySysLib/util/Compress.cpp +++ b/BeefySysLib/util/Compress.cpp @@ -102,22 +102,24 @@ bool Compression::Decompress(Span inData, Array& outData) ////////////////////////////////////////////////////////////////////////// -BF_EXPORT Span BF_CALLTYPE Compression_Compress(void* ptr, int size) +BF_EXPORT bool BF_CALLTYPE Compression_Compress(void* ptr, intptr size, void** outPtr, intptr* outSize) { auto& outData = *gCompression_TLDataReturn.Get(); outData.Reserve(128); if (!Compression::Compress(Span((uint8*)ptr, size), outData)) - return Span(); - uint8* outPtr = outData.mVals; - return Span(outPtr, outData.mSize); + return false; + *outPtr = outData.mVals; + *outSize = outData.mSize; + return true; } -BF_EXPORT Span BF_CALLTYPE Compression_Decompress(void* ptr, int size) +BF_EXPORT bool BF_CALLTYPE Compression_Decompress(void* ptr, intptr size, void** outPtr, intptr* outSize) { auto& outData = *gCompression_TLDataReturn.Get(); outData.Reserve(128); if (!Compression::Decompress(Span((uint8*)ptr, size), outData)) - return Span(); - uint8* outPtr = outData.mVals; - return Span(outPtr, outData.mSize); + return false; + *outPtr = outData.mVals; + *outSize = outData.mSize; + return true; }