0.0.4 • Published 5 years ago

marshalling-binary-struct-js v0.0.4

Weekly downloads
1
License
ISC
Repository
-
Last release
5 years ago

Marshalling-binary-struct-js

Allows projecting native structures onto structures of a typed array.

  • Status: pre alpha

Examples

const StructJS = require("marshalling-binary-struct-js");


const structJS = new StructJS();
structJS.add`
	typedef int32le i32;
	typedef struct {
		cstring_utf8 myString[256];
		i32 index;
		i32 flags;
		i32 flags2;
		struct {
			float32le x;
			float32le y;
			float32le z;
		} pos;
	} tmp_t;

	typedef tmp_t array_of_tmp_t[1024];
`;

const Marshalling = structJS.compile();
const ab = new ArrayBuffer(Marshalling.array_of_tmp_t._size);
const marshal = new Marshalling(ab);
const arrayTmp = new marshal.array_of_tmp_t(0);

arrayTmp._fill(0);

let i = 0;
for(const tmp of arrayTmp) {
	tmp.myString = `tmp string for ${i}`;
	tmp.index = i;
	tmp.flags |= 1;
	tmp.flags2 |= 0xF5890;
	tmp.pos.x = 2;
	tmp.pos.y = 2;
	tmp.pos.z = 2;
	i++;
}
console.log( arrayTmp.get(100).myString );
console.log( arrayTmp.get(100).index );

Base types

cstring_utf8[sizemax];

int8le int16le int32le int64le uint8le uint16le uint32le uint64le
int8be int16be int32be int64be uint8be uint16be uint32be uint64be

/// alias le 
int8 int16 int32 int64 uint8 uint16 uint32 uint64
int8 int16 int32 int64 uint8 uint16 uint32 uint64

/// alias int32le
int

Author: RainNeko