argv_uint16array

Convert a Node-API value to an unsigned 16-bit integer array.

Usage

var headerDir = require( '@stdlib/napi/argv-uint16array' );

headerDir

Absolute file path for the directory containing header files for C APIs.

var dir = headerDir;
// returns <string>

Examples

var headerDir = require( '@stdlib/napi/argv-uint16array' );

console.log( headerDir );
// => <string>

C APIs

Usage

#include "stdlib/napi/argv_uint16array.h"

stdlib_napi_argv_uint16array( env, value, **data, *length, *message, *err )

Converts a Node-API value to an unsigned 16-bit integer array.

#include "stdlib/napi/argv_uint16array.h"
#include <node_api.h>
#include <stdint.h>

static napi_value addon( napi_env env, napi_callback_info info ) {
    napi_value value;

    // ...

    uint16_t *X;
    int64_t len;
    napi_value err;
    napi_status status = stdlib_napi_argv_uint16array( env, value, &X, &len, "Must be a typed array.", &err );
    assert( status == napi_ok );
    if ( err != NULL ) {
        assert( napi_throw( env, err ) == napi_ok );
        return NULL;
    }

    // ...
}

The function accepts the following arguments:

  • env: [in] napi_env environment under which the function is invoked.
  • value: [in] napi_value Node-API value.
  • data: [out] uint16_t** pointer for returning a reference to the output array.
  • length: [out] int64_t* pointer for returning the number of array elements.
  • message: [in] char* error message.
  • err: [out] napi_value* pointer for storing a JavaScript error. If not provided a number, the function sets err with a JavaScript error; otherwise, err is set to NULL.
napi_status stdlib_napi_argv_uint16array( const napi_env env, const napi_value value, uint16_t **data, int64_t *length, const char *message, napi_value *err );

The function returns a napi_status status code indicating success or failure (returns napi_ok if success).

STDLIB_NAPI_ARGV_UINT16ARRAY( env, X, len, argv, index )

Macro for converting an add-on callback argument to an unsigned 16-bit integer array.

#include "stdlib/napi/argv_uint16array.h"
#include "stdlib/napi/argv.h"
#include <node_api.h>
#include <stdint.h>

static void fcn( const uint16_t *X, const int64_t xlen, uint16_t *Y, const int64_t ylen ) {
    int64_t len;
    int64_t i;

    if ( xlen > ylen ) {
        len = ylen;
    } else {
        len = xlen;
    }
    for ( i = 0; i < len; i++ ) {
        Y[ i ] = X[ i ];
    }
}

// ...

static napi_value addon( napi_env env, napi_callback_info info ) {
    // Retrieve add-on callback arguments:
    STDLIB_NAPI_ARGV( env, info, argv, argc, 2 );

    // Convert the first argument to a C type:
    STDLIB_NAPI_ARGV_UINT16ARRAY( env, X, xlen, argv, 0 );

    // Convert the second argument to a C type:
    STDLIB_NAPI_ARGV_UINT16ARRAY( env, Y, ylen, argv, 1 );

    // ...

    fcn( X, xlen, Y, ylen );
}

The macro expects the following arguments:

  • env: environment under which the callback is invoked.
  • X: output variable name for the array.
  • len: output variable name for the array length.
  • argv: name of the variable containing add-on callback arguments.
  • index: argument index.
Did you find this page helpful?