Index: third_party/lzma/v4_65/files/CPP/7zip/Common/CreateCoder.cpp |
diff --git a/third_party/lzma/v4_65/files/CPP/7zip/Common/CreateCoder.cpp b/third_party/lzma/v4_65/files/CPP/7zip/Common/CreateCoder.cpp |
deleted file mode 100644 |
index 2742495da30bee1188b2836d29f5f7adc16b2e8a..0000000000000000000000000000000000000000 |
--- a/third_party/lzma/v4_65/files/CPP/7zip/Common/CreateCoder.cpp |
+++ /dev/null |
@@ -1,292 +0,0 @@ |
-// CreateCoder.cpp |
- |
-#include "StdAfx.h" |
- |
-#include "CreateCoder.h" |
- |
-#include "../../Windows/PropVariant.h" |
-#include "../../Windows/Defs.h" |
-#include "FilterCoder.h" |
-#include "RegisterCodec.h" |
- |
-static const unsigned int kNumCodecsMax = 64; |
-unsigned int g_NumCodecs = 0; |
-const CCodecInfo *g_Codecs[kNumCodecsMax]; |
-void RegisterCodec(const CCodecInfo *codecInfo) |
-{ |
- if (g_NumCodecs < kNumCodecsMax) |
- g_Codecs[g_NumCodecs++] = codecInfo; |
-} |
- |
-#ifdef EXTERNAL_CODECS |
-static HRESULT ReadNumberOfStreams(ICompressCodecsInfo *codecsInfo, UInt32 index, PROPID propID, UInt32 &res) |
-{ |
- NWindows::NCOM::CPropVariant prop; |
- RINOK(codecsInfo->GetProperty(index, propID, &prop)); |
- if (prop.vt == VT_EMPTY) |
- res = 1; |
- else if (prop.vt == VT_UI4) |
- res = prop.ulVal; |
- else |
- return E_INVALIDARG; |
- return S_OK; |
-} |
- |
-static HRESULT ReadIsAssignedProp(ICompressCodecsInfo *codecsInfo, UInt32 index, PROPID propID, bool &res) |
-{ |
- NWindows::NCOM::CPropVariant prop; |
- RINOK(codecsInfo->GetProperty(index, propID, &prop)); |
- if (prop.vt == VT_EMPTY) |
- res = true; |
- else if (prop.vt == VT_BOOL) |
- res = VARIANT_BOOLToBool(prop.boolVal); |
- else |
- return E_INVALIDARG; |
- return S_OK; |
-} |
- |
-HRESULT LoadExternalCodecs(ICompressCodecsInfo *codecsInfo, CObjectVector<CCodecInfoEx> &externalCodecs) |
-{ |
- UInt32 num; |
- RINOK(codecsInfo->GetNumberOfMethods(&num)); |
- for (UInt32 i = 0; i < num; i++) |
- { |
- CCodecInfoEx info; |
- NWindows::NCOM::CPropVariant prop; |
- RINOK(codecsInfo->GetProperty(i, NMethodPropID::kID, &prop)); |
- // if (prop.vt != VT_BSTR) |
- // info.Id.IDSize = (Byte)SysStringByteLen(prop.bstrVal); |
- // memmove(info.Id.ID, prop.bstrVal, info.Id.IDSize); |
- if (prop.vt != VT_UI8) |
- { |
- continue; // old Interface |
- // return E_INVALIDARG; |
- } |
- info.Id = prop.uhVal.QuadPart; |
- prop.Clear(); |
- |
- RINOK(codecsInfo->GetProperty(i, NMethodPropID::kName, &prop)); |
- if (prop.vt == VT_BSTR) |
- info.Name = prop.bstrVal; |
- else if (prop.vt != VT_EMPTY) |
- return E_INVALIDARG;; |
- |
- RINOK(ReadNumberOfStreams(codecsInfo, i, NMethodPropID::kInStreams, info.NumInStreams)); |
- RINOK(ReadNumberOfStreams(codecsInfo, i, NMethodPropID::kOutStreams, info.NumOutStreams)); |
- RINOK(ReadIsAssignedProp(codecsInfo, i, NMethodPropID::kEncoderIsAssigned, info.EncoderIsAssigned)); |
- RINOK(ReadIsAssignedProp(codecsInfo, i, NMethodPropID::kDecoderIsAssigned, info.DecoderIsAssigned)); |
- |
- externalCodecs.Add(info); |
- } |
- return S_OK; |
-} |
- |
-#endif |
- |
-bool FindMethod( |
- #ifdef EXTERNAL_CODECS |
- ICompressCodecsInfo * /* codecsInfo */, const CObjectVector<CCodecInfoEx> *externalCodecs, |
- #endif |
- const UString &name, |
- CMethodId &methodId, UInt32 &numInStreams, UInt32 &numOutStreams) |
-{ |
- UInt32 i; |
- for (i = 0; i < g_NumCodecs; i++) |
- { |
- const CCodecInfo &codec = *g_Codecs[i]; |
- if (name.CompareNoCase(codec.Name) == 0) |
- { |
- methodId = codec.Id; |
- numInStreams = codec.NumInStreams; |
- numOutStreams = 1; |
- return true; |
- } |
- } |
- #ifdef EXTERNAL_CODECS |
- if (externalCodecs) |
- for (i = 0; i < (UInt32)externalCodecs->Size(); i++) |
- { |
- const CCodecInfoEx &codec = (*externalCodecs)[i]; |
- if (codec.Name.CompareNoCase(name) == 0) |
- { |
- methodId = codec.Id; |
- numInStreams = codec.NumInStreams; |
- numOutStreams = codec.NumOutStreams; |
- return true; |
- } |
- } |
- #endif |
- return false; |
-} |
- |
-bool FindMethod( |
- #ifdef EXTERNAL_CODECS |
- ICompressCodecsInfo * /* codecsInfo */, const CObjectVector<CCodecInfoEx> *externalCodecs, |
- #endif |
- CMethodId methodId, UString &name) |
-{ |
- UInt32 i; |
- for (i = 0; i < g_NumCodecs; i++) |
- { |
- const CCodecInfo &codec = *g_Codecs[i]; |
- if (methodId == codec.Id) |
- { |
- name = codec.Name; |
- return true; |
- } |
- } |
- #ifdef EXTERNAL_CODECS |
- if (externalCodecs) |
- for (i = 0; i < (UInt32)externalCodecs->Size(); i++) |
- { |
- const CCodecInfoEx &codec = (*externalCodecs)[i]; |
- if (methodId == codec.Id) |
- { |
- name = codec.Name; |
- return true; |
- } |
- } |
- #endif |
- return false; |
-} |
- |
-HRESULT CreateCoder( |
- DECL_EXTERNAL_CODECS_LOC_VARS |
- CMethodId methodId, |
- CMyComPtr<ICompressFilter> &filter, |
- CMyComPtr<ICompressCoder> &coder, |
- CMyComPtr<ICompressCoder2> &coder2, |
- bool encode, bool onlyCoder) |
-{ |
- bool created = false; |
- UInt32 i; |
- for (i = 0; i < g_NumCodecs; i++) |
- { |
- const CCodecInfo &codec = *g_Codecs[i]; |
- if (codec.Id == methodId) |
- { |
- if (encode) |
- { |
- if (codec.CreateEncoder) |
- { |
- void *p = codec.CreateEncoder(); |
- if (codec.IsFilter) filter = (ICompressFilter *)p; |
- else if (codec.NumInStreams == 1) coder = (ICompressCoder *)p; |
- else coder2 = (ICompressCoder2 *)p; |
- created = (p != 0); |
- break; |
- } |
- } |
- else |
- if (codec.CreateDecoder) |
- { |
- void *p = codec.CreateDecoder(); |
- if (codec.IsFilter) filter = (ICompressFilter *)p; |
- else if (codec.NumInStreams == 1) coder = (ICompressCoder *)p; |
- else coder2 = (ICompressCoder2 *)p; |
- created = (p != 0); |
- break; |
- } |
- } |
- } |
- |
- #ifdef EXTERNAL_CODECS |
- if (!created && externalCodecs) |
- for (i = 0; i < (UInt32)externalCodecs->Size(); i++) |
- { |
- const CCodecInfoEx &codec = (*externalCodecs)[i]; |
- if (codec.Id == methodId) |
- { |
- if (encode) |
- { |
- if (codec.EncoderIsAssigned) |
- { |
- if (codec.IsSimpleCodec()) |
- { |
- HRESULT result = codecsInfo->CreateEncoder(i, &IID_ICompressCoder, (void **)&coder); |
- if (result != S_OK && result != E_NOINTERFACE && result != CLASS_E_CLASSNOTAVAILABLE) |
- return result; |
- if (!coder) |
- { |
- RINOK(codecsInfo->CreateEncoder(i, &IID_ICompressFilter, (void **)&filter)); |
- } |
- } |
- else |
- { |
- RINOK(codecsInfo->CreateEncoder(i, &IID_ICompressCoder2, (void **)&coder2)); |
- } |
- break; |
- } |
- } |
- else |
- if (codec.DecoderIsAssigned) |
- { |
- if (codec.IsSimpleCodec()) |
- { |
- HRESULT result = codecsInfo->CreateDecoder(i, &IID_ICompressCoder, (void **)&coder); |
- if (result != S_OK && result != E_NOINTERFACE && result != CLASS_E_CLASSNOTAVAILABLE) |
- return result; |
- if (!coder) |
- { |
- RINOK(codecsInfo->CreateDecoder(i, &IID_ICompressFilter, (void **)&filter)); |
- } |
- } |
- else |
- { |
- RINOK(codecsInfo->CreateDecoder(i, &IID_ICompressCoder2, (void **)&coder2)); |
- } |
- break; |
- } |
- } |
- } |
- #endif |
- |
- if (onlyCoder && filter) |
- { |
- CFilterCoder *coderSpec = new CFilterCoder; |
- coder = coderSpec; |
- coderSpec->Filter = filter; |
- } |
- return S_OK; |
-} |
- |
-HRESULT CreateCoder( |
- DECL_EXTERNAL_CODECS_LOC_VARS |
- CMethodId methodId, |
- CMyComPtr<ICompressCoder> &coder, |
- CMyComPtr<ICompressCoder2> &coder2, |
- bool encode) |
-{ |
- CMyComPtr<ICompressFilter> filter; |
- return CreateCoder( |
- EXTERNAL_CODECS_LOC_VARS |
- methodId, |
- filter, coder, coder2, encode, true); |
-} |
- |
-HRESULT CreateCoder( |
- DECL_EXTERNAL_CODECS_LOC_VARS |
- CMethodId methodId, |
- CMyComPtr<ICompressCoder> &coder, bool encode) |
-{ |
- CMyComPtr<ICompressFilter> filter; |
- CMyComPtr<ICompressCoder2> coder2; |
- return CreateCoder( |
- EXTERNAL_CODECS_LOC_VARS |
- methodId, |
- coder, coder2, encode); |
-} |
- |
-HRESULT CreateFilter( |
- DECL_EXTERNAL_CODECS_LOC_VARS |
- CMethodId methodId, |
- CMyComPtr<ICompressFilter> &filter, |
- bool encode) |
-{ |
- CMyComPtr<ICompressCoder> coder; |
- CMyComPtr<ICompressCoder2> coder2; |
- return CreateCoder( |
- EXTERNAL_CODECS_LOC_VARS |
- methodId, |
- filter, coder, coder2, encode, false); |
-} |