/* fsamusts -- Report a list of must-have simple strings in the pattern Copyright (C) 1988, 1998, 2000, 2002, 2004-2005, 2007-2014 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 3, 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 June, 1988 by Mike Haertel Modified July, 1988 by Arthur David Olson to assist BMG speedups */ /* 2014: Repackaged by "untangle" script, written by behoffski. */ /* ?? Insert long description/discussion here. */ #ifndef FSAMUSTS_H #define FSAMUSTS_H 1 /* Always import environment-specific configuration items first. */ #include #include "fsatoken.h" /* Element of a list of strings, at least one of which is known to appear in any R.E. matching the DFA. */ typedef struct fsamusts_list_element { bool exact; bool begline; bool endline; char *must; struct fsamusts_list_element *next; } fsamusts_list_element_t; /* Receive an existing list (possibly empty) of must-have strings, together with a list of the tokens for the current FSA (postfix tree order), and if there are any more must-have strings in the token list, add them to the must-have list. Returns the possibly-modified list to the caller. Locale and syntax items are partially covered here by the case_fold and unibyte_locale flags, but this is incomplete, and should be addressed by Stage 2 (improving the expressiveness of tokens). */ extern fsamusts_list_element_t * fsamusts_must (fsamusts_list_element_t *must_list, size_t nr_tokens, fsatoken_token_t *token_list, bool case_fold, bool unibyte_locale); #endif /* FSAMUSTS_H */ /* vim:set shiftwidth=2: */