Annotation of elwix/tools/oldlzma/SRC/7zip/Compress/Branch/BranchCoder.h, revision 1.1.1.1

1.1       misho       1: // BranchCoder.h
                      2: 
                      3: #ifndef __BRANCH_CODER_H
                      4: #define __BRANCH_CODER_H
                      5: 
                      6: #include "Common/MyCom.h"
                      7: #include "Common/Types.h"
                      8: #include "Common/Alloc.h"
                      9: 
                     10: #include "../../ICoder.h"
                     11: 
                     12: class CBranchConverter:
                     13:   public ICompressFilter,
                     14:   public CMyUnknownImp
                     15: {
                     16: protected:
                     17:   UInt32 _bufferPos;
                     18:   virtual void SubInit() {}
                     19:   virtual UInt32 SubFilter(Byte *data, UInt32 size) = 0;
                     20: public:
                     21:   MY_UNKNOWN_IMP;
                     22:   STDMETHOD(Init)();
                     23:   STDMETHOD_(UInt32, Filter)(Byte *data, UInt32 size);
                     24: };
                     25: 
                     26: #define MyClassEncoderA(Name) class C ## Name: public CBranchConverter \
                     27:   { public: UInt32 SubFilter(Byte *data, UInt32 size); }; 
                     28: 
                     29: #define MyClassDecoderA(Name) class C ## Name: public CBranchConverter \
                     30:   { public: UInt32 SubFilter(Byte *data, UInt32 size); }; 
                     31: 
                     32: #define MyClassEncoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \
                     33:   { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; 
                     34: 
                     35: #define MyClassDecoderB(Name, ADD_ITEMS, ADD_INIT) class C ## Name: public CBranchConverter, public ADD_ITEMS \
                     36:   { public: UInt32 SubFilter(Byte *data, UInt32 size); ADD_INIT}; 
                     37: 
                     38: #define MyClass2b(Name, id, subId, encodingId)  \
                     39: DEFINE_GUID(CLSID_CCompressConvert ## Name,  \
                     40: 0x23170F69, 0x40C1, 0x278B, 0x03, 0x03, id, subId, 0x00, 0x00, encodingId, 0x00); 
                     41: 
                     42: #define MyClassA(Name, id, subId)  \
                     43: MyClass2b(Name ## _Encoder, id, subId, 0x01) \
                     44: MyClassEncoderA(Name ## _Encoder) \
                     45: MyClass2b(Name ## _Decoder, id, subId, 0x00) \
                     46: MyClassDecoderA(Name ## _Decoder)
                     47: 
                     48: #define MyClassB(Name, id, subId, ADD_ITEMS, ADD_INIT)  \
                     49: MyClass2b(Name ## _Encoder, id, subId, 0x01) \
                     50: MyClassEncoderB(Name ## _Encoder, ADD_ITEMS, ADD_INIT) \
                     51: MyClass2b(Name ## _Decoder, id, subId, 0x00) \
                     52: MyClassDecoderB(Name ## _Decoder, ADD_ITEMS, ADD_INIT)
                     53: 
                     54: #endif

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>