コード例 #1
0
unsigned int bitarray_firstclear_skip (register unsigned char const *s, unsigned int max, unsigned int skip)
{
  register unsigned int i = bitarray_div8(skip) ;
  register unsigned int j = i << 3 > max ? max : i << 3 ;
  if (i && s[i-1] != 0xffU)
  {
    while ((skip < j) && bitarray_peek(s, skip)) skip++ ;
    if (skip < j) return skip ;
  }
  return j + bitarray_firstclear(s + i, max - j) ;
}
コード例 #2
0
ファイル: gensetdyn_new.c プロジェクト: rlonstein/skalibs
int gensetdyn_new (gensetdyn_ref g, unsigned int *i)
{
  register unsigned int r ;
  if (g->bits.len < g->storage.len)
    r = bitarray_firstclear((unsigned char *)g->bits.s, g->storage.len) ;
  else
  {
    if (!gensetdyn_readyplus(g, 1)) return 0 ;
    r = g->storage.len++ ;
  }
  g->bits.len++ ; bitarray_set((unsigned char *)g->bits.s, r) ;
  *i = r ;
  return 1 ;
}