Copy portion of one bitmap into another bitmap. * * @param dst Destination bitmap. * @param src Source bitmap. * @param count Number of bits to copy. * */
| 220 | * |
| 221 | */ |
| 222 | void bitmap_copy(bitmap_t *dst, bitmap_t *src, size_t count) |
| 223 | { |
| 224 | assert(count <= dst->elements); |
| 225 | assert(count <= src->elements); |
| 226 | |
| 227 | size_t i; |
| 228 | |
| 229 | for (i = 0; i < count / BITMAP_ELEMENT; i++) |
| 230 | dst->bits[i] = src->bits[i]; |
| 231 | |
| 232 | if (count % BITMAP_ELEMENT) { |
| 233 | bitmap_clear_range(dst, i * BITMAP_ELEMENT, |
| 234 | count % BITMAP_ELEMENT); |
| 235 | dst->bits[i] |= src->bits[i] & |
| 236 | ((1 << (count % BITMAP_ELEMENT)) - 1); |
| 237 | } |
| 238 | } |
| 239 | |
| 240 | static int constraint_satisfy(size_t index, size_t base, size_t constraint) |
| 241 | { |
no test coverage detected