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