Annotation of elwix/tools/oldlzma/SRC/7zip/Compress/Branch/BranchCoder.h, revision 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>