⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rar29decoder.cpp

📁 由7-zip提供的压缩、解压缩程序
💻 CPP
字号:
// Rar29Decoder.cpp// According to unRAR license,// this code may not be used to develop a // RAR (WinRAR) compatible archiver #include "StdAfx.h"#include "Rar29Decoder.h"#include "Windows/Defs.h"// #include "Original/unpack15.cpp"ErrorHandler ErrHandler;namespace NCompress {namespace NRar29 {CDecoder::CDecoder():  m_IsSolid(false),  // DataIO(NULL)  DataIO(){  Unp = new Unpack(&DataIO);  Unp->Init(NULL);}CDecoder::~CDecoder(){  delete Unp;}STDMETHODIMP CDecoder::CodeReal(ISequentialInStream *inStream,    ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize,    ICompressProgressInfo *progress){  // CCoderReleaser coderReleaser(this);  DataIO.CurUnpRead=0;  DataIO.CurUnpWrite=0;  DataIO.UnpFileCRC=0xffffffff;  DataIO.PackedCRC=0xffffffff;  /*  DataIO.SetEncryption(        0,0,        NULL,false);  */  DataIO.SetPackedSizeToRead(*inSize);  DataIO.SetFiles(inStream, outStream, progress);  DataIO.SetTestMode(false);  // DataIO.SetSkipUnpCRC(SkipSolid);  /*  if (!TestMode && Arc.NewLhd.FullUnpSize>0x1000)        CurFile.Prealloc(Arc.NewLhd.FullUnpSize);      CurFile.SetAllowDelete(!Cmd->KeepBroken);  */    Unp->SetDestSize(*outSize);  Unp->DoUnpack(29, m_IsSolid);  return S_OK;}STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream,    ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize,    ICompressProgressInfo *progress){  try { return CodeReal(inStream, outStream, inSize, outSize, progress); }  catch(const CExitCode &exitCode) { return exitCode.Result; }  catch(...) { return S_FALSE; }}STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size){  if (size < 1)    return E_INVALIDARG;  m_IsSolid = (data[0] != 0);  return S_OK;}}namespace NRar15 {CDecoder::CDecoder():  m_IsSolid(false),  DataIO(){  Unp=new Unpack(&DataIO);  Unp->Init(NULL);}CDecoder::~CDecoder(){  delete Unp;}STDMETHODIMP CDecoder::CodeReal(ISequentialInStream *inStream,    ISequentialOutStream *outStream, const UInt64 *inSize, const UInt64 *outSize,    ICompressProgressInfo *progress){  // CCoderReleaser coderReleaser(this);  DataIO.CurUnpRead=0;  DataIO.CurUnpWrite=0;  DataIO.UnpFileCRC=0xffffffff;  DataIO.PackedCRC=0xffffffff;  /*  DataIO.SetEncryption(        0,0,        NULL,false);  */  DataIO.SetPackedSizeToRead(*inSize);  DataIO.SetFiles(inStream, outStream, progress);  DataIO.SetTestMode(false);  // DataIO.SetSkipUnpCRC(SkipSolid);  /*  if (!TestMode && Arc.NewLhd.FullUnpSize>0x1000)        CurFile.Prealloc(Arc.NewLhd.FullUnpSize);      CurFile.SetAllowDelete(!Cmd->KeepBroken);  */  Unp->SetDestSize(*outSize);  Unp->DoUnpack(15, m_IsSolid);  return S_OK;}STDMETHODIMP CDecoder::Code(ISequentialInStream *inStream,    ISequentialOutStream *outStream, const UInt64 *inSize,     const UInt64 *outSize,    ICompressProgressInfo *progress){  try { return CodeReal(inStream, outStream, inSize, outSize, progress); }  catch(const CExitCode &exitCode) { return exitCode.Result; }  catch(...) { return S_FALSE;}}STDMETHODIMP CDecoder::SetDecoderProperties2(const Byte *data, UInt32 size){  if (size < 1)    return E_INVALIDARG;  m_IsSolid = (data[0] != 0);  return S_OK;}}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -