|
16 | 16 | * limitations under the License.
|
17 | 17 | */
|
18 | 18 |
|
19 |
| -/* eslint-disable max-len, no-restricted-syntax, no-invalid-this */ |
20 |
| - |
21 | 19 | 'use strict';
|
22 | 20 |
|
23 | 21 | // MODULES //
|
24 | 22 |
|
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' ); |
59 | 24 |
|
60 | 25 |
|
61 | 26 | // MAIN //
|
62 | 27 |
|
63 | 28 | /**
|
64 | 29 | * Typed array constructor which returns a typed array representing an array of double-precision floating-point numbers in little-endian byte order.
|
65 | 30 | *
|
| 31 | +* @name Float64ArrayLE |
66 | 32 | * @constructor
|
| 33 | +* @type {Function} |
67 | 34 | * @param {(NonNegativeInteger|Collection|ArrayBuffer|Iterable)} [arg] - length, typed array, array-like object, buffer, or an iterable
|
68 | 35 | * @param {NonNegativeInteger} [byteOffset=0] - byte offset
|
69 | 36 | * @param {NonNegativeInteger} [length] - view length
|
@@ -123,195 +90,7 @@ function isFloat64ArrayLEConstructor( value ) { // eslint-disable-line id-length
|
123 | 90 | * var len = arr.length;
|
124 | 91 | * // returns 2
|
125 | 92 | */
|
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' ); |
315 | 94 |
|
316 | 95 |
|
317 | 96 | // EXPORTS //
|
|
0 commit comments