Annotation of elwix/tools/oldlzma/SRC/7zip/Compress/LZ/HashChain/HC.h, revision 1.1.1.1
1.1 misho 1: // HC.h
2:
3: #include "../LZInWindow.h"
4: #include "../IMatchFinder.h"
5:
6: namespace HC_NAMESPACE {
7:
8: typedef UInt32 CIndex;
9: const UInt32 kMaxValForNormalize = (UInt32(1) << 31) - 1;
10:
11: class CMatchFinderHC:
12: public IMatchFinder,
13: public IMatchFinderSetCallback,
14: public CLZInWindow,
15: public CMyUnknownImp
16: {
17: UInt32 _cyclicBufferPos;
18: UInt32 _cyclicBufferSize; // it must be historySize + 1
19: UInt32 _matchMaxLen;
20: CIndex *_hash;
21: UInt32 _cutValue;
22:
23: CMyComPtr<IMatchFinderCallback> m_Callback;
24:
25: void Normalize();
26: void FreeThisClassMemory();
27: void FreeMemory();
28:
29: MY_UNKNOWN_IMP1(IMatchFinderSetCallback)
30:
31: STDMETHOD(Init)(ISequentialInStream *inStream);
32: STDMETHOD_(void, ReleaseStream)();
33: STDMETHOD(MovePos)();
34: STDMETHOD_(Byte, GetIndexByte)(Int32 index);
35: STDMETHOD_(UInt32, GetMatchLen)(Int32 index, UInt32 back, UInt32 limit);
36: STDMETHOD_(UInt32, GetNumAvailableBytes)();
37: STDMETHOD_(const Byte *, GetPointerToCurrentPos)();
38: STDMETHOD(Create)(UInt32 historySize, UInt32 keepAddBufferBefore,
39: UInt32 matchMaxLen, UInt32 keepAddBufferAfter);
40: STDMETHOD_(UInt32, GetLongestMatch)(UInt32 *distances);
41: STDMETHOD_(void, DummyLongestMatch)();
42:
43: // IMatchFinderSetCallback
44: STDMETHOD(SetCallback)(IMatchFinderCallback *callback);
45:
46: virtual void BeforeMoveBlock();
47: virtual void AfterMoveBlock();
48:
49: public:
50: CMatchFinderHC();
51: virtual ~CMatchFinderHC();
52: void SetCutValue(UInt32 cutValue) { _cutValue = cutValue; }
53: };
54:
55: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>