Skip to content

Create C "array" instances on top of Buffers

Notifications You must be signed in to change notification settings

lxe/ref-array

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

85 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ref-array

Create C typed "array" instances on top of Buffers

Build Status Build Status

This module offers an "array" implementation on top of Node.js Buffers using the ref "type" interface.

Installation

Install with npm:

$ npm install ref-array

Examples

Basic usage

var ref = require('ref')
var ArrayType = require('ref-array')

// typedef
var int = ref.types.int

// define the "int[]" type
var IntArray = ArrayType(int)

// now we can create array instances; the constructor takes the same arguments
// the native JS Array class

var a = new IntArray(5) // by length
a.length // 5
a[0] = 0
a[1] = 1
a[2] = -1
a[3] = 2
a[4] = -2

var b = new IntArray([1, 2, 3, 4, 5]) // with an existing Array
b.length // 5
b[0] // 1
b[1] // 2
b[2] // 3
b[3] // 4
b[4] // 5

Reading a NULL-terminated Array

// sometimes you get a variable length array that is terminated by a NULL byte.
var buf = new Buffer(int.size * 3)
int.set(buf, int.size * 0, 5)
int.set(buf, int.size * 1, 8)
int.set(buf, int.size * 2, 0) // <- terminate with 0s

// you can create an array instance with the length automatically determined
var array = IntArray.untilZeros(buf)
console.log(array.length)
// 2
console.log(array)
// [ 5, 8 ]

With node-ffi