Callbacks

Assign callbacks to masked unary interfaces according to type promotion rules.

Usage

var callbacks = require( '@stdlib/strided/base/mskunary-signature-callbacks' );

callbacks( table, signatures )

Assigns callbacks to masked unary interfaces according to type promotion rules.

var signatures = require( '@stdlib/strided/base/mskunary-dtype-signatures' );
var identity = require( '@stdlib/math/base/special/identity' );
var cidentity = require( '@stdlib/math/base/special/cidentity' );
var cidentityf = require( '@stdlib/math/base/special/cidentityf' );

var dtypes = [
    'float64',
    'float32',
    'int32',
    'uint8'
];

var sigs = signatures( dtypes, dtypes );
// returns [...]

var table = {
    'default': identity,
    'complex64': cidentityf,
    'complex128': cidentity
};

var list = callbacks( table, sigs );
// returns [...]

The function accepts the following arguments:

  • table: callback table.
  • signatures: strided array containing masked unary interface signatures.

A callback table should have the following properties:

  • default: default callback.
  • complex64: callback for single-precision complex floating-point numbers.
  • complex128: callback for double-precision complex floating-point numbers.

Notes

  • The function assumes that the provided signature array has the following properties:

    • a strided array having a stride length of 3 (i.e., every 3 elements define a masked unary interface signature).
    • for each signature (i.e., set of two consecutive non-overlapping strided array elements), the first element is the input data type, the second element is the mask data type, and the third element is the return data type.
    • all signatures (excluding the mask data type) follow type promotion rules.

Examples

var dtypes = require( '@stdlib/strided/dtypes' );
var signatures = require( '@stdlib/strided/base/mskunary-dtype-signatures' );
var identity = require( '@stdlib/math/base/special/identity' );
var cidentity = require( '@stdlib/math/base/special/cidentity' );
var cidentityf = require( '@stdlib/math/base/special/cidentityf' );
var callbacks = require( '@stdlib/strided/base/mskunary-signature-callbacks' );

// Get the list of supported strided array data types:
var dt = dtypes();

// Generate masked unary interface signatures:
var sigs = signatures( dt, dt );

// Define a callback table:
var table = {
    'default': identity,
    'complex64': cidentityf,
    'complex128': cidentity
};

// Generate a list of callbacks according to type promotion rules:
var clbks = callbacks( table, sigs );
// returns [...]
Did you find this page helpful?