Skip to content
This repository was archived by the owner on Apr 22, 2023. It is now read-only.

Commit b7c23ac

Browse files
mscdexbnoordhuis
authored andcommitted
Incorporate endianness into buffer.read* function names instead of passing in a boolean flag
1 parent a002f4f commit b7c23ac

11 files changed

+595
-499
lines changed

doc/api/buffers.markdown

Lines changed: 147 additions & 109 deletions
Large diffs are not rendered by default.

lib/buffer.js

Lines changed: 263 additions & 203 deletions
Large diffs are not rendered by default.

lib/buffer_ieee754.js

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,14 @@
3030
//
3131
// Modifications to writeIEEE754 to support negative zeroes made by Brian White
3232

33-
exports.readIEEE754 = function(buffer, offset, endian, mLen, nBytes) {
33+
exports.readIEEE754 = function(buffer, offset, isBE, mLen, nBytes) {
3434
var e, m,
35-
bBE = endian,
3635
eLen = nBytes * 8 - mLen - 1,
3736
eMax = (1 << eLen) - 1,
3837
eBias = eMax >> 1,
3938
nBits = -7,
40-
i = bBE ? 0 : (nBytes - 1),
41-
d = bBE ? 1 : -1,
39+
i = isBE ? 0 : (nBytes - 1),
40+
d = isBE ? 1 : -1,
4241
s = buffer[offset + i];
4342

4443
i += d;
@@ -64,15 +63,14 @@ exports.readIEEE754 = function(buffer, offset, endian, mLen, nBytes) {
6463
return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
6564
};
6665

67-
exports.writeIEEE754 = function(buffer, value, offset, endian, mLen, nBytes) {
66+
exports.writeIEEE754 = function(buffer, value, offset, isBE, mLen, nBytes) {
6867
var e, m, c,
69-
bBE = endian,
7068
eLen = nBytes * 8 - mLen - 1,
7169
eMax = (1 << eLen) - 1,
7270
eBias = eMax >> 1,
7371
rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0),
74-
i = bBE ? (nBytes-1) : 0,
75-
d = bBE ? -1 : 1,
72+
i = isBE ? (nBytes-1) : 0,
73+
d = isBE ? -1 : 1,
7674
s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
7775

7876
value = Math.abs(value);

test/simple/test-readdouble.js

Lines changed: 31 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ var ASSERT = require('assert');
88
*/
99
function test() {
1010
var buffer = new Buffer(8);
11+
1112
buffer[0] = 0x55;
1213
buffer[1] = 0x55;
1314
buffer[2] = 0x55;
@@ -16,8 +17,8 @@ function test() {
1617
buffer[5] = 0x55;
1718
buffer[6] = 0xd5;
1819
buffer[7] = 0x3f;
19-
ASSERT.equal(1.1945305291680097e+103, buffer.readDouble(0, true));
20-
ASSERT.equal(0.3333333333333333, buffer.readDouble(0, false));
20+
ASSERT.equal(1.1945305291680097e+103, buffer.readDoubleBE(0));
21+
ASSERT.equal(0.3333333333333333, buffer.readDoubleLE(0));
2122

2223
buffer[0] = 1;
2324
buffer[1] = 0;
@@ -27,18 +28,18 @@ function test() {
2728
buffer[5] = 0;
2829
buffer[6] = 0xf0;
2930
buffer[7] = 0x3f;
30-
ASSERT.equal(7.291122019655968e-304, buffer.readDouble(0, true));
31-
ASSERT.equal(1.0000000000000002, buffer.readDouble(0, false));
31+
ASSERT.equal(7.291122019655968e-304, buffer.readDoubleBE(0));
32+
ASSERT.equal(1.0000000000000002, buffer.readDoubleLE(0));
3233

3334
buffer[0] = 2;
34-
ASSERT.equal(4.778309726801735e-299, buffer.readDouble(0, true));
35-
ASSERT.equal(1.0000000000000004, buffer.readDouble(0, false));
35+
ASSERT.equal(4.778309726801735e-299, buffer.readDoubleBE(0));
36+
ASSERT.equal(1.0000000000000004, buffer.readDoubleLE(0));
3637

3738
buffer[0] = 1;
3839
buffer[6] = 0;
3940
buffer[7] = 0;
40-
ASSERT.equal(7.291122019556398e-304, buffer.readDouble(0, true));
41-
ASSERT.equal(5e-324, buffer.readDouble(0, false));
41+
ASSERT.equal(7.291122019556398e-304, buffer.readDoubleBE(0));
42+
ASSERT.equal(5e-324, buffer.readDoubleLE(0));
4243

4344
buffer[0] = 0xff;
4445
buffer[1] = 0xff;
@@ -48,13 +49,13 @@ function test() {
4849
buffer[5] = 0xff;
4950
buffer[6] = 0x0f;
5051
buffer[7] = 0x00;
51-
ASSERT.ok(isNaN(buffer.readDouble(0, true)));
52-
ASSERT.equal(2.225073858507201e-308, buffer.readDouble(0, false));
52+
ASSERT.ok(isNaN(buffer.readDoubleBE(0)));
53+
ASSERT.equal(2.225073858507201e-308, buffer.readDoubleLE(0));
5354

5455
buffer[6] = 0xef;
5556
buffer[7] = 0x7f;
56-
ASSERT.ok(isNaN(buffer.readDouble(0, true)));
57-
ASSERT.equal(1.7976931348623157e+308, buffer.readDouble(0, false));
57+
ASSERT.ok(isNaN(buffer.readDoubleBE(0)));
58+
ASSERT.equal(1.7976931348623157e+308, buffer.readDoubleLE(0));
5859

5960
buffer[0] = 0;
6061
buffer[1] = 0;
@@ -64,42 +65,42 @@ function test() {
6465
buffer[5] = 0;
6566
buffer[6] = 0xf0;
6667
buffer[7] = 0x3f;
67-
ASSERT.equal(3.03865e-319, buffer.readDouble(0, true));
68-
ASSERT.equal(1, buffer.readDouble(0, false));
68+
ASSERT.equal(3.03865e-319, buffer.readDoubleBE(0));
69+
ASSERT.equal(1, buffer.readDoubleLE(0));
6970

7071
buffer[6] = 0;
7172
buffer[7] = 0x40;
72-
ASSERT.equal(3.16e-322, buffer.readDouble(0, true));
73-
ASSERT.equal(2, buffer.readDouble(0, false));
73+
ASSERT.equal(3.16e-322, buffer.readDoubleBE(0));
74+
ASSERT.equal(2, buffer.readDoubleLE(0));
7475

7576
buffer[7] = 0xc0;
76-
ASSERT.equal(9.5e-322, buffer.readDouble(0, true));
77-
ASSERT.equal(-2, buffer.readDouble(0, false));
77+
ASSERT.equal(9.5e-322, buffer.readDoubleBE(0));
78+
ASSERT.equal(-2, buffer.readDoubleLE(0));
7879

7980
buffer[6] = 0x10;
8081
buffer[7] = 0;
81-
ASSERT.equal(2.0237e-320, buffer.readDouble(0, true));
82-
ASSERT.equal(2.2250738585072014e-308, buffer.readDouble(0, false));
82+
ASSERT.equal(2.0237e-320, buffer.readDoubleBE(0));
83+
ASSERT.equal(2.2250738585072014e-308, buffer.readDoubleLE(0));
8384

8485
buffer[6] = 0;
85-
ASSERT.equal(0, buffer.readDouble(0, true));
86-
ASSERT.equal(0, buffer.readDouble(0, false));
87-
ASSERT.equal(false, 1/buffer.readDouble(0, false)<0);
86+
ASSERT.equal(0, buffer.readDoubleBE(0));
87+
ASSERT.equal(0, buffer.readDoubleLE(0));
88+
ASSERT.equal(false, 1/buffer.readDoubleLE(0)<0);
8889

8990
buffer[7] = 0x80;
90-
ASSERT.equal(6.3e-322, buffer.readDouble(0, true));
91-
ASSERT.equal(0, buffer.readDouble(0, false));
92-
ASSERT.equal(true, 1/buffer.readDouble(0, false)<0);
91+
ASSERT.equal(6.3e-322, buffer.readDoubleBE(0));
92+
ASSERT.equal(0, buffer.readDoubleLE(0));
93+
ASSERT.equal(true, 1/buffer.readDoubleLE(0)<0);
9394

9495
buffer[6] = 0xf0;
9596
buffer[7] = 0x7f;
96-
ASSERT.equal(3.0418e-319, buffer.readDouble(0, true));
97-
ASSERT.equal(Infinity, buffer.readDouble(0, false));
97+
ASSERT.equal(3.0418e-319, buffer.readDoubleBE(0));
98+
ASSERT.equal(Infinity, buffer.readDoubleLE(0));
9899

99100
buffer[6] = 0xf0;
100101
buffer[7] = 0xff;
101-
ASSERT.equal(3.04814e-319, buffer.readDouble(0, true));
102-
ASSERT.equal(-Infinity, buffer.readDouble(0, false));
102+
ASSERT.equal(3.04814e-319, buffer.readDoubleBE(0));
103+
ASSERT.equal(-Infinity, buffer.readDoubleLE(0));
103104
}
104105

105106

test/simple/test-readfloat.js

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -8,60 +8,61 @@ var ASSERT = require('assert');
88
*/
99
function test() {
1010
var buffer = new Buffer(4);
11+
1112
buffer[0] = 0;
1213
buffer[1] = 0;
1314
buffer[2] = 0x80;
1415
buffer[3] = 0x3f;
15-
ASSERT.equal(4.600602988224807e-41, buffer.readFloat(0, true));
16-
ASSERT.equal(1, buffer.readFloat(0, false));
16+
ASSERT.equal(4.600602988224807e-41, buffer.readFloatBE(0));
17+
ASSERT.equal(1, buffer.readFloatLE(0));
1718

1819
buffer[0] = 0;
1920
buffer[1] = 0;
2021
buffer[2] = 0;
2122
buffer[3] = 0xc0;
22-
ASSERT.equal(2.6904930515036488e-43, buffer.readFloat(0, true));
23-
ASSERT.equal(-2, buffer.readFloat(0, false));
23+
ASSERT.equal(2.6904930515036488e-43, buffer.readFloatBE(0));
24+
ASSERT.equal(-2, buffer.readFloatLE(0));
2425

2526
buffer[0] = 0xff;
2627
buffer[1] = 0xff;
2728
buffer[2] = 0x7f;
2829
buffer[3] = 0x7f;
29-
ASSERT.ok(isNaN(buffer.readFloat(0, true)));
30-
ASSERT.equal(3.4028234663852886e+38, buffer.readFloat(0, false));
30+
ASSERT.ok(isNaN(buffer.readFloatBE(0)));
31+
ASSERT.equal(3.4028234663852886e+38, buffer.readFloatLE(0));
3132

3233
buffer[0] = 0xab;
3334
buffer[1] = 0xaa;
3435
buffer[2] = 0xaa;
3536
buffer[3] = 0x3e;
36-
ASSERT.equal(-1.2126478207002966e-12, buffer.readFloat(0, true));
37-
ASSERT.equal(0.3333333432674408, buffer.readFloat(0, false));
37+
ASSERT.equal(-1.2126478207002966e-12, buffer.readFloatBE(0));
38+
ASSERT.equal(0.3333333432674408, buffer.readFloatLE(0));
3839

3940
buffer[0] = 0;
4041
buffer[1] = 0;
4142
buffer[2] = 0;
4243
buffer[3] = 0;
43-
ASSERT.equal(0, buffer.readFloat(0, true));
44-
ASSERT.equal(0, buffer.readFloat(0, false));
45-
ASSERT.equal(false, 1/buffer.readFloat(0, false)<0);
44+
ASSERT.equal(0, buffer.readFloatBE(0));
45+
ASSERT.equal(0, buffer.readFloatLE(0));
46+
ASSERT.equal(false, 1/buffer.readFloatLE(0)<0);
4647

4748
buffer[3] = 0x80;
48-
ASSERT.equal(1.793662034335766e-43, buffer.readFloat(0, true));
49-
ASSERT.equal(0, buffer.readFloat(0, false));
50-
ASSERT.equal(true, 1/buffer.readFloat(0, false)<0);
49+
ASSERT.equal(1.793662034335766e-43, buffer.readFloatBE(0));
50+
ASSERT.equal(0, buffer.readFloatLE(0));
51+
ASSERT.equal(true, 1/buffer.readFloatLE(0)<0);
5152

5253
buffer[0] = 0;
5354
buffer[1] = 0;
5455
buffer[2] = 0x80;
5556
buffer[3] = 0x7f;
56-
ASSERT.equal(4.609571298396486e-41, buffer.readFloat(0, true));
57-
ASSERT.equal(Infinity, buffer.readFloat(0, false));
57+
ASSERT.equal(4.609571298396486e-41, buffer.readFloatBE(0));
58+
ASSERT.equal(Infinity, buffer.readFloatLE(0));
5859

5960
buffer[0] = 0;
6061
buffer[1] = 0;
6162
buffer[2] = 0x80;
6263
buffer[3] = 0xff;
63-
ASSERT.equal(4.627507918739843e-41, buffer.readFloat(0, true));
64-
ASSERT.equal(-Infinity, buffer.readFloat(0, false));
64+
ASSERT.equal(4.627507918739843e-41, buffer.readFloatBE(0));
65+
ASSERT.equal(-Infinity, buffer.readFloatLE(0));
6566
}
6667

6768

test/simple/test-readint.js

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,39 +10,34 @@ function test8() {
1010
var data = new Buffer(4);
1111

1212
data[0] = 0x23;
13-
ASSERT.equal(0x23, data.readInt8(0, true));
14-
ASSERT.equal(0x23, data.readInt8(0, false));
13+
ASSERT.equal(0x23, data.readInt8(0));
1514

1615
data[0] = 0xff;
17-
ASSERT.equal(-1, data.readInt8(0, true));
18-
ASSERT.equal(-1, data.readInt8(0, false));
16+
ASSERT.equal(-1, data.readInt8(0));
1917

2018
data[0] = 0x87;
2119
data[1] = 0xab;
2220
data[2] = 0x7c;
2321
data[3] = 0xef;
24-
ASSERT.equal(-121, data.readInt8(0, true));
25-
ASSERT.equal(-85, data.readInt8(1, true));
26-
ASSERT.equal(124, data.readInt8(2, true));
27-
ASSERT.equal(-17, data.readInt8(3, true));
28-
ASSERT.equal(-121, data.readInt8(0, false));
29-
ASSERT.equal(-85, data.readInt8(1, false));
30-
ASSERT.equal(124, data.readInt8(2, false));
31-
ASSERT.equal(-17, data.readInt8(3, false));
22+
ASSERT.equal(-121, data.readInt8(0));
23+
ASSERT.equal(-85, data.readInt8(1));
24+
ASSERT.equal(124, data.readInt8(2));
25+
ASSERT.equal(-17, data.readInt8(3));
3226
}
3327

3428

3529
function test16() {
3630
var buffer = new Buffer(6);
31+
3732
buffer[0] = 0x16;
3833
buffer[1] = 0x79;
39-
ASSERT.equal(0x1679, buffer.readInt16(0, true));
40-
ASSERT.equal(0x7916, buffer.readInt16(0, false));
34+
ASSERT.equal(0x1679, buffer.readInt16BE(0));
35+
ASSERT.equal(0x7916, buffer.readInt16LE(0));
4136

4237
buffer[0] = 0xff;
4338
buffer[1] = 0x80;
44-
ASSERT.equal(-128, buffer.readInt16(0, true));
45-
ASSERT.equal(-32513, buffer.readInt16(0, false));
39+
ASSERT.equal(-128, buffer.readInt16BE(0));
40+
ASSERT.equal(-32513, buffer.readInt16LE(0));
4641

4742
/* test offset with weenix */
4843
buffer[0] = 0x77;
@@ -51,47 +46,48 @@ function test16() {
5146
buffer[3] = 0x6e;
5247
buffer[4] = 0x69;
5348
buffer[5] = 0x78;
54-
ASSERT.equal(0x7765, buffer.readInt16(0, true));
55-
ASSERT.equal(0x6565, buffer.readInt16(1, true));
56-
ASSERT.equal(0x656e, buffer.readInt16(2, true));
57-
ASSERT.equal(0x6e69, buffer.readInt16(3, true));
58-
ASSERT.equal(0x6978, buffer.readInt16(4, true));
59-
ASSERT.equal(0x6577, buffer.readInt16(0, false));
60-
ASSERT.equal(0x6565, buffer.readInt16(1, false));
61-
ASSERT.equal(0x6e65, buffer.readInt16(2, false));
62-
ASSERT.equal(0x696e, buffer.readInt16(3, false));
63-
ASSERT.equal(0x7869, buffer.readInt16(4, false));
49+
ASSERT.equal(0x7765, buffer.readInt16BE(0));
50+
ASSERT.equal(0x6565, buffer.readInt16BE(1));
51+
ASSERT.equal(0x656e, buffer.readInt16BE(2));
52+
ASSERT.equal(0x6e69, buffer.readInt16BE(3));
53+
ASSERT.equal(0x6978, buffer.readInt16BE(4));
54+
ASSERT.equal(0x6577, buffer.readInt16LE(0));
55+
ASSERT.equal(0x6565, buffer.readInt16LE(1));
56+
ASSERT.equal(0x6e65, buffer.readInt16LE(2));
57+
ASSERT.equal(0x696e, buffer.readInt16LE(3));
58+
ASSERT.equal(0x7869, buffer.readInt16LE(4));
6459
}
6560

6661

6762
function test32() {
6863
var buffer = new Buffer(6);
64+
6965
buffer[0] = 0x43;
7066
buffer[1] = 0x53;
7167
buffer[2] = 0x16;
7268
buffer[3] = 0x79;
73-
ASSERT.equal(0x43531679, buffer.readInt32(0, true));
74-
ASSERT.equal(0x79165343, buffer.readInt32(0, false));
69+
ASSERT.equal(0x43531679, buffer.readInt32BE(0));
70+
ASSERT.equal(0x79165343, buffer.readInt32LE(0));
7571

7672
buffer[0] = 0xff;
7773
buffer[1] = 0xfe;
7874
buffer[2] = 0xef;
7975
buffer[3] = 0xfa;
80-
ASSERT.equal(-69638, buffer.readInt32(0, true));
81-
ASSERT.equal(-84934913, buffer.readInt32(0, false));
76+
ASSERT.equal(-69638, buffer.readInt32BE(0));
77+
ASSERT.equal(-84934913, buffer.readInt32LE(0));
8278

8379
buffer[0] = 0x42;
8480
buffer[1] = 0xc3;
8581
buffer[2] = 0x95;
8682
buffer[3] = 0xa9;
8783
buffer[4] = 0x36;
8884
buffer[5] = 0x17;
89-
ASSERT.equal(0x42c395a9, buffer.readInt32(0, true));
90-
ASSERT.equal(-1013601994, buffer.readInt32(1, true));
91-
ASSERT.equal(-1784072681, buffer.readInt32(2, true));
92-
ASSERT.equal(-1449802942, buffer.readInt32(0, false));
93-
ASSERT.equal(917083587, buffer.readInt32(1, false));
94-
ASSERT.equal(389458325, buffer.readInt32(2, false));
85+
ASSERT.equal(0x42c395a9, buffer.readInt32BE(0));
86+
ASSERT.equal(-1013601994, buffer.readInt32BE(1));
87+
ASSERT.equal(-1784072681, buffer.readInt32BE(2));
88+
ASSERT.equal(-1449802942, buffer.readInt32LE(0));
89+
ASSERT.equal(917083587, buffer.readInt32LE(1));
90+
ASSERT.equal(389458325, buffer.readInt32LE(2));
9591
}
9692

9793

0 commit comments

Comments
 (0)