Skip to content

Commit fb61e6d

Browse files
committed
add double array
1 parent c8f3fe2 commit fb61e6d

File tree

2 files changed

+131
-0
lines changed

2 files changed

+131
-0
lines changed

doublearray/doublearray-tests.ts

+32
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/// <reference path="doublearray.d.ts" />
2+
3+
// https://github.com/takuyaa/doublearray/blob/master/README.md
4+
var words = [
5+
{ k: 'a', v: 1 },
6+
{ k: 'abc', v: 2 },
7+
{ k: '奈良', v: 3 },
8+
{ k: '奈良先端', v: 4 },
9+
{ k: '奈良先端科学技術大学院大学', v: 5 }
10+
];
11+
12+
var trie = doublearray.builder().build(words);
13+
14+
var trie = doublearray
15+
.builder()
16+
.append('a', 1)
17+
.append('abc', 2)
18+
.append('奈良', 3)
19+
.append('奈良先端', 4)
20+
.append('奈良先端科学技術大学院大学', 5)
21+
.build();
22+
23+
trie.contain('a');
24+
25+
trie.lookup('abc');
26+
27+
trie.commonPrefixSearch('奈良先端科学技術大学院大学');
28+
29+
var base_buffer: Int32Array = trie.bc.getBaseBuffer();
30+
var check_buffer: Int32Array = trie.bc.getCheckBuffer();
31+
32+
var loaded_trie = doublearray.load(base_buffer, check_buffer);

doublearray/doublearray.d.ts

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
// Type definitions for doublearray
2+
// Project: https://github.com/takuyaa/doublearray
3+
// Definitions by: MIZUSHIMA Junki <https://github.com/mzsm>
4+
// Definitions: https://github.com/borisyankov/DefinitelyTyped
5+
6+
declare module doublearray {
7+
interface KeyValue {
8+
k: string;
9+
v: number;
10+
}
11+
12+
interface BaseAndCheck {
13+
getBaseBuffer(): any; // Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array
14+
getCheckBuffer(): any; // Int8Array | Int16Array | Int32Array | Uint8Array | Uint16Array | Uint32Array
15+
loadBaseBuffer(base_buffer: Int8Array): BaseAndCheck;
16+
loadBaseBuffer(base_buffer: Int16Array): BaseAndCheck;
17+
loadBaseBuffer(base_buffer: Int32Array): BaseAndCheck;
18+
loadBaseBuffer(base_buffer: Uint8Array): BaseAndCheck;
19+
loadBaseBuffer(base_buffer: Uint16Array): BaseAndCheck;
20+
loadBaseBuffer(base_buffer: Uint32Array): BaseAndCheck;
21+
loadCheckBuffer(check_buffer: Int8Array): BaseAndCheck;
22+
loadCheckBuffer(check_buffer: Int16Array): BaseAndCheck;
23+
loadCheckBuffer(check_buffer: Int32Array): BaseAndCheck;
24+
loadCheckBuffer(check_buffer: Uint8Array): BaseAndCheck;
25+
loadCheckBuffer(check_buffer: Uint16Array): BaseAndCheck;
26+
loadCheckBuffer(check_buffer: Uint32Array): BaseAndCheck;
27+
size(): number;
28+
getBase(): number;
29+
getCheck(): number;
30+
setBase(index: number, base_value: number): void;
31+
setCheck(index: number, check_value: number): void;
32+
setFirstUnusedNode(index: number): void;
33+
getFirstUnusedNode(): number;
34+
shrink(): void;
35+
calc(): {all: number; unused: number; efficiency: number};
36+
dump(): string;
37+
}
38+
39+
interface DoubleArrayBuilder {
40+
bc: BaseAndCheck;
41+
keys: KeyValue[];
42+
append(key: string, record: number): DoubleArrayBuilder;
43+
build(keys?: KeyValue[], sorted?: boolean): DoubleArray;
44+
getChildrenInfo(position: number, start: number, length: number): Int32Array;
45+
setBC(parent_id: number, children_info: Int32Array, _base: number): void;
46+
findAllocatableBase(children_info: Int32Array): number;
47+
isUnusedNode(index: number): boolean;
48+
}
49+
50+
interface DoubleArray {
51+
bc: BaseAndCheck;
52+
contain(key: string): boolean;
53+
lookup(key: string): number;
54+
commonPrefixSearch(key: string): KeyValue;
55+
traverse(parent: number, code: number): number;
56+
size(): number;
57+
calc(): {all: number; unused: number; efficiency: number};
58+
dump(): string;
59+
}
60+
61+
export function builder(initial_size?: number): DoubleArrayBuilder;
62+
// TODO: Replace to union types in the future.
63+
export function load(base_buffer: Int8Array, check_buffer: Int8Array): DoubleArray;
64+
export function load(base_buffer: Int8Array, check_buffer: Int16Array): DoubleArray;
65+
export function load(base_buffer: Int8Array, check_buffer: Int32Array): DoubleArray;
66+
export function load(base_buffer: Int8Array, check_buffer: Uint8Array): DoubleArray;
67+
export function load(base_buffer: Int8Array, check_buffer: Uint16Array): DoubleArray;
68+
export function load(base_buffer: Int8Array, check_buffer: Uint32Array): DoubleArray;
69+
export function load(base_buffer: Int16Array, check_buffer: Int8Array): DoubleArray;
70+
export function load(base_buffer: Int16Array, check_buffer: Int16Array): DoubleArray;
71+
export function load(base_buffer: Int16Array, check_buffer: Int32Array): DoubleArray;
72+
export function load(base_buffer: Int16Array, check_buffer: Uint8Array): DoubleArray;
73+
export function load(base_buffer: Int16Array, check_buffer: Uint16Array): DoubleArray;
74+
export function load(base_buffer: Int16Array, check_buffer: Uint32Array): DoubleArray;
75+
export function load(base_buffer: Int32Array, check_buffer: Int8Array): DoubleArray;
76+
export function load(base_buffer: Int32Array, check_buffer: Int16Array): DoubleArray;
77+
export function load(base_buffer: Int32Array, check_buffer: Int32Array): DoubleArray;
78+
export function load(base_buffer: Int32Array, check_buffer: Uint8Array): DoubleArray;
79+
export function load(base_buffer: Int32Array, check_buffer: Uint16Array): DoubleArray;
80+
export function load(base_buffer: Int32Array, check_buffer: Uint32Array): DoubleArray;
81+
export function load(base_buffer: Uint8Array, check_buffer: Int8Array): DoubleArray;
82+
export function load(base_buffer: Uint8Array, check_buffer: Int16Array): DoubleArray;
83+
export function load(base_buffer: Uint8Array, check_buffer: Int32Array): DoubleArray;
84+
export function load(base_buffer: Uint8Array, check_buffer: Uint8Array): DoubleArray;
85+
export function load(base_buffer: Uint8Array, check_buffer: Uint16Array): DoubleArray;
86+
export function load(base_buffer: Uint8Array, check_buffer: Uint32Array): DoubleArray;
87+
export function load(base_buffer: Uint16Array, check_buffer: Int8Array): DoubleArray;
88+
export function load(base_buffer: Uint16Array, check_buffer: Int16Array): DoubleArray;
89+
export function load(base_buffer: Uint16Array, check_buffer: Int32Array): DoubleArray;
90+
export function load(base_buffer: Uint16Array, check_buffer: Uint8Array): DoubleArray;
91+
export function load(base_buffer: Uint16Array, check_buffer: Uint16Array): DoubleArray;
92+
export function load(base_buffer: Uint16Array, check_buffer: Uint32Array): DoubleArray;
93+
export function load(base_buffer: Uint32Array, check_buffer: Int8Array): DoubleArray;
94+
export function load(base_buffer: Uint32Array, check_buffer: Int16Array): DoubleArray;
95+
export function load(base_buffer: Uint32Array, check_buffer: Int32Array): DoubleArray;
96+
export function load(base_buffer: Uint32Array, check_buffer: Uint8Array): DoubleArray;
97+
export function load(base_buffer: Uint32Array, check_buffer: Uint16Array): DoubleArray;
98+
export function load(base_buffer: Uint32Array, check_buffer: Uint32Array): DoubleArray;
99+
}

0 commit comments

Comments
 (0)