X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dict%2Flookgrep.c;h=d4e9873b3259fb28692d42da0c2f7c5403199a35;hp=13eb8cb1804356f038bc49c1256d6478e8b68021;hb=3c5f6226f97612c0d6ac40591f600587c5ffa858;hpb=c0c85097014e5b007075ab71d9b5bee412e28dd5 diff --git a/dict/lookgrep.c b/dict/lookgrep.c index 13eb8cb..d4e9873 100644 --- a/dict/lookgrep.c +++ b/dict/lookgrep.c @@ -1,10 +1,26 @@ /* - * Copyright (C) 1994-1996, Index Data I/S + * Copyright (C) 1994-1999, Index Data * All rights reserved. * Sebastian Hammer, Adam Dickmeiss * * $Log: lookgrep.c,v $ - * Revision 1.18 1997-09-05 15:29:58 adam + * Revision 1.22 1999-02-02 14:50:23 adam + * Updated WIN32 code specific sections. Changed header. + * + * Revision 1.21 1998/06/24 12:16:12 adam + * Support for relations on text operands. Open range support in + * DFA module (i.e. [-j], [g-]). + * + * Revision 1.20 1997/10/27 14:33:03 adam + * Moved towards generic character mapping depending on "structure" + * field in abstract syntax file. Fixed a few memory leaks. Fixed + * bug with negative integers when doing searches with relational + * operators. + * + * Revision 1.19 1997/09/18 08:59:18 adam + * Extra generic handle for the character mapping routines. + * + * Revision 1.18 1997/09/05 15:29:58 adam * Changed prototype for chr_map_input - added const. * Added support for C++, headers uses extern "C" for public definitions. * @@ -410,9 +426,21 @@ int dict_lookup_grep (Dict dict, const char *pattern, int range, void *client, struct DFA *dfa = dfa_init(); int i, d; - logf (LOG_DEBUG, "dict_lookup_grep '%s' range=%d", pattern, range); +#if 0 + debug_dfa_trav = 1; + debug_dfa_tran = 1; + debug_dfa_followpos = 1; + dfa_verbose = 1; +#endif + + logf (LOG_DEBUG, "dict_lookup_grep range=%d", range); + for (i = 0; pattern[i]; i++) + { + logf (LOG_DEBUG, " %3d %c", pattern[i], + (pattern[i] > ' ' && pattern[i] < 127) ? pattern[i] : '?'); + } - dfa_set_cmap (dfa, dict->grep_cmap); + dfa_set_cmap (dfa, dict->grep_cmap_data, dict->grep_cmap); i = dfa_parse (dfa, &this_pattern); if (i || *this_pattern) @@ -455,8 +483,9 @@ int dict_lookup_grep (Dict dict, const char *pattern, int range, void *client, return i; } -void dict_grep_cmap (Dict dict, - const char **(*cmap)(const char **from, int len)) +void dict_grep_cmap (Dict dict, void *vp, + const char **(*cmap)(void *vp, const char **from, int len)) { dict->grep_cmap = cmap; + dict->grep_cmap_data = vp; }