Skip to content

Commit bffda37

Browse files
committed
refactor: use array/little-endian-factory
1 parent 5a2c12b commit bffda37

File tree

3 files changed

+4
-326
lines changed

3 files changed

+4
-326
lines changed

lib/node_modules/@stdlib/array/little-endian-float64/lib/from_iterator.js

-48
This file was deleted.

lib/node_modules/@stdlib/array/little-endian-float64/lib/from_iterator_map.js

-53
This file was deleted.

lib/node_modules/@stdlib/array/little-endian-float64/lib/main.js

+4-225
Original file line numberDiff line numberDiff line change
@@ -16,54 +16,21 @@
1616
* limitations under the License.
1717
*/
1818

19-
/* eslint-disable max-len, no-restricted-syntax, no-invalid-this */
20-
2119
'use strict';
2220

2321
// MODULES //
2422

25-
var isCollection = require( '@stdlib/assert/is-collection' );
26-
var isObject = require( '@stdlib/assert/is-object' );
27-
var isFunction = require( '@stdlib/assert/is-function' );
28-
var hasIteratorSymbolSupport = require( '@stdlib/assert/has-iterator-symbol-support' );
29-
var ITERATOR_SYMBOL = require( '@stdlib/symbol/iterator' );
30-
var setReadOnly = require( '@stdlib/utils/define-nonenumerable-read-only-property' );
31-
var getter = require( '@stdlib/array/base/getter' );
32-
var accessorGetter = require( '@stdlib/array/base/accessor-getter' );
33-
var inherits = require( '@stdlib/utils/inherit' );
34-
var parent = require( '@stdlib/array/fixed-endian-float64' ); // eslint-disable-line stdlib/no-redeclare
35-
var format = require( '@stdlib/string/format' );
36-
var fromIterator = require( './from_iterator.js' );
37-
var fromIteratorMap = require( './from_iterator_map.js' );
38-
39-
40-
// VARIABLES //
41-
42-
var BYTES_PER_ELEMENT = 8; // 8 bytes per double
43-
var HAS_ITERATOR_SYMBOL = hasIteratorSymbolSupport();
44-
var BYTE_ORDER = 'little-endian';
45-
46-
47-
// FUNCTIONS //
48-
49-
/**
50-
* Returns a boolean indicating if a value is a `Float64ArrayLE` constructor.
51-
*
52-
* @private
53-
* @param {*} value - value to test
54-
* @returns {boolean} boolean indicating if a value is a `Float64ArrayLE` constructor
55-
*/
56-
function isFloat64ArrayLEConstructor( value ) { // eslint-disable-line id-length
57-
return ( value === Float64ArrayLE );
58-
}
23+
var factory = require( '@stdlib/array/little-endian-factory' );
5924

6025

6126
// MAIN //
6227

6328
/**
6429
* Typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in little-endian byte order.
6530
*
31+
* @name Float64ArrayLE
6632
* @constructor
33+
* @type {Function}
6734
* @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or an iterable
6835
* @param {NonNegativeInteger} [byteOffset=0] - byte offset
6936
* @param {NonNegativeInteger} [length] - view length
@@ -123,195 +90,7 @@ function isFloat64ArrayLEConstructor( value ) { // eslint-disable-line id-length
12390
* var len = arr.length;
12491
* // returns 2
12592
*/
126-
function Float64ArrayLE() {
127-
var nargs = arguments.length;
128-
if ( !(this instanceof Float64ArrayLE) ) {
129-
if ( nargs === 0 ) {
130-
return new Float64ArrayLE();
131-
}
132-
if ( nargs === 1 ) {
133-
return new Float64ArrayLE( arguments[0] );
134-
}
135-
if ( nargs === 2 ) {
136-
return new Float64ArrayLE( arguments[0], arguments[1] );
137-
}
138-
return new Float64ArrayLE( arguments[0], arguments[1], arguments[2] );
139-
}
140-
if ( nargs === 0 ) {
141-
parent.call( this, BYTE_ORDER );
142-
} else if ( nargs === 1 ) {
143-
parent.call( this, BYTE_ORDER, arguments[0] );
144-
} else if ( nargs === 2 ) {
145-
parent.call( this, BYTE_ORDER, arguments[0], arguments[1] );
146-
} else if ( nargs === 3 ) {
147-
parent.call( this, BYTE_ORDER, arguments[0], arguments[1], arguments[2] );
148-
}
149-
return this;
150-
}
151-
152-
/**
153-
* Size (in bytes) of each array element.
154-
*
155-
* @name BYTES_PER_ELEMENT
156-
* @memberof Float64ArrayLE
157-
* @readonly
158-
* @type {PositiveInteger}
159-
* @default 8
160-
*
161-
* @example
162-
* var nbytes = Float64ArrayLE.BYTES_PER_ELEMENT;
163-
* // returns 8
164-
*/
165-
setReadOnly( Float64ArrayLE, 'BYTES_PER_ELEMENT', BYTES_PER_ELEMENT );
166-
167-
/**
168-
* Constructor name.
169-
*
170-
* @name name
171-
* @memberof Float64ArrayLE
172-
* @readonly
173-
* @type {string}
174-
* @default 'Float64ArrayLE'
175-
*
176-
* @example
177-
* var str = Float64ArrayLE.name;
178-
* // returns 'Float64ArrayLE'
179-
*/
180-
setReadOnly( Float64ArrayLE, 'name', 'Float64ArrayLE' );
181-
182-
/**
183-
* Creates a new `Float64ArrayLE` from an array-like object or an iterable.
184-
*
185-
* @name from
186-
* @memberof Float64ArrayLE
187-
* @type {Function}
188-
* @param {(Collection|Iterable)} src - array-like object or iterable
189-
* @param {Function} [clbk] - callback to invoke for each source element
190-
* @param {*} [thisArg] - context
191-
* @throws {TypeError} `this` context must be a constructor
192-
* @throws {TypeError} `this` must be a Float64ArrayLE
193-
* @throws {TypeError} first argument must be an array-like object or an iterable
194-
* @throws {TypeError} second argument must be a function
195-
* @returns {Float64ArrayLE} typed array instance
196-
*
197-
* @example
198-
* var arr = Float64ArrayLE.from( [ 1.0, 2.0 ] );
199-
* // returns <Float64ArrayLE>
200-
*
201-
* var len = arr.length;
202-
* // returns 2
203-
*
204-
* @example
205-
* function clbk( v ) {
206-
* return v * 2.0;
207-
* }
208-
*
209-
* var arr = Float64ArrayLE.from( [ 1.0, 2.0 ], clbk );
210-
* // returns <Float64ArrayLE>
211-
*
212-
* var len = arr.length;
213-
* // returns 2
214-
*/
215-
setReadOnly( Float64ArrayLE, 'from', function from( src ) {
216-
var thisArg;
217-
var nargs;
218-
var clbk;
219-
var out;
220-
var buf;
221-
var tmp;
222-
var get;
223-
var len;
224-
var i;
225-
if ( !isFunction( this ) ) {
226-
throw new TypeError( 'invalid invocation. `this` context must be a constructor.' );
227-
}
228-
if ( !isFloat64ArrayLEConstructor( this ) ) {
229-
throw new TypeError( 'invalid invocation. `this` is not a Float64ArrayLE.' );
230-
}
231-
nargs = arguments.length;
232-
if ( nargs > 1 ) {
233-
clbk = arguments[ 1 ];
234-
if ( !isFunction( clbk ) ) {
235-
throw new TypeError( format( 'invalid argument. Second argument must be a function. Value: `%s`.', clbk ) );
236-
}
237-
if ( nargs > 2 ) {
238-
thisArg = arguments[ 2 ];
239-
}
240-
}
241-
if ( isCollection( src ) ) {
242-
if ( clbk ) {
243-
len = src.length;
244-
if ( src.get && src.set ) {
245-
get = accessorGetter( 'default' );
246-
} else {
247-
get = getter( 'default' );
248-
}
249-
out = new this( len );
250-
buf = out._buffer; // eslint-disable-line no-underscore-dangle
251-
for ( i = 0; i < len; i++ ) {
252-
buf.setFloat64( i*BYTES_PER_ELEMENT, clbk.call( thisArg, get( src, i ), i ), true );
253-
}
254-
return out;
255-
}
256-
return new this( src );
257-
}
258-
if ( isObject( src ) && HAS_ITERATOR_SYMBOL && isFunction( src[ ITERATOR_SYMBOL ] ) ) {
259-
buf = src[ ITERATOR_SYMBOL ]();
260-
if ( !isFunction( buf.next ) ) {
261-
throw new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );
262-
}
263-
if ( clbk ) {
264-
tmp = fromIteratorMap( buf, clbk, thisArg );
265-
} else {
266-
tmp = fromIterator( buf );
267-
}
268-
len = tmp.length;
269-
out = new this( len );
270-
buf = out._buffer; // eslint-disable-line no-underscore-dangle
271-
for ( i = 0; i < len; i++ ) {
272-
buf.setFloat64( i*BYTES_PER_ELEMENT, tmp[ i ], true );
273-
}
274-
return out;
275-
}
276-
throw new TypeError( format( 'invalid argument. First argument must be an array-like object or an iterable. Value: `%s`.', src ) );
277-
});
278-
279-
/**
280-
* Creates a new `Float64ArrayLE` from a variable number of arguments.
281-
*
282-
* @name of
283-
* @memberof Float64ArrayLE
284-
* @type {Function}
285-
* @param {...*} element - array elements
286-
* @throws {TypeError} `this` context must be a constructor
287-
* @throws {TypeError} `this` must be a Float64ArrayLE
288-
* @returns {Float64ArrayLE} typed array instance
289-
*
290-
* @example
291-
* var arr = Float64ArrayLE.of( 1.0, 1.0, 1.0, 1.0 );
292-
* // returns <Float64ArrayLE>
293-
*
294-
* var len = arr.length;
295-
* // returns 4
296-
*/
297-
setReadOnly( Float64ArrayLE, 'of', function of() {
298-
var args;
299-
var i;
300-
if ( !isFunction( this ) ) {
301-
throw new TypeError( 'invalid invocation. `this` context must be a constructor.' );
302-
}
303-
if ( !isFloat64ArrayLEConstructor( this ) ) {
304-
throw new TypeError( 'invalid invocation. `this` is not a Float64ArrayLE.' );
305-
}
306-
args = [];
307-
for ( i = 0; i < arguments.length; i++ ) {
308-
args.push( arguments[ i ] );
309-
}
310-
return new this( args );
311-
});
312-
313-
// Inherit from the parent constructor:
314-
inherits( Float64ArrayLE, parent );
93+
var Float64ArrayLE = factory( 'float64' );
31594

31695

31796
// EXPORTS //

0 commit comments

Comments
 (0)