Add bitset_swap & export it.

This commit is contained in:
Patrick Pelissier committed 2017-03-14 20:27:45 +01:00
1 parent 7b6dd872c6
commit 047a3ac9c1
2 files changed
+24 -1

No files matched your search

+18 -1
View File
@@ -239,7 +239,7 @@ bitset_capacity(bitset_t v)
}
static inline void
bitset_swap (bitset_t v, size_t i, size_t j)
bitset_swap_at (bitset_t v, size_t i, size_t j)
{
BITSETI_CONTRACT (v);
assert (i < v->size && j < v->size);
@@ -250,6 +250,22 @@ bitset_swap (bitset_t v, size_t i, size_t j)
BITSETI_CONTRACT (v);
}
static inline void
bitset_swap (bitset_t v1, bitset_t v2)
{
BITSETI_CONTRACT (v1);
BITSETI_CONTRACT (v2);
size_t tmp = v1->size;
v1->size = v2->size;
v2->size = tmp;
tmp = v1->alloc;
v1->alloc = v2->alloc;
v2->alloc = tmp;
bitset_limb *p = v1->ptr;
v1->ptr = v2->ptr;
v2->ptr = p;
}
static inline bitset_limb
bitseti_lshift(bitset_limb ptr[], size_t n, bitset_limb carry)
{
@@ -582,6 +598,7 @@ bitset_hash(const bitset_t dest)
,CLEAR(bitset_clear) \
,INIT_MOVE(bitset_init_move) \
,MOVE(bitset_move) \
,SWAP(bitset_swap) \
,TYPE(bitset_t) \
,SUBTYPE(bool) \
,IT_TYPE(bitset_it_t) \
+6
View File
@@ -112,6 +112,12 @@ static void test1(void)
n++;
}
#endif
assert(bitset_size(set2) == 50);
assert(bitset_size(set) == 200);
bitset_swap (set, set2);
assert(bitset_size(set) == 50);
assert(bitset_size(set2) == 200);
bitset_clear(set);
bitset_clear(set2);