Mercurial > vba-linux
comparison 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 |
comparison
equal
deleted
inserted
replaced
0:8ced16adf2e1 | 1:f9f4f1b99eed |
---|---|
1 // BranchCoder.h | |
2 | |
3 #ifndef __COMPRESS_BRANCH_CODER_H | |
4 #define __COMPRESS_BRANCH_CODER_H | |
5 | |
6 #include "../../Common/MyCom.h" | |
7 | |
8 #include "../ICoder.h" | |
9 | |
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 }; | |
23 | |
24 #define MyClassEncoderA(Name) class C ## Name: public CBranchConverter \ | |
25 { public: UInt32 SubFilter(Byte *data, UInt32 size); }; | |
26 | |
27 #define MyClassDecoderA(Name) class C ## Name: public CBranchConverter \ | |
28 { public: UInt32 SubFilter(Byte *data, UInt32 size); }; | |
29 | |
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}; | |
32 | |
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}; | |
35 | |
36 #define MyClassA(Name, id, subId) \ | |
37 MyClassEncoderA(Name ## _Encoder) \ | |
38 MyClassDecoderA(Name ## _Decoder) | |
39 | |
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) | |
43 | |
44 #endif |