Lines Matching defs:bi

338 bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
341 bi->elt1 = map->first;
342 bi->elt2 = NULL;
347 if (!bi->elt1)
349 bi->elt1 = &bitmap_zero_bits;
353 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
355 bi->elt1 = bi->elt1->next;
359 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
360 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
363 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
364 bi->bits = bi->elt1->bits[bi->word_no];
365 bi->bits >>= start_bit % BITMAP_WORD_BITS;
371 start_bit += !bi->bits;
380 bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
383 bi->elt1 = map1->first;
384 bi->elt2 = map2->first;
390 if (!bi->elt1)
392 bi->elt2 = NULL;
396 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
398 bi->elt1 = bi->elt1->next;
404 if (!bi->elt2)
406 bi->elt1 = bi->elt2 = &bitmap_zero_bits;
410 if (bi->elt2->indx >= bi->elt1->indx)
412 bi->elt2 = bi->elt2->next;
416 if (bi->elt1->indx == bi->elt2->indx)
420 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
421 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
423 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
424 bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
425 bi->bits >>= start_bit % BITMAP_WORD_BITS;
431 bi->word_no = BITMAP_ELEMENT_WORDS - 1;
432 bi->bits = 0;
439 start_bit += !bi->bits;
448 bmp_iter_and_compl_init (bitmap_iterator *bi,
452 bi->elt1 = map1->first;
453 bi->elt2 = map2->first;
458 if (!bi->elt1)
460 bi->elt1 = &bitmap_zero_bits;
464 if (bi->elt1->indx >= start_bit / BITMAP_ELEMENT_ALL_BITS)
466 bi->elt1 = bi->elt1->next;
470 while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
471 bi->elt2 = bi->elt2->next;
475 if (bi->elt1->indx != start_bit / BITMAP_ELEMENT_ALL_BITS)
476 start_bit = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
478 bi->word_no = start_bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS;
479 bi->bits = bi->elt1->bits[bi->word_no];
480 if (bi->elt2 && bi->elt1->indx == bi->elt2->indx)
481 bi->bits &= ~bi->elt2->bits[bi->word_no];
482 bi->bits >>= start_bit % BITMAP_WORD_BITS;
488 start_bit += !bi->bits;
497 bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
499 bi->bits >>= 1;
506 bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
510 unsigned int n = __builtin_ctzl (bi->bits);
512 bi->bits >>= n;
516 while (!(bi->bits & 1))
518 bi->bits >>= 1;
529 bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
532 if (bi->bits)
535 bmp_iter_next_bit (bi, bit_no);
544 bi->word_no++;
549 while (bi->word_no != BITMAP_ELEMENT_WORDS)
551 bi->bits = bi->elt1->bits[bi->word_no];
552 if (bi->bits)
555 bi->word_no++;
559 bi->elt1 = bi->elt1->next;
560 if (!bi->elt1)
562 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
563 bi->word_no = 0;
572 bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
575 if (bi->bits)
578 bmp_iter_next_bit (bi, bit_no);
587 bi->word_no++;
592 while (bi->word_no != BITMAP_ELEMENT_WORDS)
594 bi->bits = bi->elt1->bits[bi->word_no] & bi->elt2->bits[bi->word_no];
595 if (bi->bits)
598 bi->word_no++;
608 bi->elt1 = bi->elt1->next;
609 if (!bi->elt1)
612 while (bi->elt1->indx < bi->elt2->indx);
616 while (bi->elt2->indx < bi->elt1->indx)
618 bi->elt2 = bi->elt2->next;
619 if (!bi->elt2)
623 while (bi->elt1->indx != bi->elt2->indx);
625 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
626 bi->word_no = 0;
635 bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
638 if (bi->bits)
641 bmp_iter_next_bit (bi, bit_no);
650 bi->word_no++;
655 while (bi->word_no != BITMAP_ELEMENT_WORDS)
657 bi->bits = bi->elt1->bits[bi->word_no];
658 if (bi->elt2 && bi->elt2->indx == bi->elt1->indx)
659 bi->bits &= ~bi->elt2->bits[bi->word_no];
660 if (bi->bits)
663 bi->word_no++;
667 bi->elt1 = bi->elt1->next;
668 if (!bi->elt1)
672 while (bi->elt2 && bi->elt2->indx < bi->elt1->indx)
673 bi->elt2 = bi->elt2->next;
675 *bit_no = bi->elt1->indx * BITMAP_ELEMENT_ALL_BITS;
676 bi->word_no = 0;