Lee Thanh
Upload 3012 files
5641073
raw
history blame
15.8 kB
/**
* @author jdiaz5513
*/
import { Int64, Uint64 } from "../../types/index";
import { ObjectSize } from "../object-size";
import { Segment } from "../segment";
import { Data } from "./data";
import { List, ListCtor } from "./list";
import { Orphan } from "./orphan";
import { _Pointer, _PointerCtor, Pointer, PointerCtor } from "./pointer";
export interface _StructCtor extends _PointerCtor {
readonly id: string;
readonly size: ObjectSize;
}
export interface StructCtor<T extends Struct> {
readonly _capnp: _StructCtor;
new (segment: Segment, byteOffset: number, depthLimit?: number, compositeIndex?: number): T;
}
export interface _Struct extends _Pointer {
compositeIndex?: number;
}
export declare class Struct extends Pointer {
static readonly _capnp: {
displayName: string;
};
static readonly getAs: typeof getAs;
static readonly getBit: typeof getBit;
static readonly getData: typeof getData;
static readonly getFloat32: typeof getFloat32;
static readonly getFloat64: typeof getFloat64;
static readonly getUint8: typeof getUint8;
static readonly getUint16: typeof getUint16;
static readonly getUint32: typeof getUint32;
static readonly getUint64: typeof getUint64;
static readonly getInt8: typeof getInt8;
static readonly getInt16: typeof getInt16;
static readonly getInt32: typeof getInt32;
static readonly getInt64: typeof getInt64;
static readonly getList: typeof getList;
static readonly getPointer: typeof getPointer;
static readonly getPointerAs: typeof getPointerAs;
static readonly getStruct: typeof getStruct;
static readonly getText: typeof getText;
static readonly initData: typeof initData;
static readonly initList: typeof initList;
static readonly initStruct: typeof initStruct;
static readonly initStructAt: typeof initStructAt;
static readonly setBit: typeof setBit;
static readonly setFloat32: typeof setFloat32;
static readonly setFloat64: typeof setFloat64;
static readonly setUint8: typeof setUint8;
static readonly setUint16: typeof setUint16;
static readonly setUint32: typeof setUint32;
static readonly setUint64: typeof setUint64;
static readonly setInt8: typeof setInt8;
static readonly setInt16: typeof setInt16;
static readonly setInt32: typeof setInt32;
static readonly setInt64: typeof setInt64;
static readonly setText: typeof setText;
static readonly testWhich: typeof testWhich;
readonly _capnp: _Struct;
/**
* Create a new pointer to a struct.
*
* @constructor {Struct}
* @param {Segment} segment The segment the pointer resides in.
* @param {number} byteOffset The offset from the beginning of the segment to the beginning of the pointer data.
* @param {any} [depthLimit=MAX_DEPTH] The nesting depth limit for this object.
* @param {number} [compositeIndex] If set, then this pointer is actually a reference to a composite list
* (`this._getPointerTargetType() === PointerType.LIST`), and this number is used as the index of the struct within
* the list. It is not valid to call `initStruct()` on a composite struct – the struct contents are initialized when
* the list pointer is initialized.
*/
constructor(segment: Segment, byteOffset: number, depthLimit?: number, compositeIndex?: number);
static toString(): string;
toString(): string;
}
/**
* Initialize a struct with the provided object size. This will allocate new space for the struct contents, ideally in
* the same segment as this pointer.
*
* @param {ObjectSize} size An object describing the size of the struct's data and pointer sections.
* @param {Struct} s The struct to initialize.
* @returns {void}
*/
export declare function initStruct(size: ObjectSize, s: Struct): void;
export declare function initStructAt<T extends Struct>(index: number, StructClass: StructCtor<T>, p: Pointer): T;
/**
* Make a shallow copy of a struct's contents and update the pointer to point to the new content. The data and pointer
* sections will be resized to the provided size.
*
* WARNING: This method can cause data loss if `dstSize` is smaller than the original size!
*
* @param {ObjectSize} dstSize The desired size for the struct contents.
* @param {Struct} s The struct to resize.
* @returns {void}
*/
export declare function resize(dstSize: ObjectSize, s: Struct): void;
export declare function adopt<T extends Struct>(src: Orphan<T>, s: Struct): void;
export declare function disown<T extends Struct>(s: Struct): Orphan<T>;
/**
* Convert a struct to a struct of the provided class. Particularly useful when casting to nested group types.
*
* @protected
* @template T
* @param {StructCtor<T>} StructClass The struct class to convert to. Not particularly useful if `Struct`.
* @param {Struct} s The struct to convert.
* @returns {T} A new instance of the desired struct class pointing to the same location.
*/
export declare function getAs<T extends Struct>(StructClass: StructCtor<T>, s: Struct): T;
/**
* Read a boolean (bit) value out of a struct.
*
* @protected
* @param {number} bitOffset The offset in **bits** from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {boolean} The value.
*/
export declare function getBit(bitOffset: number, s: Struct, defaultMask?: DataView): boolean;
export declare function getData(index: number, s: Struct, defaultValue?: Pointer): Data;
export declare function getDataSection(s: Struct): Pointer;
/**
* Read a float32 value out of a struct.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getFloat32(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read a float64 value out of this segment.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getFloat64(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read an int16 value out of this segment.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getInt16(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read an int32 value out of this segment.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getInt32(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read an int64 value out of this segment.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getInt64(byteOffset: number, s: Struct, defaultMask?: DataView): Int64;
/**
* Read an int8 value out of this segment.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getInt8(byteOffset: number, s: Struct, defaultMask?: DataView): number;
export declare function getList<T>(index: number, ListClass: ListCtor<T>, s: Struct, defaultValue?: Pointer): List<T>;
export declare function getPointer(index: number, s: Struct): Pointer;
export declare function getPointerAs<T extends Pointer>(index: number, PointerClass: PointerCtor<T>, s: Struct): T;
export declare function getPointerSection(s: Struct): Pointer;
export declare function getSize(s: Struct): ObjectSize;
export declare function getStruct<T extends Struct>(index: number, StructClass: StructCtor<T>, s: Struct, defaultValue?: Pointer): T;
export declare function getText(index: number, s: Struct, defaultValue?: string): string;
/**
* Read an uint16 value out of a struct..
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getUint16(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read an uint32 value out of a struct.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getUint32(byteOffset: number, s: Struct, defaultMask?: DataView): number;
/**
* Read an uint64 value out of a struct.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getUint64(byteOffset: number, s: Struct, defaultMask?: DataView): Uint64;
/**
* Read an uint8 value out of a struct.
*
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {Struct} s The struct to read from.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {number} The value.
*/
export declare function getUint8(byteOffset: number, s: Struct, defaultMask?: DataView): number;
export declare function getVoid(): void;
export declare function initData(index: number, length: number, s: Struct): Data;
export declare function initList<T>(index: number, ListClass: ListCtor<T>, length: number, s: Struct): List<T>;
/**
* Write a boolean (bit) value to the struct.
*
* @protected
* @param {number} bitOffset The offset in **bits** from the start of the data section.
* @param {boolean} value The value to write (writes a 0 for `false`, 1 for `true`).
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setBit(bitOffset: number, value: boolean, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive float32 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setFloat32(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive float64 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setFloat64(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive int16 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setInt16(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive int32 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setInt32(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive int64 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setInt64(byteOffset: number, value: Int64, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive int8 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setInt8(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
export declare function setPointer(index: number, value: Pointer, s: Struct): void;
export declare function setText(index: number, value: string, s: Struct): void;
/**
* Write a primitive uint16 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setUint16(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive uint32 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setUint32(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive uint64 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setUint64(byteOffset: number, value: Uint64, s: Struct, defaultMask?: DataView): void;
/**
* Write a primitive uint8 value to the struct.
*
* @protected
* @param {number} byteOffset The offset in bytes from the start of the data section.
* @param {number} value The value to write.
* @param {Struct} s The struct to write to.
* @param {DataView} [defaultMask] The default value as a DataView.
* @returns {void}
*/
export declare function setUint8(byteOffset: number, value: number, s: Struct, defaultMask?: DataView): void;
export declare function setVoid(): void;
export declare function testWhich(name: string, found: number, wanted: number, s: Struct): void;
export declare function checkDataBounds(byteOffset: number, byteLength: number, s: Struct): void;
export declare function checkPointerBounds(index: number, s: Struct): void;