var smalloc = process.binding('smalloc');
var buffer = process.binding('buffer');
var assert = require('assert');
+var util = require('util');
var alloc = smalloc.alloc;
var sliceOnto = smalloc.sliceOnto;
var kMaxLength = smalloc.kMaxLength;
};
-// TODO(trevnorris): DEPRECATE
-Buffer.prototype.get = function get(offset) {
+// XXX remove in v0.13
+Buffer.prototype.get = util.deprecate(function get(offset) {
offset = ~~offset;
if (offset < 0 || offset >= this.length)
throw new RangeError('index out of range');
return this[offset];
-};
+}, '.get() is deprecated. Access using array indexes instead.');
-// TODO(trevnorris): DEPRECATE
-Buffer.prototype.set = function set(offset, v) {
+// XXX remove in v0.13
+Buffer.prototype.set = util.deprecate(function set(offset, v) {
offset = ~~offset;
if (offset < 0 || offset >= this.length)
throw new RangeError('index out of range');
return this[offset] = v;
-};
+}, '.set() is deprecated. Set using array indexes instead.');
// TODO(trevnorris): fix these checks to follow new standard
// write(string, offset = 0, length = buffer.length, encoding = 'utf8')
+var writeWarned = false;
+var writeMsg = '.write(string, encoding, offset, length) is deprecated.' +
+ ' Use write(string, offset, length, encoding) instead.';
Buffer.prototype.write = function(string, offset, length, encoding) {
- // Support both (string, offset, length, encoding)
- // and the legacy (string, encoding, offset, length)
- if (isFinite(offset)) {
- if (!isFinite(length)) {
+ // allow write(string, encoding)
+ if (typeof offset === 'string' && typeof length === 'undefined') {
+ encoding = offset;
+ offset = 0;
+ length = undefined;
+
+ // allow write(string, offset[, length], encoding)
+ } else if (isFinite(offset)) {
+ offset = ~~offset;
+ if (isFinite(length)) {
+ length = ~~length;
+ } else {
encoding = length;
length = undefined;
}
- // TODO(trevnorris): DEPRECATE
- } else { // legacy
+
+ // XXX legacy write(string, encoding, offset, length) - remove in v0.13
+ } else {
+ if (!writeWarned) {
+ if (process.throwDeprecation)
+ throw new Error(writeMsg);
+ else if (process.traceDeprecation)
+ console.trace(writeMsg);
+ else
+ console.error(writeMsg);
+ writeWarned = true;
+ }
+
var swap = encoding;
encoding = offset;
- offset = length;
+ offset = ~~length;
length = swap;
}
- offset = +offset || 0;
var remaining = this.length - offset;
- if (!length) {
+ if (typeof length === 'undefined' || length > remaining)
length = remaining;
- } else {
- length = +length;
- if (length > remaining) {
- length = remaining;
- }
- }
- if (typeof encoding === 'undefined')
- encoding = 'utf8';
- else
- encoding = (encoding + '').toLowerCase();
+ encoding = !!encoding ? (encoding + '').toLowerCase() : 'utf8';
if (string.length > 0 && (length < 0 || offset < 0))
throw new RangeError('attempt to write beyond buffer bounds');