function castBuffer( buffer, len, dtype ) {
	var ctor;
	var out;
	var i;

	ctor = bufferCtors( dtype );
	if ( dtype === 'generic' ) {
		out = [];
		for ( i = 0; i < len; i++ ) {
			out.push( buffer[ i ] );
		}
	} else if ( dtype === 'binary' ) {
		out = allocUnsafe( len );
		for ( i = 0; i < len; i++ ) {
			out[ i ] = buffer[ i ];
		}
	} else {
		out = new ctor( len );
		for ( i = 0; i < len; i++ ) {
			out[ i ] = buffer[ i ]; // TODO: wrap and use accessors here and above
		}
	}
	return out;
}
Casts buffer elements by copying those elements to a buffer of another data type.

@private
@param {(Array|TypedArray|Buffer)} buffer - input buffer
@param {NonNegativeInteger} len - number of elements to cast
@param {string} dtype - data type
@returns {(Array|TypedArray|Buffer)} output buffer

@example
var b = castBuffer( [ 1.0, 2.0, 3.0 ], 3, 'float64' );
// returns <Float64Array>[ 1.0, 2.0, 3.0 ]