more numeric types move

This commit is contained in:
Romain Beaumont 2015-05-13 02:19:56 +02:00
parent 6660a3aa39
commit 355a3cb1cd
2 changed files with 123 additions and 112 deletions

View File

@ -1,4 +1,13 @@
module.exports={'byte': [readByte, writeByte, 1]};
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;
@ -9,8 +18,110 @@ function readByte(buffer, offset) {
};
}
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) {
if (offset + 8 > buffer.length) return null;
return {
value: [buffer.readInt32BE(offset), buffer.readInt32BE(offset + 4)],
size: 8,
};
}
function writeLong(value, buffer, offset) {
buffer.writeInt32BE(value[0], offset);
buffer.writeInt32BE(value[1], offset + 4);
return offset + 8;
}

View File

@ -56,14 +56,14 @@ var numeric=require("./datatypes/numeric");
var types = {
'byte': numeric.byte,
'ubyte': [readUByte, writeUByte, 1],
'short': [readShort, writeShort, 2],
'ushort': [readUShort, writeUShort, 2],
'int': [readInt, writeInt, 4],
'long': [readLong, writeLong, 8],
'ubyte':numeric.ubyte,
'short': numeric.short,
'ushort': numeric.ushort,
'int': numeric.int,
'long': numeric.long,
'varint': [readVarInt, writeVarInt, sizeOfVarInt],
'float': [readFloat, writeFloat, 4],
'double': [readDouble, writeDouble, 8],
'float': numeric.float,
'double': numeric.double,
'bool': [readBool, writeBool, 1],
'string': [readString, writeString, sizeOfString],
'ustring': [readString, writeString, sizeOfUString], // TODO : remove ustring
@ -263,70 +263,6 @@ function readUUID(buffer, offset) {
};
}
function readShort(buffer, offset) {
if (offset + 2 > buffer.length) return null;
var value = buffer.readInt16BE(offset);
return {
value: value,
size: 2,
};
}
function readUShort(buffer, offset) {
if (offset + 2 > buffer.length) return null;
var value = buffer.readUInt16BE(offset);
return {
value: value,
size: 2,
};
}
function readInt(buffer, offset) {
if (offset + 4 > buffer.length) return null;
var value = buffer.readInt32BE(offset);
return {
value: value,
size: 4,
};
}
function readFloat(buffer, offset) {
if (offset + 4 > buffer.length) return null;
var value = buffer.readFloatBE(offset);
return {
value: value,
size: 4,
};
}
function readDouble(buffer, offset) {
if (offset + 8 > buffer.length) return null;
var value = buffer.readDoubleBE(offset);
return {
value: value,
size: 8,
};
}
function readLong(buffer, offset) {
if (offset + 8 > buffer.length) return null;
return {
value: [buffer.readInt32BE(offset), buffer.readInt32BE(offset + 4)],
size: 8,
};
}
function readUByte(buffer, offset) {
if (offset + 1 > buffer.length) return null;
var value = buffer.readUInt8(offset);
return {
value: value,
size: 1,
};
}
function readBool(buffer, offset) {
if (offset + 1 > buffer.length) return null;
var value = buffer.readInt8(offset);
@ -337,7 +273,7 @@ function readBool(buffer, offset) {
}
function readPosition(buffer, offset) {
var longVal = readLong(buffer, offset).value;
var longVal = numeric.long[0](buffer, offset).value;
var x = signExtend26(longVal[0] >> 6);
var y = signExtend12(((longVal[0] & 0x3f) << 6) | ((longVal[1] >> 26) & 0x3f));
var z = signExtend26(longVal[1] & 0x3FFFFFF);
@ -357,7 +293,7 @@ function signExtend12(value) {
function readSlot(buffer, offset) {
var value = {};
var results = readShort(buffer, offset);
var results = numeric.short[0](buffer, offset);
if (! results) return null;
value.blockId = results.value;
@ -401,7 +337,7 @@ function writePosition(value, buffer, offset) {
var longVal = [];
longVal[0] = ((value.x & 0x3FFFFFF) << 6) | ((value.y & 0xFFF) >> 6);
longVal[1] = ((value.y & 0x3F) << 26) | (value.z & 0x3FFFFFF);
return writeLong(longVal, buffer, offset);
return numeric.long[1](longVal, buffer, offset);
}
function writeSlot(value, buffer, offset) {
@ -448,42 +384,6 @@ function writeBool(value, buffer, offset) {
return offset + 1;
}
function writeUByte(value, buffer, offset) {
buffer.writeUInt8(value, offset);
return offset + 1;
}
function writeFloat(value, buffer, offset) {
buffer.writeFloatBE(value, offset);
return offset + 4;
}
function writeDouble(value, buffer, offset) {
buffer.writeDoubleBE(value, offset);
return offset + 8;
}
function writeShort(value, buffer, offset) {
buffer.writeInt16BE(value, offset);
return offset + 2;
}
function writeUShort(value, buffer, offset) {
buffer.writeUInt16BE(value, offset);
return offset + 2;
}
function writeInt(value, buffer, offset) {
buffer.writeInt32BE(value, offset);
return offset + 4;
}
function writeLong(value, buffer, offset) {
buffer.writeInt32BE(value[0], offset);
buffer.writeInt32BE(value[1], offset + 4);
return offset + 8;
}
function readVarInt(buffer, offset) {
var result = 0;
var shift = 0;