1f52be7b3f03f5f6d140d16fca2c4de5fc8794b1
[idzebra-moved-to-github.git] / include / dfaset.h
1 /* $Id: dfaset.h,v 1.1 2005-01-15 21:45:42 adam Exp $
2    Copyright (C) 1995-2005
3    Index Data ApS
4
5 This file is part of the Zebra server.
6
7 Zebra is free software; you can redistribute it and/or modify it under
8 the terms of the GNU General Public License as published by the Free
9 Software Foundation; either version 2, or (at your option) any later
10 version.
11
12 Zebra is distributed in the hope that it will be useful, but WITHOUT ANY
13 WARRANTY; without even the implied warranty of MERCHANTABILITY or
14 FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
15 for more details.
16
17 You should have received a copy of the GNU General Public License
18 along with Zebra; see the file LICENSE.zebra.  If not, write to the
19 Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
20 02111-1307, USA.
21 */
22
23 #ifndef DFASET_H
24 #define DFASET_H
25
26 #include <yaz/yconfig.h>
27
28 YAZ_BEGIN_CDECL
29
30 typedef struct DFASetElement_  {
31     struct DFASetElement_ *next;
32     int value;
33 } DFASetElement, *DFASet;
34
35 typedef struct {
36     DFASet  alloclist;
37     DFASet  freelist;
38     long used;
39     int  chunk;
40 } *DFASetType;
41
42 DFASetType  mk_DFASetType (int chunk);
43 int         inf_DFASetType(DFASetType st, long *used, long *allocated);
44 DFASetType  rm_DFASetType (DFASetType st);
45 DFASet      mk_DFASet     (DFASetType st);
46 DFASet      add_DFASet    (DFASetType st, DFASet s, int value);
47 DFASet      merge_DFASet  (DFASetType st, DFASet s1, DFASet s2);
48 DFASet      union_DFASet  (DFASetType st, DFASet s1, DFASet s2);
49 DFASet      rm_DFASet     (DFASetType st, DFASet s);
50 DFASet      cp_DFASet     (DFASetType st, DFASet s);
51 void        pr_DFASet     (DFASetType st, DFASet s);
52 unsigned    hash_DFASet   (DFASetType st, DFASet s);
53 int         eq_DFASet     (DFASetType s, DFASet s1, DFASet s2);
54
55 YAZ_END_CDECL
56 #endif
57