22
22
23
23
/// <reference types="@stdlib/types"/>
24
24
25
- import { ArrayLike } from '@stdlib/types/array' ;
26
- import { Collection } from '@stdlib/types/object' ;
25
+ import { ArrayLike , Collection } from '@stdlib/types/array' ;
27
26
28
27
/**
29
28
* Returns the accessed value.
30
29
*
31
30
* @returns accessed value
32
31
*/
33
- type NullaryCallback = ( ) => any ;
32
+ type NullaryCallback < T > = ( this : T ) => any ;
34
33
35
34
/**
36
35
* Returns the accessed value.
37
36
*
38
37
* @param values - array element value
39
38
* @returns accessed value
40
39
*/
41
- type UnaryCallback = ( values : any ) => any ;
40
+ type UnaryCallback < T > = ( this : T , values : any ) => any ;
42
41
43
42
/**
44
43
* Returns the accessed value.
@@ -47,7 +46,7 @@ type UnaryCallback = ( values: any ) => any;
47
46
* @param idx - iteration index
48
47
* @returns accessed value
49
48
*/
50
- type BinaryCallback = ( values : any , idx : number ) => any ;
49
+ type BinaryCallback < T > = ( this : T , values : any , idx : number ) => any ;
51
50
52
51
/**
53
52
* Returns the accessed value.
@@ -57,7 +56,7 @@ type BinaryCallback = ( values: any, idx: number ) => any;
57
56
* @param indices - strided indices (offset + idx*stride)
58
57
* @returns accessed value
59
58
*/
60
- type TernaryCallback = ( values : any , idx : number , indices : Array < number > ) => any ; // tslint-disable-line max-line-length
59
+ type TernaryCallback < T > = ( this : T , values : any , idx : number , indices : Array < number > ) => any ;
61
60
62
61
/**
63
62
* Returns the accessed value.
@@ -68,7 +67,7 @@ type TernaryCallback = ( values: any, idx: number, indices: Array<number> ) => a
68
67
* @param arrays - input and output arrays
69
68
* @returns accessed value
70
69
*/
71
- type QuaternaryCallback = ( values : any , idx : number , indices : Array < number > , arrays : Array < Collection > ) => any ; // tslint-disable-line max-line-length
70
+ type QuaternaryCallback < T > = ( this : T , values : any , idx : number , indices : Array < number > , arrays : Array < Collection > ) => any ;
72
71
73
72
/**
74
73
* Returns the accessed value.
@@ -79,7 +78,7 @@ type QuaternaryCallback = ( values: any, idx: number, indices: Array<number>, ar
79
78
* @param arrays - input and output arrays
80
79
* @returns accessed value
81
80
*/
82
- type Callback = NullaryCallback | UnaryCallback | BinaryCallback | TernaryCallback | QuaternaryCallback ; // tslint-disable-line max-line-length
81
+ type Callback < T > = NullaryCallback < T > | UnaryCallback < T > | BinaryCallback < T > | TernaryCallback < T > | QuaternaryCallback < T > ;
83
82
84
83
/**
85
84
* Strided array function.
@@ -130,7 +129,7 @@ type Callback = NullaryCallback | UnaryCallback | BinaryCallback | TernaryCallba
130
129
* }
131
130
* }
132
131
*/
133
- type StridedArrayFcnNoData = ( arrays : Array < ArrayLike < any > > , shape : Array < number > , strides : Array < number > , clbk : Callback , thisArg ?: any ) => void ; // tslint:disable-line:max-line-length
132
+ type StridedArrayFcnNoData < T > = ( arrays : Array < Collection > , shape : Array < number > , strides : Array < number > , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) => void ;
134
133
135
134
/**
136
135
* Strided array function.
@@ -182,7 +181,7 @@ type StridedArrayFcnNoData = ( arrays: Array<ArrayLike<any>>, shape: Array<numbe
182
181
* }
183
182
* }
184
183
*/
185
- type StridedArrayFcnWithData = ( arrays : Array < ArrayLike < any > > , shape : Array < number > , strides : Array < number > , data : any , clbk : Callback , thisArg ?: any ) => void ; // tslint:disable-line:max-line-length
184
+ type StridedArrayFcnWithData < T > = ( arrays : Array < Collection > , shape : Array < number > , strides : Array < number > , data : any , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) => void ;
186
185
187
186
/**
188
187
* Strided array function.
@@ -194,7 +193,7 @@ type StridedArrayFcnWithData = ( arrays: Array<ArrayLike<any>>, shape: Array<num
194
193
* @param clbk - callback function
195
194
* @param thisArg - execution context
196
195
*/
197
- type StridedArrayFcn = StridedArrayFcnNoData | StridedArrayFcnWithData ;
196
+ type StridedArrayFcn < T > = StridedArrayFcnNoData < T > | StridedArrayFcnWithData < T > ;
198
197
199
198
/**
200
199
* Strided array function using alternative indexing semantics.
@@ -238,7 +237,7 @@ type StridedArrayFcn = StridedArrayFcnNoData | StridedArrayFcnWithData;
238
237
* }
239
238
* }
240
239
*/
241
- type StridedArrayFcnWithOffsetsNoData = ( arrays : Array < ArrayLike < any > > , shape : Array < number > , strides : Array < number > , offsets : Array < number > , clbk : Callback , thisArg ?: any ) => void ; // tslint:disable-line:max-line-length
240
+ type StridedArrayFcnWithOffsetsNoData < T > = ( arrays : Array < Collection > , shape : Array < number > , strides : Array < number > , offsets : Array < number > , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) => void ;
242
241
243
242
/**
244
243
* Strided array function using alternative indexing semantics.
@@ -283,7 +282,7 @@ type StridedArrayFcnWithOffsetsNoData = ( arrays: Array<ArrayLike<any>>, shape:
283
282
* }
284
283
* }
285
284
*/
286
- type StridedArrayFcnWithOffsetsData = ( arrays : Array < ArrayLike < any > > , shape : Array < number > , strides : Array < number > , offsets : Array < number > , data : any , clbk : Callback , thisArg ?: any ) => void ; // tslint:disable-line:max-line-length
285
+ type StridedArrayFcnWithOffsetsData < T > = ( arrays : Array < Collection > , shape : Array < number > , strides : Array < number > , offsets : Array < number > , data : any , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) => void ;
287
286
288
287
/**
289
288
* Strided array function.
@@ -296,7 +295,7 @@ type StridedArrayFcnWithOffsetsData = ( arrays: Array<ArrayLike<any>>, shape: Ar
296
295
* @param clbk - callback function
297
296
* @param thisArg - execution context
298
297
*/
299
- type StridedArrayFcnWithOffsets = StridedArrayFcnWithOffsetsNoData | StridedArrayFcnWithOffsetsData ; // tslint:disable-line:max-line-length
298
+ type StridedArrayFcnWithOffsets < T > = StridedArrayFcnWithOffsetsNoData < T > | StridedArrayFcnWithOffsetsData < T > ;
300
299
301
300
/**
302
301
* Interface describing a strided array function dispatcher.
@@ -342,7 +341,7 @@ interface Dispatcher {
342
341
* strided( x.length, 'float64', x, 1, noop );
343
342
* // x => <Float64Array>[ 3.14, 3.14, 3.14, 3.14, 3.14 ]
344
343
*/
345
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
344
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
346
345
347
346
/**
348
347
* Invokes a strided array function based on the provided array data type(s) using alternative indexing semantics.
@@ -387,7 +386,7 @@ interface Dispatcher {
387
386
* strided( x.length, 'float64', x, 1, 0, noop );
388
387
* // x => <Float64Array>[ 3.14, 3.14, 3.14, 3.14, 3.14 ]
389
388
*/
390
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length unified-signatures
389
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ; // tslint:disable-line:unified-signatures
391
390
392
391
/**
393
392
* Invokes a strided array function based on the provided array data types.
@@ -430,7 +429,7 @@ interface Dispatcher {
430
429
* strided( x.length, 'float64', x, 1, 'float64', y, 1, identity );
431
430
* // y => <Float64Array>[ 1.0, 2.0, 3.0 ]
432
431
*/
433
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
432
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , dtypeY : any , y : Collection , strideY : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
434
433
435
434
/**
436
435
* Invokes a strided array function based on the provided array data types using alternative indexing semantics.
@@ -477,7 +476,7 @@ interface Dispatcher {
477
476
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, identity );
478
477
* // y => <Float64Array>[ 1.0, 2.0, 3.0 ]
479
478
*/
480
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , offsetY : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
479
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , dtypeY : any , y : Collection , strideY : number , offsetY : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
481
480
482
481
/**
483
482
* Invokes a strided array function based on the provided array data types.
@@ -530,7 +529,7 @@ interface Dispatcher {
530
529
* strided( x.length, 'float64', x, 1, 'float64', y, 1, 'float64', z, 1, identity );
531
530
* // z => <Float64Array>[ 2.0, 4.0, 6.0 ]
532
531
*/
533
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
532
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , dtypeY : any , y : Collection , strideY : number , dtypeZ : any , z : Collection , strideZ : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
534
533
535
534
/**
536
535
* Invokes a strided array function based on the provided array data types using alternative indexing semantics.
@@ -588,7 +587,7 @@ interface Dispatcher {
588
587
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, 'float64', z, 1, 0, identity );
589
588
* // z => <Float64Array>[ 2.0, 4.0, 6.0 ]
590
589
*/
591
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , offsetY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , offsetZ : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
590
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , dtypeY : any , y : Collection , strideY : number , offsetY : number , dtypeZ : any , z : Collection , strideZ : number , offsetZ : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
592
591
593
592
/**
594
593
* Invokes a strided array function based on the provided array data types.
@@ -645,7 +644,7 @@ interface Dispatcher {
645
644
* strided( x.length, 'float64', x, 1, 'float64', y, 1, 'float64', z, 1, 'float64', w, 1, identity );
646
645
* // w => <Float64Array>[ 3.0, 6.0, 9.0 ]
647
646
*/
648
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
647
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , dtypeY : any , y : Collection , strideY : number , dtypeZ : any , z : Collection , strideZ : number , dtypeW : any , w : Collection , strideW : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
649
648
650
649
/**
651
650
* Invokes a strided array function based on the provided array data types using alternative indexing semantics.
@@ -708,7 +707,7 @@ interface Dispatcher {
708
707
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, 'float64', z, 1, 0, 'float64', w, 1, 0, identity );
709
708
* // w => <Float64Array>[ 3.0, 6.0, 9.0 ]
710
709
*/
711
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , offsetY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , offsetZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , offsetW : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length
710
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , dtypeY : any , y : Collection , strideY : number , offsetY : number , dtypeZ : any , z : Collection , strideZ : number , offsetZ : number , dtypeW : any , w : Collection , strideW : number , offsetW : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ;
712
711
713
712
/**
714
713
* Invokes a strided array function based on the provided array data types.
@@ -770,7 +769,7 @@ interface Dispatcher {
770
769
* strided( x.length, 'float64', x, 1, 'float64', y, 1, 'float64', z, 1, 'float64', w, 1, 'float64', u, 1, 'float64', v, 1, identity );
771
770
* // v => <Float64Array>[ 4.0, 8.0, 12.0 ]
772
771
*/
773
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , dtypeU : any , u : ArrayLike < any > , strideU : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length unified-signatures
772
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , dtypeY : any , y : Collection , strideY : number , dtypeZ : any , z : Collection , strideZ : number , dtypeW : any , w : Collection , strideW : number , dtypeU : any , u : Collection , strideU : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ; // tslint:disable-line:unified-signatures
774
773
775
774
/**
776
775
* Invokes a strided array function based on the provided array data types using alternative indexing semantics.
@@ -835,7 +834,7 @@ interface Dispatcher {
835
834
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, 'float64', z, 1, 0, 'float64', w, 1, 0, 'float64', u, 1, 0, 'float64', v, 1, 0, identity );
836
835
* // v => <Float64Array>[ 4.0, 8.0, 12.0 ]
837
836
*/
838
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , offsetY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , offsetZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , offsetW : number , dtypeU : any , u : ArrayLike < any > , strideU : number , offsetU : number , clbk : Callback , thisArg ?: any ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length unified-signatures
837
+ < T > ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , dtypeY : any , y : Collection , strideY : number , offsetY : number , dtypeZ : any , z : Collection , strideZ : number , offsetZ : number , dtypeW : any , w : Collection , strideW : number , offsetW : number , dtypeU : any , u : Collection , strideU : number , offsetU : number , clbk : Callback < T > , thisArg ?: ThisParameterType < Callback < T > > ) : ArrayLike < any > | void ; // tslint:disable-line:unified-signatures
839
838
840
839
/**
841
840
* Invokes a strided array function based on the provided array data types.
@@ -896,7 +895,7 @@ interface Dispatcher {
896
895
* strided( x.length, 'float64', x, 1, 'float64', y, 1, 'float64', z, 1, 'float64', w, 1, 'float64', u, 1, 'float64', v, 1, identity );
897
896
* // v => <Float64Array>[ 4.0, 8.0, 12.0 ]
898
897
*/
899
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , dtypeU : any , u : ArrayLike < any > , strideU : number , ...args : Array < any > ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length unified-signatures
898
+ ( N : number , dtypeX : any , x : Collection , strideX : number , dtypeY : any , y : Collection , strideY : number , dtypeZ : any , z : Collection , strideZ : number , dtypeW : any , w : Collection , strideW : number , dtypeU : any , u : Collection , strideU : number , ...args : Array < any > ) : ArrayLike < any > | void ; // tslint:disable-line:unified-signatures
900
899
901
900
/**
902
901
* Invokes a strided array function based on the provided array data types using alternative indexing semantics.
@@ -962,7 +961,7 @@ interface Dispatcher {
962
961
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, 'float64', z, 1, 0, 'float64', w, 1, 0, 'float64', u, 1, 0, 'float64', v, 1, 0, identity );
963
962
* // v => <Float64Array>[ 4.0, 8.0, 12.0 ]
964
963
*/
965
- ( N : number , dtypeX : any , x : ArrayLike < any > , strideX : number , offsetX : number , dtypeY : any , y : ArrayLike < any > , strideY : number , offsetY : number , dtypeZ : any , z : ArrayLike < any > , strideZ : number , offsetZ : number , dtypeW : any , w : ArrayLike < any > , strideW : number , offsetW : number , dtypeU : any , u : ArrayLike < any > , strideU : number , offsetU : number , ...args : Array < any > ) : ArrayLike < any > | void ; // tslint:disable-line:max-line-length unified-signatures
964
+ ( N : number , dtypeX : any , x : Collection , strideX : number , offsetX : number , dtypeY : any , y : Collection , strideY : number , offsetY : number , dtypeZ : any , z : Collection , strideZ : number , offsetZ : number , dtypeW : any , w : Collection , strideW : number , offsetW : number , dtypeU : any , u : Collection , strideU : number , offsetU : number , ...args : Array < any > ) : ArrayLike < any > | void ; // tslint:disable-line:unified-signatures
966
965
}
967
966
968
967
/**
@@ -1010,7 +1009,7 @@ interface Dispatcher {
1010
1009
* strided( x.length, 'float64', x, 1, 'float64', y, 1, identity );
1011
1010
* // y => <Float64Array>[ 1.0, 2.0, 3.0, 4.0, 5.0 ]
1012
1011
*/
1013
- declare function dispatchBy ( fcns : StridedArrayFcn | ArrayLike < StridedArrayFcn > , types : ArrayLike < any > , data : ArrayLike < any > | null , nargs : number , nin : number , nout : number ) : Dispatcher ; // tslint:disable-line:max-line-length
1012
+ declare function dispatchBy < T = unknown > ( fcns : StridedArrayFcn < T > | ArrayLike < StridedArrayFcn < T > > , types : ArrayLike < any > , data : ArrayLike < any > | null , nargs : number , nin : number , nout : number ) : Dispatcher ;
1014
1013
1015
1014
/**
1016
1015
* Returns a strided array function interface which accepts a callback function and performs multiple dispatch while supporting alternative indexing semantics.
@@ -1057,7 +1056,7 @@ declare function dispatchBy( fcns: StridedArrayFcn | ArrayLike<StridedArrayFcn>,
1057
1056
* strided( x.length, 'float64', x, 1, 0, 'float64', y, 1, 0, identity );
1058
1057
* // y => <Float64Array>[ 1.0, 2.0, 3.0, 4.0, 5.0 ]
1059
1058
*/
1060
- declare function dispatchBy ( fcns : StridedArrayFcnWithOffsets | ArrayLike < StridedArrayFcnWithOffsets > , types : ArrayLike < any > , data : ArrayLike < any > | null , nargs : number , nin : number , nout : number ) : Dispatcher ; // tslint:disable-line:max-line-length unified-signatures
1059
+ declare function dispatchBy < T = unknown > ( fcns : StridedArrayFcnWithOffsets < T > | ArrayLike < StridedArrayFcnWithOffsets < T > > , types : ArrayLike < any > , data : ArrayLike < any > | null , nargs : number , nin : number , nout : number ) : Dispatcher ; // tslint:disable-line:unified-signatures
1061
1060
1062
1061
1063
1062
// EXPORTS //
0 commit comments