]> git.saurik.com Git - bison.git/blame - lib/bitsetv.h
* doc/bison.texinfo (C++ Parser Interface): Use defcv to define
[bison.git] / lib / bitsetv.h
CommitLineData
7086e707 1/* Bitset vectors.
7d7d6663 2 Copyright (C) 2002, 2004 Free Software Foundation, Inc.
7086e707
AD
3 Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU General Public License as published by
7the Free Software Foundation; either version 2 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU General Public License for more details.
14
15You should have received a copy of the GNU General Public License
16along with this program; if not, write to the Free Software
0fb669f9 17Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
7086e707
AD
18
19#ifndef _BITSETV_H
20#define _BITSETV_H
21
22#include "bitset.h"
23
24typedef bitset * bitsetv;
25
26/* Create a vector of N_VECS bitsets, each of N_BITS, and of
27 type TYPE. */
7d7d6663 28extern bitsetv bitsetv_alloc (bitset_bindex, bitset_bindex, enum bitset_type);
7086e707
AD
29
30/* Create a vector of N_VECS bitsets, each of N_BITS, and with
31 attribute hints specified by ATTR. */
7d7d6663 32extern bitsetv bitsetv_create (bitset_bindex, bitset_bindex, unsigned int);
7086e707
AD
33
34/* Free vector of bitsets. */
7d7d6663 35extern void bitsetv_free (bitsetv);
7086e707
AD
36
37/* Zero vector of bitsets. */
7d7d6663 38extern void bitsetv_zero (bitsetv);
7086e707
AD
39
40/* Set vector of bitsets. */
7d7d6663 41extern void bitsetv_ones (bitsetv);
7086e707 42
345cea78
AD
43/* Given a vector BSETV of N bitsets of size N, modify its contents to
44 be the transitive closure of what was given. */
7d7d6663 45extern void bitsetv_transitive_closure (bitsetv);
345cea78
AD
46
47/* Given a vector BSETV of N bitsets of size N, modify its contents to
24f4e18b 48 be the reflexive transitive closure of what was given. This is
345cea78
AD
49 the same as transitive closure but with all bits on the diagonal
50 of the bit matrix set. */
7d7d6663 51extern void bitsetv_reflexive_transitive_closure (bitsetv);
345cea78 52
7086e707 53/* Dump vector of bitsets. */
7d7d6663 54extern void bitsetv_dump (FILE *, const char *, const char *, bitsetv);
345cea78
AD
55
56/* Function to debug vector of bitsets from debugger. */
7d7d6663 57extern void debug_bitsetv (bitsetv);
345cea78 58
7086e707 59#endif /* _BITSETV_H */