# Add-on Arguments
> C API for validating, extracting, and transforming (to native C types) function arguments provided to an ndarray Node-API add-on interface.
## Usage
```javascript
var headerDir = require( '@stdlib/ndarray/base/napi/addon-arguments' );
```
#### headerDir
Absolute file path for the directory containing header files for C APIs.
```javascript
var dir = headerDir;
// returns
```
## Examples
```javascript
var headerDir = require( '@stdlib/ndarray/base/napi/addon-arguments' );
console.log( headerDir );
// =>
```
* * *
## C APIs
### Usage
```c
#include "stdlib/ndarray/base/napi/addon_arguments.h"
```
#### stdlib_ndarray_napi_addon_arguments( env, argv, nargs, nin, \*arrays[], \*err )
Validates, extracts, and transforms (to native C types) function arguments provided to an ndarray Node-API add-on interface.
```c
#include
#include
#include
// ...
/**
* Receives JavaScript callback invocation data.
*
* @param env environment under which the function is invoked
* @param info callback data
* @return Node-API value
*/
napi_value addon( napi_env env, napi_callback_info info ) {
napi_status status;
// ...
int64_t nargs = 6;
int64_t nin = 2;
// Get callback arguments:
size_t argc = 6;
napi_value argv[ 6 ];
status = napi_get_cb_info( env, info, &argc, argv, nullptr, nullptr );
assert( status == napi_ok );
// ...
// Process the provided arguments:
struct ndarray *arrays[ 3 ];
napi_value err;
status = stdlib_ndarray_napi_addon_arguments( env, argv, nargs, nin, arrays, &err );
assert( status == napi_ok );
// ...
}
// ...
```
The function accepts the following arguments:
- **env**: `[in] napi_env` environment under which the function is invoked.
- **argv**: `[in] napi_value*` ndarray function arguments.
- **nargs**: `[in] int64_t` total number of expected arguments.
- **nin**: `[in] int64_t` number of input ndarray arguments.
- **arrays**: `[out] struct ndarrays**` destination array for storing pointers to both input and output ndarrays.
- **err**: `[out] napi_value*` pointer for storing a JavaScript error.
```c
napi_status stdlib_ndarray_napi_addon_arguments( const napi_env env, const napi_value *argv, const int64_t nargs, const int64_t nin, struct ndarray *arrays[], napi_value *err );
```
The function returns a `napi_status` status code indicating success or failure (returns `napi_ok` if success).
### Notes
- The function assumes the following argument order:
```text
[ ib1, im1, ib2, im2, ..., ob1, om1, ob2, om2, ... ]
```
where
- `ib#` is a data buffer for an input ndarray.
- `im#` is meta data for an input ndarray.
- `ob#` is a data buffer for an output ndarray.
- `om#` is meta data for an output ndarray.
- The function may return one of the following JavaScript errors:
- `Error`: unable to allocate memory when processing input ndarray.
- `Error`: unable to allocate memory when processing output ndarray.