annotate src/win32/7zip/7z/CPP/7zip/Compress/BranchCoder.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 // BranchCoder.h
rlm@1 2
rlm@1 3 #ifndef __COMPRESS_BRANCH_CODER_H
rlm@1 4 #define __COMPRESS_BRANCH_CODER_H
rlm@1 5
rlm@1 6 #include "../../Common/MyCom.h"
rlm@1 7
rlm@1 8 #include "../ICoder.h"
rlm@1 9
rlm@1 10 class CBranchConverter:
rlm@1 11 public ICompressFilter,
rlm@1 12 public CMyUnknownImp
rlm@1 13 {
rlm@1 14 protected:
rlm@1 15 UInt32 _bufferPos;
rlm@1 16 virtual void SubInit() {}
rlm@1 17 virtual UInt32 SubFilter(Byte *data, UInt32 size) = 0;
rlm@1 18 public:
rlm@1 19 MY_UNKNOWN_IMP;
rlm@1 20 STDMETHOD(Init)();
rlm@1 21 STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
rlm@1 22 };
rlm@1 23
rlm@1 24 #define MyClassEncoderA(Name) class C ## Name: public CBranchConverter \
rlm@1 25 { public: UInt32 SubFilter(Byte *data, UInt32 size); };
rlm@1 26
rlm@1 27 #define MyClassDecoderA(Name) class C ## Name: public CBranchConverter \
rlm@1 28 { public: UInt32 SubFilter(Byte *data, UInt32 size); };
rlm@1 29
rlm@1 30 #define MyClassEncoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \
rlm@1 31 { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT};
rlm@1 32
rlm@1 33 #define MyClassDecoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \
rlm@1 34 { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT};
rlm@1 35
rlm@1 36 #define MyClassA(Name, id, subId) \
rlm@1 37 MyClassEncoderA(Name ## _Encoder) \
rlm@1 38 MyClassDecoderA(Name ## _Decoder)
rlm@1 39
rlm@1 40 #define MyClassB(Name, id, subId, ADD_ITEMS, ADD_INIT) \
rlm@1 41 MyClassEncoderB(Name ## _Encoder, ADD_ITEMS, ADD_INIT) \
rlm@1 42 MyClassDecoderB(Name ## _Decoder, ADD_ITEMS, ADD_INIT)
rlm@1 43
rlm@1 44 #endif