Add bitset_swap & export it.
This commit is contained in:
1 parent
7b6dd872c6
commit
047a3ac9c1
2 files changed
+24
-1
No files matched your search
+18
-1
@@ -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) \
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user