UNPKG

@mrhiden/cstruct

Version:

For packing and unpacking bytes (C like structures) in/from Buffer based on Object/Array type for parsing.

68 lines (67 loc) 2.24 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CStructLE = void 0; const cstruct_1 = require("./cstruct"); const make_le_1 = require("./make-le"); const write_le_1 = require("./write-le"); const read_le_1 = require("./read-le"); const decorators_metadata_1 = require("./decorators-metadata"); /** * C_Struct LE - Little Endian * Binary/Object and vice versa parser for JavaScript * * Parse MODEL, * Parse TYPES, * Uses Object, JSON, C_Struct lang (kind of C) */ class CStructLE extends cstruct_1.CStruct { constructor(model, types) { super(model, types); } make(struct) { const writer = new make_le_1.MakeLE(this.modelClone, struct); return { buffer: writer.toBuffer(), offset: writer.offset, size: writer.size }; } write(buffer, struct, offset = 0) { const writer = new write_le_1.WriteLE(this.modelClone, struct, buffer, offset); return { buffer: writer.toBuffer(), offset: writer.offset, size: writer.size }; } read(buffer, offset = 0) { const reader = new read_le_1.ReadLE(this.modelClone, buffer, offset); return { struct: reader.toStruct(), offset: reader.offset, size: reader.size }; } static make(struct) { const cStruct = decorators_metadata_1.CStructMetadata.getCStructLE(struct); return cStruct.make(struct); } static write(struct, buffer, offset) { const cStruct = decorators_metadata_1.CStructMetadata.getCStructLE(struct); return cStruct.write(buffer, struct, offset); } static read(TClass, buffer, offset) { const instance = new TClass(); const cStruct = decorators_metadata_1.CStructMetadata.getCStructLE(instance); const result = cStruct.read(buffer, offset); result.struct = Object.assign(instance, result.struct); return result; } static from(from) { return decorators_metadata_1.CStructMetadata.getCStructLE(from); } static fromModelTypes(model, types) { return new CStructLE(model, types); } } exports.CStructLE = CStructLE;