X-Git-Url: http://git.indexdata.com/?p=idzebra-moved-to-github.git;a=blobdiff_plain;f=dfa%2Fdfap.h;h=76751581abf9a73bd9036cd9b6143598bc41406f;hp=b158d8412faf00f5ae86b54ce1dab484a0256fbf;hb=e4c6861efeeea654bfb00c5f0239ee258629d77f;hpb=4461019c0de49358856cb1c84ca162395b247f16 diff --git a/dfa/dfap.h b/dfa/dfap.h index b158d84..7675158 100644 --- a/dfa/dfap.h +++ b/dfa/dfap.h @@ -1,24 +1,33 @@ -/* - * Copyright (C) 1994, Index Data I/S - * All rights reserved. - * Sebastian Hammer, Adam Dickmeiss - * - * $Log: dfap.h,v $ - * 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. - * - */ +/* This file is part of the Zebra server. + Copyright (C) 2004-2013 Index Data + +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 this program; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 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 */ @@ -29,6 +38,23 @@ struct DFA_parse { int max_Tnode; /* allocated Tnodes */ struct Tblock *start; /* start block of Tnodes */ struct Tblock *end; /* end block of Tnodes */ + int *charMap; + int charMapSize; + 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_ { @@ -42,20 +68,32 @@ 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 + * c-file-style: "Stroustrup" + * indent-tabs-mode: nil + * End: + * vim: shiftwidth=4 tabstop=8 expandtab + */ +