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