6 # include <sys/types.h> 7 typedef __uint64_t
WORD;
12 # include <inttypes.h> 20 # define SET_FILLIDX set_fillidx 21 # define GET_FILLIDX get_fillidx 22 # define FILL_BBUFF fill_bbuff 23 # define SET_EXTRACTIDX set_extractidx 24 # define GET_EXTRACTIDX get_extractidx 25 # define EXTRACT_BBUFF extract_bbuff 27 # define SET_FILLIDX set_fillidx_ 28 # define GET_FILLIDX get_fillidx_ 29 # define FILL_BBUFF fill_bbuff_ 30 # define SET_EXTRACTIDX set_extractidx_ 31 # define GET_EXTRACTIDX get_extractidx_ 32 # define EXTRACT_BBUFF extract_bbuff_ 43 inidx += (*bitoffset/WORDSIZE);
44 inbrem = WORDSIZE - (*bitoffset%WORDSIZE);
49 *bitoffset = WORDSIZE -
inbrem;
82 outidx += (*bitoffset/WORDSIZE);
83 outbrem = WORDSIZE-(*bitoffset%WORDSIZE);
88 *bitoffset = WORDSIZE -
outbrem;
96 *val = (*val << *n) | (unsigned)((buff[outidx]>>
outbrem) & ~(~(
WORD)0 << *
n));
void GET_EXTRACTIDX(unsigned *idx, unsigned *bitoffset)
void GET_FILLIDX(unsigned *idx, unsigned *bitoffset)
void SET_FILLIDX(unsigned *idx, unsigned *bitoffset)
void extract_bbuff_rec(WORD *buff, int *n, unsigned *val)
void SET_EXTRACTIDX(unsigned *idx, unsigned *bitoffset)
void EXTRACT_BBUFF(WORD *buff, int *n, unsigned *val)
void FILL_BBUFF(WORD *out, int *n, unsigned *val)