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., every 3 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.

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 [...]
Did you find this page helpful?