8f5a89fac64090cc4c69525cdcf88dbb77a67aa6
[idzebra-moved-to-github.git] / include / bset.h
1 /*
2  * Copyright (C) 1994-1999, Index Data
3  * All rights reserved.
4  * Sebastian Hammer, Adam Dickmeiss
5  *
6  * $Log: bset.h,v $
7  * Revision 1.3  1999-02-02 14:50:30  adam
8  * Updated WIN32 code specific sections. Changed header.
9  *
10  * Revision 1.2  1997/09/05 15:29:59  adam
11  * Changed prototype for chr_map_input - added const.
12  * Added support for C++, headers uses extern "C" for public definitions.
13  *
14  * Revision 1.1  1994/09/26 10:17:42  adam
15  * Dfa-module header files.
16  *
17  */
18 #ifndef BSET_H
19 #define BSET_H
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24
25 typedef unsigned short BSetWord;
26 typedef BSetWord *BSet;
27
28 typedef struct BSetHandle_ {
29     unsigned size;        /* size of set in members */
30     unsigned wsize;       /* size of individual set (in BSetWord)*/
31     unsigned offset;      /* offset in current set block */
32     unsigned chunk;       /* chunk, i.e. size of each block */
33     struct BSetHandle_ *setchain;
34     BSetWord setarray[1];
35 } BSetHandle;
36
37 BSetHandle *mk_BSetHandle (int size, int chunk);
38 void       rm_BSetHandle  (BSetHandle **shp);
39 int        inf_BSetHandle (BSetHandle *sh, long *used, long *alloc);
40 BSet       cp_BSet        (BSetHandle *sh, BSet dst, BSet src);
41 void       add_BSet       (BSetHandle *sh, BSet dst, unsigned member);
42 void       union_BSet     (BSetHandle *sh, BSet dst, BSet src);
43 BSet       mk_BSet        (BSetHandle **shp);
44 void       rm_BSet        (BSetHandle **shp);
45 void       res_BSet       (BSetHandle *sh, BSet dst);
46 void       com_BSet       (BSetHandle *sh, BSet dst);
47 void       pr_BSet        (BSetHandle *sh, BSet src);
48 unsigned   test_BSet      (BSetHandle *sh, BSet src, unsigned member);
49 int        trav_BSet      (BSetHandle *sh, BSet src, unsigned member);
50 int        travi_BSet     (BSetHandle *sh, BSet src, unsigned member);
51 unsigned   hash_BSet      (BSetHandle *sh, BSet src);
52 int        eq_BSet        (BSetHandle *sh, BSet dst, BSet src);
53 void       pr_charBSet    (BSetHandle *sh, BSet src, void (*f)(int));
54
55 #ifdef __cplusplus
56 }
57 #endif
58
59 #endif