Version 1
[yaffs-website] / node_modules / core-js / library / modules / es6.typed.array-buffer.js
1 'use strict';
2 var $export      = require('./_export')
3   , $typed       = require('./_typed')
4   , buffer       = require('./_typed-buffer')
5   , anObject     = require('./_an-object')
6   , toIndex      = require('./_to-index')
7   , toLength     = require('./_to-length')
8   , isObject     = require('./_is-object')
9   , ArrayBuffer  = require('./_global').ArrayBuffer
10   , speciesConstructor = require('./_species-constructor')
11   , $ArrayBuffer = buffer.ArrayBuffer
12   , $DataView    = buffer.DataView
13   , $isView      = $typed.ABV && ArrayBuffer.isView
14   , $slice       = $ArrayBuffer.prototype.slice
15   , VIEW         = $typed.VIEW
16   , ARRAY_BUFFER = 'ArrayBuffer';
17
18 $export($export.G + $export.W + $export.F * (ArrayBuffer !== $ArrayBuffer), {ArrayBuffer: $ArrayBuffer});
19
20 $export($export.S + $export.F * !$typed.CONSTR, ARRAY_BUFFER, {
21   // 24.1.3.1 ArrayBuffer.isView(arg)
22   isView: function isView(it){
23     return $isView && $isView(it) || isObject(it) && VIEW in it;
24   }
25 });
26
27 $export($export.P + $export.U + $export.F * require('./_fails')(function(){
28   return !new $ArrayBuffer(2).slice(1, undefined).byteLength;
29 }), ARRAY_BUFFER, {
30   // 24.1.4.3 ArrayBuffer.prototype.slice(start, end)
31   slice: function slice(start, end){
32     if($slice !== undefined && end === undefined)return $slice.call(anObject(this), start); // FF fix
33     var len    = anObject(this).byteLength
34       , first  = toIndex(start, len)
35       , final  = toIndex(end === undefined ? len : end, len)
36       , result = new (speciesConstructor(this, $ArrayBuffer))(toLength(final - first))
37       , viewS  = new $DataView(this)
38       , viewT  = new $DataView(result)
39       , index  = 0;
40     while(first < final){
41       viewT.setUint8(index++, viewS.getUint8(first++));
42     } return result;
43   }
44 });
45
46 require('./_set-species')(ARRAY_BUFFER);