@@ -23,9 +23,9 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
2323 < div class ='clearfix '>
2424
2525 < div class ='fl pad1y space-right2 '>
26- < span class ="strong "> 65.71 % </ span >
26+ < span class ="strong "> 62.02 % </ span >
2727 < span class ="quiet "> Statements</ span >
28- < span class ='fraction '> 46/70 </ span >
28+ < span class ='fraction '> 49/79 </ span >
2929 </ div >
3030
3131
@@ -44,9 +44,9 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
4444
4545
4646 < div class ='fl pad1y space-right2 '>
47- < span class ="strong "> 65.71 % </ span >
47+ < span class ="strong "> 62.02 % </ span >
4848 < span class ="quiet "> Lines</ span >
49- < span class ='fraction '> 46/70 </ span >
49+ < span class ='fraction '> 49/79 </ span >
5050 </ div >
5151
5252
@@ -133,7 +133,16 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
133133< a name ='L68 '> </ a > < a href ='#L68 '> 68</ a >
134134< a name ='L69 '> </ a > < a href ='#L69 '> 69</ a >
135135< a name ='L70 '> </ a > < a href ='#L70 '> 70</ a >
136- < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
136+ < a name ='L71 '> </ a > < a href ='#L71 '> 71</ a >
137+ < a name ='L72 '> </ a > < a href ='#L72 '> 72</ a >
138+ < a name ='L73 '> </ a > < a href ='#L73 '> 73</ a >
139+ < a name ='L74 '> </ a > < a href ='#L74 '> 74</ a >
140+ < a name ='L75 '> </ a > < a href ='#L75 '> 75</ a >
141+ < a name ='L76 '> </ a > < a href ='#L76 '> 76</ a >
142+ < a name ='L77 '> </ a > < a href ='#L77 '> 77</ a >
143+ < a name ='L78 '> </ a > < a href ='#L78 '> 78</ a >
144+ < a name ='L79 '> </ a > < a href ='#L79 '> 79</ a >
145+ < a name ='L80 '> </ a > < a href ='#L80 '> 80</ a > </ td > < td class ="line-coverage quiet "> < span class ="cline-any cline-yes "> 1x</ span >
137146< span class ="cline-any cline-yes "> 1x</ span >
138147< span class ="cline-any cline-yes "> 1x</ span >
139148< span class ="cline-any cline-yes "> 1x</ span >
@@ -174,6 +183,15 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
174183< span class ="cline-any cline-yes "> 1x</ span >
175184< span class ="cline-any cline-yes "> 1x</ span >
176185< span class ="cline-any cline-yes "> 1x</ span >
186+ < span class ="cline-any cline-yes "> 1x</ span >
187+ < span class ="cline-any cline-yes "> 1x</ span >
188+ < span class ="cline-any cline-yes "> 1x</ span >
189+ < span class ="cline-any cline-no "> </ span >
190+ < span class ="cline-any cline-no "> </ span >
191+ < span class ="cline-any cline-no "> </ span >
192+ < span class ="cline-any cline-no "> </ span >
193+ < span class ="cline-any cline-no "> </ span >
194+ < span class ="cline-any cline-no "> </ span >
177195< span class ="cline-any cline-no "> </ span >
178196< span class ="cline-any cline-no "> </ span >
179197< span class ="cline-any cline-no "> </ span >
@@ -225,8 +243,11 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
225243
226244// MODULES //
227245
246+ var isEqualDataType = require( '@stdlib/ndarray/base/assert/is-equal-data-type' );
228247var bufferCtors = require( '@stdlib/ndarray/base/buffer-ctors' );
229248var allocUnsafe = require( '@stdlib/buffer/alloc-unsafe' );
249+ var resolveGetter = require( '@stdlib/array/base/resolve-getter' );
250+ var resolveSetter = require( '@stdlib/array/base/resolve-setter' );
230251
231252
232253// MAIN //
@@ -237,34 +258,40 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
237258* @private
238259* @param {(Array|TypedArray|Buffer)} buffer - input buffer
239260* @param {NonNegativeInteger} len - number of elements to cast
240- * @param {string } dtype - data type
261+ * @param {* } dtype - data type
241262* @returns {(Array|TypedArray|Buffer)} output buffer
242263*
243264* @example
244265* var b = castBuffer( [ 1.0, 2.0, 3.0 ], 3, 'float64' );
245266* // returns <Float64Array>[ 1.0, 2.0, 3.0 ]
246267*/
247268< span class ="cstat-no " title ="statement not covered " > < span class ="fstat-no " title ="function not covered " > function castBuffer( buffer, len, dtype ) {</ span > </ span >
269+ < span class ="cstat-no " title ="statement not covered " > var bget;</ span >
270+ < span class ="cstat-no " title ="statement not covered " > var oset;</ span >
248271< span class ="cstat-no " title ="statement not covered " > var ctor;</ span >
249272< span class ="cstat-no " title ="statement not covered " > var out;</ span >
250273< span class ="cstat-no " title ="statement not covered " > var i;</ span >
251274< span class ="cstat-no " title ="statement not covered " > </ span >
252- < span class ="cstat-no " title ="statement not covered " > ctor = bufferCtors( dtype );</ span >
253- < span class ="cstat-no " title ="statement not covered " > if ( dtype === 'generic' ) {</ span >
275+ < span class ="cstat-no " title ="statement not covered " > bget = resolveGetter( buffer );</ span >
276+ < span class ="cstat-no " title ="statement not covered " > if ( isEqualDataType( dtype, 'generic' ) ) {</ span >
254277< span class ="cstat-no " title ="statement not covered " > out = [];</ span >
255278< span class ="cstat-no " title ="statement not covered " > for ( i = 0; i < len; i++ ) {</ span >
256- < span class ="cstat-no " title ="statement not covered " > out.push( buffer[ i ] );</ span >
279+ < span class ="cstat-no " title ="statement not covered " > out.push( bget( buffer, i ) );</ span >
257280< span class ="cstat-no " title ="statement not covered " > }</ span >
258- < span class ="cstat-no " title ="statement not covered " > } else if ( dtype === 'binary' ) {</ span >
281+ < span class ="cstat-no " title ="statement not covered " > return out;</ span >
282+ < span class ="cstat-no " title ="statement not covered " > }</ span >
283+ < span class ="cstat-no " title ="statement not covered " > if ( isEqualDataType( dtype, 'binary' ) ) {</ span >
259284< span class ="cstat-no " title ="statement not covered " > out = allocUnsafe( len );</ span >
260285< span class ="cstat-no " title ="statement not covered " > for ( i = 0; i < len; i++ ) {</ span >
261- < span class ="cstat-no " title ="statement not covered " > out[ i ] = buffer[ i ];</ span >
262- < span class ="cstat-no " title ="statement not covered " > }</ span >
263- < span class ="cstat-no " title ="statement not covered " > } else {</ span >
264- < span class ="cstat-no " title ="statement not covered " > out = new ctor( len );</ span >
265- < span class ="cstat-no " title ="statement not covered " > for ( i = 0; i < len; i++ ) {</ span >
266- < span class ="cstat-no " title ="statement not covered " > out[ i ] = buffer[ i ]; // TODO: wrap and use accessors here and above</ span >
286+ < span class ="cstat-no " title ="statement not covered " > out[ i ] = bget( buffer, i );</ span >
267287< span class ="cstat-no " title ="statement not covered " > }</ span >
288+ < span class ="cstat-no " title ="statement not covered " > return out;</ span >
289+ < span class ="cstat-no " title ="statement not covered " > }</ span >
290+ < span class ="cstat-no " title ="statement not covered " > ctor = bufferCtors( dtype );</ span >
291+ < span class ="cstat-no " title ="statement not covered " > out = new ctor( len );</ span >
292+ < span class ="cstat-no " title ="statement not covered " > oset = resolveSetter( out );</ span >
293+ < span class ="cstat-no " title ="statement not covered " > for ( i = 0; i < len; i++ ) {</ span >
294+ < span class ="cstat-no " title ="statement not covered " > oset( out, i, bget( buffer, i ) );</ span >
268295< span class ="cstat-no " title ="statement not covered " > }</ span >
269296< span class ="cstat-no " title ="statement not covered " > return out;</ span >
270297< span class ="cstat-no " title ="statement not covered " > }</ span >
@@ -280,7 +307,7 @@ <h1><a href="../../../index.html">All files</a> / <a href="index.html">ndarray/a
280307 < div class ='footer quiet pad2 space-top1 center small '>
281308 Code coverage generated by
282309 < a href ="https://istanbul.js.org/ " target ="_blank " rel ="noopener noreferrer "> istanbul</ a >
283- at 2025-09-18T08:59:28.926Z
310+ at 2025-09-19T02:13:38.827Z
284311 </ div >
285312 < script src ="../../../prettify.js "> </ script >
286313 < script >
0 commit comments