ultimatepp/uppsrc/plugin/lz4/util.cpp
cxl 57efb3888c plugin/lz4
git-svn-id: svn://ultimatepp.org/upp/trunk@7801 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2014-10-20 15:43:18 +00:00

59 lines
No EOL
1.4 KiB
C++

#include "lz4.h"
namespace Upp {
int64 lz4Press(Stream& out, Stream& in, int64 size, Gate2<int64, int64> progress, bool compress)
{
Lz4 lz4;
int64 r = -1;
{
OutFilterStream outs(out, lz4);
if(compress)
lz4.Compress();
else
lz4.Decompress();
if(CopyStream(outs, in, size, progress) >= 0) {
outs.Close();
if(!out.IsError() && !outs.IsError())
r = outs.GetCount();
}
}
return r;
}
int64 LZ4Compress(Stream& out, Stream& in, Gate2<int64, int64> progress)
{
return lz4Press(out, in, in.GetLeft(), progress, true);
}
int64 LZ4Decompress(Stream& out, Stream& in, Gate2<int64, int64> progress)
{
return lz4Press(out, in, in.GetLeft(), progress, false);
}
String LZ4Compress(const void *data, int64 len, Gate2<int64, int64> progress)
{
StringStream out;
MemReadStream in(data, len);
return LZ4Compress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult();
}
String LZ4Compress(const String& s, Gate2<int64, int64> progress)
{
return LZ4Compress(~s, s.GetLength(), progress);
}
String LZ4Decompress(const void *data, int64 len, Gate2<int64, int64> progress)
{
StringStream out;
MemReadStream in(data, len);
return LZ4Decompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult();
}
String LZ4Decompress(const String& s, Gate2<int64, int64> progress)
{
return LZ4Decompress(~s, s.GetLength(), progress);
}
};