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