argv_complex128array
Convert a Node-API value to a double-precision complex floating-point array.
Usage
var headerDir = require( '@stdlib/napi/argv-complex128array' );
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-complex128array' );
console.log( headerDir );
// => <string>
C APIs
Usage
#include "stdlib/napi/argv_complex128array.h"
stdlib_napi_argv_complex128array( env, value, **data, *length, *message, *err )
Converts a Node-API value to a double-precision complex floating-point array.
#include "stdlib/napi/argv_complex128array.h"
#include <node_api.h>
#include <stdint.h>
static napi_value addon( napi_env env, napi_callback_info info ) {
napi_value value;
// ...
double *X;
int64_t len;
napi_value err;
napi_status status = stdlib_napi_argv_complex128array( 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] double**
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 setserr
with a JavaScript error; otherwise,err
is set toNULL
.
napi_status stdlib_napi_argv_complex128array( const napi_env env, const napi_value value, double **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_COMPLEX128ARRAY( env, X, len, argv, index )
Macro for converting an add-on callback argument to a double-precision complex floating-point array.
#include "stdlib/napi/argv_complex128array.h"
#include "stdlib/napi/argv.h"
#include <node_api.h>
#include <stdint.h>
static void fcn( const double *X, const int64_t xlen, double *Y, const int64_t ylen ) {
int64_t len;
int64_t i;
if ( xlen > ylen ) {
len = ylen;
} else {
len = xlen;
}
for ( i = 0; i < len*2; 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_COMPLEX128ARRAY( env, X, xlen, argv, 0 );
// Convert the second argument to a C type:
STDLIB_NAPI_ARGV_COMPLEX128ARRAY( 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.
Notes
- A double-precision complex floating-point array is a double-precision floating-point array having interleaved real and imaginary components, such that each element of the double-precision complex floating-point array consists of two adjacent (in memory) double-precision floating-point numbers.