]>
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
* sizeof (bitset
);
47 bsetv
= (bitset
*) xmalloc (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
);
59 /* Create a vector of N_VECS bitsets, each of N_BITS, and with
60 attribute hints specified by ATTR. */
62 bitsetv_create (n_vecs
, n_bits
, attr
)
67 enum bitset_type type
;
69 type
= bitset_type_choose (n_bits
, attr
);
70 return bitsetv_alloc (n_vecs
, n_bits
, type
);
74 /* Free bitset vector BSETV. */
83 /* Zero a vector of N_VECS bitsets. */
85 bitsetv_zero (bsetv
, n_vecs
)
86 struct bitset_struct
**bsetv
;
91 for (i
= 0; i
< n_vecs
; i
++)
92 bitset_zero (bsetv
[i
]);
96 /* Set a vector of N_VECS bitsets to ones. */
98 bitsetv_ones (bsetv
, n_vecs
)
104 for (i
= 0; i
< n_vecs
; i
++)
105 bitset_ones (bsetv
[i
]);
109 /* Dump the contents of a bitset vector BSETV with N_VECS elements to
112 bitsetv_dump (file
, title
, subtitle
, bsetv
, n_vecs
)
114 const char *title
, *subtitle
;
120 fprintf (file
, "%s\n", title
);
121 for (i
= 0; i
< n_vecs
; i
++)
123 fprintf (file
, "%s %d\n", subtitle
, i
);
124 bitset_dump (file
, bsetv
[i
]);
127 fprintf (file
, "\n");