@maplibre/mlt 0.0.1-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/encodings/decodingUtils.d.ts +13 -0
- package/dist/encodings/decodingUtils.js +194 -0
- package/dist/encodings/decodingUtils.js.map +1 -0
- package/dist/encodings/doubleDecoder.d.ts +4 -0
- package/dist/encodings/doubleDecoder.js +22 -0
- package/dist/encodings/doubleDecoder.js.map +1 -0
- package/dist/encodings/fastpfor/bitpacking.d.ts +51 -0
- package/dist/encodings/fastpfor/bitpacking.js +4444 -0
- package/dist/encodings/fastpfor/bitpacking.js.map +1 -0
- package/dist/encodings/fastpfor/codec.d.ts +19 -0
- package/dist/encodings/fastpfor/codec.js +3 -0
- package/dist/encodings/fastpfor/codec.js.map +1 -0
- package/dist/encodings/fastpfor/fastpfor.d.ts +38 -0
- package/dist/encodings/fastpfor/fastpfor.js +123 -0
- package/dist/encodings/fastpfor/fastpfor.js.map +1 -0
- package/dist/encodings/fastpfor/index.d.ts +20 -0
- package/dist/encodings/fastpfor/index.js +47 -0
- package/dist/encodings/fastpfor/index.js.map +1 -0
- package/dist/encodings/fastpfor/util.d.ts +2 -0
- package/dist/encodings/fastpfor/util.js +16 -0
- package/dist/encodings/fastpfor/util.js.map +1 -0
- package/dist/encodings/fastpfor/varint.d.ts +18 -0
- package/dist/encodings/fastpfor/varint.js +125 -0
- package/dist/encodings/fastpfor/varint.js.map +1 -0
- package/dist/encodings/fsstDecoder.d.ts +9 -0
- package/dist/encodings/fsstDecoder.js +34 -0
- package/dist/encodings/fsstDecoder.js.map +1 -0
- package/dist/encodings/geometryDecoder.d.ts +5 -0
- package/dist/encodings/geometryDecoder.js +453 -0
- package/dist/encodings/geometryDecoder.js.map +1 -0
- package/dist/encodings/geometryScaling.d.ts +6 -0
- package/dist/encodings/geometryScaling.js +3 -0
- package/dist/encodings/geometryScaling.js.map +1 -0
- package/dist/encodings/intWrapper.d.ts +8 -0
- package/dist/encodings/intWrapper.js +22 -0
- package/dist/encodings/intWrapper.js.map +1 -0
- package/dist/encodings/integerDecodingUtils.d.ts +46 -0
- package/dist/encodings/integerDecodingUtils.js +703 -0
- package/dist/encodings/integerDecodingUtils.js.map +1 -0
- package/dist/encodings/integerStreamDecoder.d.ts +26 -0
- package/dist/encodings/integerStreamDecoder.js +254 -0
- package/dist/encodings/integerStreamDecoder.js.map +1 -0
- package/dist/encodings/propertyDecoder.d.ts +4 -0
- package/dist/encodings/propertyDecoder.js +194 -0
- package/dist/encodings/propertyDecoder.js.map +1 -0
- package/dist/encodings/stringDecoder.d.ts +11 -0
- package/dist/encodings/stringDecoder.js +148 -0
- package/dist/encodings/stringDecoder.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata/tile/dictionaryType.d.ts +8 -0
- package/dist/metadata/tile/dictionaryType.js +13 -0
- package/dist/metadata/tile/dictionaryType.js.map +1 -0
- package/dist/metadata/tile/lengthType.d.ts +9 -0
- package/dist/metadata/tile/lengthType.js +14 -0
- package/dist/metadata/tile/lengthType.js.map +1 -0
- package/dist/metadata/tile/logicalLevelTechnique.d.ts +8 -0
- package/dist/metadata/tile/logicalLevelTechnique.js +15 -0
- package/dist/metadata/tile/logicalLevelTechnique.js.map +1 -0
- package/dist/metadata/tile/logicalStreamType.d.ts +12 -0
- package/dist/metadata/tile/logicalStreamType.js +21 -0
- package/dist/metadata/tile/logicalStreamType.js.map +1 -0
- package/dist/metadata/tile/mortonEncodedStreamMetadata.d.ts +15 -0
- package/dist/metadata/tile/mortonEncodedStreamMetadata.js +29 -0
- package/dist/metadata/tile/mortonEncodedStreamMetadata.js.map +1 -0
- package/dist/metadata/tile/offsetType.d.ts +6 -0
- package/dist/metadata/tile/offsetType.js +11 -0
- package/dist/metadata/tile/offsetType.js.map +1 -0
- package/dist/metadata/tile/physicalLevelTechnique.d.ts +17 -0
- package/dist/metadata/tile/physicalLevelTechnique.js +22 -0
- package/dist/metadata/tile/physicalLevelTechnique.js.map +1 -0
- package/dist/metadata/tile/physicalStreamType.d.ts +6 -0
- package/dist/metadata/tile/physicalStreamType.js +11 -0
- package/dist/metadata/tile/physicalStreamType.js.map +1 -0
- package/dist/metadata/tile/rleEncodedStreamMetadata.d.ts +20 -0
- package/dist/metadata/tile/rleEncodedStreamMetadata.js +34 -0
- package/dist/metadata/tile/rleEncodedStreamMetadata.js.map +1 -0
- package/dist/metadata/tile/scalarType.d.ts +12 -0
- package/dist/metadata/tile/scalarType.js +17 -0
- package/dist/metadata/tile/scalarType.js.map +1 -0
- package/dist/metadata/tile/streamMetadata.d.ts +23 -0
- package/dist/metadata/tile/streamMetadata.js +71 -0
- package/dist/metadata/tile/streamMetadata.js.map +1 -0
- package/dist/metadata/tile/streamMetadataDecoder.d.ts +5 -0
- package/dist/metadata/tile/streamMetadataDecoder.js +24 -0
- package/dist/metadata/tile/streamMetadataDecoder.js.map +1 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.d.ts +10 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js +112 -0
- package/dist/metadata/tileset/embeddedTilesetMetadataDecoder.js.map +1 -0
- package/dist/metadata/tileset/tilesetMetadata.g.d.ts +418 -0
- package/dist/metadata/tileset/tilesetMetadata.g.js +476 -0
- package/dist/metadata/tileset/tilesetMetadata.g.js.map +1 -0
- package/dist/metadata/tileset/typeMap.d.ts +38 -0
- package/dist/metadata/tileset/typeMap.js +185 -0
- package/dist/metadata/tileset/typeMap.js.map +1 -0
- package/dist/mltDecoder.d.ts +11 -0
- package/dist/mltDecoder.js +146 -0
- package/dist/mltDecoder.js.map +1 -0
- package/dist/mltMetadata.d.ts +40 -0
- package/dist/mltMetadata.js +34 -0
- package/dist/mltMetadata.js.map +1 -0
- package/dist/vector/constant/intConstVector.d.ts +19 -0
- package/dist/vector/constant/intConstVector.js +89 -0
- package/dist/vector/constant/intConstVector.js.map +1 -0
- package/dist/vector/constant/longConstVector.d.ts +19 -0
- package/dist/vector/constant/longConstVector.js +87 -0
- package/dist/vector/constant/longConstVector.js.map +1 -0
- package/dist/vector/dictionary/stringDictionaryVector.d.ts +22 -0
- package/dist/vector/dictionary/stringDictionaryVector.js +180 -0
- package/dist/vector/dictionary/stringDictionaryVector.js.map +1 -0
- package/dist/vector/featureTable.d.ts +29 -0
- package/dist/vector/featureTable.js +70 -0
- package/dist/vector/featureTable.js.map +1 -0
- package/dist/vector/filter/constSelectionVector.d.ts +0 -0
- package/dist/vector/filter/constSelectionVector.js +1 -0
- package/dist/vector/filter/constSelectionVector.js.map +1 -0
- package/dist/vector/filter/flatSelectionVector.d.ts +16 -0
- package/dist/vector/filter/flatSelectionVector.js +42 -0
- package/dist/vector/filter/flatSelectionVector.js.map +1 -0
- package/dist/vector/filter/selectionVector.d.ts +8 -0
- package/dist/vector/filter/selectionVector.js +3 -0
- package/dist/vector/filter/selectionVector.js.map +1 -0
- package/dist/vector/filter/selectionVectorUtils.d.ts +7 -0
- package/dist/vector/filter/selectionVectorUtils.js +44 -0
- package/dist/vector/filter/selectionVectorUtils.js.map +1 -0
- package/dist/vector/filter/sequenceSelectionVector.d.ts +0 -0
- package/dist/vector/filter/sequenceSelectionVector.js +1 -0
- package/dist/vector/filter/sequenceSelectionVector.js.map +1 -0
- package/dist/vector/fixedSizeVector.d.ts +5 -0
- package/dist/vector/fixedSizeVector.js +14 -0
- package/dist/vector/fixedSizeVector.js.map +1 -0
- package/dist/vector/flat/bitVector.d.ts +14 -0
- package/dist/vector/flat/bitVector.js +38 -0
- package/dist/vector/flat/bitVector.js.map +1 -0
- package/dist/vector/flat/booleanFlatVector.d.ts +20 -0
- package/dist/vector/flat/booleanFlatVector.js +55 -0
- package/dist/vector/flat/booleanFlatVector.js.map +1 -0
- package/dist/vector/flat/doubleFlatVector.d.ts +19 -0
- package/dist/vector/flat/doubleFlatVector.js +109 -0
- package/dist/vector/flat/doubleFlatVector.js.map +1 -0
- package/dist/vector/flat/floatFlatVector.d.ts +19 -0
- package/dist/vector/flat/floatFlatVector.js +109 -0
- package/dist/vector/flat/floatFlatVector.js.map +1 -0
- package/dist/vector/flat/intFlatVector.d.ts +19 -0
- package/dist/vector/flat/intFlatVector.js +123 -0
- package/dist/vector/flat/intFlatVector.js.map +1 -0
- package/dist/vector/flat/longFlatVector.d.ts +19 -0
- package/dist/vector/flat/longFlatVector.js +124 -0
- package/dist/vector/flat/longFlatVector.js.map +1 -0
- package/dist/vector/flat/stringFlatVector.d.ts +20 -0
- package/dist/vector/flat/stringFlatVector.js +165 -0
- package/dist/vector/flat/stringFlatVector.js.map +1 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.d.ts +27 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js +115 -0
- package/dist/vector/fsst-dictionary/stringFsstDictionaryVector.js.map +1 -0
- package/dist/vector/geometry/constGeometryVector.d.ts +17 -0
- package/dist/vector/geometry/constGeometryVector.js +51 -0
- package/dist/vector/geometry/constGeometryVector.js.map +1 -0
- package/dist/vector/geometry/constGpuVector.d.ts +15 -0
- package/dist/vector/geometry/constGpuVector.js +66 -0
- package/dist/vector/geometry/constGpuVector.js.map +1 -0
- package/dist/vector/geometry/flatGeometryVector.d.ts +16 -0
- package/dist/vector/geometry/flatGeometryVector.js +64 -0
- package/dist/vector/geometry/flatGeometryVector.js.map +1 -0
- package/dist/vector/geometry/flatGpuVector.d.ts +14 -0
- package/dist/vector/geometry/flatGpuVector.js +67 -0
- package/dist/vector/geometry/flatGpuVector.js.map +1 -0
- package/dist/vector/geometry/geometryType.d.ts +13 -0
- package/dist/vector/geometry/geometryType.js +19 -0
- package/dist/vector/geometry/geometryType.js.map +1 -0
- package/dist/vector/geometry/geometryVector.d.ts +37 -0
- package/dist/vector/geometry/geometryVector.js +73 -0
- package/dist/vector/geometry/geometryVector.js.map +1 -0
- package/dist/vector/geometry/geometryVectorConverter.d.ts +2 -0
- package/dist/vector/geometry/geometryVectorConverter.js +302 -0
- package/dist/vector/geometry/geometryVectorConverter.js.map +1 -0
- package/dist/vector/geometry/gpuVector.d.ts +21 -0
- package/dist/vector/geometry/gpuVector.js +38 -0
- package/dist/vector/geometry/gpuVector.js.map +1 -0
- package/dist/vector/geometry/point.d.ts +195 -0
- package/dist/vector/geometry/point.js +283 -0
- package/dist/vector/geometry/point.js.map +1 -0
- package/dist/vector/geometry/spaceFillingCurve.d.ts +22 -0
- package/dist/vector/geometry/spaceFillingCurve.js +26 -0
- package/dist/vector/geometry/spaceFillingCurve.js.map +1 -0
- package/dist/vector/geometry/topologyVector.d.ts +9 -0
- package/dist/vector/geometry/topologyVector.js +21 -0
- package/dist/vector/geometry/topologyVector.js.map +1 -0
- package/dist/vector/geometry/zOrderCurve.d.ts +17 -0
- package/dist/vector/geometry/zOrderCurve.js +44 -0
- package/dist/vector/geometry/zOrderCurve.js.map +1 -0
- package/dist/vector/intVector.d.ts +8 -0
- package/dist/vector/intVector.js +3 -0
- package/dist/vector/intVector.js.map +1 -0
- package/dist/vector/sequence/intSequenceVector.d.ts +18 -0
- package/dist/vector/sequence/intSequenceVector.js +72 -0
- package/dist/vector/sequence/intSequenceVector.js.map +1 -0
- package/dist/vector/sequence/longSequenceVector.d.ts +18 -0
- package/dist/vector/sequence/longSequenceVector.js +57 -0
- package/dist/vector/sequence/longSequenceVector.js.map +1 -0
- package/dist/vector/sequence/sequenceVector.d.ts +5 -0
- package/dist/vector/sequence/sequenceVector.js +15 -0
- package/dist/vector/sequence/sequenceVector.js.map +1 -0
- package/dist/vector/variableSizeVector.d.ts +6 -0
- package/dist/vector/variableSizeVector.js +16 -0
- package/dist/vector/variableSizeVector.js.map +1 -0
- package/dist/vector/vector.d.ts +30 -0
- package/dist/vector/vector.js +73 -0
- package/dist/vector/vector.js.map +1 -0
- package/dist/vector/vectorType.d.ts +7 -0
- package/dist/vector/vectorType.js +12 -0
- package/dist/vector/vectorType.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,703 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeVarintInt32 = decodeVarintInt32;
|
|
4
|
+
exports.decodeVarintInt64 = decodeVarintInt64;
|
|
5
|
+
exports.decodeVarintFloat64 = decodeVarintFloat64;
|
|
6
|
+
exports.decodeFastPfor = decodeFastPfor;
|
|
7
|
+
exports.decodeZigZag = decodeZigZag;
|
|
8
|
+
exports.decodeZigZagInt64 = decodeZigZagInt64;
|
|
9
|
+
exports.decodeZigZagFloat64 = decodeZigZagFloat64;
|
|
10
|
+
exports.decodeZigZagValue = decodeZigZagValue;
|
|
11
|
+
exports.decodeZigZagValueInt64 = decodeZigZagValueInt64;
|
|
12
|
+
exports.decodeRle = decodeRle;
|
|
13
|
+
exports.decodeRleInt64 = decodeRleInt64;
|
|
14
|
+
exports.decodeRleFloat64 = decodeRleFloat64;
|
|
15
|
+
exports.decodeUnsignedRle = decodeUnsignedRle;
|
|
16
|
+
exports.decodeUnsignedRleInt64 = decodeUnsignedRleInt64;
|
|
17
|
+
exports.decodeUnsignedRleFloat64 = decodeUnsignedRleFloat64;
|
|
18
|
+
exports.decodeZigZagDelta = decodeZigZagDelta;
|
|
19
|
+
exports.decodeZigZagDeltaInt64 = decodeZigZagDeltaInt64;
|
|
20
|
+
exports.decodeZigZagDeltaFloat64 = decodeZigZagDeltaFloat64;
|
|
21
|
+
exports.decodeZigZagRle = decodeZigZagRle;
|
|
22
|
+
exports.decodeZigZagRleInt64 = decodeZigZagRleInt64;
|
|
23
|
+
exports.decodeZigZagRleFloat64 = decodeZigZagRleFloat64;
|
|
24
|
+
exports.fastInverseDelta = fastInverseDelta;
|
|
25
|
+
exports.inverseDelta = inverseDelta;
|
|
26
|
+
exports.decodeComponentwiseDeltaVec2 = decodeComponentwiseDeltaVec2;
|
|
27
|
+
exports.decodeComponentwiseDeltaVec2Scaled = decodeComponentwiseDeltaVec2Scaled;
|
|
28
|
+
exports.decodeNullableZigZagDelta = decodeNullableZigZagDelta;
|
|
29
|
+
exports.decodeNullableZigZagDeltaInt64 = decodeNullableZigZagDeltaInt64;
|
|
30
|
+
exports.zigZagDeltaOfDeltaDecoding = zigZagDeltaOfDeltaDecoding;
|
|
31
|
+
exports.zigZagRleDeltaDecoding = zigZagRleDeltaDecoding;
|
|
32
|
+
exports.rleDeltaDecoding = rleDeltaDecoding;
|
|
33
|
+
exports.padWithZeros = padWithZeros;
|
|
34
|
+
exports.padZigZagWithZeros = padZigZagWithZeros;
|
|
35
|
+
exports.padWithZerosInt64 = padWithZerosInt64;
|
|
36
|
+
exports.padZigZagWithZerosInt64 = padZigZagWithZerosInt64;
|
|
37
|
+
exports.decodeNullableRle = decodeNullableRle;
|
|
38
|
+
exports.decodeNullableRleInt64 = decodeNullableRleInt64;
|
|
39
|
+
exports.decodeUnsignedConstRle = decodeUnsignedConstRle;
|
|
40
|
+
exports.decodeZigZagConstRle = decodeZigZagConstRle;
|
|
41
|
+
exports.decodeZigZagSequenceRle = decodeZigZagSequenceRle;
|
|
42
|
+
exports.decodeUnsignedConstRleInt64 = decodeUnsignedConstRleInt64;
|
|
43
|
+
exports.decodeZigZagConstRleInt64 = decodeZigZagConstRleInt64;
|
|
44
|
+
exports.decodeZigZagSequenceRleInt64 = decodeZigZagSequenceRleInt64;
|
|
45
|
+
/* Null suppression (physical level) techniques ------------------------------------------------------------------*/
|
|
46
|
+
//based on https://github.com/mapbox/pbf/blob/main/index.js
|
|
47
|
+
function decodeVarintInt32(buf, bufferOffset, numValues) {
|
|
48
|
+
const dst = new Int32Array(numValues);
|
|
49
|
+
let dstOffset = 0;
|
|
50
|
+
let offset = bufferOffset.get();
|
|
51
|
+
for (let i = 0; i < dst.length; i++) {
|
|
52
|
+
let b = buf[offset++];
|
|
53
|
+
let val = b & 0x7f;
|
|
54
|
+
if (b < 0x80) {
|
|
55
|
+
dst[dstOffset++] = val;
|
|
56
|
+
continue;
|
|
57
|
+
}
|
|
58
|
+
b = buf[offset++];
|
|
59
|
+
val |= (b & 0x7f) << 7;
|
|
60
|
+
if (b < 0x80) {
|
|
61
|
+
dst[dstOffset++] = val;
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
b = buf[offset++];
|
|
65
|
+
val |= (b & 0x7f) << 14;
|
|
66
|
+
if (b < 0x80) {
|
|
67
|
+
dst[dstOffset++] = val;
|
|
68
|
+
continue;
|
|
69
|
+
}
|
|
70
|
+
b = buf[offset++];
|
|
71
|
+
val |= (b & 0x7f) << 21;
|
|
72
|
+
if (b < 0x80) {
|
|
73
|
+
dst[dstOffset++] = val;
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
b = buf[offset++];
|
|
77
|
+
val |= (b & 0x0f) << 28;
|
|
78
|
+
dst[dstOffset++] = val;
|
|
79
|
+
}
|
|
80
|
+
bufferOffset.set(offset);
|
|
81
|
+
return dst;
|
|
82
|
+
}
|
|
83
|
+
function decodeVarintInt64(src, offset, numValues) {
|
|
84
|
+
const dst = new BigInt64Array(numValues);
|
|
85
|
+
for (let i = 0; i < dst.length; i++) {
|
|
86
|
+
dst[i] = decodeSingleVarintInt64(src, offset);
|
|
87
|
+
}
|
|
88
|
+
return dst;
|
|
89
|
+
}
|
|
90
|
+
/* Since decoding Int64 values to BigInt is more than an order of magnitude slower in the tests
|
|
91
|
+
* then using a Float64, this decoding method limits the max size of a Long value to 53 bits */
|
|
92
|
+
function decodeVarintFloat64(src, numValues, offset) {
|
|
93
|
+
const dst = new Float64Array(numValues);
|
|
94
|
+
for (let i = 0; i < numValues; i++) {
|
|
95
|
+
dst[i] = decodeSingleVarintFloat64(src, offset);
|
|
96
|
+
}
|
|
97
|
+
return dst;
|
|
98
|
+
}
|
|
99
|
+
//based on https://github.com/mapbox/pbf/blob/main/index.js
|
|
100
|
+
function decodeSingleVarintFloat64(buf, offset) {
|
|
101
|
+
let val, b;
|
|
102
|
+
b = buf[offset.get()];
|
|
103
|
+
offset.increment();
|
|
104
|
+
val = b & 0x7f;
|
|
105
|
+
if (b < 0x80)
|
|
106
|
+
return val;
|
|
107
|
+
b = buf[offset.get()];
|
|
108
|
+
offset.increment();
|
|
109
|
+
val |= (b & 0x7f) << 7;
|
|
110
|
+
if (b < 0x80)
|
|
111
|
+
return val;
|
|
112
|
+
b = buf[offset.get()];
|
|
113
|
+
offset.increment();
|
|
114
|
+
val |= (b & 0x7f) << 14;
|
|
115
|
+
if (b < 0x80)
|
|
116
|
+
return val;
|
|
117
|
+
b = buf[offset.get()];
|
|
118
|
+
offset.increment();
|
|
119
|
+
val |= (b & 0x7f) << 21;
|
|
120
|
+
if (b < 0x80)
|
|
121
|
+
return val;
|
|
122
|
+
b = buf[offset.get()];
|
|
123
|
+
val |= (b & 0x0f) << 28;
|
|
124
|
+
return decodeVarintRemainder(val, buf, offset);
|
|
125
|
+
}
|
|
126
|
+
function decodeVarintRemainder(l, buf, offset) {
|
|
127
|
+
let h, b;
|
|
128
|
+
b = buf[offset.get()];
|
|
129
|
+
offset.increment();
|
|
130
|
+
h = (b & 0x70) >> 4;
|
|
131
|
+
if (b < 0x80)
|
|
132
|
+
return h * 0x100000000 + (l >>> 0);
|
|
133
|
+
b = buf[offset.get()];
|
|
134
|
+
offset.increment();
|
|
135
|
+
h |= (b & 0x7f) << 3;
|
|
136
|
+
if (b < 0x80)
|
|
137
|
+
return h * 0x100000000 + (l >>> 0);
|
|
138
|
+
b = buf[offset.get()];
|
|
139
|
+
offset.increment();
|
|
140
|
+
h |= (b & 0x7f) << 10;
|
|
141
|
+
if (b < 0x80)
|
|
142
|
+
return h * 0x100000000 + (l >>> 0);
|
|
143
|
+
b = buf[offset.get()];
|
|
144
|
+
offset.increment();
|
|
145
|
+
h |= (b & 0x7f) << 17;
|
|
146
|
+
if (b < 0x80)
|
|
147
|
+
return h * 0x100000000 + (l >>> 0);
|
|
148
|
+
b = buf[offset.get()];
|
|
149
|
+
offset.increment();
|
|
150
|
+
h |= (b & 0x7f) << 24;
|
|
151
|
+
if (b < 0x80)
|
|
152
|
+
return h * 0x100000000 + (l >>> 0);
|
|
153
|
+
b = buf[offset.get()];
|
|
154
|
+
offset.increment();
|
|
155
|
+
h |= (b & 0x01) << 31;
|
|
156
|
+
if (b < 0x80)
|
|
157
|
+
return h * 0x100000000 + (l >>> 0);
|
|
158
|
+
throw new Error("Expected varint not more than 10 bytes");
|
|
159
|
+
}
|
|
160
|
+
function decodeFastPfor(data, numValues, byteLength, offset) {
|
|
161
|
+
throw new Error("FastPFor is not implemented yet.");
|
|
162
|
+
}
|
|
163
|
+
function decodeZigZag(encodedData) {
|
|
164
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
165
|
+
const encoded = encodedData[i];
|
|
166
|
+
encodedData[i] = ((encoded >>> 1) ^ -(encoded & 1));
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function decodeZigZagInt64(encodedData) {
|
|
170
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
171
|
+
const encoded = encodedData[i];
|
|
172
|
+
encodedData[i] = ((encoded >> 1n) ^ -(encoded & 1n));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function decodeZigZagFloat64(encodedData) {
|
|
176
|
+
for (let i = 0; i < encodedData.length; i++) {
|
|
177
|
+
const encoded = encodedData[i];
|
|
178
|
+
//Get rid of branch? -> var v = encoded % 2 && 1; encodedData[i] = (encoded + v) / (v * 2 - 1) * 2;
|
|
179
|
+
encodedData[i] = encoded % 2 === 1 ? (encoded + 1) / -2 : encoded / 2;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
function decodeZigZagValue(encoded) {
|
|
183
|
+
return ((encoded >>> 1) ^ -(encoded & 1));
|
|
184
|
+
}
|
|
185
|
+
function decodeZigZagValueInt64(encoded) {
|
|
186
|
+
return ((encoded >> 1n) ^ -(encoded & 1n));
|
|
187
|
+
}
|
|
188
|
+
// Source: https://github.com/bazelbuild/bazel/blob/master/src/main/java/com/google/devtools/build/lib/util/VarInt.java
|
|
189
|
+
function decodeSingleVarintInt64(bytes, pos) {
|
|
190
|
+
let value = 0n;
|
|
191
|
+
let shift = 0;
|
|
192
|
+
let index = pos.get();
|
|
193
|
+
while (index < bytes.length) {
|
|
194
|
+
const b = bytes[index++];
|
|
195
|
+
value |= BigInt(b & 0x7F) << BigInt(shift);
|
|
196
|
+
if ((b & 0x80) === 0) {
|
|
197
|
+
break;
|
|
198
|
+
}
|
|
199
|
+
shift += 7;
|
|
200
|
+
if (shift >= 64) {
|
|
201
|
+
throw new Error("Varint too long");
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
pos.set(index);
|
|
205
|
+
return value;
|
|
206
|
+
}
|
|
207
|
+
/* Logical Level Techniques Flat Vectors ------------------------------------------------------------------ */
|
|
208
|
+
function decodeRle(data, streamMetadata, isSigned) {
|
|
209
|
+
return isSigned
|
|
210
|
+
? decodeZigZagRle(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
211
|
+
: decodeUnsignedRle(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
212
|
+
}
|
|
213
|
+
function decodeRleInt64(data, streamMetadata, isSigned) {
|
|
214
|
+
return isSigned
|
|
215
|
+
? decodeZigZagRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
216
|
+
: decodeUnsignedRleInt64(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
217
|
+
}
|
|
218
|
+
function decodeRleFloat64(data, streamMetadata, isSigned) {
|
|
219
|
+
return isSigned
|
|
220
|
+
? decodeZigZagRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues)
|
|
221
|
+
: decodeUnsignedRleFloat64(data, streamMetadata.runs, streamMetadata.numRleValues);
|
|
222
|
+
}
|
|
223
|
+
function decodeUnsignedRle(encodedData, numRuns, numTotalValues) {
|
|
224
|
+
const decodedValues = new Int32Array(numTotalValues);
|
|
225
|
+
let offset = 0;
|
|
226
|
+
for (let i = 0; i < numRuns; i++) {
|
|
227
|
+
const runLength = encodedData[i];
|
|
228
|
+
const value = encodedData[i + numRuns];
|
|
229
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
230
|
+
offset += runLength;
|
|
231
|
+
}
|
|
232
|
+
return decodedValues;
|
|
233
|
+
}
|
|
234
|
+
function decodeUnsignedRleInt64(encodedData, numRuns, numTotalValues) {
|
|
235
|
+
const decodedValues = new BigInt64Array(numTotalValues);
|
|
236
|
+
let offset = 0;
|
|
237
|
+
for (let i = 0; i < numRuns; i++) {
|
|
238
|
+
const runLength = Number(encodedData[i]);
|
|
239
|
+
const value = encodedData[i + numRuns];
|
|
240
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
241
|
+
offset += runLength;
|
|
242
|
+
}
|
|
243
|
+
return decodedValues;
|
|
244
|
+
}
|
|
245
|
+
function decodeUnsignedRleFloat64(encodedData, numRuns, numTotalValues) {
|
|
246
|
+
const decodedValues = new Float64Array(numTotalValues);
|
|
247
|
+
let offset = 0;
|
|
248
|
+
for (let i = 0; i < numRuns; i++) {
|
|
249
|
+
const runLength = encodedData[i];
|
|
250
|
+
const value = encodedData[i + numRuns];
|
|
251
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
252
|
+
offset += runLength;
|
|
253
|
+
}
|
|
254
|
+
return decodedValues;
|
|
255
|
+
}
|
|
256
|
+
/*
|
|
257
|
+
* In place decoding of the zigzag encoded delta values.
|
|
258
|
+
* Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java
|
|
259
|
+
*/
|
|
260
|
+
function decodeZigZagDelta(data) {
|
|
261
|
+
data[0] = (data[0] >>> 1) ^ -(data[0] & 1);
|
|
262
|
+
const sz0 = data.length / 4 * 4;
|
|
263
|
+
let i = 1;
|
|
264
|
+
if (sz0 >= 4) {
|
|
265
|
+
for (; i < sz0 - 4; i += 4) {
|
|
266
|
+
const data1 = data[i];
|
|
267
|
+
const data2 = data[i + 1];
|
|
268
|
+
const data3 = data[i + 2];
|
|
269
|
+
const data4 = data[i + 3];
|
|
270
|
+
data[i] = ((data1 >>> 1) ^ -(data1 & 1)) + data[i - 1];
|
|
271
|
+
data[i + 1] = ((data2 >>> 1) ^ -(data2 & 1)) + data[i];
|
|
272
|
+
data[i + 2] = ((data3 >>> 1) ^ -(data3 & 1)) + data[i + 1];
|
|
273
|
+
data[i + 3] = ((data4 >>> 1) ^ -(data4 & 1)) + data[i + 2];
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
for (; i != data.length; ++i) {
|
|
277
|
+
data[i] = ((data[i] >>> 1) ^ -(data[i] & 1)) + data[i - 1];
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
function decodeZigZagDeltaInt64(data) {
|
|
281
|
+
data[0] = (data[0] >> 1n) ^ -(data[0] & 1n);
|
|
282
|
+
const sz0 = data.length / 4 * 4;
|
|
283
|
+
let i = 1;
|
|
284
|
+
if (sz0 >= 4) {
|
|
285
|
+
for (; i < sz0 - 4; i += 4) {
|
|
286
|
+
const data1 = data[i];
|
|
287
|
+
const data2 = data[i + 1];
|
|
288
|
+
const data3 = data[i + 2];
|
|
289
|
+
const data4 = data[i + 3];
|
|
290
|
+
data[i] = ((data1 >> 1n) ^ -(data1 & 1n)) + data[i - 1];
|
|
291
|
+
data[i + 1] = ((data2 >> 1n) ^ -(data2 & 1n)) + data[i];
|
|
292
|
+
data[i + 2] = ((data3 >> 1n) ^ -(data3 & 1n)) + data[i + 1];
|
|
293
|
+
data[i + 3] = ((data4 >> 1n) ^ -(data4 & 1n)) + data[i + 2];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
for (; i != data.length; ++i) {
|
|
297
|
+
data[i] = ((data[i] >> 1n) ^ -(data[i] & 1n)) + data[i - 1];
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
function decodeZigZagDeltaFloat64(data) {
|
|
301
|
+
data[0] = data[0] % 2 === 1 ? (data[0] + 1) / -2 : data[0] / 2;
|
|
302
|
+
const sz0 = data.length / 4 * 4;
|
|
303
|
+
let i = 1;
|
|
304
|
+
if (sz0 >= 4) {
|
|
305
|
+
for (; i < sz0 - 4; i += 4) {
|
|
306
|
+
const data1 = data[i];
|
|
307
|
+
const data2 = data[i + 1];
|
|
308
|
+
const data3 = data[i + 2];
|
|
309
|
+
const data4 = data[i + 3];
|
|
310
|
+
data[i] = (data1 % 2 === 1 ? (data1 + 1) / -2 : data1 / 2) + data[i - 1];
|
|
311
|
+
data[i + 1] = (data2 % 2 === 1 ? (data2 + 1) / -2 : data2 / 2) + data[i];
|
|
312
|
+
data[i + 2] = (data3 % 2 === 1 ? (data3 + 1) / -2 : data3 / 2) + data[i + 1];
|
|
313
|
+
data[i + 3] = (data4 % 2 === 1 ? (data4 + 1) / -2 : data4 / 2) + data[i + 2];
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
for (; i != data.length; ++i) {
|
|
317
|
+
data[i] = (data[i] % 2 === 1 ? (data[i] + 1) / -2 : data[i] / 2) + data[i - 1];
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
function decodeZigZagRle(data, numRuns, numTotalValues) {
|
|
321
|
+
const decodedValues = new Int32Array(numTotalValues);
|
|
322
|
+
let offset = 0;
|
|
323
|
+
for (let i = 0; i < numRuns; i++) {
|
|
324
|
+
const runLength = data[i];
|
|
325
|
+
let value = data[i + numRuns];
|
|
326
|
+
value = ((value >>> 1) ^ -(value & 1));
|
|
327
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
328
|
+
offset += runLength;
|
|
329
|
+
}
|
|
330
|
+
return decodedValues;
|
|
331
|
+
}
|
|
332
|
+
function decodeZigZagRleInt64(data, numRuns, numTotalValues) {
|
|
333
|
+
const decodedValues = new BigInt64Array(numTotalValues);
|
|
334
|
+
let offset = 0;
|
|
335
|
+
for (let i = 0; i < numRuns; i++) {
|
|
336
|
+
const runLength = Number(data[i]);
|
|
337
|
+
let value = data[i + numRuns];
|
|
338
|
+
value = ((value >> 1n) ^ -(value & 1n));
|
|
339
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
340
|
+
offset += runLength;
|
|
341
|
+
}
|
|
342
|
+
return decodedValues;
|
|
343
|
+
}
|
|
344
|
+
function decodeZigZagRleFloat64(data, numRuns, numTotalValues) {
|
|
345
|
+
const decodedValues = new Float64Array(numTotalValues);
|
|
346
|
+
let offset = 0;
|
|
347
|
+
for (let i = 0; i < numRuns; i++) {
|
|
348
|
+
const runLength = data[i];
|
|
349
|
+
let value = data[i + numRuns];
|
|
350
|
+
//TODO: get rid of branch? -> var v = value % 2 && 1; a = (value + v) / (v * 2 - 1) * 2;
|
|
351
|
+
value = value % 2 === 1 ? (value + 1) / -2 : value / 2;
|
|
352
|
+
decodedValues.fill(value, offset, offset + runLength);
|
|
353
|
+
offset += runLength;
|
|
354
|
+
}
|
|
355
|
+
return decodedValues;
|
|
356
|
+
}
|
|
357
|
+
/*
|
|
358
|
+
* Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java
|
|
359
|
+
*/
|
|
360
|
+
function fastInverseDelta(data) {
|
|
361
|
+
const sz0 = data.length / 4 * 4;
|
|
362
|
+
let i = 1;
|
|
363
|
+
if (sz0 >= 4) {
|
|
364
|
+
for (let a = data[0]; i < sz0 - 4; i += 4) {
|
|
365
|
+
a = data[i] += a;
|
|
366
|
+
a = data[i + 1] += a;
|
|
367
|
+
a = data[i + 2] += a;
|
|
368
|
+
a = data[i + 3] += a;
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
while (i != data.length) {
|
|
372
|
+
data[i] += data[i - 1];
|
|
373
|
+
++i;
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
function inverseDelta(data) {
|
|
377
|
+
let prevValue = 0;
|
|
378
|
+
for (let i = 0; i < data.length; i++) {
|
|
379
|
+
data[i] += prevValue;
|
|
380
|
+
prevValue = data[i];
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/*
|
|
384
|
+
* In place decoding of the zigzag delta encoded Vec2.
|
|
385
|
+
* Inspired by https://github.com/lemire/JavaFastPFOR/blob/master/src/main/java/me/lemire/integercompression/differential/Delta.java
|
|
386
|
+
*/
|
|
387
|
+
function decodeComponentwiseDeltaVec2(data) {
|
|
388
|
+
data[0] = ((data[0] >>> 1) ^ -(data[0] & 1));
|
|
389
|
+
data[1] = ((data[1] >>> 1) ^ -(data[1] & 1));
|
|
390
|
+
const sz0 = data.length / 4 * 4;
|
|
391
|
+
let i = 2;
|
|
392
|
+
if (sz0 >= 4) {
|
|
393
|
+
for (; i < sz0 - 4; i += 4) {
|
|
394
|
+
const x1 = data[i];
|
|
395
|
+
const y1 = data[i + 1];
|
|
396
|
+
const x2 = data[i + 2];
|
|
397
|
+
const y2 = data[i + 3];
|
|
398
|
+
data[i] = ((x1 >>> 1) ^ -(x1 & 1)) + data[i - 2];
|
|
399
|
+
data[i + 1] = ((y1 >>> 1) ^ -(y1 & 1)) + data[i - 1];
|
|
400
|
+
data[i + 2] = ((x2 >>> 1) ^ -(x2 & 1)) + data[i];
|
|
401
|
+
data[i + 3] = ((y2 >>> 1) ^ -(y2 & 1)) + data[i + 1];
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
for (; i != data.length; i += 2) {
|
|
405
|
+
data[i] = ((data[i] >>> 1) ^ -(data[i] & 1)) + data[i - 2];
|
|
406
|
+
data[i + 1] = ((data[i + 1] >>> 1) ^ -(data[i + 1] & 1)) + data[i - 1];
|
|
407
|
+
}
|
|
408
|
+
}
|
|
409
|
+
function decodeComponentwiseDeltaVec2Scaled(data, scale, min, max) {
|
|
410
|
+
let previousVertexX = ((data[0] >>> 1) ^ -(data[0] & 1));
|
|
411
|
+
let previousVertexY = ((data[1] >>> 1) ^ -(data[1] & 1));
|
|
412
|
+
data[0] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
413
|
+
data[1] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
414
|
+
const sz0 = data.length / 16;
|
|
415
|
+
let i = 2;
|
|
416
|
+
if (sz0 >= 4) {
|
|
417
|
+
for (; i < sz0 - 4; i += 4) {
|
|
418
|
+
const x1 = data[i];
|
|
419
|
+
const y1 = data[i + 1];
|
|
420
|
+
const currentVertexX = ((x1 >>> 1) ^ -(x1 & 1)) + previousVertexX;
|
|
421
|
+
const currentVertexY = ((y1 >>> 1) ^ -(y1 & 1)) + previousVertexY;
|
|
422
|
+
data[i] = clamp(Math.round(currentVertexX * scale), min, max);
|
|
423
|
+
data[i + 1] = clamp(Math.round(currentVertexY * scale), min, max);
|
|
424
|
+
const x2 = data[i + 2];
|
|
425
|
+
const y2 = data[i + 3];
|
|
426
|
+
previousVertexX = ((x2 >>> 1) ^ -(x2 & 1)) + currentVertexX;
|
|
427
|
+
previousVertexY = ((y2 >>> 1) ^ -(y2 & 1)) + currentVertexY;
|
|
428
|
+
data[i + 2] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
429
|
+
data[i + 3] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
for (; i != data.length; i += 2) {
|
|
433
|
+
previousVertexX += ((data[i] >>> 1) ^ -(data[i] & 1));
|
|
434
|
+
previousVertexY += ((data[i + 1] >>> 1) ^ -(data[i + 1] & 1));
|
|
435
|
+
data[i] = clamp(Math.round(previousVertexX * scale), min, max);
|
|
436
|
+
data[i + 1] = clamp(Math.round(previousVertexY * scale), min, max);
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
function clamp(n, min, max) {
|
|
440
|
+
return Math.min(max, Math.max(min, n));
|
|
441
|
+
}
|
|
442
|
+
function decodeNullableZigZagDelta(bitVector, data) {
|
|
443
|
+
const decodedData = new Int32Array(bitVector.size());
|
|
444
|
+
let dataCounter = 0;
|
|
445
|
+
if (bitVector.get(0)) {
|
|
446
|
+
decodedData[0] = bitVector.get(0) ? ((data[0] >>> 1) ^ -(data[0] & 1)) : 0;
|
|
447
|
+
dataCounter = 1;
|
|
448
|
+
}
|
|
449
|
+
else {
|
|
450
|
+
decodedData[0] = 0;
|
|
451
|
+
}
|
|
452
|
+
let i = 1;
|
|
453
|
+
for (; i != decodedData.length; ++i) {
|
|
454
|
+
decodedData[i] =
|
|
455
|
+
bitVector.get(i)
|
|
456
|
+
? decodedData[i - 1]
|
|
457
|
+
+ ((data[dataCounter] >>> 1) ^ -(data[dataCounter++] & 1))
|
|
458
|
+
: decodedData[i - 1];
|
|
459
|
+
}
|
|
460
|
+
return decodedData;
|
|
461
|
+
}
|
|
462
|
+
function decodeNullableZigZagDeltaInt64(bitVector, data) {
|
|
463
|
+
const decodedData = new BigInt64Array(bitVector.size());
|
|
464
|
+
let dataCounter = 0;
|
|
465
|
+
if (bitVector.get(0)) {
|
|
466
|
+
decodedData[0] = bitVector.get(0) ? ((data[0] >> 1n) ^ -(data[0] & 1n)) : 0n;
|
|
467
|
+
dataCounter = 1;
|
|
468
|
+
}
|
|
469
|
+
else {
|
|
470
|
+
decodedData[0] = 0n;
|
|
471
|
+
}
|
|
472
|
+
let i = 1;
|
|
473
|
+
for (; i != decodedData.length; ++i) {
|
|
474
|
+
decodedData[i] =
|
|
475
|
+
bitVector.get(i)
|
|
476
|
+
? decodedData[i - 1]
|
|
477
|
+
+ ((data[dataCounter] >> 1n) ^ -(data[dataCounter++] & 1n))
|
|
478
|
+
: decodedData[i - 1];
|
|
479
|
+
}
|
|
480
|
+
return decodedData;
|
|
481
|
+
}
|
|
482
|
+
/* Transform data to allow util access ------------------------------------------------------------------------ */
|
|
483
|
+
function zigZagDeltaOfDeltaDecoding(data) {
|
|
484
|
+
const decodedData = new Int32Array(data.length + 1);
|
|
485
|
+
decodedData[0] = 0;
|
|
486
|
+
decodedData[1] = decodeZigZagValue(data[0]);
|
|
487
|
+
let deltaSum = decodedData[1];
|
|
488
|
+
let i = 2;
|
|
489
|
+
for (; i != decodedData.length; ++i) {
|
|
490
|
+
const zigZagValue = data[i - 1];
|
|
491
|
+
const delta = ((zigZagValue >>> 1) ^ -(zigZagValue & 1));
|
|
492
|
+
deltaSum += delta;
|
|
493
|
+
decodedData[i] = decodedData[i - 1] + deltaSum;
|
|
494
|
+
}
|
|
495
|
+
return decodedData;
|
|
496
|
+
}
|
|
497
|
+
function zigZagRleDeltaDecoding(data, numRuns, numTotalValues) {
|
|
498
|
+
const decodedValues = new Int32Array(numTotalValues + 1);
|
|
499
|
+
decodedValues[0] = 0;
|
|
500
|
+
let offset = 1;
|
|
501
|
+
let previousValue = decodedValues[0];
|
|
502
|
+
for (let i = 0; i < numRuns; i++) {
|
|
503
|
+
const runLength = data[i];
|
|
504
|
+
let value = data[i + numRuns];
|
|
505
|
+
value = ((value >>> 1) ^ -(value & 1));
|
|
506
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
507
|
+
decodedValues[j] = value + previousValue;
|
|
508
|
+
previousValue = decodedValues[j];
|
|
509
|
+
}
|
|
510
|
+
offset += runLength;
|
|
511
|
+
}
|
|
512
|
+
return decodedValues;
|
|
513
|
+
}
|
|
514
|
+
function rleDeltaDecoding(data, numRuns, numTotalValues) {
|
|
515
|
+
const decodedValues = new Int32Array(numTotalValues + 1);
|
|
516
|
+
decodedValues[0] = 0;
|
|
517
|
+
let offset = 1;
|
|
518
|
+
let previousValue = decodedValues[0];
|
|
519
|
+
for (let i = 0; i < numRuns; i++) {
|
|
520
|
+
const runLength = data[i];
|
|
521
|
+
const value = data[i + numRuns];
|
|
522
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
523
|
+
decodedValues[j] = value + previousValue;
|
|
524
|
+
previousValue = decodedValues[j];
|
|
525
|
+
}
|
|
526
|
+
offset += runLength;
|
|
527
|
+
}
|
|
528
|
+
return decodedValues;
|
|
529
|
+
}
|
|
530
|
+
function padWithZeros(bitVector, data) {
|
|
531
|
+
const decodedData = new Int32Array(bitVector.size());
|
|
532
|
+
let dataCounter = 0;
|
|
533
|
+
let i = 0;
|
|
534
|
+
for (; i != decodedData.length; ++i) {
|
|
535
|
+
decodedData[i] = bitVector.get(i) ? data[dataCounter++] : 0;
|
|
536
|
+
}
|
|
537
|
+
return decodedData;
|
|
538
|
+
}
|
|
539
|
+
function padZigZagWithZeros(bitVector, data) {
|
|
540
|
+
const decodedData = new Int32Array(bitVector.size());
|
|
541
|
+
let dataCounter = 0;
|
|
542
|
+
let i = 0;
|
|
543
|
+
for (; i != decodedData.length; ++i) {
|
|
544
|
+
if (bitVector.get(i)) {
|
|
545
|
+
const value = data[dataCounter++];
|
|
546
|
+
decodedData[i] = ((value >>> 1) ^ -(value & 1));
|
|
547
|
+
}
|
|
548
|
+
else {
|
|
549
|
+
decodedData[i] = 0;
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
return decodedData;
|
|
553
|
+
}
|
|
554
|
+
function padWithZerosInt64(bitVector, data) {
|
|
555
|
+
const decodedData = new BigInt64Array(bitVector.size());
|
|
556
|
+
let dataCounter = 0;
|
|
557
|
+
let i = 0;
|
|
558
|
+
for (; i != decodedData.length; ++i) {
|
|
559
|
+
decodedData[i] = bitVector.get(i) ? data[dataCounter++] : 0n;
|
|
560
|
+
}
|
|
561
|
+
return decodedData;
|
|
562
|
+
}
|
|
563
|
+
function padZigZagWithZerosInt64(bitVector, data) {
|
|
564
|
+
const decodedData = new BigInt64Array(bitVector.size());
|
|
565
|
+
let dataCounter = 0;
|
|
566
|
+
let i = 0;
|
|
567
|
+
for (; i != decodedData.length; ++i) {
|
|
568
|
+
if (bitVector.get(i)) {
|
|
569
|
+
const value = data[dataCounter++];
|
|
570
|
+
decodedData[i] = ((value >> 1n) ^ -(value & 1n));
|
|
571
|
+
}
|
|
572
|
+
else {
|
|
573
|
+
decodedData[i] = 0n;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
return decodedData;
|
|
577
|
+
}
|
|
578
|
+
function decodeNullableRle(data, streamMetadata, isSigned, bitVector) {
|
|
579
|
+
const rleMetadata = streamMetadata;
|
|
580
|
+
return isSigned
|
|
581
|
+
? decodeNullableZigZagRle(bitVector, data, rleMetadata.runs)
|
|
582
|
+
: decodeNullableUnsignedRle(bitVector, data, rleMetadata.runs);
|
|
583
|
+
}
|
|
584
|
+
function decodeNullableUnsignedRle(bitVector, data, numRuns) {
|
|
585
|
+
const values = new Int32Array(bitVector.size());
|
|
586
|
+
let offset = 0;
|
|
587
|
+
for (let i = 0; i < numRuns; i++) {
|
|
588
|
+
const runLength = data[i];
|
|
589
|
+
const value = data[i + numRuns];
|
|
590
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
591
|
+
/* There can be null values in a run */
|
|
592
|
+
if (bitVector.get(j)) {
|
|
593
|
+
values[j] = value;
|
|
594
|
+
}
|
|
595
|
+
else {
|
|
596
|
+
values[j] = 0;
|
|
597
|
+
offset++;
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
offset += runLength;
|
|
601
|
+
}
|
|
602
|
+
return values;
|
|
603
|
+
}
|
|
604
|
+
function decodeNullableZigZagRle(bitVector, data, numRuns) {
|
|
605
|
+
const values = new Int32Array(bitVector.size());
|
|
606
|
+
let offset = 0;
|
|
607
|
+
for (let i = 0; i < numRuns; i++) {
|
|
608
|
+
const runLength = data[i];
|
|
609
|
+
let value = data[i + numRuns];
|
|
610
|
+
value = ((value >>> 1) ^ -(value & 1));
|
|
611
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
612
|
+
/* There can be null values in a run */
|
|
613
|
+
if (bitVector.get(j)) {
|
|
614
|
+
values[j] = value;
|
|
615
|
+
}
|
|
616
|
+
else {
|
|
617
|
+
values[j] = 0;
|
|
618
|
+
offset++;
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
offset += runLength;
|
|
622
|
+
}
|
|
623
|
+
return values;
|
|
624
|
+
}
|
|
625
|
+
function decodeNullableRleInt64(data, streamMetadata, isSigned, bitVector) {
|
|
626
|
+
const rleMetadata = streamMetadata;
|
|
627
|
+
return isSigned
|
|
628
|
+
? decodeNullableZigZagRleInt64(bitVector, data, rleMetadata.runs)
|
|
629
|
+
: decodeNullableUnsignedRleInt64(bitVector, data, rleMetadata.runs);
|
|
630
|
+
}
|
|
631
|
+
function decodeNullableUnsignedRleInt64(bitVector, data, numRuns) {
|
|
632
|
+
const values = new BigInt64Array(bitVector.size());
|
|
633
|
+
let offset = 0;
|
|
634
|
+
for (let i = 0; i < numRuns; i++) {
|
|
635
|
+
const runLength = Number(data[i]);
|
|
636
|
+
const value = data[i + numRuns];
|
|
637
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
638
|
+
/* There can be null values in a run */
|
|
639
|
+
if (bitVector.get(j)) {
|
|
640
|
+
values[j] = value;
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
values[j] = 0n;
|
|
644
|
+
offset++;
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
offset += runLength;
|
|
648
|
+
}
|
|
649
|
+
return values;
|
|
650
|
+
}
|
|
651
|
+
function decodeNullableZigZagRleInt64(bitVector, data, numRuns) {
|
|
652
|
+
const values = new BigInt64Array(bitVector.size());
|
|
653
|
+
let offset = 0;
|
|
654
|
+
for (let i = 0; i < numRuns; i++) {
|
|
655
|
+
const runLength = Number(data[i]);
|
|
656
|
+
let value = data[i + numRuns];
|
|
657
|
+
value = ((value >> 1n) ^ -(value & 1n));
|
|
658
|
+
for (let j = offset; j < offset + runLength; j++) {
|
|
659
|
+
/* There can be null values in a run */
|
|
660
|
+
if (bitVector.get(j)) {
|
|
661
|
+
values[j] = value;
|
|
662
|
+
}
|
|
663
|
+
else {
|
|
664
|
+
values[j] = 0n;
|
|
665
|
+
offset++;
|
|
666
|
+
}
|
|
667
|
+
}
|
|
668
|
+
offset += runLength;
|
|
669
|
+
}
|
|
670
|
+
return values;
|
|
671
|
+
}
|
|
672
|
+
/* Logical Level Techniques Const and Sequence Vectors ------------------------------------------------------------- */
|
|
673
|
+
function decodeUnsignedConstRle(data) {
|
|
674
|
+
return data[1];
|
|
675
|
+
}
|
|
676
|
+
function decodeZigZagConstRle(data) {
|
|
677
|
+
return decodeZigZagValue(data[1]);
|
|
678
|
+
}
|
|
679
|
+
function decodeZigZagSequenceRle(data) {
|
|
680
|
+
/* base value and delta value are equal */
|
|
681
|
+
if (data.length == 2) {
|
|
682
|
+
const value = decodeZigZagValue(data[1]);
|
|
683
|
+
return [value, value];
|
|
684
|
+
}
|
|
685
|
+
/* base value and delta value are not equal -> 2 runs and 2 values*/
|
|
686
|
+
return [decodeZigZagValue(data[2]), decodeZigZagValue(data[3])];
|
|
687
|
+
}
|
|
688
|
+
function decodeUnsignedConstRleInt64(data) {
|
|
689
|
+
return data[1];
|
|
690
|
+
}
|
|
691
|
+
function decodeZigZagConstRleInt64(data) {
|
|
692
|
+
return decodeZigZagValueInt64(data[1]);
|
|
693
|
+
}
|
|
694
|
+
function decodeZigZagSequenceRleInt64(data) {
|
|
695
|
+
/* base value and delta value are equal */
|
|
696
|
+
if (data.length == 2) {
|
|
697
|
+
const value = decodeZigZagValueInt64(data[1]);
|
|
698
|
+
return [value, value];
|
|
699
|
+
}
|
|
700
|
+
/* base value and delta value are not equal -> 2 runs and 2 values*/
|
|
701
|
+
return [decodeZigZagValueInt64(data[2]), decodeZigZagValueInt64(data[3])];
|
|
702
|
+
}
|
|
703
|
+
//# sourceMappingURL=integerDecodingUtils.js.map
|