allow coexistance of N build and AC build.
[tomato.git] / release / src-rt-6.x / linux / linux-2.6 / scripts / squashfs / lzma / C / 7zip / Compress / Branch / x86_2.h
blob9e7780c80b927473d62ef4d3b797d43a1aed6ccb
1 // x86_2.h
3 #ifndef __BRANCH_X86_2_H
4 #define __BRANCH_X86_2_H
6 #include "../../../Common/MyCom.h"
7 #include "../RangeCoder/RangeCoderBit.h"
8 #include "../../ICoder.h"
10 // {23170F69-40C1-278B-0303-010100000100}
11 #define MyClass2_a(Name, id, subId, encodingId) \
12 DEFINE_GUID(CLSID_CCompressConvert ## Name, \
13 0x23170F69, 0x40C1, 0x278B, 0x03, 0x03, id, subId, 0x00, 0x00, encodingId, 0x00);
15 #define MyClass_a(Name, id, subId) \
16 MyClass2_a(Name ## _Encoder, id, subId, 0x01) \
17 MyClass2_a(Name ## _Decoder, id, subId, 0x00)
19 MyClass_a(BCJ2_x86, 0x01, 0x1B)
21 const int kNumMoveBits = 5;
23 #ifndef EXTRACT_ONLY
25 class CBCJ2_x86_Encoder:
26 public ICompressCoder2,
27 public CMyUnknownImp
29 Byte *_buffer;
30 public:
31 CBCJ2_x86_Encoder(): _buffer(0) {};
32 ~CBCJ2_x86_Encoder();
33 bool Create();
35 COutBuffer _mainStream;
36 COutBuffer _callStream;
37 COutBuffer _jumpStream;
38 NCompress::NRangeCoder::CEncoder _rangeEncoder;
39 NCompress::NRangeCoder::CBitEncoder<kNumMoveBits> _statusE8Encoder[256];
40 NCompress::NRangeCoder::CBitEncoder<kNumMoveBits> _statusE9Encoder;
41 NCompress::NRangeCoder::CBitEncoder<kNumMoveBits> _statusJccEncoder;
43 HRESULT Flush();
44 void ReleaseStreams()
46 _mainStream.ReleaseStream();
47 _callStream.ReleaseStream();
48 _jumpStream.ReleaseStream();
49 _rangeEncoder.ReleaseStream();
52 class CCoderReleaser
54 CBCJ2_x86_Encoder *_coder;
55 public:
56 CCoderReleaser(CBCJ2_x86_Encoder *coder): _coder(coder) {}
57 ~CCoderReleaser() { _coder->ReleaseStreams(); }
60 public:
62 MY_UNKNOWN_IMP
64 HRESULT CodeReal(ISequentialInStream **inStreams,
65 const UInt64 **inSizes,
66 UInt32 numInStreams,
67 ISequentialOutStream **outStreams,
68 const UInt64 **outSizes,
69 UInt32 numOutStreams,
70 ICompressProgressInfo *progress);
71 STDMETHOD(Code)(ISequentialInStream **inStreams,
72 const UInt64 **inSizes,
73 UInt32 numInStreams,
74 ISequentialOutStream **outStreams,
75 const UInt64 **outSizes,
76 UInt32 numOutStreams,
77 ICompressProgressInfo *progress);
78 };
80 #endif
82 class CBCJ2_x86_Decoder:
83 public ICompressCoder2,
84 public CMyUnknownImp
86 public:
87 CInBuffer _mainInStream;
88 CInBuffer _callStream;
89 CInBuffer _jumpStream;
90 NCompress::NRangeCoder::CDecoder _rangeDecoder;
91 NCompress::NRangeCoder::CBitDecoder<kNumMoveBits> _statusE8Decoder[256];
92 NCompress::NRangeCoder::CBitDecoder<kNumMoveBits> _statusE9Decoder;
93 NCompress::NRangeCoder::CBitDecoder<kNumMoveBits> _statusJccDecoder;
95 COutBuffer _outStream;
97 void ReleaseStreams()
99 _mainInStream.ReleaseStream();
100 _callStream.ReleaseStream();
101 _jumpStream.ReleaseStream();
102 _rangeDecoder.ReleaseStream();
103 _outStream.ReleaseStream();
106 HRESULT Flush() { return _outStream.Flush(); }
107 class CCoderReleaser
109 CBCJ2_x86_Decoder *_coder;
110 public:
111 CCoderReleaser(CBCJ2_x86_Decoder *coder): _coder(coder) {}
112 ~CCoderReleaser() { _coder->ReleaseStreams(); }
115 public:
116 MY_UNKNOWN_IMP
117 HRESULT CodeReal(ISequentialInStream **inStreams,
118 const UInt64 **inSizes,
119 UInt32 numInStreams,
120 ISequentialOutStream **outStreams,
121 const UInt64 **outSizes,
122 UInt32 numOutStreams,
123 ICompressProgressInfo *progress);
124 STDMETHOD(Code)(ISequentialInStream **inStreams,
125 const UInt64 **inSizes,
126 UInt32 numInStreams,
127 ISequentialOutStream **outStreams,
128 const UInt64 **outSizes,
129 UInt32 numOutStreams,
130 ICompressProgressInfo *progress);
133 #endif