Branch data Line data Source code
1 : : /***
2 : : This file is part of PulseAudio.
3 : :
4 : : Copyright 2009 Lennart Poettering
5 : :
6 : : PulseAudio is free software; you can redistribute it and/or modify
7 : : it under the terms of the GNU Lesser General Public License as published
8 : : by the Free Software Foundation; either version 2.1 of the License,
9 : : or (at your option) any later version.
10 : :
11 : : PulseAudio is distributed in the hope that it will be useful, but
12 : : WITHOUT ANY WARRANTY; without even the implied warranty of
13 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 : : General Public License for more details.
15 : :
16 : : You should have received a copy of the GNU Lesser General Public License
17 : : along with PulseAudio; if not, write to the Free Software
18 : : Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
19 : : USA.
20 : : ***/
21 : :
22 : : #ifdef HAVE_CONFIG_H
23 : : #include <config.h>
24 : : #endif
25 : :
26 : : #include <string.h>
27 : :
28 : : #include <pulse/xmalloc.h>
29 : :
30 : : #include "bitset.h"
31 : :
32 : 0 : void pa_bitset_set(pa_bitset_t *b, unsigned k, pa_bool_t v) {
33 [ # # ]: 0 : pa_assert(b);
34 : :
35 [ # # ]: 0 : if (v)
36 : 0 : b[k >> 5] |= 1 << (k & 31);
37 : : else
38 : 0 : b[k >> 5] &= ~((uint32_t) (1 << (k & 31)));
39 : 0 : }
40 : :
41 : 0 : pa_bool_t pa_bitset_get(const pa_bitset_t *b, unsigned k) {
42 : 0 : return !!(b[k >> 5] & (1 << (k & 31)));
43 : : }
44 : :
45 : 0 : pa_bool_t pa_bitset_equals(const pa_bitset_t *b, unsigned n, ...) {
46 : : va_list ap;
47 : : pa_bitset_t *a;
48 : : pa_bool_t equal;
49 : :
50 : 0 : a = pa_xnew0(pa_bitset_t, PA_BITSET_ELEMENTS(n));
51 : :
52 : 0 : va_start(ap, n);
53 : : for (;;) {
54 [ # # ]: 0 : int j = va_arg(ap, int);
55 : :
56 [ # # ]: 0 : if (j < 0)
57 : : break;
58 : :
59 : 0 : pa_bitset_set(a, j, TRUE);
60 : 0 : }
61 : 0 : va_end(ap);
62 : :
63 : 0 : equal = memcmp(a, b, PA_BITSET_SIZE(n)) == 0;
64 : 0 : pa_xfree(a);
65 : :
66 : 0 : return equal;
67 : : }
|