Skip to content

Commit ff20771

Browse files
committed
Accept an array in ByteBuffer.wrap, fixes #10
1 parent 885186b commit ff20771

14 files changed

+17134
-81
lines changed

bower.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "bytebuffer",
3-
"version": "3.0.0-RC2",
3+
"version": "3.0.0",
44
"author": "Daniel Wirtz <[email protected]>",
55
"description": "A full-featured ByteBuffer implementation using typed arrays.",
66
"main": "ByteBuffer.js",

dist/ByteBufferAB.js

+9-2
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
* Constructs a new ByteBuffer.
3535
* @class The swiss army knife for binary data in JavaScript.
3636
* @exports ByteBuffer
37+
* @constructor
3738
* @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.
3839
* @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to
3940
* {@link ByteBuffer.DEFAULT_ENDIAN}.
@@ -117,7 +118,7 @@
117118
* @const
118119
* @expose
119120
*/
120-
ByteBuffer.VERSION = "3.0.0-RC2";
121+
ByteBuffer.VERSION = "3.0.0";
121122

122123
/**
123124
* Little endian constant that can be used instead of its boolean value. Evaluates to `true`.
@@ -308,7 +309,13 @@
308309
bb.limit = buffer.byteLength;
309310
bb.view = buffer.byteLength > 0 ? new DataView(buffer) : null;
310311
}
311-
} else throw(new TypeError("Illegal buffer"));
312+
} else if (Object.prototype.toString.call(buffer) === "[object Array]") { // Create from octets
313+
bb = new ByteBuffer(buffer.length, littleEndian, noAssert);
314+
bb.limit = buffer.length;
315+
for (i=0; i<buffer.length; ++i)
316+
bb.view.setUint8(i, buffer[i]);
317+
} else
318+
throw(new TypeError("Illegal buffer")); // Otherwise fail
312319
return bb;
313320
};
314321

dist/ByteBufferAB.min.js

+59-59
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/ByteBufferAB.min.js.gz

29 Bytes
Binary file not shown.

dist/ByteBufferAB.min.map

+2-2
Large diffs are not rendered by default.

dist/ByteBufferNB.js

+15-5
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ module.exports = (function() {
3333
* Constructs a new ByteBuffer.
3434
* @class The swiss army knife for binary data in JavaScript.
3535
* @exports ByteBuffer
36+
* @constructor
3637
* @param {number=} capacity Initial capacity. Defaults to {@link ByteBuffer.DEFAULT_CAPACITY}.
3738
* @param {boolean=} littleEndian Whether to use little or big endian byte order. Defaults to
3839
* {@link ByteBuffer.DEFAULT_ENDIAN}.
@@ -109,7 +110,7 @@ module.exports = (function() {
109110
* @const
110111
* @expose
111112
*/
112-
ByteBuffer.VERSION = "3.0.0-RC2";
113+
ByteBuffer.VERSION = "3.0.0";
113114

114115
/**
115116
* Little endian constant that can be used instead of its boolean value. Evaluates to `true`.
@@ -305,8 +306,11 @@ module.exports = (function() {
305306
}
306307
}
307308
buffer = b;
308-
} else if (!(buffer instanceof Buffer))
309-
throw(new TypeError("Illegal buffer"));
309+
} else if (!(buffer instanceof Buffer)) { // Create from octets if it is an error, otherwise fail
310+
if (Object.prototype.toString.call(buffer) !== "[object Array]")
311+
throw(new TypeError("Illegal buffer"));
312+
buffer = new Buffer(buffer);
313+
}
310314
bb = new ByteBuffer(0, littleEndian, noAssert);
311315
if (buffer.length > 0) { // Avoid references to more than one EMPTY_BUFFER
312316
bb.buffer = buffer;
@@ -3109,8 +3113,14 @@ module.exports = (function() {
31093113

31103114
/**
31113115
* node-memcpy. This is an optional binding dependency and may not be present.
3112-
* @type {?function(!(Buffer|ArrayBuffer|Uint8Array), number|!(Buffer|ArrayBuffer), (!(Buffer|ArrayBuffer|Uint8Array)|number)=, number=, number=):number}
3113-
* @see https://npmjs.org/package/memcpy
3116+
* @function
3117+
* @param {!(Buffer|ArrayBuffer|Uint8Array)} target Destination
3118+
* @param {number|!(Buffer|ArrayBuffer)} targetStart Destination start, defaults to 0.
3119+
* @param {(!(Buffer|ArrayBuffer|Uint8Array)|number)=} source Source
3120+
* @param {number=} sourceStart Source start, defaults to 0.
3121+
* @param {number=} sourceEnd Source end, defaults to capacity.
3122+
* @returns {number} Number of bytes copied
3123+
* @throws {Error} If any index is out of bounds
31143124
* @expose
31153125
*/
31163126
ByteBuffer.memcpy = memcpy;

0 commit comments

Comments
 (0)