binaryarray
Advanced tools
| export declare class BinaryArray { | ||
| maxnum: number; | ||
| storage: Uint32Array; | ||
| readonly maxnum: number; | ||
| readonly storage: Uint32Array; | ||
| constructor(maxnum: number); | ||
@@ -15,2 +15,3 @@ bitOn(no: number): BinaryArray; | ||
| toHexString(): string; | ||
| clone(): BinaryArray; | ||
| static loadFromHexString(maxnum: number, str: string): BinaryArray; | ||
@@ -17,0 +18,0 @@ static loadFromArray(xs: Array<number>): BinaryArray; |
@@ -50,4 +50,3 @@ "use strict"; | ||
| return Object.keys(spec) | ||
| .filter(function (k) { return w[spec[k]]; }) | ||
| .map(function (k) { return k; }); | ||
| .filter(function (k) { return w[spec[k]]; }); | ||
| }; | ||
@@ -93,2 +92,5 @@ BinaryArray.prototype.toJSON = function () { | ||
| }; | ||
| BinaryArray.prototype.clone = function () { | ||
| return BinaryArray.loadFromArray(this.toArray()); | ||
| }; | ||
| BinaryArray.loadFromHexString = function (maxnum, str) { | ||
@@ -95,0 +97,0 @@ var ba = new BinaryArray(maxnum); |
| "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| var assert = require("assert"); | ||
| var BinaryArray = require(".."); | ||
| var binaryarray_1 = require("../lib/binaryarray"); | ||
| var util_1 = require("../lib/util"); | ||
@@ -10,3 +10,3 @@ describe('test', function () { | ||
| function () { | ||
| var ba = new BinaryArray(0); | ||
| var ba = new binaryarray_1.BinaryArray(0); | ||
| assert(ba.maxnum === 0); | ||
@@ -16,3 +16,3 @@ assert(ba.storage.length === 0); | ||
| function () { | ||
| var ba = new BinaryArray(1); | ||
| var ba = new binaryarray_1.BinaryArray(1); | ||
| assert(ba.maxnum === 1); | ||
@@ -22,3 +22,3 @@ assert(ba.storage.length === 1); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| assert(ba.maxnum === 32); | ||
@@ -28,3 +28,3 @@ assert(ba.storage.length === 1); | ||
| function () { | ||
| var ba = new BinaryArray(33); | ||
| var ba = new binaryarray_1.BinaryArray(33); | ||
| assert(ba.maxnum === 33); | ||
@@ -34,3 +34,3 @@ assert(ba.storage.length === 2); | ||
| function () { | ||
| var ba = new BinaryArray(64); | ||
| var ba = new binaryarray_1.BinaryArray(64); | ||
| assert(ba.maxnum === 64); | ||
@@ -40,3 +40,3 @@ assert(ba.storage.length === 2); | ||
| function () { | ||
| var ba = new BinaryArray(65); | ||
| var ba = new binaryarray_1.BinaryArray(65); | ||
| assert(ba.maxnum === 65); | ||
@@ -50,7 +50,7 @@ assert(ba.storage.length === 3); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| assert(ba.storage[0] === 0x00000000); | ||
| }, | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.bitOn(0); | ||
@@ -61,3 +61,3 @@ assert(ba.storage[0] === 0x00000001); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.bitOn(0); | ||
@@ -70,3 +70,3 @@ ba.bitOn(1); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.bitOn(0); | ||
@@ -81,3 +81,3 @@ ba.bitOn(1); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.bitOn(31); | ||
@@ -88,3 +88,3 @@ assert(ba.storage[0] === 0x80000000); | ||
| function () { | ||
| var ba = new BinaryArray(33); | ||
| var ba = new binaryarray_1.BinaryArray(33); | ||
| ba.bitOn(32); | ||
@@ -97,3 +97,3 @@ assert(ba.storage[0] === 0x00000000); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.bitOn(0); | ||
@@ -109,3 +109,3 @@ assert(ba.storage[0] === 0x00000001); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.storage[0] = 0xffffffff; | ||
@@ -118,3 +118,3 @@ ba.bitOff(0); | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.storage[0] = 0xffffffff; | ||
@@ -128,3 +128,3 @@ ba.bitOff(31); | ||
| function () { | ||
| var ba = new BinaryArray(64); | ||
| var ba = new binaryarray_1.BinaryArray(64); | ||
| ba.storage[0] = 0xffffffff; | ||
@@ -140,3 +140,3 @@ ba.storage[1] = 0xffffffff; | ||
| function () { | ||
| var ba = new BinaryArray(32); | ||
| var ba = new binaryarray_1.BinaryArray(32); | ||
| ba.storage[0] = 0xfffffffe; | ||
@@ -154,3 +154,3 @@ ba.bitOff(0); | ||
| var input = [1, 1, 1, 1, 1, 1, 1, 1]; | ||
| var ba = BinaryArray.loadFromArray(input); | ||
| var ba = binaryarray_1.BinaryArray.loadFromArray(input); | ||
| assert(ba.maxnum === 8); | ||
@@ -169,3 +169,3 @@ assert(ba.storage[0] === 0x000000ff); | ||
| ]; | ||
| var ba = BinaryArray.loadFromArray(input); | ||
| var ba = binaryarray_1.BinaryArray.loadFromArray(input); | ||
| assert(ba.maxnum === input.length); | ||
@@ -188,3 +188,3 @@ assert(ba.storage[0] === 0xffffffff); | ||
| var SPEC_MAX = util_1.getSpecMax(SPEC); | ||
| var ba = BinaryArray.deserialize(input, SPEC, SPEC_MAX); | ||
| var ba = binaryarray_1.BinaryArray.deserialize(input, SPEC, SPEC_MAX); | ||
| assert(ba.maxnum === SPEC_MAX); | ||
@@ -207,3 +207,3 @@ assert(ba.storage[0] === 0x00000003); | ||
| ]; | ||
| var ba = BinaryArray.loadFromArray(input); | ||
| var ba = binaryarray_1.BinaryArray.loadFromArray(input); | ||
| assert(ba.toHexString() === 'FFFFFFFF'); | ||
@@ -222,7 +222,7 @@ }, | ||
| ]; | ||
| var ba = BinaryArray.loadFromArray(input); | ||
| var ba = binaryarray_1.BinaryArray.loadFromArray(input); | ||
| assert(ba.toHexString() === '0040201008040201'); | ||
| }, | ||
| function () { | ||
| var ba = BinaryArray.loadFromHexString(32, 'FFFFFFFF'); | ||
| var ba = binaryarray_1.BinaryArray.loadFromHexString(32, 'FFFFFFFF'); | ||
| assert(ba.toHexString() === 'FFFFFFFF'); | ||
@@ -232,3 +232,3 @@ }, | ||
| var input = [1, 0, 1, 0, 1, 0, 1]; | ||
| var ba = BinaryArray.loadFromArray(input); | ||
| var ba = binaryarray_1.BinaryArray.loadFromArray(input); | ||
| var json = ba.toJSON(); | ||
@@ -242,3 +242,3 @@ assert(json === JSON.stringify(input)); | ||
| function () { | ||
| var ba = new BinaryArray(1024); | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| [0, 1, 2, 3, 4, 5, 10].forEach(function (v) { ba.bitOn(v); }); | ||
@@ -250,3 +250,3 @@ assert(ba.check([0, 1, 2, 3, 4, 5])); | ||
| function () { | ||
| var ba = new BinaryArray(1024); | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| ba.bitOn(3); | ||
@@ -258,3 +258,3 @@ var obj = ba.rangeOf([0, 1, 2, 3, 4, 5]); | ||
| function () { | ||
| var ba = new BinaryArray(1024); | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| ba.bitOn(3); | ||
@@ -266,3 +266,3 @@ var obj = ba.rangeOf(3); | ||
| var flag = 1; | ||
| var ba = new BinaryArray(1024); | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| ba.bitOn(3); | ||
@@ -278,3 +278,35 @@ try { | ||
| function () { | ||
| var ba = new BinaryArray(1024); | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| ba.bitOn(3); | ||
| var ba2 = ba.clone(); | ||
| assert(ba2.at(3)); | ||
| }, | ||
| function () { | ||
| var EVENT_CLEAR; | ||
| (function (EVENT_CLEAR) { | ||
| EVENT_CLEAR[EVENT_CLEAR["TUTORIAL"] = 0] = "TUTORIAL"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST1"] = 1] = "QUEST1"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST2"] = 2] = "QUEST2"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST3"] = 3] = "QUEST3"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST4"] = 4] = "QUEST4"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST5"] = 5] = "QUEST5"; | ||
| EVENT_CLEAR[EVENT_CLEAR["QUEST6"] = 6] = "QUEST6"; | ||
| EVENT_CLEAR[EVENT_CLEAR["LASTBOSS"] = 7] = "LASTBOSS"; | ||
| EVENT_CLEAR[EVENT_CLEAR["_SIZEOF"] = 8] = "_SIZEOF"; | ||
| })(EVENT_CLEAR || (EVENT_CLEAR = {})); | ||
| var ba = new binaryarray_1.BinaryArray(EVENT_CLEAR._SIZEOF); | ||
| assert(ba.maxnum === EVENT_CLEAR._SIZEOF); | ||
| ba.bitOn(EVENT_CLEAR.TUTORIAL); | ||
| ba.bitOn(EVENT_CLEAR.QUEST1); | ||
| ba.bitOn(EVENT_CLEAR.QUEST4); | ||
| assert(ba.at(EVENT_CLEAR.TUTORIAL)); | ||
| assert(ba.at(EVENT_CLEAR.QUEST1)); | ||
| assert(ba.at(EVENT_CLEAR.QUEST4)); | ||
| assert(!ba.at(EVENT_CLEAR.LASTBOSS)); | ||
| var output = ba.serialize(EVENT_CLEAR); | ||
| var ba2 = binaryarray_1.BinaryArray.deserialize(output, EVENT_CLEAR, EVENT_CLEAR._SIZEOF); | ||
| assert(JSON.stringify(output) === JSON.stringify(ba2.serialize(EVENT_CLEAR))); | ||
| }, | ||
| function () { | ||
| var ba = new binaryarray_1.BinaryArray(1024); | ||
| assert(ba.isRange(1023)); | ||
@@ -281,0 +313,0 @@ assert(!ba.isRange(1024)); |
+7
-7
| { | ||
| "name": "binaryarray", | ||
| "version": "0.1.1", | ||
| "version": "0.1.2", | ||
| "description": "the binary array", | ||
@@ -24,8 +24,8 @@ "main": "dist/index.js", | ||
| "devDependencies": { | ||
| "@types/node": "", | ||
| "@types/mocha": "", | ||
| "typescript": "", | ||
| "istanbul": "", | ||
| "coveralls": "", | ||
| "mocha": "" | ||
| "@types/node": "^9.6.0", | ||
| "@types/mocha": "^5.0.0", | ||
| "typescript": "^2.8.0", | ||
| "istanbul": "^0.4.5", | ||
| "coveralls": "^3.0.0", | ||
| "mocha": "^5.0.5" | ||
| }, | ||
@@ -32,0 +32,0 @@ "scripts": { |
+11
-13
@@ -69,18 +69,16 @@ # binaryarray | ||
| import BinaryArray = require('binaryarray') | ||
| import {getSpecMax} from 'binaryarray/dist/lib/util'; | ||
| const EVENT_CLEAR = { | ||
| TUTORIAL : 0, | ||
| QUEST1 : 1, | ||
| QUEST2 : 2, | ||
| QUEST3 : 3, | ||
| QUEST4 : 4, | ||
| QUEST5 : 5, | ||
| QUEST6 : 6, | ||
| LASTBOSS : 7, | ||
| enum EVENT_CLEAR { | ||
| TUTORIAL, | ||
| QUEST1, | ||
| QUEST2, | ||
| QUEST3, | ||
| QUEST4, | ||
| QUEST5, | ||
| QUEST6, | ||
| LASTBOSS, | ||
| _SIZEOF | ||
| } | ||
| const EVENT_CLEAR_MAX = getSpecMax(EVENT_CLEAR); | ||
| const ba = new BinaryArray(EVENT_CLEAR._SIZEOF) | ||
| const ba = new BinaryArray(EVENT_CLEAR_MAX) | ||
| ba.bitOn(EVENT_CLEAR.TUTORIAL); | ||
@@ -87,0 +85,0 @@ ba.bitOn(EVENT_CLEAR.QUEST1); |
@@ -1,7 +0,7 @@ | ||
| import assert = require('assert'); | ||
| import util = require('./util'); | ||
| import * as assert from 'assert'; | ||
| import * as util from './util'; | ||
| export class BinaryArray{ | ||
| maxnum: number; | ||
| storage: Uint32Array; | ||
| readonly maxnum: number; | ||
| readonly storage: Uint32Array; | ||
| constructor(maxnum : number){ | ||
@@ -40,3 +40,3 @@ this.maxnum = maxnum | ||
| toArray() : Array<number>{ | ||
| const w = []; | ||
| const w : Array<number> = []; | ||
| const max = this.maxnum; | ||
@@ -53,3 +53,2 @@ for(let i = 0; i < max; ++i ){ | ||
| .filter((k) => w[spec[k]]) | ||
| .map((k) => k) | ||
| } | ||
@@ -88,3 +87,3 @@ toJSON() : string{ | ||
| const n = this.storage.length; | ||
| for(let i=n-1;i>=0;--i){ | ||
| for(let i = n - 1; i >= 0; --i){ | ||
| str = str + util.NumberToHexString(this.storage[i], 8); | ||
@@ -94,2 +93,5 @@ } | ||
| } | ||
| clone() : BinaryArray{ | ||
| return BinaryArray.loadFromArray(this.toArray()); | ||
| } | ||
| static loadFromHexString(maxnum : number, str : string) : BinaryArray{ | ||
@@ -96,0 +98,0 @@ const ba = new BinaryArray(maxnum); |
+2
-2
@@ -7,3 +7,3 @@ | ||
| export const getArraySize = (flagmax : number) : number => { | ||
| return Math.ceil(flagmax/BITS); | ||
| return Math.ceil(flagmax / BITS); | ||
| } | ||
@@ -13,3 +13,3 @@ | ||
| export const getArrayIndex = (no : number) : number => { | ||
| return Math.floor(no/BITS); | ||
| return Math.floor(no / BITS); | ||
| } | ||
@@ -16,0 +16,0 @@ |
@@ -1,3 +0,3 @@ | ||
| import assert = require('assert'); | ||
| import BinaryArray = require('..'); | ||
| import * as assert from 'assert' | ||
| import {BinaryArray} from '../lib/binaryarray' | ||
| import {getSpecMax} from "../lib/util" | ||
@@ -243,2 +243,33 @@ | ||
| const ba = new BinaryArray(1024); | ||
| ba.bitOn(3); | ||
| const ba2 = ba.clone() | ||
| assert(ba2.at(3)) | ||
| }, | ||
| ()=>{ | ||
| enum EVENT_CLEAR { | ||
| TUTORIAL, | ||
| QUEST1, | ||
| QUEST2, | ||
| QUEST3, | ||
| QUEST4, | ||
| QUEST5, | ||
| QUEST6, | ||
| LASTBOSS, | ||
| _SIZEOF | ||
| } | ||
| const ba = new BinaryArray(EVENT_CLEAR._SIZEOF) | ||
| assert(ba.maxnum === EVENT_CLEAR._SIZEOF) | ||
| ba.bitOn(EVENT_CLEAR.TUTORIAL); | ||
| ba.bitOn(EVENT_CLEAR.QUEST1); | ||
| ba.bitOn(EVENT_CLEAR.QUEST4); | ||
| assert(ba.at(EVENT_CLEAR.TUTORIAL)) | ||
| assert(ba.at(EVENT_CLEAR.QUEST1)) | ||
| assert(ba.at(EVENT_CLEAR.QUEST4)) | ||
| assert(!ba.at(EVENT_CLEAR.LASTBOSS)) | ||
| const output = ba.serialize(EVENT_CLEAR); | ||
| const ba2 = BinaryArray.deserialize(output, EVENT_CLEAR, EVENT_CLEAR._SIZEOF) | ||
| assert(JSON.stringify(output) === JSON.stringify(ba2.serialize(EVENT_CLEAR))) | ||
| }, | ||
| ()=>{ | ||
| const ba = new BinaryArray(1024); | ||
| assert(ba.isRange(1023)); | ||
@@ -245,0 +276,0 @@ assert(!ba.isRange(1024)); |
43439
8.63%1138
6.36%150
-1.32%