Plan 9 from Bell Labs’s /usr/web/sources/contrib/fernan/nhc98/src/prelude/Binary/GetBits_.p.c

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


#include <haskell2c.h>
#include "cLowBinary.h"

int hs_getBits (BinHandle bh,int width)
{ unsigned value;
  
   value = 0;
   while (width > 0) {
     int byte  = bh->cptr / 8;
     int avail = 8 - (bh->cptr % 8);
     if (width >= avail) {
       value = (value<<avail)
             | rhs(avail,bh->cache[byte]);
       bh->cptr += avail;
       width    -= avail;
       if ((byte+1) == CACHESIZE) nextcache(bh);
     } else {
       value = (value<<width)
             | (rhs(avail,bh->cache[byte]) >> (avail-width));
       bh->cptr += width;
       width     = 0;
     }
   }
  return value;
}

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to webmaster@9p.io.