Callbacks
Assign callbacks to binary interfaces according to type promotion rules.
Usage
var callbacks = require( '@stdlib/strided/base/binary-signature-callbacks' );
callbacks( table, signatures )
Assigns callbacks to binary interfaces according to type promotion rules.
var signatures = require( '@stdlib/strided/base/binary-dtype-signatures' );
var add = require( '@stdlib/math/base/ops/add' );
var cadd = require( '@stdlib/complex/float64/base/add' );
var caddf = require( '@stdlib/complex/float32/base/add' );
var dtypes = [
'float64',
'float32',
'int32',
'uint8'
];
var sigs = signatures( dtypes, dtypes, dtypes );
// returns [...]
var table = {
'default': add,
'complex64': caddf,
'complex128': cadd
};
var list = callbacks( table, sigs );
// returns [...]
The function accepts the following arguments:
- table: callback table.
- signatures: strided array containing binary 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., every3
elements define a binary interface signature). - for each signature (i.e., set of three consecutive non-overlapping strided array elements), the first two elements are the input data types and the third element is the return data type.
- all signatures follow type promotion rules.
- a strided array having a stride length of
Examples
var dtypes = require( '@stdlib/strided/dtypes' );
var signatures = require( '@stdlib/strided/base/binary-dtype-signatures' );
var add = require( '@stdlib/math/base/ops/add' );
var cadd = require( '@stdlib/complex/float64/base/add' );
var caddf = require( '@stdlib/complex/float32/base/add' );
var callbacks = require( '@stdlib/strided/base/binary-signature-callbacks' );
// Get the list of supported strided array data types:
var dt = dtypes();
// Generate binary interface signatures:
var sigs = signatures( dt, dt, dt );
// Define a callback table:
var table = {
'default': add,
'complex64': caddf,
'complex128': cadd
};
// Generate a list of callbacks according to type promotion rules:
var clbks = callbacks( table, sigs );
// returns [...]