@naeemo/capnp 0.6.0 → 0.7.0
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/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +38 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -360,6 +360,25 @@ var StructBuilder = class StructBuilder {
|
|
|
360
360
|
segment.setWord(ptrOffset, ptr);
|
|
361
361
|
}
|
|
362
362
|
/**
|
|
363
|
+
* 设置数据字段(Uint8Array)
|
|
364
|
+
* @param pointerIndex - 指针索引
|
|
365
|
+
* @param value - Uint8Array 数据
|
|
366
|
+
*/
|
|
367
|
+
setData(pointerIndex, value) {
|
|
368
|
+
const ptrOffset = this.wordOffset + this.dataWords + pointerIndex;
|
|
369
|
+
const segment = this.message.getSegment();
|
|
370
|
+
if (value.length === 0) {
|
|
371
|
+
const ptr = encodeListPointer(0, ElementSize.BYTE, 0);
|
|
372
|
+
segment.setWord(ptrOffset, ptr);
|
|
373
|
+
return;
|
|
374
|
+
}
|
|
375
|
+
const wordCount = Math.ceil(value.length / WORD_SIZE);
|
|
376
|
+
const listOffset = segment.allocate(wordCount);
|
|
377
|
+
new Uint8Array(segment.dataView.buffer, listOffset * WORD_SIZE, value.length).set(value);
|
|
378
|
+
const ptr = encodeListPointer(listOffset - ptrOffset - 1, ElementSize.BYTE, value.length);
|
|
379
|
+
segment.setWord(ptrOffset, ptr);
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
363
382
|
* 初始化嵌套结构
|
|
364
383
|
*/
|
|
365
384
|
initStruct(pointerIndex, dataWords, pointerCount) {
|
|
@@ -795,6 +814,25 @@ var StructReader = class StructReader {
|
|
|
795
814
|
return new TextDecoder().decode(bytes);
|
|
796
815
|
}
|
|
797
816
|
/**
|
|
817
|
+
* 获取数据字段
|
|
818
|
+
* Data is stored as List(UInt8) without NUL terminator
|
|
819
|
+
* @param pointerIndex - The index of the pointer in the pointer section
|
|
820
|
+
* @returns Uint8Array of the data content, or undefined if null pointer
|
|
821
|
+
*/
|
|
822
|
+
getData(pointerIndex) {
|
|
823
|
+
const ptrOffset = this.wordOffset + this.dataWords + pointerIndex;
|
|
824
|
+
const resolved = this.message.resolvePointer(this.segmentIndex, ptrOffset);
|
|
825
|
+
if (!resolved) return void 0;
|
|
826
|
+
const { segmentIndex, wordOffset, pointer } = resolved;
|
|
827
|
+
if (pointer.tag !== PointerTag.LIST) return void 0;
|
|
828
|
+
const listPtr = pointer;
|
|
829
|
+
const segment = this.message.getSegment(segmentIndex);
|
|
830
|
+
const byteLength = listPtr.elementCount;
|
|
831
|
+
if (byteLength === 0) return new Uint8Array(0);
|
|
832
|
+
const bytes = new Uint8Array(segment.dataView.buffer, wordOffset * WORD_SIZE, byteLength);
|
|
833
|
+
return new Uint8Array(bytes);
|
|
834
|
+
}
|
|
835
|
+
/**
|
|
798
836
|
* 获取嵌套结构
|
|
799
837
|
*/
|
|
800
838
|
getStruct(pointerIndex, _dataWords, _pointerCount) {
|