Mercurial > gnulib
annotate lib/bitsetv.h @ 40159:069b50a66104
bitsetv: allow free on NULL.
* lib/bitsetv.c (bitsetv_free): Do nothing when the bitsetv is NULL.
author | Akim Demaille <akim.demaille@gmail.com> |
---|---|
date | Sun, 27 Jan 2019 18:49:36 +0100 |
parents | b06060465f09 |
children |
rev | line source |
---|---|
39975 | 1 /* Bitset vectors. |
2 | |
40057
b06060465f09
maint: Run 'make update-copyright'
Paul Eggert <eggert@cs.ucla.edu>
parents:
39975
diff
changeset
|
3 Copyright (C) 2002, 2004, 2009-2015, 2018-2019 Free Software Foundation, |
39975 | 4 Inc. |
5 | |
6 Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz). | |
7 | |
8 This program is free software: you can redistribute it and/or modify | |
9 it under the terms of the GNU General Public License as published by | |
10 the Free Software Foundation, either version 3 of the License, or | |
11 (at your option) any later version. | |
12 | |
13 This program is distributed in the hope that it will be useful, | |
14 but WITHOUT ANY WARRANTY; without even the implied warranty of | |
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
16 GNU General Public License for more details. | |
17 | |
18 You should have received a copy of the GNU General Public License | |
19 along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
20 | |
21 #ifndef _BITSETV_H | |
22 #define _BITSETV_H | |
23 | |
24 #include "bitset.h" | |
25 | |
26 typedef bitset * bitsetv; | |
27 | |
28 /* Create a vector of N_VECS bitsets, each of N_BITS, and of | |
29 type TYPE. */ | |
30 bitsetv bitsetv_alloc (bitset_bindex, bitset_bindex, enum bitset_type); | |
31 | |
32 /* Create a vector of N_VECS bitsets, each of N_BITS, and with | |
33 attribute hints specified by ATTR. */ | |
34 bitsetv bitsetv_create (bitset_bindex, bitset_bindex, unsigned); | |
35 | |
40159
069b50a66104
bitsetv: allow free on NULL.
Akim Demaille <akim.demaille@gmail.com>
parents:
40057
diff
changeset
|
36 /* Free vector of bitsets. Do nothing if NULL. */ |
39975 | 37 void bitsetv_free (bitsetv); |
38 | |
39 /* Zero vector of bitsets. */ | |
40 void bitsetv_zero (bitsetv); | |
41 | |
42 /* Set vector of bitsets. */ | |
43 void bitsetv_ones (bitsetv); | |
44 | |
45 /* Given a vector BSETV of N bitsets of size N, modify its contents to | |
46 be the transitive closure of what was given. */ | |
47 void bitsetv_transitive_closure (bitsetv); | |
48 | |
49 /* Given a vector BSETV of N bitsets of size N, modify its contents to | |
50 be the reflexive transitive closure of what was given. This is | |
51 the same as transitive closure but with all bits on the diagonal | |
52 of the bit matrix set. */ | |
53 void bitsetv_reflexive_transitive_closure (bitsetv); | |
54 | |
55 /* Dump vector of bitsets. */ | |
56 void bitsetv_dump (FILE *, const char *, const char *, bitsetv); | |
57 | |
58 /* Function to debug vector of bitsets from debugger. */ | |
59 void debug_bitsetv (bitsetv); | |
60 | |
61 /* Dump vector of bitsets as a matrix. */ | |
62 void bitsetv_matrix_dump (FILE *, const char *, bitsetv); | |
63 | |
64 #endif /* _BITSETV_H */ |