https://github.com/rootslab/toni
Toni, a simple and efficient bitmap implementation for integer sets, using bitwise operations and a Buffer.
https://github.com/rootslab/toni
bitarray bitmap bitvector bloom-filter buffer nodejs
Last synced: 9 months ago
JSON representation
Toni, a simple and efficient bitmap implementation for integer sets, using bitwise operations and a Buffer.
- Host: GitHub
- URL: https://github.com/rootslab/toni
- Owner: rootslab
- License: mit
- Created: 2014-11-29T23:10:04.000Z (about 11 years ago)
- Default Branch: master
- Last Pushed: 2019-10-10T15:43:15.000Z (over 6 years ago)
- Last Synced: 2025-05-12T23:44:27.298Z (9 months ago)
- Topics: bitarray, bitmap, bitvector, bloom-filter, buffer, nodejs
- Language: JavaScript
- Size: 25.4 KB
- Stars: 1
- Watchers: 1
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: Readme.md
- License: LICENSE
Awesome Lists containing this project
README
### Toni
[](https://www.npmjs.org/package/toni)
[](https://www.codacy.com/public/44gatti/toni)
[](https://codeclimate.com/github/rootslab/toni)
[](https://github.com/rootslab/toni#mit-license)

[](http://travis-ci.org/rootslab/toni)
[](https://david-dm.org/rootslab/toni)
[](https://david-dm.org/rootslab/toni#info=devDependencies)
[](http://npm-stat.com/charts.html?package=toni)

[](https://nodei.co/npm/toni/)
> __Toni__, a simple and efficient bitmap implementation for positive integer sets (max 32 bits),
> with no element repetition, using bitwise operations and a Buffer.
> Modifying a single bit instead of an entire byte, to signal item presence in the current set,
> obviously saves __87.5%__ of Buffer space.
> See [BitArray](http://en.wikipedia.org/wiki/Bit_array).
### Install
```bash
$ npm install toni [-g]
```
> __require__:
```javascript
var Toni = require( 'toni' );
```
### Run Tests
> __to run all test files, install devDependencies:__
```bash
$ cd toni/
# install or update devDependencies
$ npm install
# run tests
$ npm test
```
### Run Benchmarks
> run benchmarks for __Toni__.
```bash
$ cd toni/
$ npm run bench
```
### Constructor
> minimun range is 1 item/bit, max is 2^32 (from 1 to 4 bytes).
```javascript
Toni( Number range )
// or
new Toni( Number range )
```
### Properties
```javascript
/*
* the bitmap buffer.
*/
Toni.bitmap : Buffer
/*
* max range for values (from 0 to range - 1).
*/
Toni.range : Number
/*
* current items in the set.
*/
Toni.items : Number
/*
* a shortcut for the bitmap buffer length.
*/
Toni.bmlen : Number
```
### Methods
> Arguments within [ ] are optional.
```javascript
/*
* Clear the bitmap / set (filling with 0's).
*/
Toni#clear : function () : Toni
/*
* Check for item presence in the set.
* It returns 1 if item is present, 0 otherwise.
*/
Toni#chk : function ( Number value ) : Number
/*
* Add an integer value to the set and test item/value presence in the set.
* When the value is out of range, or if the element is already present, the
* operation fails and it returns -1.
*
*/
Toni#add : function ( Number value ) : Number
/*
* Remove an integer value from the set and test item/value presence in the set.
* When the value is out of range, or if the element is not in the set,
* the operation fails and it returns -1.
*/
Toni#del : function ( Number value ) : Number
/*
* It returns the occurrences of bit 1 until index i, then the total
* number of 0s = index - rank( index ), if index is into the current
* range, otherwise it returns -1
*/
Toni#rank : function ( Number index ) : Number
```
### MIT License
> Copyright (c) 2014-present < Guglielmo Ferri : 44gatti@gmail.com >
> Permission is hereby granted, free of charge, to any person obtaining
> a copy of this software and associated documentation files (the
> 'Software'), to deal in the Software without restriction, including
> without limitation the rights to use, copy, modify, merge, publish,
> distribute, sublicense, and/or sell copies of the Software, and to
> permit persons to whom the Software is furnished to do so, subject to
> the following conditions:
> __The above copyright notice and this permission notice shall be
> included in all copies or substantial portions of the Software.__
> THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
> EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
> MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
> IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
> CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
> TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
> SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.