mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Compression interface change
This commit is contained in:
parent
b0aa27c82c
commit
e29a785fee
2 changed files with 28 additions and 22 deletions
|
@ -6,44 +6,48 @@ namespace utils
|
||||||
class Compression
|
class Compression
|
||||||
{
|
{
|
||||||
[CallingConvention(.Stdcall), CLink]
|
[CallingConvention(.Stdcall), CLink]
|
||||||
extern static Span<uint8> Compression_Compress(void* ptr, int size);
|
extern static bool Compression_Compress(void* ptr, int size, void** outPtr, int* outSize);
|
||||||
|
|
||||||
[CallingConvention(.Stdcall), CLink]
|
[CallingConvention(.Stdcall), CLink]
|
||||||
extern static Span<uint8> Compression_Decompress(void* ptr, int size);
|
extern static bool Compression_Decompress(void* ptr, int size, void** outPtr, int* outSize);
|
||||||
|
|
||||||
public static Result<void> Compress(Span<uint8> inData, List<uint8> outData)
|
public static Result<void> Compress(Span<uint8> inData, List<uint8> outData)
|
||||||
{
|
{
|
||||||
var outSpan = Compression_Compress(inData.Ptr, inData.Length);
|
void* outPtr = null;
|
||||||
if ((outSpan.Length == 0) && (inData.Length != 0))
|
int outSize = 0;
|
||||||
|
if (!Compression_Compress(inData.Ptr, inData.Length, &outPtr, &outSize))
|
||||||
return .Err;
|
return .Err;
|
||||||
outData.AddRange(outSpan);
|
outData.AddRange(.((.)outPtr, outSize));
|
||||||
return .Ok;
|
return .Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Result<void> Compress(Span<uint8> inData, String outData)
|
public static Result<void> Compress(Span<uint8> inData, String outData)
|
||||||
{
|
{
|
||||||
var outSpan = Compression_Compress(inData.Ptr, inData.Length);
|
void* outPtr = null;
|
||||||
if ((outSpan.Length == 0) && (inData.Length != 0))
|
int outSize = 0;
|
||||||
|
if (!Compression_Compress(inData.Ptr, inData.Length, &outPtr, &outSize))
|
||||||
return .Err;
|
return .Err;
|
||||||
outData.Insert(outData.Length, StringView((.)outSpan.Ptr, outSpan.Length));
|
outData.Insert(outData.Length, StringView((.)outPtr, outSize));
|
||||||
return .Ok;
|
return .Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Result<void> Decompress(Span<uint8> inData, List<uint8> outData)
|
public static Result<void> Decompress(Span<uint8> inData, List<uint8> outData)
|
||||||
{
|
{
|
||||||
var outSpan = Compression_Decompress(inData.Ptr, inData.Length);
|
void* outPtr = null;
|
||||||
if (outSpan == default)
|
int outSize = 0;
|
||||||
|
if (!Compression_Decompress(inData.Ptr, inData.Length, &outPtr, &outSize))
|
||||||
return .Err;
|
return .Err;
|
||||||
outData.AddRange(outSpan);
|
outData.AddRange(.((.)outPtr, outSize));
|
||||||
return .Ok;
|
return .Ok;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Result<void> Decompress(Span<uint8> inData, String outData)
|
public static Result<void> Decompress(Span<uint8> inData, String outData)
|
||||||
{
|
{
|
||||||
var outSpan = Compression_Decompress(inData.Ptr, inData.Length);
|
void* outPtr = null;
|
||||||
if (outSpan == default)
|
int outSize = 0;
|
||||||
|
if (!Compression_Decompress(inData.Ptr, inData.Length, &outPtr, &outSize))
|
||||||
return .Err;
|
return .Err;
|
||||||
outData.Insert(outData.Length, StringView((.)outSpan.Ptr, outSpan.Length));
|
outData.Insert(outData.Length, StringView((.)outPtr, outSize));
|
||||||
return .Ok;
|
return .Ok;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -102,22 +102,24 @@ bool Compression::Decompress(Span<uint8> inData, Array<uint8>& outData)
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
BF_EXPORT Span<uint8> 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();
|
auto& outData = *gCompression_TLDataReturn.Get();
|
||||||
outData.Reserve(128);
|
outData.Reserve(128);
|
||||||
if (!Compression::Compress(Span<uint8>((uint8*)ptr, size), outData))
|
if (!Compression::Compress(Span<uint8>((uint8*)ptr, size), outData))
|
||||||
return Span<uint8>();
|
return false;
|
||||||
uint8* outPtr = outData.mVals;
|
*outPtr = outData.mVals;
|
||||||
return Span<uint8>(outPtr, outData.mSize);
|
*outSize = outData.mSize;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
BF_EXPORT Span<uint8> 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();
|
auto& outData = *gCompression_TLDataReturn.Get();
|
||||||
outData.Reserve(128);
|
outData.Reserve(128);
|
||||||
if (!Compression::Decompress(Span<uint8>((uint8*)ptr, size), outData))
|
if (!Compression::Decompress(Span<uint8>((uint8*)ptr, size), outData))
|
||||||
return Span<uint8>();
|
return false;
|
||||||
uint8* outPtr = outData.mVals;
|
*outPtr = outData.mVals;
|
||||||
return Span<uint8>(outPtr, outData.mSize);
|
*outSize = outData.mSize;
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue