From a33cecb3370e5174803b7d0821e3a5e5d05c87e1 Mon Sep 17 00:00:00 2001 From: kichik Date: Mon, 11 Oct 2004 14:26:13 +0000 Subject: [PATCH] added dict_size parameter to Compressor::Init() so a cast to CLZMA won't be required to pass a dictionary size git-svn-id: https://svn.code.sf.net/p/nsis/code/NSIS/trunk@3708 212acab6-be3b-0410-9dea-997c60f758d6 --- Source/build.cpp | 24 ++++-------------------- Source/cbzip2.h | 2 +- Source/clzma.cpp | 8 +------- Source/clzma.h | 3 +-- Source/compressor.h | 2 +- Source/czlib.h | 2 +- 6 files changed, 9 insertions(+), 32 deletions(-) diff --git a/Source/build.cpp b/Source/build.cpp index ab662f2a..2c90fcd1 100644 --- a/Source/build.cpp +++ b/Source/build.cpp @@ -801,11 +801,7 @@ int CEXEBuild::add_db_data(IMMap *map) // returns offset int bufferlen = length + 1024 + length / 4; // give a nice 25% extra space db->resize(st + bufferlen + sizeof(int)); - int n; - if (compressor == &lzma_compressor) - n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size); - else - n = compressor->Init(build_compress_level); + int n = compressor->Init(build_compress_level, build_compress_dict_size); if (n != C_OK) { ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d - %s).\n", n, compressor->GetErrStr(n)); @@ -944,11 +940,7 @@ int CEXEBuild::add_data(const char *data, int length, IGrowBuf *dblock) // retur int bufferlen=length+1024+length/4; // give a nice 25% extra space dblock->resize(st+bufferlen+sizeof(int)); - int n; - if (compressor == &lzma_compressor) - n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size); - else - n = compressor->Init(build_compress_level); + int n = compressor->Init(build_compress_level, build_compress_dict_size); if (n != C_OK) { ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d - %s).\n", n, compressor->GetErrStr(n)); @@ -2458,11 +2450,7 @@ int CEXEBuild::write_output(void) #ifdef NSIS_CONFIG_COMPRESSION_SUPPORT if (build_compress_whole) { - int n; - if (compressor == &lzma_compressor) - n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size); - else - n = compressor->Init(build_compress_level); + int n = compressor->Init(build_compress_level, build_compress_dict_size); if (n != C_OK) { ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d - %s).\n", n, compressor->GetErrStr(n)); @@ -2891,11 +2879,7 @@ int CEXEBuild::uninstall_generate() // compress uninstaller too { char obuf[65536]; - int n; - if (compressor == &lzma_compressor) - n = ((CLZMA *) compressor)->Init(build_compress_level, build_compress_dict_size); - else - n = compressor->Init(build_compress_level); + int n = compressor->Init(build_compress_level, build_compress_dict_size); if (n != C_OK) { ERROR_MSG("Internal compiler error #12345: deflateInit() failed(%d - %s).\n", n, compressor->GetErrStr(n)); diff --git a/Source/cbzip2.h b/Source/cbzip2.h index a0c6e7ac..6e50a86b 100644 --- a/Source/cbzip2.h +++ b/Source/cbzip2.h @@ -6,7 +6,7 @@ class CBzip2 : public ICompressor { public: - int Init(int level) { + int Init(int level, unsigned int dict_size) { last_ret = !BZ_STREAM_END; stream = new bz_stream; if (!stream) return BZ_MEM_ERROR; diff --git a/Source/clzma.cpp b/Source/clzma.cpp index ac354736..3194f0b8 100644 --- a/Source/clzma.cpp +++ b/Source/clzma.cpp @@ -145,7 +145,7 @@ CLZMA::~CLZMA() } } -int CLZMA::Init(int level, UINT32 dicSize) +int CLZMA::Init(int level, unsigned int dicSize) { End(); @@ -185,12 +185,6 @@ int CLZMA::Init(int level, UINT32 dicSize) return _encoder->SetStreams(this, this, 0, 0) == S_OK ? C_OK : LZMA_INIT_ERROR; } -int CLZMA::Init(int level) -{ - // default dictionary size is 8MB - return Init(level, 8 << 20); -} - int CLZMA::End() { // has compressor not finished? diff --git a/Source/clzma.h b/Source/clzma.h index 73440fb1..005c832c 100644 --- a/Source/clzma.h +++ b/Source/clzma.h @@ -64,8 +64,7 @@ public: CLZMA(); virtual ~CLZMA(); - virtual int Init(int level); - virtual int Init(int level, UINT32 dicSize); + virtual int Init(int level, unsigned int dicSize); virtual int End(); virtual int Compress(bool flush); diff --git a/Source/compressor.h b/Source/compressor.h index fe03c160..0f0649a7 100644 --- a/Source/compressor.h +++ b/Source/compressor.h @@ -6,7 +6,7 @@ class ICompressor { public: - virtual int Init(int level) = 0; + virtual int Init(int level, unsigned int dict_size) = 0; virtual int End() = 0; virtual int Compress(bool finish) = 0; diff --git a/Source/czlib.h b/Source/czlib.h index 28aa82ce..eb98985f 100644 --- a/Source/czlib.h +++ b/Source/czlib.h @@ -6,7 +6,7 @@ class CZlib : public ICompressor { public: - int Init(int level) { + int Init(int level, unsigned int dict_size) { stream = new z_stream; if (!stream) return Z_MEM_ERROR; return deflateInit(stream, level);