|  | /* This file has been copied from commit e7ac713d^ in the GNU grep git | 
|  | * repository. A few small changes have been made to adapt the code to | 
|  | * Git. | 
|  | */ | 
|  |  | 
|  | /* kwset.h - header declaring the keyword set library. | 
|  | Copyright (C) 1989, 1998, 2005 Free Software Foundation, Inc. | 
|  |  | 
|  | This program is free software; you can redistribute it and/or modify | 
|  | it under the terms of the GNU General Public License as published by | 
|  | the Free Software Foundation; either version 2, or (at your option) | 
|  | any later version. | 
|  |  | 
|  | This program is distributed in the hope that it will be useful, | 
|  | but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | GNU General Public License for more details. | 
|  |  | 
|  | You should have received a copy of the GNU General Public License | 
|  | along with this program; if not, write to the Free Software | 
|  | Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA | 
|  | 02110-1301, USA.  */ | 
|  |  | 
|  | /* Written August 1989 by Mike Haertel. | 
|  | The author may be reached (Email) at the address mike@ai.mit.edu, | 
|  | or (US mail) as Mike Haertel c/o Free Software Foundation. */ | 
|  |  | 
|  | struct kwsmatch | 
|  | { | 
|  | int index;			/* Index number of matching keyword. */ | 
|  | size_t offset[1];		/* Offset of each submatch. */ | 
|  | size_t size[1];		/* Length of each submatch. */ | 
|  | }; | 
|  |  | 
|  | struct kwset_t; | 
|  | typedef struct kwset_t* kwset_t; | 
|  |  | 
|  | /* Return an opaque pointer to a newly allocated keyword set, or NULL | 
|  | if enough memory cannot be obtained.  The argument if non-NULL | 
|  | specifies a table of character translations to be applied to all | 
|  | pattern and search text. */ | 
|  | extern kwset_t kwsalloc(char const *); | 
|  |  | 
|  | /* Incrementally extend the keyword set to include the given string. | 
|  | Return NULL for success, or an error message.  Remember an index | 
|  | number for each keyword included in the set. */ | 
|  | extern const char *kwsincr(kwset_t, char const *, size_t); | 
|  |  | 
|  | /* When the keyword set has been completely built, prepare it for | 
|  | use.  Return NULL for success, or an error message. */ | 
|  | extern const char *kwsprep(kwset_t); | 
|  |  | 
|  | /* Search through the given buffer for a member of the keyword set. | 
|  | Return a pointer to the leftmost longest match found, or NULL if | 
|  | no match is found.  If foundlen is non-NULL, store the length of | 
|  | the matching substring in the integer it points to.  Similarly, | 
|  | if foundindex is non-NULL, store the index of the particular | 
|  | keyword found therein. */ | 
|  | extern size_t kwsexec(kwset_t, char const *, size_t, struct kwsmatch *); | 
|  |  | 
|  | /* Deallocate the given keyword set and all its associated storage. */ | 
|  | extern void kwsfree(kwset_t); | 
|  |  |