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