A simple, efficient, and easy-to-use Node.js module for working with individual bits.
npm i --save bitball
'use strict'
var bitball
var flagSet
bitball = require('bitball')
flagSet = new bitball.BitSet(18) // Defaults to 8 bits if a size isn't provided.
console.log('flagSet{0}: ' + ((flagSet.get(0) === true) ? '1' : '0'))
console.log('flagSet{17}: ' + ((flagSet.get(17) === true) ? '1' : '0'))
flagSet.set(17, true)
console.log('flagSet{17}: ' + ((flagSet.get(17) === true) ? '1' : '0'))
flagSet.flip(17)
console.log('flagSet{17}: ' + ((flagSet.get(17) === true) ? '1' : '0'))
// Take a look at the tests.
Constructs a new BitSet
object to hold your fancy bits. Allocates as few bytes as possible. numberOfBits
defaults to 8
bits.
Flips the bit at bitIndex
.
The allowIndexOverflow
boolean allows you to control what happens if bitIndex
is bigger than the number of bits you specified during construction.
- If
allowIndexOverflow
istrue
, then.flip(...)
will fail silently. - If
allowIndexOverflow
isfalse
, then an exception will be thrown.
Gets the value of the bit at bitIndex
.
The dontThrow
boolean allows you to control what happens if bitIndex
is bigger than the number of bits you specified during construction.
- If
dontThrow
istrue
, then.get(...)
will returnnull
. - If
dontThrow
isfalse
, then an exception will be thrown.
Resizes the BitSet
as necessary to make sure it can hold numberOfBits
bits.
bitball.BitSet.prototype.set(bitIndex : Number, bitValue : Boolean, forceResize : Boolean) -> undefined
Sets the value of the bit at bitIndex
to bitValue
.
The forceResize
boolean allows you to control what happens if bitIndex
is bigger than the number of bits you specified during construction.
- If
forceResize
istrue
, then.set(...)
will call.resize(bitIndex + 1)
. - If
forceResize
isfalse
, then an exception will be thrown.
Returns the number of bits this BitSet
object can hold (i.e., the biggest index + 1).
npm test
Jonathan Barronville <[email protected]>
Copyright 2015 Jonathan Barronville <[email protected]>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.