示例#1
0
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(" ");
	}
}
示例#2
0
int get_bit(bitarray *arr, int b) { 
  return arr->words[bitindex(b)] >> bitoffset(b)  &  0x1;
}
示例#3
0
void clear_bit(bitarray *arr, int b) { 
    arr->words[bitindex(b)] &= ~(1 << (bitoffset(b)));
}
示例#4
0
void set_bit(bitarray * arr,int b) { 
    arr->words[bitindex(b)] |= 1 << (bitoffset(b)); 
}
示例#5
0
int get_bit(char *arr, int b) { 
  return arr[bitindex(b)] >> bitoffset(b)  &  0x1;
}
示例#6
0
void clear_bit(char *arr, int b) { 
    arr[bitindex(b)] &= ~(1 << (bitoffset(b)));
}
示例#7
0
void set_bit(char * arr,int b) { 
    arr[bitindex(b)] |= 1 << (bitoffset(b)); 
}