415gotit
This commit is contained in:
86
node_modules/msgpack-lite/lib/bufferish-proto.js
generated
vendored
Normal file
86
node_modules/msgpack-lite/lib/bufferish-proto.js
generated
vendored
Normal file
@@ -0,0 +1,86 @@
|
||||
// bufferish-proto.js
|
||||
|
||||
/* jshint eqnull:true */
|
||||
|
||||
var BufferLite = require("./buffer-lite");
|
||||
|
||||
exports.copy = copy;
|
||||
exports.slice = slice;
|
||||
exports.toString = toString;
|
||||
exports.write = gen("write");
|
||||
|
||||
var Bufferish = require("./bufferish");
|
||||
var Buffer = Bufferish.global;
|
||||
|
||||
var isBufferShim = Bufferish.hasBuffer && ("TYPED_ARRAY_SUPPORT" in Buffer);
|
||||
var brokenTypedArray = isBufferShim && !Buffer.TYPED_ARRAY_SUPPORT;
|
||||
|
||||
/**
|
||||
* @param target {Buffer|Uint8Array|Array}
|
||||
* @param [targetStart] {Number}
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function copy(target, targetStart, start, end) {
|
||||
var thisIsBuffer = Bufferish.isBuffer(this);
|
||||
var targetIsBuffer = Bufferish.isBuffer(target);
|
||||
if (thisIsBuffer && targetIsBuffer) {
|
||||
// Buffer to Buffer
|
||||
return this.copy(target, targetStart, start, end);
|
||||
} else if (!brokenTypedArray && !thisIsBuffer && !targetIsBuffer &&
|
||||
Bufferish.isView(this) && Bufferish.isView(target)) {
|
||||
// Uint8Array to Uint8Array (except for minor some browsers)
|
||||
var buffer = (start || end != null) ? slice.call(this, start, end) : this;
|
||||
target.set(buffer, targetStart);
|
||||
return buffer.length;
|
||||
} else {
|
||||
// other cases
|
||||
return BufferLite.copy.call(this, target, targetStart, start, end);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {Buffer|Uint8Array|Array}
|
||||
*/
|
||||
|
||||
function slice(start, end) {
|
||||
// for Buffer, Uint8Array (except for minor some browsers) and Array
|
||||
var f = this.slice || (!brokenTypedArray && this.subarray);
|
||||
if (f) return f.call(this, start, end);
|
||||
|
||||
// Uint8Array (for minor some browsers)
|
||||
var target = Bufferish.alloc.call(this, end - start);
|
||||
copy.call(this, target, 0, start, end);
|
||||
return target;
|
||||
}
|
||||
|
||||
/**
|
||||
* Buffer.prototype.toString()
|
||||
*
|
||||
* @param [encoding] {String} ignored
|
||||
* @param [start] {Number}
|
||||
* @param [end] {Number}
|
||||
* @returns {String}
|
||||
*/
|
||||
|
||||
function toString(encoding, start, end) {
|
||||
var f = (!isBufferShim && Bufferish.isBuffer(this)) ? this.toString : BufferLite.toString;
|
||||
return f.apply(this, arguments);
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
*/
|
||||
|
||||
function gen(method) {
|
||||
return wrap;
|
||||
|
||||
function wrap() {
|
||||
var f = this[method] || BufferLite[method];
|
||||
return f.apply(this, arguments);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user