home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / unix / volume24 / yabbawhap / part04 / bitout.h next >
Encoding:
C/C++ Source or Header  |  1991-10-09  |  815 b   |  34 lines

  1. /* Placed into the public domain by Daniel J. Bernstein. */
  2.  
  3. /* This is a bit-output library; sorry for the lack of documentation. */
  4. /* Feel free to use it in other programs requiring fast bit output. */
  5. /* Outside #defines: BITBUFSIZE, TYPE, BRAINDAMAGED. */
  6.  
  7. #ifndef BITOUT_H
  8. #define BITOUT_H
  9.  
  10. #ifndef BITBUFSIZE
  11. #define BITBUFSIZE (1000)
  12. #endif
  13.  
  14. #ifndef TYPE
  15. #define TYPE short
  16. #endif
  17.  
  18. typedef TYPE bitnum; /* must be signed */
  19. typedef unsigned TYPE bitword;
  20.  
  21. extern bitword bit_wbuf[];
  22. extern bitnum bit_bbuf[];
  23. extern int bit_bufsize;
  24. extern int bit_printbuf();
  25. extern int bit_flushbuf();
  26. extern long bit_numout;
  27. extern int bit_fillflush();
  28.  
  29. #define bits_out(n,b) \
  30. ( (bit_wbuf[bit_bufsize] = n), (bit_bbuf[bit_bufsize] = 8 - b), \
  31.   (bit_bufsize++), ((bit_bufsize == BITBUFSIZE) && bit_printbuf()) )
  32.  
  33. #endif
  34.