/* $Header: bits.h,v 4.3.1.2 86/11/03 09:49:58 lwall Exp $ * * $Log: bits.h,v $ * Revision 4.3.1.2 86/11/03 09:49:58 lwall * Added firstbit variable. * * Revision 4.3.1.1 85/05/10 11:31:52 lwall * Branch for patches. * * Revision 4.3 85/05/01 11:36:39 lwall * Baseline for release with 4.3bsd. * */ EXT char *ctlarea INIT(Nullch); /* one bit for each article in current newsgroup */ /* with the following interpretation: */ /* 0 => unread */ /* 1 => read */ /* if subscripting is faster than shifting on your machine, define this */ #undef USESUBSCRIPT #ifdef USESUBSCRIPT EXT char powerof2[] INIT({1,2,4,8,16,32,64,128}); #define pow2(x) powerof2[x] #else #define pow2(x) (1 << (x)) #endif #ifdef lint EXT bool nonesuch INIT(FALSE); #define ctl_set(a) #define ctl_clear(a) #define ctl_read(a) nonesuch #define was_read(a) nonesuch #else #define ctl_set(a) (ctlarea[(OFFSET(a)) / BITSPERBYTE] |= pow2((OFFSET(a)) % BITSPERBYTE)) #define ctl_clear(a) (ctlarea[(OFFSET(a)) / BITSPERBYTE] &= ~pow2((OFFSET(a)) % BITSPERBYTE)) #define ctl_read(a) ((ctlarea[(OFFSET(a)) / BITSPERBYTE] & pow2((OFFSET(a)) % BITSPERBYTE)) != 0) #define was_read(a) ((a)