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.CStructBE = void 0; const cstruct_1 = require("./cstruct"); const make_be_1 = require("./make-be"); const write_be_1 = require("./write-be"); const read_be_1 = require("./read-be"); const decorators_metadata_1 = require("./decorators-metadata"); /** * C_Struct BE - Big Endian * Binary/Object and vice versa parser for JavaScript * * Parse MODEL, * Parse TYPES, * Uses Object, JSON, C_Struct lang (kind of C) */ class CStructBE extends cstruct_1.CStruct { constructor(model, types) { super(model, types); } make(struct) { const writer = new make_be_1.MakeBE(this.modelClone, struct); return { buffer: writer.toBuffer(), offset: writer.offset, size: writer.size }; } write(buffer, struct, offset = 0) { const writer = new write_be_1.WriteBE(this.modelClone, struct, buffer, offset); return { buffer: writer.toBuffer(), offset: writer.offset, size: writer.size }; } read(buffer, offset = 0) { const reader = new read_be_1.ReadBE(this.modelClone, buffer, offset); return { struct: reader.toStruct(), offset: reader.offset, size: reader.size }; } static make(struct) { const cStruct = decorators_metadata_1.CStructMetadata.getCStructBE(struct); return cStruct.make(struct); } static write(struct, buffer, offset) { const cStruct = decorators_metadata_1.CStructMetadata.getCStructBE(struct); return cStruct.write(buffer, struct, offset); } static read(TClass, buffer, offset) { const instance = new TClass(); const cStruct = decorators_metadata_1.CStructMetadata.getCStructBE(instance); const result = cStruct.read(buffer, offset); result.struct = Object.assign(instance, result.struct); return result; } static from(from) { return decorators_metadata_1.CStructMetadata.getCStructBE(from); } static fromModelTypes(model, types) { return new CStructBE(model, types); } } exports.CStructBE = CStructBE;