X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dfa%2Fdfap.h;h=8fe3e32ddc2e3a4befacef8ff942fdefcd31bf85;hp=6265962489d54f49e0b3e20a35c9d1b0d9a6591d;hb=ecb3935e78cd9bcfdebafdee0834cfb1060d7b5e;hpb=7ed12b6cc4a492d6062dd56bb1ebc49c9bc75b4a diff --git a/dfa/dfap.h b/dfa/dfap.h index 6265962..8fe3e32 100644 --- a/dfa/dfap.h +++ b/dfa/dfap.h @@ -1,31 +1,36 @@ -/* - * Copyright (C) 1994, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: dfap.h,v $ - * Revision 1.4 1996-06-04 10:20:03 adam - * Added support for character mapping. - * - * Revision 1.3 1996/01/08 09:09:19 adam - * Function dfa_parse got 'const' string argument. - * New functions to define char mappings made public. - * - * Revision 1.2 1995/01/25 11:30:50 adam - * Simple error reporting when parsing regular expressions. - * Memory usage reduced. - * - * Revision 1.1 1995/01/24 16:02:53 adam - * New private header file in dfa module (dfap.h). - * Module no longer uses yacc to parse regular expressions. - * - */ +/* $Id: dfap.h,v 1.13 2006-05-10 08:13:18 adam Exp $ + Copyright (C) 1995-2005 + Index Data ApS + +This file is part of the Zebra server. + +Zebra 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. + +Zebra 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 Zebra; see the file LICENSE.zebra. If not, write to the +Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA +02111-1307, USA. +*/ + + #ifndef DFAP_H #define DFAP_H #include +#ifdef __cplusplus +extern "C" { +#endif + struct DFA_parse { struct Tnode *root; /* root of regular syntax tree */ int position; /* no of positions so far */ @@ -38,7 +43,21 @@ struct DFA_parse { struct Tblock *end; /* end block of Tnodes */ int *charMap; int charMapSize; - char **(*cmap)(const char **from, int len); + void *cmap_data; + + unsigned look_ch; + int lookahead; + BSet look_chars; + int err_code; + int inside_string; + const unsigned char *expr_ptr; + + struct Tnode **posar; + + DFASetType poset; + DFASet *followpos; + + const char **(*cmap)(void *vp, const char **from, int len); }; typedef struct DFA_stateb_ { @@ -52,20 +71,31 @@ struct DFA_states { struct DFA_state *marked; /* chain of marked DFA states */ DFA_stateb *statemem; /* state memory */ int no; /* no of states (unmarked+marked) */ - SetType st; /* Position set type */ + DFASetType st; /* Position set type */ int hash; /* no hash entries in hasharray */ struct DFA_state **hasharray; /* hash pointers */ struct DFA_state **sortarray; /* sorted DFA states */ struct DFA_trans *transmem; /* transition memory */ }; -int init_DFA_states (struct DFA_states **dfasp, SetType st, int hash); +int init_DFA_states (struct DFA_states **dfasp, DFASetType st, int hash); int rm_DFA_states (struct DFA_states **dfasp); -int add_DFA_state (struct DFA_states *dfas, Set *s, +int add_DFA_state (struct DFA_states *dfas, DFASet *s, struct DFA_state **sp); struct DFA_state *get_DFA_state (struct DFA_states *dfas); void sort_DFA_states (struct DFA_states *dfas); void add_DFA_tran (struct DFA_states *, struct DFA_state *, int, int, int); +#ifdef __cplusplus +} #endif +#endif +/* + * Local variables: + * c-basic-offset: 4 + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +