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