var kStructHeaderNumBytesOffset = 0;
var kStructHeaderNumFieldsOffset = 4;
+ var kEncodedInvalidHandleValue = 0xFFFFFFFF;
+
// Decoder ------------------------------------------------------------------
function Decoder(buffer, handles, base) {
var numberOfBytes = this.readUint32();
var numberOfElements = this.readUint32();
var val = new Array(numberOfElements);
- if (cls.cls === PackedBool) {
+ if (cls === PackedBool) {
var byte;
for (var i = 0; i < numberOfElements; ++i) {
if (i % 8 === 0)
this.writeUint32(encodedSize);
this.writeUint32(numberOfElements);
- if (cls.cls === PackedBool) {
+ if (cls === PackedBool) {
var byte = 0;
for (i = 0; i < numberOfElements; ++i) {
if (val[i])
};
Encoder.prototype.encodeStructPointer = function(cls, val) {
- if (!val) {
+ if (val == null) {
+ // Also handles undefined, since undefined == null.
this.encodePointer(val);
return;
}
};
Encoder.prototype.encodeArrayPointer = function(cls, val) {
- if (!val) {
+ if (val == null) {
+ // Also handles undefined, since undefined == null.
this.encodePointer(val);
return;
}
var numberOfElements = val.length;
- var encodedSize = kArrayHeaderSize + ((cls.cls === PackedBool) ?
+ var encodedSize = kArrayHeaderSize + ((cls === PackedBool) ?
Math.ceil(numberOfElements / 8) : cls.encodedSize * numberOfElements);
var encoder = this.createAndEncodeEncoder(encodedSize);
encoder.encodeArray(cls, val, numberOfElements, encodedSize);
};
Encoder.prototype.encodeStringPointer = function(val) {
- if (!val) {
+ if (val == null) {
+ // Also handles undefined, since undefined == null.
this.encodePointer(val);
return;
}
return this.buffer.getUint32(kStructHeaderNumFieldsOffset);
};
+ Message.prototype.getName = function() {
+ return this.buffer.getUint32(kMessageNameOffset);
+ };
+
Message.prototype.getFlags = function() {
return this.buffer.getUint32(kMessageFlagsOffset);
};
encoder.encodeStringPointer(val);
};
+ function NullableString() {
+ }
+
+ NullableString.encodedSize = String.encodedSize;
+
+ NullableString.decode = String.decode;
+
+ NullableString.encode = String.encode;
function Float() {
}
this.cls.encode(objectEncoder, val);
};
+ function NullablePointerTo(cls) {
+ PointerTo.call(this, cls);
+ }
+
+ NullablePointerTo.prototype = Object.create(PointerTo.prototype);
+
function ArrayOf(cls) {
this.cls = cls;
}
encoder.encodeArrayPointer(this.cls, val);
};
+ function NullableArrayOf(cls) {
+ ArrayOf.call(this, cls);
+ }
+
+ NullableArrayOf.prototype = Object.create(ArrayOf.prototype);
+
function Handle() {
}
encoder.encodeHandle(val);
};
+ function NullableHandle() {
+ }
+
+ NullableHandle.encodedSize = Handle.encodedSize;
+
+ NullableHandle.decode = Handle.decode;
+
+ NullableHandle.encode = Handle.encode;
+
var exports = {};
exports.align = align;
exports.isAligned = isAligned;
exports.MessageReader = MessageReader;
exports.kArrayHeaderSize = kArrayHeaderSize;
exports.kStructHeaderSize = kStructHeaderSize;
+ exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue;
exports.kMessageHeaderSize = kMessageHeaderSize;
exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize;
exports.kMessageExpectsResponse = kMessageExpectsResponse;
exports.Float = Float;
exports.Double = Double;
exports.String = String;
+ exports.NullableString = NullableString;
exports.PointerTo = PointerTo;
+ exports.NullablePointerTo = NullablePointerTo;
exports.ArrayOf = ArrayOf;
+ exports.NullableArrayOf = NullableArrayOf;
exports.PackedBool = PackedBool;
exports.Handle = Handle;
+ exports.NullableHandle = NullableHandle;
return exports;
});