annotate src/win32/7zip/7z/CPP/7zip/Common/CreateCoder.h @ 1:f9f4f1b99eed

importing src directory
author Robert McIntyre <rlm@mit.edu>
date Sat, 03 Mar 2012 10:31:27 -0600
parents
children
rev   line source
rlm@1 1 // CreateCoder.h
rlm@1 2
rlm@1 3 #ifndef __CREATECODER_H
rlm@1 4 #define __CREATECODER_H
rlm@1 5
rlm@1 6 #include "../../Common/MyCom.h"
rlm@1 7 #include "../../Common/MyString.h"
rlm@1 8 #include "../ICoder.h"
rlm@1 9
rlm@1 10 #include "MethodId.h"
rlm@1 11
rlm@1 12 #ifdef EXTERNAL_CODECS
rlm@1 13
rlm@1 14 struct CCodecInfoEx
rlm@1 15 {
rlm@1 16 UString Name;
rlm@1 17 CMethodId Id;
rlm@1 18 UInt32 NumInStreams;
rlm@1 19 UInt32 NumOutStreams;
rlm@1 20 bool EncoderIsAssigned;
rlm@1 21 bool DecoderIsAssigned;
rlm@1 22 bool IsSimpleCodec() const { return NumOutStreams == 1 && NumInStreams == 1; }
rlm@1 23 CCodecInfoEx(): EncoderIsAssigned(false), DecoderIsAssigned(false) {}
rlm@1 24 };
rlm@1 25
rlm@1 26 HRESULT LoadExternalCodecs(ICompressCodecsInfo *codecsInfo, CObjectVector<CCodecInfoEx> &externalCodecs);
rlm@1 27
rlm@1 28 #define PUBLIC_ISetCompressCodecsInfo public ISetCompressCodecsInfo,
rlm@1 29 #define QUERY_ENTRY_ISetCompressCodecsInfo MY_QUERYINTERFACE_ENTRY(ISetCompressCodecsInfo)
rlm@1 30 #define DECL_ISetCompressCodecsInfo STDMETHOD(SetCompressCodecsInfo)(ICompressCodecsInfo *compressCodecsInfo);
rlm@1 31 #define IMPL_ISetCompressCodecsInfo2(x) \
rlm@1 32 STDMETHODIMP x::SetCompressCodecsInfo(ICompressCodecsInfo *compressCodecsInfo) { \
rlm@1 33 COM_TRY_BEGIN _codecsInfo = compressCodecsInfo; return LoadExternalCodecs(_codecsInfo, _externalCodecs); COM_TRY_END }
rlm@1 34 #define IMPL_ISetCompressCodecsInfo IMPL_ISetCompressCodecsInfo2(CHandler)
rlm@1 35
rlm@1 36 #define EXTERNAL_CODECS_VARS2 _codecsInfo, &_externalCodecs
rlm@1 37
rlm@1 38 #define DECL_EXTERNAL_CODECS_VARS CMyComPtr<ICompressCodecsInfo> _codecsInfo; CObjectVector<CCodecInfoEx> _externalCodecs;
rlm@1 39 #define EXTERNAL_CODECS_VARS EXTERNAL_CODECS_VARS2,
rlm@1 40
rlm@1 41 #define DECL_EXTERNAL_CODECS_LOC_VARS2 ICompressCodecsInfo *codecsInfo, const CObjectVector<CCodecInfoEx> *externalCodecs
rlm@1 42 #define EXTERNAL_CODECS_LOC_VARS2 codecsInfo, externalCodecs
rlm@1 43
rlm@1 44 #define DECL_EXTERNAL_CODECS_LOC_VARS DECL_EXTERNAL_CODECS_LOC_VARS2,
rlm@1 45 #define EXTERNAL_CODECS_LOC_VARS EXTERNAL_CODECS_LOC_VARS2,
rlm@1 46
rlm@1 47 #else
rlm@1 48
rlm@1 49 #define PUBLIC_ISetCompressCodecsInfo
rlm@1 50 #define QUERY_ENTRY_ISetCompressCodecsInfo
rlm@1 51 #define DECL_ISetCompressCodecsInfo
rlm@1 52 #define IMPL_ISetCompressCodecsInfo
rlm@1 53 #define EXTERNAL_CODECS_VARS2
rlm@1 54 #define DECL_EXTERNAL_CODECS_VARS
rlm@1 55 #define EXTERNAL_CODECS_VARS EXTERNAL_CODECS_VARS2
rlm@1 56 #define DECL_EXTERNAL_CODECS_LOC_VARS2
rlm@1 57 #define EXTERNAL_CODECS_LOC_VARS2
rlm@1 58 #define DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 59 #define EXTERNAL_CODECS_LOC_VARS
rlm@1 60
rlm@1 61 #endif
rlm@1 62
rlm@1 63 bool FindMethod(
rlm@1 64 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 65 const UString &name, CMethodId &methodId, UInt32 &numInStreams, UInt32 &numOutStreams);
rlm@1 66
rlm@1 67 bool FindMethod(
rlm@1 68 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 69 CMethodId methodId, UString &name);
rlm@1 70
rlm@1 71
rlm@1 72 HRESULT CreateCoder(
rlm@1 73 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 74 CMethodId methodId,
rlm@1 75 CMyComPtr<ICompressFilter> &filter,
rlm@1 76 CMyComPtr<ICompressCoder> &coder,
rlm@1 77 CMyComPtr<ICompressCoder2> &coder2,
rlm@1 78 bool encode, bool onlyCoder);
rlm@1 79
rlm@1 80 HRESULT CreateCoder(
rlm@1 81 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 82 CMethodId methodId,
rlm@1 83 CMyComPtr<ICompressCoder> &coder,
rlm@1 84 CMyComPtr<ICompressCoder2> &coder2,
rlm@1 85 bool encode);
rlm@1 86
rlm@1 87 HRESULT CreateCoder(
rlm@1 88 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 89 CMethodId methodId,
rlm@1 90 CMyComPtr<ICompressCoder> &coder, bool encode);
rlm@1 91
rlm@1 92 HRESULT CreateFilter(
rlm@1 93 DECL_EXTERNAL_CODECS_LOC_VARS
rlm@1 94 CMethodId methodId,
rlm@1 95 CMyComPtr<ICompressFilter> &filter,
rlm@1 96 bool encode);
rlm@1 97
rlm@1 98 #endif