| Index: third_party/lzma/v4_65/files/CPP/7zip/Archive/Common/CoderMixer2MT.cpp
|
| diff --git a/third_party/lzma/v4_65/files/CPP/7zip/Archive/Common/CoderMixer2MT.cpp b/third_party/lzma/v4_65/files/CPP/7zip/Archive/Common/CoderMixer2MT.cpp
|
| deleted file mode 100644
|
| index 1265dfcdee618e5695d81bb876ab1c1a32288bb6..0000000000000000000000000000000000000000
|
| --- a/third_party/lzma/v4_65/files/CPP/7zip/Archive/Common/CoderMixer2MT.cpp
|
| +++ /dev/null
|
| @@ -1,230 +0,0 @@
|
| -// CoderMixer2MT.cpp
|
| -
|
| -#include "StdAfx.h"
|
| -
|
| -#include "CoderMixer2MT.h"
|
| -
|
| -namespace NCoderMixer {
|
| -
|
| -CCoder2::CCoder2(UInt32 numInStreams, UInt32 numOutStreams):
|
| - CCoderInfo2(numInStreams, numOutStreams)
|
| -{
|
| - InStreams.Reserve(NumInStreams);
|
| - InStreamPointers.Reserve(NumInStreams);
|
| - OutStreams.Reserve(NumOutStreams);
|
| - OutStreamPointers.Reserve(NumOutStreams);
|
| -}
|
| -
|
| -void CCoder2::Execute() { Code(NULL); }
|
| -
|
| -void CCoder2::Code(ICompressProgressInfo *progress)
|
| -{
|
| - InStreamPointers.Clear();
|
| - OutStreamPointers.Clear();
|
| - UInt32 i;
|
| - for (i = 0; i < NumInStreams; i++)
|
| - {
|
| - if (InSizePointers[i] != NULL)
|
| - InSizePointers[i] = &InSizes[i];
|
| - InStreamPointers.Add((ISequentialInStream *)InStreams[i]);
|
| - }
|
| - for (i = 0; i < NumOutStreams; i++)
|
| - {
|
| - if (OutSizePointers[i] != NULL)
|
| - OutSizePointers[i] = &OutSizes[i];
|
| - OutStreamPointers.Add((ISequentialOutStream *)OutStreams[i]);
|
| - }
|
| - if (Coder)
|
| - Result = Coder->Code(InStreamPointers[0], OutStreamPointers[0],
|
| - InSizePointers[0], OutSizePointers[0], progress);
|
| - else
|
| - Result = Coder2->Code(&InStreamPointers.Front(), &InSizePointers.Front(), NumInStreams,
|
| - &OutStreamPointers.Front(), &OutSizePointers.Front(), NumOutStreams, progress);
|
| - {
|
| - int i;
|
| - for (i = 0; i < InStreams.Size(); i++)
|
| - InStreams[i].Release();
|
| - for (i = 0; i < OutStreams.Size(); i++)
|
| - OutStreams[i].Release();
|
| - }
|
| -}
|
| -
|
| -static void SetSizes(const UInt64 **srcSizes, CRecordVector<UInt64> &sizes,
|
| - CRecordVector<const UInt64 *> &sizePointers, UInt32 numItems)
|
| -{
|
| - sizes.Clear();
|
| - sizePointers.Clear();
|
| - for(UInt32 i = 0; i < numItems; i++)
|
| - {
|
| - if (srcSizes == 0 || srcSizes[i] == NULL)
|
| - {
|
| - sizes.Add(0);
|
| - sizePointers.Add(NULL);
|
| - }
|
| - else
|
| - {
|
| - sizes.Add(*srcSizes[i]);
|
| - sizePointers.Add(&sizes.Back());
|
| - }
|
| - }
|
| -}
|
| -
|
| -
|
| -void CCoder2::SetCoderInfo(const UInt64 **inSizes, const UInt64 **outSizes)
|
| -{
|
| - SetSizes(inSizes, InSizes, InSizePointers, NumInStreams);
|
| - SetSizes(outSizes, OutSizes, OutSizePointers, NumOutStreams);
|
| -}
|
| -
|
| -//////////////////////////////////////
|
| -// CCoderMixer2MT
|
| -
|
| -HRESULT CCoderMixer2MT::SetBindInfo(const CBindInfo &bindInfo)
|
| -{
|
| - _bindInfo = bindInfo;
|
| - _streamBinders.Clear();
|
| - for(int i = 0; i < _bindInfo.BindPairs.Size(); i++)
|
| - {
|
| - _streamBinders.Add(CStreamBinder());
|
| - RINOK(_streamBinders.Back().CreateEvents());
|
| - }
|
| - return S_OK;
|
| -}
|
| -
|
| -void CCoderMixer2MT::AddCoderCommon()
|
| -{
|
| - const CCoderStreamsInfo &c = _bindInfo.Coders[_coders.Size()];
|
| - CCoder2 threadCoderInfo(c.NumInStreams, c.NumOutStreams);
|
| - _coders.Add(threadCoderInfo);
|
| -}
|
| -
|
| -void CCoderMixer2MT::AddCoder(ICompressCoder *coder)
|
| -{
|
| - AddCoderCommon();
|
| - _coders.Back().Coder = coder;
|
| -}
|
| -
|
| -void CCoderMixer2MT::AddCoder2(ICompressCoder2 *coder)
|
| -{
|
| - AddCoderCommon();
|
| - _coders.Back().Coder2 = coder;
|
| -}
|
| -
|
| -
|
| -void CCoderMixer2MT::ReInit()
|
| -{
|
| - for(int i = 0; i < _streamBinders.Size(); i++)
|
| - _streamBinders[i].ReInit();
|
| -}
|
| -
|
| -
|
| -HRESULT CCoderMixer2MT::Init(ISequentialInStream **inStreams, ISequentialOutStream **outStreams)
|
| -{
|
| - /*
|
| - if (_coders.Size() != _bindInfo.Coders.Size())
|
| - throw 0;
|
| - */
|
| - int i;
|
| - for(i = 0; i < _coders.Size(); i++)
|
| - {
|
| - CCoder2 &coderInfo = _coders[i];
|
| - const CCoderStreamsInfo &coderStreamsInfo = _bindInfo.Coders[i];
|
| - coderInfo.InStreams.Clear();
|
| - UInt32 j;
|
| - for(j = 0; j < coderStreamsInfo.NumInStreams; j++)
|
| - coderInfo.InStreams.Add(NULL);
|
| - coderInfo.OutStreams.Clear();
|
| - for(j = 0; j < coderStreamsInfo.NumOutStreams; j++)
|
| - coderInfo.OutStreams.Add(NULL);
|
| - }
|
| -
|
| - for(i = 0; i < _bindInfo.BindPairs.Size(); i++)
|
| - {
|
| - const CBindPair &bindPair = _bindInfo.BindPairs[i];
|
| - UInt32 inCoderIndex, inCoderStreamIndex;
|
| - UInt32 outCoderIndex, outCoderStreamIndex;
|
| - _bindInfo.FindInStream(bindPair.InIndex, inCoderIndex, inCoderStreamIndex);
|
| - _bindInfo.FindOutStream(bindPair.OutIndex, outCoderIndex, outCoderStreamIndex);
|
| -
|
| - _streamBinders[i].CreateStreams(
|
| - &_coders[inCoderIndex].InStreams[inCoderStreamIndex],
|
| - &_coders[outCoderIndex].OutStreams[outCoderStreamIndex]);
|
| - }
|
| -
|
| - for(i = 0; i < _bindInfo.InStreams.Size(); i++)
|
| - {
|
| - UInt32 inCoderIndex, inCoderStreamIndex;
|
| - _bindInfo.FindInStream(_bindInfo.InStreams[i], inCoderIndex, inCoderStreamIndex);
|
| - _coders[inCoderIndex].InStreams[inCoderStreamIndex] = inStreams[i];
|
| - }
|
| -
|
| - for(i = 0; i < _bindInfo.OutStreams.Size(); i++)
|
| - {
|
| - UInt32 outCoderIndex, outCoderStreamIndex;
|
| - _bindInfo.FindOutStream(_bindInfo.OutStreams[i], outCoderIndex, outCoderStreamIndex);
|
| - _coders[outCoderIndex].OutStreams[outCoderStreamIndex] = outStreams[i];
|
| - }
|
| - return S_OK;
|
| -}
|
| -
|
| -HRESULT CCoderMixer2MT::ReturnIfError(HRESULT code)
|
| -{
|
| - for (int i = 0; i < _coders.Size(); i++)
|
| - if (_coders[i].Result == code)
|
| - return code;
|
| - return S_OK;
|
| -}
|
| -
|
| -STDMETHODIMP CCoderMixer2MT::Code(ISequentialInStream **inStreams,
|
| - const UInt64 ** /* inSizes */,
|
| - UInt32 numInStreams,
|
| - ISequentialOutStream **outStreams,
|
| - const UInt64 ** /* outSizes */,
|
| - UInt32 numOutStreams,
|
| - ICompressProgressInfo *progress)
|
| -{
|
| - if (numInStreams != (UInt32)_bindInfo.InStreams.Size() ||
|
| - numOutStreams != (UInt32)_bindInfo.OutStreams.Size())
|
| - return E_INVALIDARG;
|
| -
|
| - Init(inStreams, outStreams);
|
| -
|
| - int i;
|
| - for (i = 0; i < _coders.Size(); i++)
|
| - if (i != _progressCoderIndex)
|
| - {
|
| - RINOK(_coders[i].Create());
|
| - }
|
| -
|
| - for (i = 0; i < _coders.Size(); i++)
|
| - if (i != _progressCoderIndex)
|
| - _coders[i].Start();
|
| -
|
| - _coders[_progressCoderIndex].Code(progress);
|
| -
|
| - for (i = 0; i < _coders.Size(); i++)
|
| - if (i != _progressCoderIndex)
|
| - _coders[i].WaitFinish();
|
| -
|
| - RINOK(ReturnIfError(E_ABORT));
|
| - RINOK(ReturnIfError(E_OUTOFMEMORY));
|
| -
|
| - for (i = 0; i < _coders.Size(); i++)
|
| - {
|
| - HRESULT result = _coders[i].Result;
|
| - if (result != S_OK && result != E_FAIL && result != S_FALSE)
|
| - return result;
|
| - }
|
| -
|
| - RINOK(ReturnIfError(S_FALSE));
|
| -
|
| - for (i = 0; i < _coders.Size(); i++)
|
| - {
|
| - HRESULT result = _coders[i].Result;
|
| - if (result != S_OK)
|
| - return result;
|
| - }
|
| - return S_OK;
|
| -}
|
| -
|
| -}
|
|
|