1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000 1.2 +++ b/other-licenses/7zstub/src/7zip/Compress/Branch/BranchCoder.h Wed Dec 31 06:09:35 2014 +0100 1.3 @@ -0,0 +1,54 @@ 1.4 +// BranchCoder.h 1.5 + 1.6 +#ifndef __BRANCH_CODER_H 1.7 +#define __BRANCH_CODER_H 1.8 + 1.9 +#include "Common/MyCom.h" 1.10 +#include "Common/Types.h" 1.11 +#include "Common/Alloc.h" 1.12 + 1.13 +#include "../../ICoder.h" 1.14 + 1.15 +class CBranchConverter: 1.16 + public ICompressFilter, 1.17 + public CMyUnknownImp 1.18 +{ 1.19 +protected: 1.20 + UInt32 _bufferPos; 1.21 + virtual void SubInit() {} 1.22 + virtual UInt32 SubFilter(Byte *data, UInt32 size) = 0; 1.23 +public: 1.24 + MY_UNKNOWN_IMP; 1.25 + STDMETHOD(Init)(); 1.26 + STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size); 1.27 +}; 1.28 + 1.29 +#define MyClassEncoderA(Name) class C ## Name: public CBranchConverter \ 1.30 + { public: UInt32 SubFilter(Byte *data, UInt32 size); }; 1.31 + 1.32 +#define MyClassDecoderA(Name) class C ## Name: public CBranchConverter \ 1.33 + { public: UInt32 SubFilter(Byte *data, UInt32 size); }; 1.34 + 1.35 +#define MyClassEncoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \ 1.36 + { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; 1.37 + 1.38 +#define MyClassDecoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \ 1.39 + { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; 1.40 + 1.41 +#define MyClass2b(Name, id, subId, encodingId) \ 1.42 +DEFINE_GUID(CLSID_CCompressConvert ## Name, \ 1.43 +0x23170F69, 0x40C1, 0x278B, 0x03, 0x03, id, subId, 0x00, 0x00, encodingId, 0x00); 1.44 + 1.45 +#define MyClassA(Name, id, subId) \ 1.46 +MyClass2b(Name ## _Encoder, id, subId, 0x01) \ 1.47 +MyClassEncoderA(Name ## _Encoder) \ 1.48 +MyClass2b(Name ## _Decoder, id, subId, 0x00) \ 1.49 +MyClassDecoderA(Name ## _Decoder) 1.50 + 1.51 +#define MyClassB(Name, id, subId, ADD_ITEMS, ADD_INIT) \ 1.52 +MyClass2b(Name ## _Encoder, id, subId, 0x01) \ 1.53 +MyClassEncoderB(Name ## _Encoder, ADD_ITEMS, ADD_INIT) \ 1.54 +MyClass2b(Name ## _Decoder, id, subId, 0x00) \ 1.55 +MyClassDecoderB(Name ## _Decoder, ADD_ITEMS, ADD_INIT) 1.56 + 1.57 +#endif