]>
git.saurik.com Git - bison.git/blob - lib/bitsetv.c
2 Copyright (C) 2001 Free Software Foundation, Inc.
4 This file is part of GCC.
6 GCC is free software; you can redistribute it and/or modify it under
7 the terms of the GNU General Public License as published by the Free
8 Software Foundation; either version 2, or (at your option) any later
11 GCC is distributed in the hope that it will be useful, but WITHOUT ANY
12 WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
16 You should have received a copy of the GNU General Public License
17 along with GCC; see the file COPYING. If not, write to the Free
18 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
29 /* Create a vector of N_VECS bitsets, each of N_BITS, and of
32 bitsetv_alloc (n_vecs
, n_bits
, type
)
35 enum bitset_type type
;
37 unsigned int vector_bytes
;
42 /* Determine number of bytes for each set. */
43 bytes
= bitset_bytes (type
, n_bits
);
45 /* Allocate vector table at head of bitset array. */
46 vector_bytes
= (n_vecs
+ 1) * sizeof (bitset
);
47 bsetv
= (bitset
*) xcalloc (1, vector_bytes
+ bytes
* n_vecs
);
49 for (i
= 0; i
< n_vecs
; i
++)
51 bsetv
[i
] = (bitset
) ((char *) bsetv
+ vector_bytes
+ i
* bytes
);
53 bitset_init (bsetv
[i
], n_bits
, type
);
56 /* Null terminate table. */
62 /* Create a vector of N_VECS bitsets, each of N_BITS, and with
63 attribute hints specified by ATTR. */
65 bitsetv_create (n_vecs
, n_bits
, attr
)
70 enum bitset_type type
;
72 type
= bitset_type_choose (n_bits
, attr
);
73 return bitsetv_alloc (n_vecs
, n_bits
, type
);
77 /* Free bitset vector BSETV. */
84 for (i
= 0; bsetv
[i
]; i
++)
85 BITSET_FREE_ (bsetv
[i
]);
90 /* Zero a vector of bitsets. */
93 struct bitset_struct
**bsetv
;
97 for (i
= 0; bsetv
[i
]; i
++)
98 bitset_zero (bsetv
[i
]);
102 /* Set a vector of bitsets to ones. */
109 for (i
= 0; bsetv
[i
]; i
++)
110 bitset_ones (bsetv
[i
]);
114 /* Dump the contents of a bitset vector BSETV with N_VECS elements to
117 bitsetv_dump (file
, title
, subtitle
, bsetv
)
119 const char *title
, *subtitle
;
124 fprintf (file
, "%s\n", title
);
125 for (i
= 0; bsetv
[i
]; i
++)
127 fprintf (file
, "%s %d\n", subtitle
, i
);
128 bitset_dump (file
, bsetv
[i
]);
131 fprintf (file
, "\n");
136 debug_bitsetv (bsetv
)
141 for (i
= 0; bsetv
[i
]; i
++)
143 fprintf (stderr
, "%d: ", i
);
144 debug_bitset (bsetv
[i
]);
147 fprintf (stderr
, "\n");