// MatchFinders/IMatchFinder.h #ifndef __IMATCHFINDER_H #define __IMATCHFINDER_H struct IInWindowStream: public IUnknown { STDMETHOD(SetStream)(ISequentialInStream *inStream) PURE; STDMETHOD_(void, ReleaseStream)() PURE; STDMETHOD(Init)() PURE; STDMETHOD_(Byte, GetIndexByte)(Int32 index) PURE; STDMETHOD_(UInt32, GetMatchLen)(Int32 index, UInt32 distance, UInt32 limit) PURE; STDMETHOD_(UInt32, GetNumAvailableBytes)() PURE; STDMETHOD_(const Byte *, GetPointerToCurrentPos)() PURE; STDMETHOD_(Int32, NeedChangeBufferPos)(UInt32 numCheckBytes) PURE; STDMETHOD_(void, ChangeBufferPos)() PURE; }; struct IMatchFinder: public IInWindowStream { STDMETHOD(Create)(UInt32 historySize, UInt32 keepAddBufferBefore, UInt32 matchMaxLen, UInt32 keepAddBufferAfter) PURE; STDMETHOD(GetMatches)(UInt32 *distances) PURE; STDMETHOD(Skip)(UInt32 num) PURE; }; struct IMatchFinderSetNumPasses { //virtual ~IMatchFinderSetNumPasses(){} virtual void SetNumPasses(UInt32 numPasses) PURE; }; #endif