Merge pull request #173 from rom1504/refactor_numeric

refactor numeric.js : all the functions were the same
This commit is contained in:
Robin Lambertz 2015-05-23 01:16:30 +02:00
commit 84079bb0a8

View File

@ -1,113 +1,3 @@
module.exports = {
'byte': [readByte, writeByte, 1],
'ubyte': [readUByte, writeUByte, 1],
'short': [readShort, writeShort, 2],
'ushort': [readUShort, writeUShort, 2],
'int': [readInt, writeInt, 4],
'long': [readLong, writeLong, 8],
'float': [readFloat, writeFloat, 4],
'double': [readDouble, writeDouble, 8]
};
function readByte(buffer, offset) {
if(offset + 1 > buffer.length) return null;
var value = buffer.readInt8(offset);
return {
value: value,
size: 1,
};
}
function writeByte(value, buffer, offset) {
buffer.writeInt8(value, offset);
return offset + 1;
}
function readUByte(buffer, offset) {
if(offset + 1 > buffer.length) return null;
var value = buffer.readUInt8(offset);
return {
value: value,
size: 1,
};
}
function writeUByte(value, buffer, offset) {
buffer.writeUInt8(value, offset);
return offset + 1;
}
function readFloat(buffer, offset) {
if(offset + 4 > buffer.length) return null;
var value = buffer.readFloatBE(offset);
return {
value: value,
size: 4,
};
}
function writeFloat(value, buffer, offset) {
buffer.writeFloatBE(value, offset);
return offset + 4;
}
function readDouble(buffer, offset) {
if(offset + 8 > buffer.length) return null;
var value = buffer.readDoubleBE(offset);
return {
value: value,
size: 8,
};
}
function writeDouble(value, buffer, offset) {
buffer.writeDoubleBE(value, offset);
return offset + 8;
}
function readShort(buffer, offset) {
if(offset + 2 > buffer.length) return null;
var value = buffer.readInt16BE(offset);
return {
value: value,
size: 2,
};
}
function writeShort(value, buffer, offset) {
buffer.writeInt16BE(value, offset);
return offset + 2;
}
function readUShort(buffer, offset) {
if(offset + 2 > buffer.length) return null;
var value = buffer.readUInt16BE(offset);
return {
value: value,
size: 2,
};
}
function writeUShort(value, buffer, offset) {
buffer.writeUInt16BE(value, offset);
return offset + 2;
}
function readInt(buffer, offset) {
if(offset + 4 > buffer.length) return null;
var value = buffer.readInt32BE(offset);
return {
value: value,
size: 4,
};
}
function writeInt(value, buffer, offset) {
buffer.writeInt32BE(value, offset);
return offset + 4;
}
function readLong(buffer, offset) { function readLong(buffer, offset) {
if(offset + 8 > buffer.length) return null; if(offset + 8 > buffer.length) return null;
return { return {
@ -122,6 +12,39 @@ function writeLong(value, buffer, offset) {
return offset + 8; return offset + 8;
} }
function generateFunctions(bufferReader,bufferWriter,size)
{
var reader=function(buffer, offset)
{
if(offset + size > buffer.length) return null;
var value = buffer[bufferReader](offset);
return {
value: value,
size: size
};
};
var writer=function(value, buffer, offset) {
buffer[bufferWriter](value, offset);
return offset + size;
};
return [reader, writer, size];
}
var nums= {
'byte': ["readInt8", "writeInt8", 1],
'ubyte': ["readUInt8", "writeUInt8", 1],
'short': ["readInt16BE", "writeInt16BE", 2],
'ushort': ["readUInt16BE", "writeUInt16BE", 2],
'int': ["readInt32BE", "writeInt32BE", 4],
'float': ["readFloatBE", "writeFloatBE", 4],
'double': ["readDoubleBE", "writeDoubleBE", 8]
};
var types=Object.keys(nums).reduce(function(types,num){
types[num]=generateFunctions(nums[num][0], nums[num][1], nums[num][2]);
return types;
},{});
types["long"]=[readLong, writeLong, 8];
module.exports = types;