Skip to content

Commit f478ce2

Browse files
committed
Auto-generated commit
1 parent 268da6a commit f478ce2

File tree

11 files changed

+94
-210
lines changed

11 files changed

+94
-210
lines changed

README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,8 @@ var obj = ndarraylike2object( arr );
9292
- **strides**: array strides.
9393
- **offset**: index offset.
9494
- **order**: order.
95-
- **accessors**: `boolean` indicating whether the data buffer uses accessors for getting and setting elements.
96-
- **getter**: accessor for retrieving a data buffer element.
97-
- **setter**: accessor for setting a data buffer element.
95+
- **accessorProtocol**: `boolean` indicating whether the data buffer supports the get/set protocol (i.e., uses accessors for getting and setting elements).
96+
- **accessors**: a two-element array whose first element is an accessor for retrieving an ndarray element and whose second element is an accessor for setting an ndarray element.
9897

9998
- The getter accessor accepts two arguments:
10099

@@ -140,7 +139,7 @@ console.log( 'shape: [ %s ]', obj.shape.join( ', ' ) );
140139
console.log( 'strides: [ %s ]', obj.strides.join( ', ' ) );
141140
console.log( 'offset: %d', obj.offset );
142141
console.log( 'order: %s', obj.order );
143-
console.log( 'accessors: %s', obj.accessors );
142+
console.log( 'accessor protocol: %s', obj.accessorProtocol );
144143
```
145144

146145
</section>

docs/repl.txt

Lines changed: 38 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@
1212
- strides: array strides.
1313
- offset: index offset.
1414
- order: order.
15-
- accessors: boolean indicating whether the data buffer uses accessors for
16-
getting and setting elements.
17-
- getter: accessor for retrieving a data buffer element.
18-
- setter: accessor for setting a data buffer element.
15+
- accessorProtocol: boolean indicating whether the data buffer uses
16+
accessors for getting and setting elements.
17+
- accessors: a two-element array whose first element is an accessor for
18+
retrieving an ndarray element and whose second element is an accessor for
19+
setting an ndarray element.
1920

2021
The getter accessor accepts two arguments:
2122

@@ -38,6 +39,39 @@
3839
out: Object
3940
Object containing ndarray meta data.
4041

42+
out.ref: ndarray
43+
Reference to input array.
44+
45+
out.dtype: string
46+
Underlying data type.
47+
48+
out.data: ArrayLikeObject
49+
Data buffer.
50+
51+
out.length: integer
52+
Number of elements.
53+
54+
out.shape: ArrayLikeObject<integer>
55+
Array dimensions.
56+
57+
out.strides: ArrayLikeObject<integer>
58+
Array strides.
59+
60+
out.offset: integer
61+
Index offset.
62+
63+
out.order: string
64+
Layout order.
65+
66+
out.accessorProtocol: boolean
67+
Boolean indicating whether the input array use accessors for getting and
68+
setting elements.
69+
70+
out.accessors: Array<Function>
71+
A two-element array whose first element is an accessor for retrieving an
72+
ndarray element and whose second element is an accessor for setting an
73+
ndarray element.
74+
4175
Examples
4276
--------
4377
> var arr = {{alias:@stdlib/ndarray/array}}( [ [ 1, 2 ], [ 3, 4 ] ] );

docs/types/index.d.ts

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,10 @@
2323
import { ndarray } from '@stdlib/types/ndarray';
2424
import { Collection } from '@stdlib/types/object';
2525

26+
// FIXME: we can improve specificity here by retaining type information from the wrapped ndarray. See `@stdlib/array/base/arraylike2object` which types specialized objects depending on the input array data type.
27+
2628
/**
27-
* Returns an ndarray element.
29+
* Returns an ndarray buffer element.
2830
*
2931
* @param buf - ndarray data buffer
3032
* @param idx - element index
@@ -33,7 +35,7 @@ import { Collection } from '@stdlib/types/object';
3335
type Getter = ( buf: ndarray['data'], idx: number ) => any;
3436

3537
/**
36-
* Sets an ndarray element.
38+
* Sets an ndarray buffer element.
3739
*
3840
* @param buf - ndarray data buffer
3941
* @param idx - element index
@@ -86,19 +88,14 @@ interface ndarrayObject { // tslint:disable-line:class-name
8688
order: ndarray['order'];
8789

8890
/**
89-
* Boolean indicating whether the data buffer uses accessors for getting and setting elements.
90-
*/
91-
accessors: boolean;
92-
93-
/**
94-
* Accessor for retrieving a data buffer element.
91+
* Boolean indicating whether the data buffer supports the get/set protocol (i.e., uses accessors for getting and setting elements).
9592
*/
96-
getter: Getter;
93+
accessorProtocol: boolean;
9794

9895
/**
99-
* Accessor for setting a data buffer element.
96+
* Two-element array whose first element is an accessor for retrieving an array element and whose second element is an accessor for setting an array element.
10097
*/
101-
setter: Setter;
98+
accessors: [ Getter, Setter ];
10299
}
103100

104101
/**

examples/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,4 @@ console.log( 'shape: [ %s ]', obj.shape.join( ', ' ) );
3636
console.log( 'strides: [ %s ]', obj.strides.join( ', ' ) );
3737
console.log( 'offset: %d', obj.offset );
3838
console.log( 'order: %s', obj.order );
39-
console.log( 'accessors: %s', obj.accessors );
39+
console.log( 'accessor protocol: %s', obj.accessorProtocol );

lib/getter.accessor.js

Lines changed: 0 additions & 38 deletions
This file was deleted.

lib/getter.js

Lines changed: 0 additions & 38 deletions
This file was deleted.

lib/main.js

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,11 +21,11 @@
2121
// MODULES //
2222

2323
var isAccessorArray = require( '@stdlib/array-base-assert-is-accessor-array' );
24+
var accessorGetter = require( '@stdlib/array-base-accessor-getter' );
25+
var accessorSetter = require( '@stdlib/array-base-accessor-setter' );
26+
var getter = require( '@stdlib/array-base-getter' );
27+
var setter = require( '@stdlib/array-base-setter' );
2428
var numel = require( '@stdlib/ndarray-base-numel' );
25-
var getIndexed = require( './getter.js' );
26-
var getAccessor = require( './getter.accessor.js' );
27-
var setIndexed = require( './setter.js' );
28-
var setAccessor = require( './setter.accessor.js' );
2929

3030

3131
// MAIN //
@@ -47,9 +47,8 @@ var setAccessor = require( './setter.accessor.js' );
4747
* - **strides**: array strides.
4848
* - **offset**: index offset.
4949
* - **order**: order.
50-
* - **accessors**: `boolean` indicating whether the data buffer uses accessors for getting and setting elements.
51-
* - **getter**: accessor for retrieving a data buffer element.
52-
* - **setter**: accessor for setting a data buffer element.
50+
* - **accessorProtocol**: `boolean` indicating whether the data buffer supports the get/set protocol (i.e., uses accessors for getting and setting elements).
51+
* - **accessors**: a two-element array whose first element is an accessor for retrieving an ndarray element and whose second element is an accessor for setting an ndarray element.
5352
*
5453
* @param {ndarrayLike} x - ndarray-like object
5554
* @param {string} x.dtype - data type
@@ -72,24 +71,27 @@ function ndarraylike2object( x ) {
7271
var xbuf;
7372
var bool;
7473
var sh;
74+
var dt;
7575

7676
xbuf = x.data;
7777
sh = x.shape;
78+
dt = x.dtype;
7879

7980
bool = isAccessorArray( xbuf );
8081

8182
return {
8283
'ref': x,
83-
'dtype': x.dtype,
84+
'dtype': dt,
8485
'data': xbuf,
8586
'length': numel( sh ),
8687
'shape': sh,
8788
'strides': x.strides,
8889
'offset': x.offset,
8990
'order': x.order,
90-
'accessors': bool,
91-
'getter': ( bool ) ? getAccessor : getIndexed,
92-
'setter': ( bool ) ? setAccessor : setIndexed
91+
'accessorProtocol': bool,
92+
'accessors': ( bool ) ?
93+
[ accessorGetter( dt ), accessorSetter( dt ) ] :
94+
[ getter( dt ), setter( dt ) ]
9395
};
9496
}
9597

lib/setter.accessor.js

Lines changed: 0 additions & 38 deletions
This file was deleted.

lib/setter.js

Lines changed: 0 additions & 38 deletions
This file was deleted.

package.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,11 @@
3737
"url": "https://github.com/stdlib-js/stdlib/issues"
3838
},
3939
"dependencies": {
40+
"@stdlib/array-base-accessor-getter": "^0.0.x",
41+
"@stdlib/array-base-accessor-setter": "^0.0.x",
4042
"@stdlib/array-base-assert-is-accessor-array": "^0.0.x",
43+
"@stdlib/array-base-getter": "^0.0.x",
44+
"@stdlib/array-base-setter": "^0.0.x",
4145
"@stdlib/ndarray-base-numel": "^0.0.x",
4246
"@stdlib/types": "^0.0.x"
4347
},

0 commit comments

Comments
 (0)