aboutsummaryrefslogtreecommitdiff
path: root/mojo/public/js/codec.js
diff options
context:
space:
mode:
Diffstat (limited to 'mojo/public/js/codec.js')
-rw-r--r--mojo/public/js/codec.js926
1 files changed, 0 insertions, 926 deletions
diff --git a/mojo/public/js/codec.js b/mojo/public/js/codec.js
deleted file mode 100644
index ce58a8c..0000000
--- a/mojo/public/js/codec.js
+++ /dev/null
@@ -1,926 +0,0 @@
-// Copyright 2014 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-define("mojo/public/js/codec", [
- "mojo/public/js/buffer",
- "mojo/public/js/interface_types",
- "mojo/public/js/unicode",
-], function(buffer, types, unicode) {
-
- var kErrorUnsigned = "Passing negative value to unsigned";
- var kErrorArray = "Passing non Array for array type";
- var kErrorString = "Passing non String for string type";
- var kErrorMap = "Passing non Map for map type";
-
- // Memory -------------------------------------------------------------------
-
- var kAlignment = 8;
-
- function align(size) {
- return size + (kAlignment - (size % kAlignment)) % kAlignment;
- }
-
- function isAligned(offset) {
- return offset >= 0 && (offset % kAlignment) === 0;
- }
-
- // Constants ----------------------------------------------------------------
-
- var kArrayHeaderSize = 8;
- var kStructHeaderSize = 8;
- var kMessageHeaderSize = 24;
- var kMessageWithRequestIDHeaderSize = 32;
- var kMapStructPayloadSize = 16;
-
- var kStructHeaderNumBytesOffset = 0;
- var kStructHeaderVersionOffset = 4;
-
- var kEncodedInvalidHandleValue = 0xFFFFFFFF;
-
- // Decoder ------------------------------------------------------------------
-
- function Decoder(buffer, handles, base) {
- this.buffer = buffer;
- this.handles = handles;
- this.base = base;
- this.next = base;
- }
-
- Decoder.prototype.align = function() {
- this.next = align(this.next);
- };
-
- Decoder.prototype.skip = function(offset) {
- this.next += offset;
- };
-
- Decoder.prototype.readInt8 = function() {
- var result = this.buffer.getInt8(this.next);
- this.next += 1;
- return result;
- };
-
- Decoder.prototype.readUint8 = function() {
- var result = this.buffer.getUint8(this.next);
- this.next += 1;
- return result;
- };
-
- Decoder.prototype.readInt16 = function() {
- var result = this.buffer.getInt16(this.next);
- this.next += 2;
- return result;
- };
-
- Decoder.prototype.readUint16 = function() {
- var result = this.buffer.getUint16(this.next);
- this.next += 2;
- return result;
- };
-
- Decoder.prototype.readInt32 = function() {
- var result = this.buffer.getInt32(this.next);
- this.next += 4;
- return result;
- };
-
- Decoder.prototype.readUint32 = function() {
- var result = this.buffer.getUint32(this.next);
- this.next += 4;
- return result;
- };
-
- Decoder.prototype.readInt64 = function() {
- var result = this.buffer.getInt64(this.next);
- this.next += 8;
- return result;
- };
-
- Decoder.prototype.readUint64 = function() {
- var result = this.buffer.getUint64(this.next);
- this.next += 8;
- return result;
- };
-
- Decoder.prototype.readFloat = function() {
- var result = this.buffer.getFloat32(this.next);
- this.next += 4;
- return result;
- };
-
- Decoder.prototype.readDouble = function() {
- var result = this.buffer.getFloat64(this.next);
- this.next += 8;
- return result;
- };
-
- Decoder.prototype.decodePointer = function() {
- // TODO(abarth): To correctly decode a pointer, we need to know the real
- // base address of the array buffer.
- var offsetPointer = this.next;
- var offset = this.readUint64();
- if (!offset)
- return 0;
- return offsetPointer + offset;
- };
-
- Decoder.prototype.decodeAndCreateDecoder = function(pointer) {
- return new Decoder(this.buffer, this.handles, pointer);
- };
-
- Decoder.prototype.decodeHandle = function() {
- return this.handles[this.readUint32()] || null;
- };
-
- Decoder.prototype.decodeString = function() {
- var numberOfBytes = this.readUint32();
- var numberOfElements = this.readUint32();
- var base = this.next;
- this.next += numberOfElements;
- return unicode.decodeUtf8String(
- new Uint8Array(this.buffer.arrayBuffer, base, numberOfElements));
- };
-
- Decoder.prototype.decodeArray = function(cls) {
- var numberOfBytes = this.readUint32();
- var numberOfElements = this.readUint32();
- var val = new Array(numberOfElements);
- if (cls === PackedBool) {
- var byte;
- for (var i = 0; i < numberOfElements; ++i) {
- if (i % 8 === 0)
- byte = this.readUint8();
- val[i] = (byte & (1 << i % 8)) ? true : false;
- }
- } else {
- for (var i = 0; i < numberOfElements; ++i) {
- val[i] = cls.decode(this);
- }
- }
- return val;
- };
-
- Decoder.prototype.decodeStruct = function(cls) {
- return cls.decode(this);
- };
-
- Decoder.prototype.decodeStructPointer = function(cls) {
- var pointer = this.decodePointer();
- if (!pointer) {
- return null;
- }
- return cls.decode(this.decodeAndCreateDecoder(pointer));
- };
-
- Decoder.prototype.decodeArrayPointer = function(cls) {
- var pointer = this.decodePointer();
- if (!pointer) {
- return null;
- }
- return this.decodeAndCreateDecoder(pointer).decodeArray(cls);
- };
-
- Decoder.prototype.decodeStringPointer = function() {
- var pointer = this.decodePointer();
- if (!pointer) {
- return null;
- }
- return this.decodeAndCreateDecoder(pointer).decodeString();
- };
-
- Decoder.prototype.decodeMap = function(keyClass, valueClass) {
- this.skip(4); // numberOfBytes
- this.skip(4); // version
- var keys = this.decodeArrayPointer(keyClass);
- var values = this.decodeArrayPointer(valueClass);
- var val = new Map();
- for (var i = 0; i < keys.length; i++)
- val.set(keys[i], values[i]);
- return val;
- };
-
- Decoder.prototype.decodeMapPointer = function(keyClass, valueClass) {
- var pointer = this.decodePointer();
- if (!pointer) {
- return null;
- }
- var decoder = this.decodeAndCreateDecoder(pointer);
- return decoder.decodeMap(keyClass, valueClass);
- };
-
- // Encoder ------------------------------------------------------------------
-
- function Encoder(buffer, handles, base) {
- this.buffer = buffer;
- this.handles = handles;
- this.base = base;
- this.next = base;
- }
-
- Encoder.prototype.align = function() {
- this.next = align(this.next);
- };
-
- Encoder.prototype.skip = function(offset) {
- this.next += offset;
- };
-
- Encoder.prototype.writeInt8 = function(val) {
- this.buffer.setInt8(this.next, val);
- this.next += 1;
- };
-
- Encoder.prototype.writeUint8 = function(val) {
- if (val < 0) {
- throw new Error(kErrorUnsigned);
- }
- this.buffer.setUint8(this.next, val);
- this.next += 1;
- };
-
- Encoder.prototype.writeInt16 = function(val) {
- this.buffer.setInt16(this.next, val);
- this.next += 2;
- };
-
- Encoder.prototype.writeUint16 = function(val) {
- if (val < 0) {
- throw new Error(kErrorUnsigned);
- }
- this.buffer.setUint16(this.next, val);
- this.next += 2;
- };
-
- Encoder.prototype.writeInt32 = function(val) {
- this.buffer.setInt32(this.next, val);
- this.next += 4;
- };
-
- Encoder.prototype.writeUint32 = function(val) {
- if (val < 0) {
- throw new Error(kErrorUnsigned);
- }
- this.buffer.setUint32(this.next, val);
- this.next += 4;
- };
-
- Encoder.prototype.writeInt64 = function(val) {
- this.buffer.setInt64(this.next, val);
- this.next += 8;
- };
-
- Encoder.prototype.writeUint64 = function(val) {
- if (val < 0) {
- throw new Error(kErrorUnsigned);
- }
- this.buffer.setUint64(this.next, val);
- this.next += 8;
- };
-
- Encoder.prototype.writeFloat = function(val) {
- this.buffer.setFloat32(this.next, val);
- this.next += 4;
- };
-
- Encoder.prototype.writeDouble = function(val) {
- this.buffer.setFloat64(this.next, val);
- this.next += 8;
- };
-
- Encoder.prototype.encodePointer = function(pointer) {
- if (!pointer)
- return this.writeUint64(0);
- // TODO(abarth): To correctly encode a pointer, we need to know the real
- // base address of the array buffer.
- var offset = pointer - this.next;
- this.writeUint64(offset);
- };
-
- Encoder.prototype.createAndEncodeEncoder = function(size) {
- var pointer = this.buffer.alloc(align(size));
- this.encodePointer(pointer);
- return new Encoder(this.buffer, this.handles, pointer);
- };
-
- Encoder.prototype.encodeHandle = function(handle) {
- if (handle) {
- this.handles.push(handle);
- this.writeUint32(this.handles.length - 1);
- } else {
- this.writeUint32(kEncodedInvalidHandleValue);
- }
- };
-
- Encoder.prototype.encodeString = function(val) {
- var base = this.next + kArrayHeaderSize;
- var numberOfElements = unicode.encodeUtf8String(
- val, new Uint8Array(this.buffer.arrayBuffer, base));
- var numberOfBytes = kArrayHeaderSize + numberOfElements;
- this.writeUint32(numberOfBytes);
- this.writeUint32(numberOfElements);
- this.next += numberOfElements;
- };
-
- Encoder.prototype.encodeArray =
- function(cls, val, numberOfElements, encodedSize) {
- if (numberOfElements === undefined)
- numberOfElements = val.length;
- if (encodedSize === undefined)
- encodedSize = kArrayHeaderSize + cls.encodedSize * numberOfElements;
-
- this.writeUint32(encodedSize);
- this.writeUint32(numberOfElements);
-
- if (cls === PackedBool) {
- var byte = 0;
- for (i = 0; i < numberOfElements; ++i) {
- if (val[i])
- byte |= (1 << i % 8);
- if (i % 8 === 7 || i == numberOfElements - 1) {
- Uint8.encode(this, byte);
- byte = 0;
- }
- }
- } else {
- for (var i = 0; i < numberOfElements; ++i)
- cls.encode(this, val[i]);
- }
- };
-
- Encoder.prototype.encodeStruct = function(cls, val) {
- return cls.encode(this, val);
- };
-
- Encoder.prototype.encodeStructPointer = function(cls, val) {
- if (val == null) {
- // Also handles undefined, since undefined == null.
- this.encodePointer(val);
- return;
- }
- var encoder = this.createAndEncodeEncoder(cls.encodedSize);
- cls.encode(encoder, val);
- };
-
- Encoder.prototype.encodeArrayPointer = function(cls, val) {
- if (val == null) {
- // Also handles undefined, since undefined == null.
- this.encodePointer(val);
- return;
- }
-
- var numberOfElements = val.length;
- if (!Number.isSafeInteger(numberOfElements) || numberOfElements < 0)
- throw new Error(kErrorArray);
-
- 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 == null) {
- // Also handles undefined, since undefined == null.
- this.encodePointer(val);
- return;
- }
- // Only accepts string primivites, not String Objects like new String("foo")
- if (typeof(val) !== "string") {
- throw new Error(kErrorString);
- }
- var encodedSize = kArrayHeaderSize + unicode.utf8Length(val);
- var encoder = this.createAndEncodeEncoder(encodedSize);
- encoder.encodeString(val);
- };
-
- Encoder.prototype.encodeMap = function(keyClass, valueClass, val) {
- var keys = new Array(val.size);
- var values = new Array(val.size);
- var i = 0;
- val.forEach(function(value, key) {
- values[i] = value;
- keys[i++] = key;
- });
- this.writeUint32(kStructHeaderSize + kMapStructPayloadSize);
- this.writeUint32(0); // version
- this.encodeArrayPointer(keyClass, keys);
- this.encodeArrayPointer(valueClass, values);
- }
-
- Encoder.prototype.encodeMapPointer = function(keyClass, valueClass, val) {
- if (val == null) {
- // Also handles undefined, since undefined == null.
- this.encodePointer(val);
- return;
- }
- if (!(val instanceof Map)) {
- throw new Error(kErrorMap);
- }
- var encodedSize = kStructHeaderSize + kMapStructPayloadSize;
- var encoder = this.createAndEncodeEncoder(encodedSize);
- encoder.encodeMap(keyClass, valueClass, val);
- };
-
- // Message ------------------------------------------------------------------
-
- var kMessageInterfaceIdOffset = kStructHeaderSize;
- var kMessageNameOffset = kMessageInterfaceIdOffset + 4;
- var kMessageFlagsOffset = kMessageNameOffset + 4;
- var kMessageRequestIDOffset = kMessageFlagsOffset + 8;
-
- var kMessageExpectsResponse = 1 << 0;
- var kMessageIsResponse = 1 << 1;
-
- function Message(buffer, handles) {
- this.buffer = buffer;
- this.handles = handles;
- }
-
- Message.prototype.getHeaderNumBytes = function() {
- return this.buffer.getUint32(kStructHeaderNumBytesOffset);
- };
-
- Message.prototype.getHeaderVersion = function() {
- return this.buffer.getUint32(kStructHeaderVersionOffset);
- };
-
- Message.prototype.getName = function() {
- return this.buffer.getUint32(kMessageNameOffset);
- };
-
- Message.prototype.getFlags = function() {
- return this.buffer.getUint32(kMessageFlagsOffset);
- };
-
- Message.prototype.getInterfaceId = function() {
- return this.buffer.getUint32(kMessageInterfaceIdOffset);
- };
-
- Message.prototype.isResponse = function() {
- return (this.getFlags() & kMessageIsResponse) != 0;
- };
-
- Message.prototype.expectsResponse = function() {
- return (this.getFlags() & kMessageExpectsResponse) != 0;
- };
-
- Message.prototype.setRequestID = function(requestID) {
- // TODO(darin): Verify that space was reserved for this field!
- this.buffer.setUint64(kMessageRequestIDOffset, requestID);
- };
-
- Message.prototype.setInterfaceId = function(interfaceId) {
- this.buffer.setUint32(kMessageInterfaceIdOffset, interfaceId);
- };
-
-
- // MessageBuilder -----------------------------------------------------------
-
- function MessageBuilder(messageName, payloadSize) {
- // Currently, we don't compute the payload size correctly ahead of time.
- // Instead, we resize the buffer at the end.
- var numberOfBytes = kMessageHeaderSize + payloadSize;
- this.buffer = new buffer.Buffer(numberOfBytes);
- this.handles = [];
- var encoder = this.createEncoder(kMessageHeaderSize);
- encoder.writeUint32(kMessageHeaderSize);
- encoder.writeUint32(0); // version.
- encoder.writeUint32(0); // interface ID.
- encoder.writeUint32(messageName);
- encoder.writeUint32(0); // flags.
- encoder.writeUint32(0); // padding.
- }
-
- MessageBuilder.prototype.createEncoder = function(size) {
- var pointer = this.buffer.alloc(size);
- return new Encoder(this.buffer, this.handles, pointer);
- };
-
- MessageBuilder.prototype.encodeStruct = function(cls, val) {
- cls.encode(this.createEncoder(cls.encodedSize), val);
- };
-
- MessageBuilder.prototype.finish = function() {
- // TODO(abarth): Rather than resizing the buffer at the end, we could
- // compute the size we need ahead of time, like we do in C++.
- this.buffer.trim();
- var message = new Message(this.buffer, this.handles);
- this.buffer = null;
- this.handles = null;
- this.encoder = null;
- return message;
- };
-
- // MessageWithRequestIDBuilder -----------------------------------------------
-
- function MessageWithRequestIDBuilder(messageName, payloadSize, flags,
- requestID) {
- // Currently, we don't compute the payload size correctly ahead of time.
- // Instead, we resize the buffer at the end.
- var numberOfBytes = kMessageWithRequestIDHeaderSize + payloadSize;
- this.buffer = new buffer.Buffer(numberOfBytes);
- this.handles = [];
- var encoder = this.createEncoder(kMessageWithRequestIDHeaderSize);
- encoder.writeUint32(kMessageWithRequestIDHeaderSize);
- encoder.writeUint32(1); // version.
- encoder.writeUint32(0); // interface ID.
- encoder.writeUint32(messageName);
- encoder.writeUint32(flags);
- encoder.writeUint32(0); // padding.
- encoder.writeUint64(requestID);
- }
-
- MessageWithRequestIDBuilder.prototype =
- Object.create(MessageBuilder.prototype);
-
- MessageWithRequestIDBuilder.prototype.constructor =
- MessageWithRequestIDBuilder;
-
- // MessageReader ------------------------------------------------------------
-
- function MessageReader(message) {
- this.decoder = new Decoder(message.buffer, message.handles, 0);
- var messageHeaderSize = this.decoder.readUint32();
- this.payloadSize = message.buffer.byteLength - messageHeaderSize;
- var version = this.decoder.readUint32();
- var interface_id = this.decoder.readUint32();
- this.messageName = this.decoder.readUint32();
- this.flags = this.decoder.readUint32();
- // Skip the padding.
- this.decoder.skip(4);
- if (version >= 1)
- this.requestID = this.decoder.readUint64();
- this.decoder.skip(messageHeaderSize - this.decoder.next);
- }
-
- MessageReader.prototype.decodeStruct = function(cls) {
- return cls.decode(this.decoder);
- };
-
- // Built-in types -----------------------------------------------------------
-
- // This type is only used with ArrayOf(PackedBool).
- function PackedBool() {
- }
-
- function Int8() {
- }
-
- Int8.encodedSize = 1;
-
- Int8.decode = function(decoder) {
- return decoder.readInt8();
- };
-
- Int8.encode = function(encoder, val) {
- encoder.writeInt8(val);
- };
-
- Uint8.encode = function(encoder, val) {
- encoder.writeUint8(val);
- };
-
- function Uint8() {
- }
-
- Uint8.encodedSize = 1;
-
- Uint8.decode = function(decoder) {
- return decoder.readUint8();
- };
-
- Uint8.encode = function(encoder, val) {
- encoder.writeUint8(val);
- };
-
- function Int16() {
- }
-
- Int16.encodedSize = 2;
-
- Int16.decode = function(decoder) {
- return decoder.readInt16();
- };
-
- Int16.encode = function(encoder, val) {
- encoder.writeInt16(val);
- };
-
- function Uint16() {
- }
-
- Uint16.encodedSize = 2;
-
- Uint16.decode = function(decoder) {
- return decoder.readUint16();
- };
-
- Uint16.encode = function(encoder, val) {
- encoder.writeUint16(val);
- };
-
- function Int32() {
- }
-
- Int32.encodedSize = 4;
-
- Int32.decode = function(decoder) {
- return decoder.readInt32();
- };
-
- Int32.encode = function(encoder, val) {
- encoder.writeInt32(val);
- };
-
- function Uint32() {
- }
-
- Uint32.encodedSize = 4;
-
- Uint32.decode = function(decoder) {
- return decoder.readUint32();
- };
-
- Uint32.encode = function(encoder, val) {
- encoder.writeUint32(val);
- };
-
- function Int64() {
- }
-
- Int64.encodedSize = 8;
-
- Int64.decode = function(decoder) {
- return decoder.readInt64();
- };
-
- Int64.encode = function(encoder, val) {
- encoder.writeInt64(val);
- };
-
- function Uint64() {
- }
-
- Uint64.encodedSize = 8;
-
- Uint64.decode = function(decoder) {
- return decoder.readUint64();
- };
-
- Uint64.encode = function(encoder, val) {
- encoder.writeUint64(val);
- };
-
- function String() {
- };
-
- String.encodedSize = 8;
-
- String.decode = function(decoder) {
- return decoder.decodeStringPointer();
- };
-
- String.encode = function(encoder, val) {
- encoder.encodeStringPointer(val);
- };
-
- function NullableString() {
- }
-
- NullableString.encodedSize = String.encodedSize;
-
- NullableString.decode = String.decode;
-
- NullableString.encode = String.encode;
-
- function Float() {
- }
-
- Float.encodedSize = 4;
-
- Float.decode = function(decoder) {
- return decoder.readFloat();
- };
-
- Float.encode = function(encoder, val) {
- encoder.writeFloat(val);
- };
-
- function Double() {
- }
-
- Double.encodedSize = 8;
-
- Double.decode = function(decoder) {
- return decoder.readDouble();
- };
-
- Double.encode = function(encoder, val) {
- encoder.writeDouble(val);
- };
-
- function Enum(cls) {
- this.cls = cls;
- }
-
- Enum.prototype.encodedSize = 4;
-
- Enum.prototype.decode = function(decoder) {
- return decoder.readInt32();
- };
-
- Enum.prototype.encode = function(encoder, val) {
- encoder.writeInt32(val);
- };
-
- function PointerTo(cls) {
- this.cls = cls;
- }
-
- PointerTo.prototype.encodedSize = 8;
-
- PointerTo.prototype.decode = function(decoder) {
- var pointer = decoder.decodePointer();
- if (!pointer) {
- return null;
- }
- return this.cls.decode(decoder.decodeAndCreateDecoder(pointer));
- };
-
- PointerTo.prototype.encode = function(encoder, val) {
- if (!val) {
- encoder.encodePointer(val);
- return;
- }
- var objectEncoder = encoder.createAndEncodeEncoder(this.cls.encodedSize);
- this.cls.encode(objectEncoder, val);
- };
-
- function NullablePointerTo(cls) {
- PointerTo.call(this, cls);
- }
-
- NullablePointerTo.prototype = Object.create(PointerTo.prototype);
-
- function ArrayOf(cls, length) {
- this.cls = cls;
- this.length = length || 0;
- }
-
- ArrayOf.prototype.encodedSize = 8;
-
- ArrayOf.prototype.dimensions = function() {
- return [this.length].concat(
- (this.cls instanceof ArrayOf) ? this.cls.dimensions() : []);
- }
-
- ArrayOf.prototype.decode = function(decoder) {
- return decoder.decodeArrayPointer(this.cls);
- };
-
- ArrayOf.prototype.encode = function(encoder, val) {
- encoder.encodeArrayPointer(this.cls, val);
- };
-
- function NullableArrayOf(cls) {
- ArrayOf.call(this, cls);
- }
-
- NullableArrayOf.prototype = Object.create(ArrayOf.prototype);
-
- function Handle() {
- }
-
- Handle.encodedSize = 4;
-
- Handle.decode = function(decoder) {
- return decoder.decodeHandle();
- };
-
- Handle.encode = function(encoder, val) {
- encoder.encodeHandle(val);
- };
-
- function NullableHandle() {
- }
-
- NullableHandle.encodedSize = Handle.encodedSize;
-
- NullableHandle.decode = Handle.decode;
-
- NullableHandle.encode = Handle.encode;
-
- function Interface(cls) {
- this.cls = cls;
- }
-
- Interface.prototype.encodedSize = 8;
-
- Interface.prototype.decode = function(decoder) {
- var interfacePtrInfo = new types.InterfacePtrInfo(
- decoder.decodeHandle(), decoder.readUint32());
- var interfacePtr = new this.cls();
- interfacePtr.ptr.bind(interfacePtrInfo);
- return interfacePtr;
- };
-
- Interface.prototype.encode = function(encoder, val) {
- var interfacePtrInfo =
- val ? val.ptr.passInterface() : new types.InterfacePtrInfo(null, 0);
- encoder.encodeHandle(interfacePtrInfo.handle);
- encoder.writeUint32(interfacePtrInfo.version);
- };
-
- function NullableInterface(cls) {
- Interface.call(this, cls);
- }
-
- NullableInterface.prototype = Object.create(Interface.prototype);
-
- function InterfaceRequest() {
- }
-
- InterfaceRequest.encodedSize = 4;
-
- InterfaceRequest.decode = function(decoder) {
- return new types.InterfaceRequest(decoder.decodeHandle());
- };
-
- InterfaceRequest.encode = function(encoder, val) {
- encoder.encodeHandle(val ? val.handle : null);
- };
-
- function NullableInterfaceRequest() {
- }
-
- NullableInterfaceRequest.encodedSize = InterfaceRequest.encodedSize;
-
- NullableInterfaceRequest.decode = InterfaceRequest.decode;
-
- NullableInterfaceRequest.encode = InterfaceRequest.encode;
-
- function MapOf(keyClass, valueClass) {
- this.keyClass = keyClass;
- this.valueClass = valueClass;
- }
-
- MapOf.prototype.encodedSize = 8;
-
- MapOf.prototype.decode = function(decoder) {
- return decoder.decodeMapPointer(this.keyClass, this.valueClass);
- };
-
- MapOf.prototype.encode = function(encoder, val) {
- encoder.encodeMapPointer(this.keyClass, this.valueClass, val);
- };
-
- function NullableMapOf(keyClass, valueClass) {
- MapOf.call(this, keyClass, valueClass);
- }
-
- NullableMapOf.prototype = Object.create(MapOf.prototype);
-
- var exports = {};
- exports.align = align;
- exports.isAligned = isAligned;
- exports.Message = Message;
- exports.MessageBuilder = MessageBuilder;
- exports.MessageWithRequestIDBuilder = MessageWithRequestIDBuilder;
- exports.MessageReader = MessageReader;
- exports.kArrayHeaderSize = kArrayHeaderSize;
- exports.kMapStructPayloadSize = kMapStructPayloadSize;
- exports.kStructHeaderSize = kStructHeaderSize;
- exports.kEncodedInvalidHandleValue = kEncodedInvalidHandleValue;
- exports.kMessageHeaderSize = kMessageHeaderSize;
- exports.kMessageWithRequestIDHeaderSize = kMessageWithRequestIDHeaderSize;
- exports.kMessageExpectsResponse = kMessageExpectsResponse;
- exports.kMessageIsResponse = kMessageIsResponse;
- exports.Int8 = Int8;
- exports.Uint8 = Uint8;
- exports.Int16 = Int16;
- exports.Uint16 = Uint16;
- exports.Int32 = Int32;
- exports.Uint32 = Uint32;
- exports.Int64 = Int64;
- exports.Uint64 = Uint64;
- exports.Float = Float;
- exports.Double = Double;
- exports.String = String;
- exports.Enum = Enum;
- exports.NullableString = NullableString;
- exports.PointerTo = PointerTo;
- exports.NullablePointerTo = NullablePointerTo;
- exports.ArrayOf = ArrayOf;
- exports.NullableArrayOf = NullableArrayOf;
- exports.PackedBool = PackedBool;
- exports.Handle = Handle;
- exports.NullableHandle = NullableHandle;
- exports.Interface = Interface;
- exports.NullableInterface = NullableInterface;
- exports.InterfaceRequest = InterfaceRequest;
- exports.NullableInterfaceRequest = NullableInterfaceRequest;
- exports.MapOf = MapOf;
- exports.NullableMapOf = NullableMapOf;
- return exports;
-});