/* * Notepad (search.c) * Copyright (C) 1999 by Marcel Baur * To be distributed under the Wine license * * This file features Heuristic Boyer-Moore Text Search * * Always: - Buf is the Buffer containing the whole text * ======= - SP is the Search Pattern, which has to be found in Buf. * */ #include #define CHARSETSIZE 255 int delta[CHARSETSIZE]; /* rightmostpos: return rightmost position of ch in szSP (or -1) */ int rightmostpos(char ch, LPSTR szSP, int nSPLen) { int i = nSPLen; while ((i>0) & (szSP[i]!=ch)) i--; return(i); } /* setup_delta: setup delta1 cache */ void setup_delta(LPSTR szSP, int nSPLen) { int i; for (i=0; i delta[(int)szBuf[i]]) { i+= (nSPLen-j+1); } else { i+= delta[(int)szBuf[i]]; } } } while (j>0 && i<=nBufLen); return(i+1); }