diff --git a/uppsrc/Core/Stream.cpp b/uppsrc/Core/Stream.cpp index d08499c3a..a074fa964 100644 --- a/uppsrc/Core/Stream.cpp +++ b/uppsrc/Core/Stream.cpp @@ -1329,8 +1329,9 @@ int64 CopyStream(Stream& dest, Stream& src, int64 count) { return done; } -int64 CopyStream(Stream& dest, Stream& src, int64 count, Function progress) { - int block = (int)min(count, 65536); +int64 CopyStream(Stream& dest, Stream& src, int64 count, EventGate progress) +{ + int block = (int)min(count, 32768); Buffer temp(block); int loaded; int64 done = 0; diff --git a/uppsrc/Core/z.cpp b/uppsrc/Core/z.cpp index 03c1e7cce..9b8b69ddb 100644 --- a/uppsrc/Core/z.cpp +++ b/uppsrc/Core/z.cpp @@ -307,7 +307,7 @@ Zlib::~Zlib() Free(); } -int64 zPress(Stream& out, Stream& in, int64 size, Function progress, bool gzip, bool compress, +int64 zPress(Stream& out, Stream& in, int64 size, EventGate progress, bool gzip, bool compress, dword *crc = NULL, bool hdr = true) { Zlib zlib; @@ -331,95 +331,95 @@ int64 zPress(Stream& out, Stream& in, int64 size, Function p return r; } -int64 ZCompress(Stream& out, Stream& in, int64 size, Function progress, bool hdr) +int64 ZCompress(Stream& out, Stream& in, int64 size, EventGateprogress, bool hdr) { return zPress(out, in, size, progress, false, true, NULL, hdr); } -int64 ZDecompress(Stream& out, Stream& in, int64 size, Function progress, bool hdr) +int64 ZDecompress(Stream& out, Stream& in, int64 size, EventGateprogress, bool hdr) { return zPress(out, in, size, progress, false, false, NULL, hdr); } -int64 ZCompress(Stream& out, Stream& in, Function progress) +int64 ZCompress(Stream& out, Stream& in, EventGateprogress) { return ZCompress(out, in, in.GetLeft(), progress); } -int64 ZDecompress(Stream& out, Stream& in, Function progress) +int64 ZDecompress(Stream& out, Stream& in, EventGateprogress) { return zPress(out, in, in.GetLeft(), progress, false, false); } -String ZCompress(const void *data, int64 len, Function progress) +String ZCompress(const void *data, int64 len, EventGateprogress) { StringStream out; MemReadStream in(data, len); return ZCompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String ZCompress(const String& s, Function progress) +String ZCompress(const String& s, EventGateprogress) { return ZCompress(~s, s.GetLength(), progress); } -String ZDecompress(const void *data, int64 len, Function progress) +String ZDecompress(const void *data, int64 len, EventGateprogress) { StringStream out; MemReadStream in(data, len); return ZDecompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String ZDecompress(const String& s, Function progress) +String ZDecompress(const String& s, EventGateprogress) { return ZDecompress(~s, s.GetLength(), progress); } -int64 GZCompress(Stream& out, Stream& in, int64 size, Function progress) +int64 GZCompress(Stream& out, Stream& in, int64 size, EventGateprogress) { return zPress(out, in, size, progress, true, true); } -int64 GZDecompress(Stream& out, Stream& in, int64 size, Function progress) +int64 GZDecompress(Stream& out, Stream& in, int64 size, EventGateprogress) { return zPress(out, in, size, progress, true, false); } -int64 GZCompress(Stream& out, Stream& in, Function progress) +int64 GZCompress(Stream& out, Stream& in, EventGateprogress) { return GZCompress(out, in, in.GetLeft(), progress); } -String GZCompress(const void *data, int len, Function progress) +String GZCompress(const void *data, int len, EventGateprogress) { StringStream out; MemReadStream in(data, len); return GZCompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String GZCompress(const String& s, Function progress) +String GZCompress(const String& s, EventGateprogress) { return GZCompress(~s, s.GetCount(), progress); } -int64 GZDecompress(Stream& out, Stream& in, Function progress) +int64 GZDecompress(Stream& out, Stream& in, EventGateprogress) { return GZDecompress(out, in, in.GetLeft(), progress); } -String GZDecompress(const void *data, int len, Function progress) +String GZDecompress(const void *data, int len, EventGateprogress) { StringStream out; MemReadStream in(data, len); return GZDecompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String GZDecompress(const String& s, Function progress) +String GZDecompress(const String& s, EventGateprogress) { return GZDecompress(~s, s.GetCount(), progress); } -bool GZCompressFile(const char *dstfile, const char *srcfile, Function progress) +bool GZCompressFile(const char *dstfile, const char *srcfile, EventGateprogress) { FileIn in(srcfile); if(!in) @@ -433,13 +433,13 @@ bool GZCompressFile(const char *dstfile, const char *srcfile, Function progress) +bool GZCompressFile(const char *srcfile, EventGateprogress) { String dstfile = String(srcfile) + ".gz"; return GZCompressFile(dstfile, srcfile, progress); } -bool GZDecompressFile(const char *dstfile, const char *srcfile, Function progress) +bool GZDecompressFile(const char *dstfile, const char *srcfile, EventGateprogress) { FileIn in(srcfile); if(!in) @@ -453,7 +453,7 @@ bool GZDecompressFile(const char *dstfile, const char *srcfile, Function progress) +bool GZDecompressFile(const char *srcfile, EventGateprogress) { String dstfile = srcfile; if(dstfile.EndsWith(".gz")) @@ -466,9 +466,11 @@ bool GZDecompressFile(const char *srcfile, Function progress return GZDecompressFile(dstfile, srcfile, progress); } -Function AsGate64(Gate2 gate) +EventGate AsGate64(Gate2 gate) { - return [=](int64 a, int64 b) { return gate((int)a, (int)b); }; + EventGate h; + h << [=](int64 a, int64 b) { return gate((int)a, (int)b); }; + return h; } #include "lib/lz4.h" diff --git a/uppsrc/Core/z.h b/uppsrc/Core/z.h index 70d5d9669..7449f8d4f 100644 --- a/uppsrc/Core/z.h +++ b/uppsrc/Core/z.h @@ -120,37 +120,37 @@ public: ~ZDecompressStream() { Close(); } }; -int64 CopyStream(Stream& dest, Stream& src, int64 count, Function progress); +int64 CopyStream(Stream& dest, Stream& src, int64 count, EventGate progress); -int64 ZCompress(Stream& out, Stream& in, int64 size, Function progress = CNULL, bool hdr = true); -int64 ZCompress(Stream& out, Stream& in, Function progress = CNULL); -String ZCompress(const void *data, int64 len, Function progress = CNULL); -String ZCompress(const String& s, Function progress = CNULL); +int64 ZCompress(Stream& out, Stream& in, int64 size, EventGate progress = false, bool hdr = true); +int64 ZCompress(Stream& out, Stream& in, EventGate progress = false); +String ZCompress(const void *data, int64 len, EventGate progress = false); +String ZCompress(const String& s, EventGate progress = false); -int64 ZDecompress(Stream& out, Stream& in, int64 size, Function progress = CNULL, bool hdr = true); -int64 ZDecompress(Stream& out, Stream& in, Function progress = CNULL); -String ZDecompress(const void *data, int64 len, Function progress = CNULL); -String ZDecompress(const String& s, Function progress = CNULL); +int64 ZDecompress(Stream& out, Stream& in, int64 size, EventGate progress = false, bool hdr = true); +int64 ZDecompress(Stream& out, Stream& in, EventGate progress = false); +String ZDecompress(const void *data, int64 len, EventGate progress = false); +String ZDecompress(const String& s, EventGate progress = false); -int64 GZCompress(Stream& out, Stream& in, int64 size, Function progress = CNULL); -int64 GZCompress(Stream& out, Stream& in, Function progress = CNULL); -String GZCompress(const void *data, int len, Function progress = CNULL); -String GZCompress(const String& s, Function progress = CNULL); +int64 GZCompress(Stream& out, Stream& in, int64 size, EventGate progress = false); +int64 GZCompress(Stream& out, Stream& in, EventGate progress = false); +String GZCompress(const void *data, int len, EventGate progress = false); +String GZCompress(const String& s, EventGate progress = false); -int64 GZDecompress(Stream& out, Stream& in, int64 size, Function progress = CNULL); -int64 GZDecompress(Stream& out, Stream& in, Function progress = CNULL); -String GZDecompress(const void *data, int len, Function progress = CNULL); -String GZDecompress(const String& s, Function progress = CNULL); +int64 GZDecompress(Stream& out, Stream& in, int64 size, EventGate progress = false); +int64 GZDecompress(Stream& out, Stream& in, EventGate progress = false); +String GZDecompress(const void *data, int len, EventGate progress = false); +String GZDecompress(const String& s, EventGate progress = false); -bool GZCompressFile(const char *dstfile, const char *srcfile, Function progress = CNULL); -bool GZCompressFile(const char *srcfile, Function progress = CNULL); +bool GZCompressFile(const char *dstfile, const char *srcfile, EventGate progress = false); +bool GZCompressFile(const char *srcfile, EventGate progress = false); -bool GZDecompressFile(const char *dstfile, const char *srcfile, Function progress = CNULL); -bool GZDecompressFile(const char *srcfile, Function progress = CNULL); +bool GZDecompressFile(const char *dstfile, const char *srcfile, EventGate progress = false); +bool GZDecompressFile(const char *srcfile, EventGate progress = false); /// Backward compatibility: -Function AsGate64(Gate2 gate); +EventGate AsGate64(Gate2 gate); inline int ZCompress(Stream& out, Stream& in, Gate2 progress) { return (int)ZCompress(out, in, AsGate64(progress)); } inline String ZCompress(const void *data, int len, Gate2 progress) { return ZCompress(data, len, AsGate64(progress)); } diff --git a/uppsrc/plugin/lz4/lz4.h b/uppsrc/plugin/lz4/lz4.h index 5be1c2a4c..33a2007ec 100644 --- a/uppsrc/plugin/lz4/lz4.h +++ b/uppsrc/plugin/lz4/lz4.h @@ -110,20 +110,20 @@ public: ~LZ4DecompressStream(); }; -int64 LZ4Compress(Stream& out, Stream& in, Function progress = CNULL); -int64 LZ4Decompress(Stream& out, Stream& in, Function progress = CNULL); -String LZ4Compress(const void *data, int64 len, Function progress = CNULL); -String LZ4Compress(const String& s, Function progress = CNULL); -String LZ4Decompress(const void *data, int64 len, Function progress = CNULL); -String LZ4Decompress(const String& s, Function progress = CNULL); +int64 LZ4Compress(Stream& out, Stream& in, EventGate progress = false); +int64 LZ4Decompress(Stream& out, Stream& in, EventGate progress = false); +String LZ4Compress(const void *data, int64 len, EventGate progress = false); +String LZ4Compress(const String& s, EventGate progress = false); +String LZ4Decompress(const void *data, int64 len, EventGate progress = false); +String LZ4Decompress(const String& s, EventGate progress = false); #ifdef _MULTITHREADED -int64 CoLZ4Compress(Stream& out, Stream& in, Function progress = CNULL); -int64 CoLZ4Decompress(Stream& out, Stream& in, Function progress = CNULL); -String CoLZ4Compress(const void *data, int64 len, Function progress = CNULL); -String CoLZ4Compress(const String& s, Function progress = CNULL); -String CoLZ4Decompress(const void *data, int64 len, Function progress = CNULL); -String CoLZ4Decompress(const String& s, Function progress = CNULL); +int64 CoLZ4Compress(Stream& out, Stream& in, EventGate progress = false); +int64 CoLZ4Decompress(Stream& out, Stream& in, EventGate progress = false); +String CoLZ4Compress(const void *data, int64 len, EventGate progress = false); +String CoLZ4Compress(const String& s, EventGate progress = false); +String CoLZ4Decompress(const void *data, int64 len, EventGate progress = false); +String CoLZ4Decompress(const String& s, EventGate progress = false); #endif bool IsLZ4(Stream& s); diff --git a/uppsrc/plugin/lz4/util.cpp b/uppsrc/plugin/lz4/util.cpp index 59567b310..11187ed05 100644 --- a/uppsrc/plugin/lz4/util.cpp +++ b/uppsrc/plugin/lz4/util.cpp @@ -2,7 +2,7 @@ namespace Upp { -void sCompressStreamCopy_(Stream& out, Stream& in, Function progress, Stream& orig_in, int64 insz) +void sCompressStreamCopy_(Stream& out, Stream& in, EventGate progress, Stream& orig_in, int64 insz) { const int CHUNK = 32678; Buffer b(CHUNK); @@ -15,7 +15,7 @@ void sCompressStreamCopy_(Stream& out, Stream& in, Function progress(orig_in.GetPos(), insz); } -static int64 sLZ4Compress(Stream& out, Stream& in, int64 size, Function progress, bool co) +static int64 sLZ4Compress(Stream& out, Stream& in, int64 size, EventGate progress, bool co) { LZ4CompressStream outs(out); #ifdef _MULTITHREADED @@ -29,7 +29,7 @@ static int64 sLZ4Compress(Stream& out, Stream& in, int64 size, Function progress, bool co) +static int64 sLZ4Decompress(Stream& out, Stream& in, int64 size, EventGate progress, bool co) { LZ4DecompressStream ins(in); #ifdef _MULTITHREADED @@ -43,72 +43,72 @@ static int64 sLZ4Decompress(Stream& out, Stream& in, int64 size, Function progress) +int64 LZ4Compress(Stream& out, Stream& in, EventGate progress) { return sLZ4Compress(out, in, in.GetLeft(), progress, false); } -int64 LZ4Decompress(Stream& out, Stream& in, Function progress) +int64 LZ4Decompress(Stream& out, Stream& in, EventGate progress) { return sLZ4Decompress(out, in, in.GetLeft(), progress, false); } -String LZ4Compress(const void *data, int64 len, Function progress) +String LZ4Compress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return LZ4Compress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String LZ4Compress(const String& s, Function progress) +String LZ4Compress(const String& s, EventGate progress) { return LZ4Compress(~s, s.GetLength(), progress); } -String LZ4Decompress(const void *data, int64 len, Function progress) +String LZ4Decompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return LZ4Decompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String LZ4Decompress(const String& s, Function progress) +String LZ4Decompress(const String& s, EventGate progress) { return LZ4Decompress(~s, s.GetLength(), progress); } #ifdef _MULTITHREADED -int64 CoLZ4Compress(Stream& out, Stream& in, Function progress) +int64 CoLZ4Compress(Stream& out, Stream& in, EventGate progress) { return sLZ4Compress(out, in, in.GetLeft(), progress, true); } -int64 CoLZ4Decompress(Stream& out, Stream& in, Function progress) +int64 CoLZ4Decompress(Stream& out, Stream& in, EventGate progress) { return sLZ4Decompress(out, in, in.GetLeft(), progress, true); } -String CoLZ4Compress(const void *data, int64 len, Function progress) +String CoLZ4Compress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return CoLZ4Compress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String CoLZ4Compress(const String& s, Function progress) +String CoLZ4Compress(const String& s, EventGate progress) { return CoLZ4Compress(~s, s.GetLength(), progress); } -String CoLZ4Decompress(const void *data, int64 len, Function progress) +String CoLZ4Decompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return CoLZ4Decompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String CoLZ4Decompress(const String& s, Function progress) +String CoLZ4Decompress(const String& s, EventGate progress) { return CoLZ4Decompress(~s, s.GetLength(), progress); } diff --git a/uppsrc/plugin/zstd/Util.cpp b/uppsrc/plugin/zstd/Util.cpp index 5b32f3dd7..3cf6b2453 100644 --- a/uppsrc/plugin/zstd/Util.cpp +++ b/uppsrc/plugin/zstd/Util.cpp @@ -2,9 +2,9 @@ namespace Upp { -void sCompressStreamCopy_(Stream& out, Stream& in, Function progress, Stream& orig_in, int64 insz); +void sCompressStreamCopy_(Stream& out, Stream& in, EventGate progress, Stream& orig_in, int64 insz); -static int64 sZstdCompress(Stream& out, Stream& in, int64 size, Function progress, bool co) +static int64 sZstdCompress(Stream& out, Stream& in, int64 size, EventGate progress, bool co) { ZstdCompressStream outs(out); #ifdef _MULTITHREADED @@ -18,7 +18,7 @@ static int64 sZstdCompress(Stream& out, Stream& in, int64 size, Function progress, bool co) +static int64 sZstdDecompress(Stream& out, Stream& in, int64 size, EventGate progress, bool co) { ZstdDecompressStream ins(in); #ifdef _MULTITHREADED @@ -32,72 +32,72 @@ static int64 sZstdDecompress(Stream& out, Stream& in, int64 size, Function progress) +int64 ZstdCompress(Stream& out, Stream& in, EventGate progress) { return sZstdCompress(out, in, in.GetLeft(), progress, false); } -int64 ZstdDecompress(Stream& out, Stream& in, Function progress) +int64 ZstdDecompress(Stream& out, Stream& in, EventGate progress) { return sZstdDecompress(out, in, in.GetLeft(), progress, false); } -String ZstdCompress(const void *data, int64 len, Function progress) +String ZstdCompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return ZstdCompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String ZstdCompress(const String& s, Function progress) +String ZstdCompress(const String& s, EventGate progress) { return ZstdCompress(~s, s.GetLength(), progress); } -String ZstdDecompress(const void *data, int64 len, Function progress) +String ZstdDecompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return ZstdDecompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String ZstdDecompress(const String& s, Function progress) +String ZstdDecompress(const String& s, EventGate progress) { return ZstdDecompress(~s, s.GetLength(), progress); } #ifdef _MULTITHREADED -int64 CoZstdCompress(Stream& out, Stream& in, Function progress) +int64 CoZstdCompress(Stream& out, Stream& in, EventGate progress) { return sZstdCompress(out, in, in.GetLeft(), progress, true); } -int64 CoZstdDecompress(Stream& out, Stream& in, Function progress) +int64 CoZstdDecompress(Stream& out, Stream& in, EventGate progress) { return sZstdDecompress(out, in, in.GetLeft(), progress, true); } -String CoZstdCompress(const void *data, int64 len, Function progress) +String CoZstdCompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return CoZstdCompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String CoZstdCompress(const String& s, Function progress) +String CoZstdCompress(const String& s, EventGate progress) { return CoZstdCompress(~s, s.GetLength(), progress); } -String CoZstdDecompress(const void *data, int64 len, Function progress) +String CoZstdDecompress(const void *data, int64 len, EventGate progress) { StringStream out; MemReadStream in(data, len); return CoZstdDecompress(out, in, progress) < 0 ? String::GetVoid() : out.GetResult(); } -String CoZstdDecompress(const String& s, Function progress) +String CoZstdDecompress(const String& s, EventGate progress) { return CoZstdDecompress(~s, s.GetLength(), progress); } diff --git a/uppsrc/plugin/zstd/zstd.h b/uppsrc/plugin/zstd/zstd.h index 42d0f6d91..fbed9ebf2 100644 --- a/uppsrc/plugin/zstd/zstd.h +++ b/uppsrc/plugin/zstd/zstd.h @@ -95,20 +95,20 @@ public: ~ZstdDecompressStream(); }; -int64 ZstdCompress(Stream& out, Stream& in, Function progress); -int64 ZstdDecompress(Stream& out, Stream& in, Function progress); -String ZstdCompress(const void *data, int64 len, Function progress); -String ZstdCompress(const String& s, Function progress); -String ZstdDecompress(const void *data, int64 len, Function progress); -String ZstdDecompress(const String& s, Function progress); +int64 ZstdCompress(Stream& out, Stream& in, EventGate progress = false); +int64 ZstdDecompress(Stream& out, Stream& in, EventGate progress = false); +String ZstdCompress(const void *data, int64 len, EventGate progress = false); +String ZstdCompress(const String& s, EventGate progress = false); +String ZstdDecompress(const void *data, int64 len, EventGate progress = false); +String ZstdDecompress(const String& s, EventGate progress = false); #ifdef _MULTITHREADED -int64 CoZstdCompress(Stream& out, Stream& in, Function progress); -int64 CoZstdDecompress(Stream& out, Stream& in, Function progress); -String CoZstdCompress(const void *data, int64 len, Function progress); -String CoZstdCompress(const String& s, Function progress); -String CoZstdDecompress(const void *data, int64 len, Function progress); -String CoZstdDecompress(const String& s, Function progress); +int64 CoZstdCompress(Stream& out, Stream& in, EventGate progress = false); +int64 CoZstdDecompress(Stream& out, Stream& in, EventGate progress = false); +String CoZstdCompress(const void *data, int64 len, EventGate progress = false); +String CoZstdCompress(const String& s, EventGate progress = false); +String CoZstdDecompress(const void *data, int64 len, EventGate progress = false); +String CoZstdDecompress(const String& s, EventGate progress = false); #endif bool IsZstd(Stream& s); diff --git a/uppsrc/plugin/zstd/zstd.upp b/uppsrc/plugin/zstd/zstd.upp index 646e45b4b..d235f1531 100644 --- a/uppsrc/plugin/zstd/zstd.upp +++ b/uppsrc/plugin/zstd/zstd.upp @@ -2,8 +2,8 @@ description "\3770,128,128"; file import.ext, - zstd.h, Compress.cpp, + zstd.h, Decompress.cpp, Util.cpp, common\zstd.h;