void print_sarray( void *obj, int bit, int count, int size, int base, int array, const field_t *flds, int skipnms) { int bitoff; const field_t *f; const ftattr_t *fa; int first; int i; ASSERT(bitoffs(bit) == 0); if (skipnms == 0) { for (f = flds, first = 1; f->name; f++) { if (f->flags & FLD_SKIPALL) continue; dbprintf("%c%s", first ? '[' : ',', f->name); first = 0; } dbprintf("] "); } for (i = 0, bitoff = bit; i < count && !seenint(); i++, bitoff += size) { if (array) dbprintf("%d:", i + base); for (f = flds, first = 1; f->name; f++) { if (f->flags & FLD_SKIPALL) continue; fa = &ftattrtab[f->ftyp]; ASSERT(fa->ftyp == f->ftyp); dbprintf("%c", first ? '[' : ','); first = 0; if (fa->prfunc) fa->prfunc(obj, bitoff + bitoffset(f, obj, bitoff, i + base), fcount(f, obj, bitoff), fa->fmtstr, fsize(f, obj, bitoff, i + base), fa->arg, (f->flags & FLD_ABASE1) != 0, f->flags & FLD_ARRAY); else { ASSERT(fa->arg & FTARG_OKEMPTY); dbprintf(_("(empty)")); } } dbprintf("]"); if (i < count - 1) dbprintf(" "); } }
int get_bit(bitarray *arr, int b) { return arr->words[bitindex(b)] >> bitoffset(b) & 0x1; }
void clear_bit(bitarray *arr, int b) { arr->words[bitindex(b)] &= ~(1 << (bitoffset(b))); }
void set_bit(bitarray * arr,int b) { arr->words[bitindex(b)] |= 1 << (bitoffset(b)); }
int get_bit(char *arr, int b) { return arr[bitindex(b)] >> bitoffset(b) & 0x1; }
void clear_bit(char *arr, int b) { arr[bitindex(b)] &= ~(1 << (bitoffset(b))); }
void set_bit(char * arr,int b) { arr[bitindex(b)] |= 1 << (bitoffset(b)); }