1260 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			1260 lines
		
	
	
		
			32 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| /// @file
 | |
| /// @addtogroup flatbuffers_javascript_api
 | |
| /// @{
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| 
 | |
| /**
 | |
|  * @fileoverview
 | |
|  *
 | |
|  * Need to suppress 'global this' error so the Node.js export line doesn't cause
 | |
|  * closure compile to error out.
 | |
|  * @suppress {globalThis}
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @const
 | |
|  * @namespace
 | |
|  */
 | |
| var flatbuffers = {};
 | |
| 
 | |
| /**
 | |
|  * @typedef {number}
 | |
|  */
 | |
| flatbuffers.Offset;
 | |
| 
 | |
| /**
 | |
|  * @typedef {{
 | |
|  *   bb: flatbuffers.ByteBuffer,
 | |
|  *   bb_pos: number
 | |
|  * }}
 | |
|  */
 | |
| flatbuffers.Table;
 | |
| 
 | |
| /**
 | |
|  * @type {number}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.SIZEOF_SHORT = 2;
 | |
| 
 | |
| /**
 | |
|  * @type {number}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.SIZEOF_INT = 4;
 | |
| 
 | |
| /**
 | |
|  * @type {number}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.FILE_IDENTIFIER_LENGTH = 4;
 | |
| 
 | |
| /**
 | |
|  * @type {number}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.SIZE_PREFIX_LENGTH = 4;
 | |
| 
 | |
| /**
 | |
|  * @enum {number}
 | |
|  */
 | |
| flatbuffers.Encoding = {
 | |
|   UTF8_BYTES: 1,
 | |
|   UTF16_STRING: 2
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @type {Int32Array}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.int32 = new Int32Array(2);
 | |
| 
 | |
| /**
 | |
|  * @type {Float32Array}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.float32 = new Float32Array(flatbuffers.int32.buffer);
 | |
| 
 | |
| /**
 | |
|  * @type {Float64Array}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.float64 = new Float64Array(flatbuffers.int32.buffer);
 | |
| 
 | |
| /**
 | |
|  * @type {boolean}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.isLittleEndian = new Uint16Array(new Uint8Array([1, 0]).buffer)[0] === 1;
 | |
| 
 | |
| ////////////////////////////////////////////////////////////////////////////////
 | |
| 
 | |
| /**
 | |
|  * @constructor
 | |
|  * @param {number} low
 | |
|  * @param {number} high
 | |
|  */
 | |
| flatbuffers.Long = function(low, high) {
 | |
|   /**
 | |
|    * @type {number}
 | |
|    * @const
 | |
|    */
 | |
|   this.low = low | 0;
 | |
| 
 | |
|   /**
 | |
|    * @type {number}
 | |
|    * @const
 | |
|    */
 | |
|   this.high = high | 0;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} low
 | |
|  * @param {number} high
 | |
|  * @returns {flatbuffers.Long}
 | |
|  */
 | |
| flatbuffers.Long.create = function(low, high) {
 | |
|   // Special-case zero to avoid GC overhead for default values
 | |
|   return low == 0 && high == 0 ? flatbuffers.Long.ZERO : new flatbuffers.Long(low, high);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.Long.prototype.toFloat64 = function() {
 | |
|   return (this.low >>> 0) + this.high * 0x100000000;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {flatbuffers.Long} other
 | |
|  * @returns {boolean}
 | |
|  */
 | |
| flatbuffers.Long.prototype.equals = function(other) {
 | |
|   return this.low == other.low && this.high == other.high;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @type {flatbuffers.Long}
 | |
|  * @const
 | |
|  */
 | |
| flatbuffers.Long.ZERO = new flatbuffers.Long(0, 0);
 | |
| 
 | |
| /// @endcond
 | |
| ////////////////////////////////////////////////////////////////////////////////
 | |
| /**
 | |
|  * Create a FlatBufferBuilder.
 | |
|  *
 | |
|  * @constructor
 | |
|  * @param {number=} opt_initial_size
 | |
|  */
 | |
| flatbuffers.Builder = function(opt_initial_size) {
 | |
|   if (!opt_initial_size) {
 | |
|     var initial_size = 1024;
 | |
|   } else {
 | |
|     var initial_size = opt_initial_size;
 | |
|   }
 | |
| 
 | |
|   /**
 | |
|    * @type {flatbuffers.ByteBuffer}
 | |
|    * @private
 | |
|    */
 | |
|   this.bb = flatbuffers.ByteBuffer.allocate(initial_size);
 | |
| 
 | |
|   /**
 | |
|    * Remaining space in the ByteBuffer.
 | |
|    *
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.space = initial_size;
 | |
| 
 | |
|   /**
 | |
|    * Minimum alignment encountered so far.
 | |
|    *
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.minalign = 1;
 | |
| 
 | |
|   /**
 | |
|    * The vtable for the current table.
 | |
|    *
 | |
|    * @type {Array.<number>}
 | |
|    * @private
 | |
|    */
 | |
|   this.vtable = null;
 | |
| 
 | |
|   /**
 | |
|    * The amount of fields we're actually using.
 | |
|    *
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.vtable_in_use = 0;
 | |
| 
 | |
|   /**
 | |
|    * Whether we are currently serializing a table.
 | |
|    *
 | |
|    * @type {boolean}
 | |
|    * @private
 | |
|    */
 | |
|   this.isNested = false;
 | |
| 
 | |
|   /**
 | |
|    * Starting offset of the current struct/table.
 | |
|    *
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.object_start = 0;
 | |
| 
 | |
|   /**
 | |
|    * List of offsets of all vtables.
 | |
|    *
 | |
|    * @type {Array.<number>}
 | |
|    * @private
 | |
|    */
 | |
|   this.vtables = [];
 | |
| 
 | |
|   /**
 | |
|    * For the current vector being built.
 | |
|    *
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.vector_num_elems = 0;
 | |
| 
 | |
|   /**
 | |
|    * False omits default values from the serialized data
 | |
|    *
 | |
|    * @type {boolean}
 | |
|    * @private
 | |
|    */
 | |
|   this.force_defaults = false;
 | |
| };
 | |
| 
 | |
| flatbuffers.Builder.prototype.clear = function() {
 | |
|   this.bb.clear();
 | |
|   this.space = this.bb.capacity();
 | |
|   this.minalign = 1;
 | |
|   this.vtable = null;
 | |
|   this.vtable_in_use = 0;
 | |
|   this.isNested = false;
 | |
|   this.object_start = 0;
 | |
|   this.vtables = [];
 | |
|   this.vector_num_elems = 0;
 | |
|   this.force_defaults = false;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * In order to save space, fields that are set to their default value
 | |
|  * don't get serialized into the buffer. Forcing defaults provides a
 | |
|  * way to manually disable this optimization.
 | |
|  *
 | |
|  * @param {boolean} forceDefaults true always serializes default values
 | |
|  */
 | |
| flatbuffers.Builder.prototype.forceDefaults = function(forceDefaults) {
 | |
|   this.force_defaults = forceDefaults;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the ByteBuffer representing the FlatBuffer. Only call this after you've
 | |
|  * called finish(). The actual data starts at the ByteBuffer's current position,
 | |
|  * not necessarily at 0.
 | |
|  *
 | |
|  * @returns {flatbuffers.ByteBuffer}
 | |
|  */
 | |
| flatbuffers.Builder.prototype.dataBuffer = function() {
 | |
|   return this.bb;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the bytes representing the FlatBuffer. Only call this after you've
 | |
|  * called finish().
 | |
|  *
 | |
|  * @returns {Uint8Array}
 | |
|  */
 | |
| flatbuffers.Builder.prototype.asUint8Array = function() {
 | |
|   return this.bb.bytes().subarray(this.bb.position(), this.bb.position() + this.offset());
 | |
| };
 | |
| 
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| /**
 | |
|  * Prepare to write an element of `size` after `additional_bytes` have been
 | |
|  * written, e.g. if you write a string, you need to align such the int length
 | |
|  * field is aligned to 4 bytes, and the string data follows it directly. If all
 | |
|  * you need to do is alignment, `additional_bytes` will be 0.
 | |
|  *
 | |
|  * @param {number} size This is the of the new element to write
 | |
|  * @param {number} additional_bytes The padding size
 | |
|  */
 | |
| flatbuffers.Builder.prototype.prep = function(size, additional_bytes) {
 | |
|   // Track the biggest thing we've ever aligned to.
 | |
|   if (size > this.minalign) {
 | |
|     this.minalign = size;
 | |
|   }
 | |
| 
 | |
|   // Find the amount of alignment needed such that `size` is properly
 | |
|   // aligned after `additional_bytes`
 | |
|   var align_size = ((~(this.bb.capacity() - this.space + additional_bytes)) + 1) & (size - 1);
 | |
| 
 | |
|   // Reallocate the buffer if needed.
 | |
|   while (this.space < align_size + size + additional_bytes) {
 | |
|     var old_buf_size = this.bb.capacity();
 | |
|     this.bb = flatbuffers.Builder.growByteBuffer(this.bb);
 | |
|     this.space += this.bb.capacity() - old_buf_size;
 | |
|   }
 | |
| 
 | |
|   this.pad(align_size);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} byte_size
 | |
|  */
 | |
| flatbuffers.Builder.prototype.pad = function(byte_size) {
 | |
|   for (var i = 0; i < byte_size; i++) {
 | |
|     this.bb.writeInt8(--this.space, 0);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeInt8 = function(value) {
 | |
|   this.bb.writeInt8(this.space -= 1, value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeInt16 = function(value) {
 | |
|   this.bb.writeInt16(this.space -= 2, value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeInt32 = function(value) {
 | |
|   this.bb.writeInt32(this.space -= 4, value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {flatbuffers.Long} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeInt64 = function(value) {
 | |
|   this.bb.writeInt64(this.space -= 8, value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeFloat32 = function(value) {
 | |
|   this.bb.writeFloat32(this.space -= 4, value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.Builder.prototype.writeFloat64 = function(value) {
 | |
|   this.bb.writeFloat64(this.space -= 8, value);
 | |
| };
 | |
| /// @endcond
 | |
| 
 | |
| /**
 | |
|  * Add an `int8` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {number} value The `int8` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addInt8 = function(value) {
 | |
|   this.prep(1, 0);
 | |
|   this.writeInt8(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Add an `int16` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {number} value The `int16` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addInt16 = function(value) {
 | |
|   this.prep(2, 0);
 | |
|   this.writeInt16(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Add an `int32` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {number} value The `int32` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addInt32 = function(value) {
 | |
|   this.prep(4, 0);
 | |
|   this.writeInt32(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Add an `int64` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {flatbuffers.Long} value The `int64` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addInt64 = function(value) {
 | |
|   this.prep(8, 0);
 | |
|   this.writeInt64(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Add a `float32` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {number} value The `float32` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFloat32 = function(value) {
 | |
|   this.prep(4, 0);
 | |
|   this.writeFloat32(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Add a `float64` to the buffer, properly aligned, and grows the buffer (if necessary).
 | |
|  * @param {number} value The `float64` to add the the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFloat64 = function(value) {
 | |
|   this.prep(8, 0);
 | |
|   this.writeFloat64(value);
 | |
| };
 | |
| 
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {number} value
 | |
|  * @param {number} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldInt8 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addInt8(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {number} value
 | |
|  * @param {number} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldInt16 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addInt16(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {number} value
 | |
|  * @param {number} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldInt32 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addInt32(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {flatbuffers.Long} value
 | |
|  * @param {flatbuffers.Long} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldInt64 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || !value.equals(defaultValue)) {
 | |
|     this.addInt64(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {number} value
 | |
|  * @param {number} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldFloat32 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addFloat32(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {number} value
 | |
|  * @param {number} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldFloat64 = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addFloat64(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} voffset
 | |
|  * @param {flatbuffers.Offset} value
 | |
|  * @param {flatbuffers.Offset} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldOffset = function(voffset, value, defaultValue) {
 | |
|   if (this.force_defaults || value != defaultValue) {
 | |
|     this.addOffset(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Structs are stored inline, so nothing additional is being added. `d` is always 0.
 | |
|  *
 | |
|  * @param {number} voffset
 | |
|  * @param {flatbuffers.Offset} value
 | |
|  * @param {flatbuffers.Offset} defaultValue
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addFieldStruct = function(voffset, value, defaultValue) {
 | |
|   if (value != defaultValue) {
 | |
|     this.nested(value);
 | |
|     this.slot(voffset);
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Structures are always stored inline, they need to be created right
 | |
|  * where they're used.  You'll get this assertion failure if you
 | |
|  * created it elsewhere.
 | |
|  *
 | |
|  * @param {flatbuffers.Offset} obj The offset of the created object
 | |
|  */
 | |
| flatbuffers.Builder.prototype.nested = function(obj) {
 | |
|   if (obj != this.offset()) {
 | |
|     throw new Error('FlatBuffers: struct must be serialized inline.');
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Should not be creating any other object, string or vector
 | |
|  * while an object is being constructed
 | |
|  */
 | |
| flatbuffers.Builder.prototype.notNested = function() {
 | |
|   if (this.isNested) {
 | |
|     throw new Error('FlatBuffers: object serialization must not be nested.');
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Set the current vtable at `voffset` to the current location in the buffer.
 | |
|  *
 | |
|  * @param {number} voffset
 | |
|  */
 | |
| flatbuffers.Builder.prototype.slot = function(voffset) {
 | |
|   this.vtable[voffset] = this.offset();
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @returns {flatbuffers.Offset} Offset relative to the end of the buffer.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.offset = function() {
 | |
|   return this.bb.capacity() - this.space;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Doubles the size of the backing ByteBuffer and copies the old data towards
 | |
|  * the end of the new buffer (since we build the buffer backwards).
 | |
|  *
 | |
|  * @param {flatbuffers.ByteBuffer} bb The current buffer with the existing data
 | |
|  * @returns {flatbuffers.ByteBuffer} A new byte buffer with the old data copied
 | |
|  * to it. The data is located at the end of the buffer.
 | |
|  *
 | |
|  * uint8Array.set() formally takes {Array<number>|ArrayBufferView}, so to pass
 | |
|  * it a uint8Array we need to suppress the type check:
 | |
|  * @suppress {checkTypes}
 | |
|  */
 | |
| flatbuffers.Builder.growByteBuffer = function(bb) {
 | |
|   var old_buf_size = bb.capacity();
 | |
| 
 | |
|   // Ensure we don't grow beyond what fits in an int.
 | |
|   if (old_buf_size & 0xC0000000) {
 | |
|     throw new Error('FlatBuffers: cannot grow buffer beyond 2 gigabytes.');
 | |
|   }
 | |
| 
 | |
|   var new_buf_size = old_buf_size << 1;
 | |
|   var nbb = flatbuffers.ByteBuffer.allocate(new_buf_size);
 | |
|   nbb.setPosition(new_buf_size - old_buf_size);
 | |
|   nbb.bytes().set(bb.bytes(), new_buf_size - old_buf_size);
 | |
|   return nbb;
 | |
| };
 | |
| /// @endcond
 | |
| 
 | |
| /**
 | |
|  * Adds on offset, relative to where it will be written.
 | |
|  *
 | |
|  * @param {flatbuffers.Offset} offset The offset to add.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.addOffset = function(offset) {
 | |
|   this.prep(flatbuffers.SIZEOF_INT, 0); // Ensure alignment is already done.
 | |
|   this.writeInt32(this.offset() - offset + flatbuffers.SIZEOF_INT);
 | |
| };
 | |
| 
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| /**
 | |
|  * Start encoding a new object in the buffer.  Users will not usually need to
 | |
|  * call this directly. The FlatBuffers compiler will generate helper methods
 | |
|  * that call this method internally.
 | |
|  *
 | |
|  * @param {number} numfields
 | |
|  */
 | |
| flatbuffers.Builder.prototype.startObject = function(numfields) {
 | |
|   this.notNested();
 | |
|   if (this.vtable == null) {
 | |
|     this.vtable = [];
 | |
|   }
 | |
|   this.vtable_in_use = numfields;
 | |
|   for (var i = 0; i < numfields; i++) {
 | |
|     this.vtable[i] = 0; // This will push additional elements as needed
 | |
|   }
 | |
|   this.isNested = true;
 | |
|   this.object_start = this.offset();
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Finish off writing the object that is under construction.
 | |
|  *
 | |
|  * @returns {flatbuffers.Offset} The offset to the object inside `dataBuffer`
 | |
|  */
 | |
| flatbuffers.Builder.prototype.endObject = function() {
 | |
|   if (this.vtable == null || !this.isNested) {
 | |
|     throw new Error('FlatBuffers: endObject called without startObject');
 | |
|   }
 | |
| 
 | |
|   this.addInt32(0);
 | |
|   var vtableloc = this.offset();
 | |
| 
 | |
|   // Trim trailing zeroes.
 | |
|   var i = this.vtable_in_use - 1;
 | |
|   for (; i >= 0 && this.vtable[i] == 0; i--) {}
 | |
|   var trimmed_size = i + 1;
 | |
| 
 | |
|   // Write out the current vtable.
 | |
|   for (; i >= 0; i--) {
 | |
|     // Offset relative to the start of the table.
 | |
|     this.addInt16(this.vtable[i] != 0 ? vtableloc - this.vtable[i] : 0);
 | |
|   }
 | |
| 
 | |
|   var standard_fields = 2; // The fields below:
 | |
|   this.addInt16(vtableloc - this.object_start);
 | |
|   var len = (trimmed_size + standard_fields) * flatbuffers.SIZEOF_SHORT;
 | |
|   this.addInt16(len);
 | |
| 
 | |
|   // Search for an existing vtable that matches the current one.
 | |
|   var existing_vtable = 0;
 | |
|   var vt1 = this.space;
 | |
| outer_loop:
 | |
|   for (i = 0; i < this.vtables.length; i++) {
 | |
|     var vt2 = this.bb.capacity() - this.vtables[i];
 | |
|     if (len == this.bb.readInt16(vt2)) {
 | |
|       for (var j = flatbuffers.SIZEOF_SHORT; j < len; j += flatbuffers.SIZEOF_SHORT) {
 | |
|         if (this.bb.readInt16(vt1 + j) != this.bb.readInt16(vt2 + j)) {
 | |
|           continue outer_loop;
 | |
|         }
 | |
|       }
 | |
|       existing_vtable = this.vtables[i];
 | |
|       break;
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   if (existing_vtable) {
 | |
|     // Found a match:
 | |
|     // Remove the current vtable.
 | |
|     this.space = this.bb.capacity() - vtableloc;
 | |
| 
 | |
|     // Point table to existing vtable.
 | |
|     this.bb.writeInt32(this.space, existing_vtable - vtableloc);
 | |
|   } else {
 | |
|     // No match:
 | |
|     // Add the location of the current vtable to the list of vtables.
 | |
|     this.vtables.push(this.offset());
 | |
| 
 | |
|     // Point table to current vtable.
 | |
|     this.bb.writeInt32(this.bb.capacity() - vtableloc, this.offset() - vtableloc);
 | |
|   }
 | |
| 
 | |
|   this.isNested = false;
 | |
|   return vtableloc;
 | |
| };
 | |
| /// @endcond
 | |
| 
 | |
| /**
 | |
|  * Finalize a buffer, poiting to the given `root_table`.
 | |
|  *
 | |
|  * @param {flatbuffers.Offset} root_table
 | |
|  * @param {string=} opt_file_identifier
 | |
|  * @param {boolean=} opt_size_prefix
 | |
|  */
 | |
| flatbuffers.Builder.prototype.finish = function(root_table, opt_file_identifier, opt_size_prefix) {
 | |
|   var size_prefix = opt_size_prefix ? flatbuffers.SIZE_PREFIX_LENGTH : 0;
 | |
|   if (opt_file_identifier) {
 | |
|     var file_identifier = opt_file_identifier;
 | |
|     this.prep(this.minalign, flatbuffers.SIZEOF_INT +
 | |
|       flatbuffers.FILE_IDENTIFIER_LENGTH + size_prefix);
 | |
|     if (file_identifier.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {
 | |
|       throw new Error('FlatBuffers: file identifier must be length ' +
 | |
|         flatbuffers.FILE_IDENTIFIER_LENGTH);
 | |
|     }
 | |
|     for (var i = flatbuffers.FILE_IDENTIFIER_LENGTH - 1; i >= 0; i--) {
 | |
|       this.writeInt8(file_identifier.charCodeAt(i));
 | |
|     }
 | |
|   }
 | |
|   this.prep(this.minalign, flatbuffers.SIZEOF_INT + size_prefix);
 | |
|   this.addOffset(root_table);
 | |
|   if (size_prefix) {
 | |
|     this.addInt32(this.bb.capacity() - this.space);
 | |
|   }
 | |
|   this.bb.setPosition(this.space);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Finalize a size prefixed buffer, pointing to the given `root_table`.
 | |
|  *
 | |
|  * @param {flatbuffers.Offset} root_table
 | |
|  * @param {string=} opt_file_identifier
 | |
|  */
 | |
| flatbuffers.Builder.prototype.finishSizePrefixed = function (root_table, opt_file_identifier) {
 | |
|   this.finish(root_table, opt_file_identifier, true);
 | |
| };
 | |
| 
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| /**
 | |
|  * This checks a required field has been set in a given table that has
 | |
|  * just been constructed.
 | |
|  *
 | |
|  * @param {flatbuffers.Offset} table
 | |
|  * @param {number} field
 | |
|  */
 | |
| flatbuffers.Builder.prototype.requiredField = function(table, field) {
 | |
|   var table_start = this.bb.capacity() - table;
 | |
|   var vtable_start = table_start - this.bb.readInt32(table_start);
 | |
|   var ok = this.bb.readInt16(vtable_start + field) != 0;
 | |
| 
 | |
|   // If this fails, the caller will show what field needs to be set.
 | |
|   if (!ok) {
 | |
|     throw new Error('FlatBuffers: field ' + field + ' must be set');
 | |
|   }
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Start a new array/vector of objects.  Users usually will not call
 | |
|  * this directly. The FlatBuffers compiler will create a start/end
 | |
|  * method for vector types in generated code.
 | |
|  *
 | |
|  * @param {number} elem_size The size of each element in the array
 | |
|  * @param {number} num_elems The number of elements in the array
 | |
|  * @param {number} alignment The alignment of the array
 | |
|  */
 | |
| flatbuffers.Builder.prototype.startVector = function(elem_size, num_elems, alignment) {
 | |
|   this.notNested();
 | |
|   this.vector_num_elems = num_elems;
 | |
|   this.prep(flatbuffers.SIZEOF_INT, elem_size * num_elems);
 | |
|   this.prep(alignment, elem_size * num_elems); // Just in case alignment > int.
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Finish off the creation of an array and all its elements. The array must be
 | |
|  * created with `startVector`.
 | |
|  *
 | |
|  * @returns {flatbuffers.Offset} The offset at which the newly created array
 | |
|  * starts.
 | |
|  */
 | |
| flatbuffers.Builder.prototype.endVector = function() {
 | |
|   this.writeInt32(this.vector_num_elems);
 | |
|   return this.offset();
 | |
| };
 | |
| /// @endcond
 | |
| 
 | |
| /**
 | |
|  * Encode the string `s` in the buffer using UTF-8. If a Uint8Array is passed
 | |
|  * instead of a string, it is assumed to contain valid UTF-8 encoded data.
 | |
|  *
 | |
|  * @param {string|Uint8Array} s The string to encode
 | |
|  * @return {flatbuffers.Offset} The offset in the buffer where the encoded string starts
 | |
|  */
 | |
| flatbuffers.Builder.prototype.createString = function(s) {
 | |
|   if (s instanceof Uint8Array) {
 | |
|     var utf8 = s;
 | |
|   } else {
 | |
|     var utf8 = [];
 | |
|     var i = 0;
 | |
| 
 | |
|     while (i < s.length) {
 | |
|       var codePoint;
 | |
| 
 | |
|       // Decode UTF-16
 | |
|       var a = s.charCodeAt(i++);
 | |
|       if (a < 0xD800 || a >= 0xDC00) {
 | |
|         codePoint = a;
 | |
|       } else {
 | |
|         var b = s.charCodeAt(i++);
 | |
|         codePoint = (a << 10) + b + (0x10000 - (0xD800 << 10) - 0xDC00);
 | |
|       }
 | |
| 
 | |
|       // Encode UTF-8
 | |
|       if (codePoint < 0x80) {
 | |
|         utf8.push(codePoint);
 | |
|       } else {
 | |
|         if (codePoint < 0x800) {
 | |
|           utf8.push(((codePoint >> 6) & 0x1F) | 0xC0);
 | |
|         } else {
 | |
|           if (codePoint < 0x10000) {
 | |
|             utf8.push(((codePoint >> 12) & 0x0F) | 0xE0);
 | |
|           } else {
 | |
|             utf8.push(
 | |
|               ((codePoint >> 18) & 0x07) | 0xF0,
 | |
|               ((codePoint >> 12) & 0x3F) | 0x80);
 | |
|           }
 | |
|           utf8.push(((codePoint >> 6) & 0x3F) | 0x80);
 | |
|         }
 | |
|         utf8.push((codePoint & 0x3F) | 0x80);
 | |
|       }
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   this.addInt8(0);
 | |
|   this.startVector(1, utf8.length, 1);
 | |
|   this.bb.setPosition(this.space -= utf8.length);
 | |
|   for (var i = 0, offset = this.space, bytes = this.bb.bytes(); i < utf8.length; i++) {
 | |
|     bytes[offset++] = utf8[i];
 | |
|   }
 | |
|   return this.endVector();
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * A helper function to avoid generated code depending on this file directly.
 | |
|  *
 | |
|  * @param {number} low
 | |
|  * @param {number} high
 | |
|  * @returns {flatbuffers.Long}
 | |
|  */
 | |
| flatbuffers.Builder.prototype.createLong = function(low, high) {
 | |
|   return flatbuffers.Long.create(low, high);
 | |
| };
 | |
| ////////////////////////////////////////////////////////////////////////////////
 | |
| /// @cond FLATBUFFERS_INTERNAL
 | |
| /**
 | |
|  * Create a new ByteBuffer with a given array of bytes (`Uint8Array`).
 | |
|  *
 | |
|  * @constructor
 | |
|  * @param {Uint8Array} bytes
 | |
|  */
 | |
| flatbuffers.ByteBuffer = function(bytes) {
 | |
|   /**
 | |
|    * @type {Uint8Array}
 | |
|    * @private
 | |
|    */
 | |
|   this.bytes_ = bytes;
 | |
| 
 | |
|   /**
 | |
|    * @type {number}
 | |
|    * @private
 | |
|    */
 | |
|   this.position_ = 0;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Create and allocate a new ByteBuffer with a given size.
 | |
|  *
 | |
|  * @param {number} byte_size
 | |
|  * @returns {flatbuffers.ByteBuffer}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.allocate = function(byte_size) {
 | |
|   return new flatbuffers.ByteBuffer(new Uint8Array(byte_size));
 | |
| };
 | |
| 
 | |
| flatbuffers.ByteBuffer.prototype.clear = function() {
 | |
|   this.position_ = 0;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the underlying `Uint8Array`.
 | |
|  *
 | |
|  * @returns {Uint8Array}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.bytes = function() {
 | |
|   return this.bytes_;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the buffer's position.
 | |
|  *
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.position = function() {
 | |
|   return this.position_;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Set the buffer's position.
 | |
|  *
 | |
|  * @param {number} position
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.setPosition = function(position) {
 | |
|   this.position_ = position;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the buffer's capacity.
 | |
|  *
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.capacity = function() {
 | |
|   return this.bytes_.length;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readInt8 = function(offset) {
 | |
|   return this.readUint8(offset) << 24 >> 24;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readUint8 = function(offset) {
 | |
|   return this.bytes_[offset];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readInt16 = function(offset) {
 | |
|   return this.readUint16(offset) << 16 >> 16;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readUint16 = function(offset) {
 | |
|   return this.bytes_[offset] | this.bytes_[offset + 1] << 8;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readInt32 = function(offset) {
 | |
|   return this.bytes_[offset] | this.bytes_[offset + 1] << 8 | this.bytes_[offset + 2] << 16 | this.bytes_[offset + 3] << 24;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readUint32 = function(offset) {
 | |
|   return this.readInt32(offset) >>> 0;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {flatbuffers.Long}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readInt64 = function(offset) {
 | |
|   return new flatbuffers.Long(this.readInt32(offset), this.readInt32(offset + 4));
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {flatbuffers.Long}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readUint64 = function(offset) {
 | |
|   return new flatbuffers.Long(this.readUint32(offset), this.readUint32(offset + 4));
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readFloat32 = function(offset) {
 | |
|   flatbuffers.int32[0] = this.readInt32(offset);
 | |
|   return flatbuffers.float32[0];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.readFloat64 = function(offset) {
 | |
|   flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1] = this.readInt32(offset);
 | |
|   flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0] = this.readInt32(offset + 4);
 | |
|   return flatbuffers.float64[0];
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number|boolean} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeInt8 = function(offset, value) {
 | |
|   this.bytes_[offset] = /** @type {number} */(value);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeUint8 = function(offset, value) {
 | |
|   this.bytes_[offset] = value;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeInt16 = function(offset, value) {
 | |
|   this.bytes_[offset] = value;
 | |
|   this.bytes_[offset + 1] = value >> 8;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeUint16 = function(offset, value) {
 | |
|     this.bytes_[offset] = value;
 | |
|     this.bytes_[offset + 1] = value >> 8;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeInt32 = function(offset, value) {
 | |
|   this.bytes_[offset] = value;
 | |
|   this.bytes_[offset + 1] = value >> 8;
 | |
|   this.bytes_[offset + 2] = value >> 16;
 | |
|   this.bytes_[offset + 3] = value >> 24;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeUint32 = function(offset, value) {
 | |
|     this.bytes_[offset] = value;
 | |
|     this.bytes_[offset + 1] = value >> 8;
 | |
|     this.bytes_[offset + 2] = value >> 16;
 | |
|     this.bytes_[offset + 3] = value >> 24;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {flatbuffers.Long} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeInt64 = function(offset, value) {
 | |
|   this.writeInt32(offset, value.low);
 | |
|   this.writeInt32(offset + 4, value.high);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {flatbuffers.Long} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeUint64 = function(offset, value) {
 | |
|     this.writeUint32(offset, value.low);
 | |
|     this.writeUint32(offset + 4, value.high);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeFloat32 = function(offset, value) {
 | |
|   flatbuffers.float32[0] = value;
 | |
|   this.writeInt32(offset, flatbuffers.int32[0]);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {number} offset
 | |
|  * @param {number} value
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.writeFloat64 = function(offset, value) {
 | |
|   flatbuffers.float64[0] = value;
 | |
|   this.writeInt32(offset, flatbuffers.int32[flatbuffers.isLittleEndian ? 0 : 1]);
 | |
|   this.writeInt32(offset + 4, flatbuffers.int32[flatbuffers.isLittleEndian ? 1 : 0]);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Return the file identifier.   Behavior is undefined for FlatBuffers whose
 | |
|  * schema does not include a file_identifier (likely points at padding or the
 | |
|  * start of a the root vtable).
 | |
|  * @returns {string}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.getBufferIdentifier = function() {
 | |
|   if (this.bytes_.length < this.position_ + flatbuffers.SIZEOF_INT +
 | |
|       flatbuffers.FILE_IDENTIFIER_LENGTH) {
 | |
|     throw new Error(
 | |
|         'FlatBuffers: ByteBuffer is too short to contain an identifier.');
 | |
|   }
 | |
|   var result = "";
 | |
|   for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {
 | |
|     result += String.fromCharCode(
 | |
|         this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i));
 | |
|   }
 | |
|   return result;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Look up a field in the vtable, return an offset into the object, or 0 if the
 | |
|  * field is not present.
 | |
|  *
 | |
|  * @param {number} bb_pos
 | |
|  * @param {number} vtable_offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__offset = function(bb_pos, vtable_offset) {
 | |
|   var vtable = bb_pos - this.readInt32(bb_pos);
 | |
|   return vtable_offset < this.readInt16(vtable) ? this.readInt16(vtable + vtable_offset) : 0;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Initialize any Table-derived type to point to the union at the given offset.
 | |
|  *
 | |
|  * @param {flatbuffers.Table} t
 | |
|  * @param {number} offset
 | |
|  * @returns {flatbuffers.Table}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__union = function(t, offset) {
 | |
|   t.bb_pos = offset + this.readInt32(offset);
 | |
|   t.bb = this;
 | |
|   return t;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Create a JavaScript string from UTF-8 data stored inside the FlatBuffer.
 | |
|  * This allocates a new string and converts to wide chars upon each access.
 | |
|  *
 | |
|  * To avoid the conversion to UTF-16, pass flatbuffers.Encoding.UTF8_BYTES as
 | |
|  * the "optionalEncoding" argument. This is useful for avoiding conversion to
 | |
|  * and from UTF-16 when the data will just be packaged back up in another
 | |
|  * FlatBuffer later on.
 | |
|  *
 | |
|  * @param {number} offset
 | |
|  * @param {flatbuffers.Encoding=} opt_encoding Defaults to UTF16_STRING
 | |
|  * @returns {string|Uint8Array}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__string = function(offset, opt_encoding) {
 | |
|   offset += this.readInt32(offset);
 | |
| 
 | |
|   var length = this.readInt32(offset);
 | |
|   var result = '';
 | |
|   var i = 0;
 | |
| 
 | |
|   offset += flatbuffers.SIZEOF_INT;
 | |
| 
 | |
|   if (opt_encoding === flatbuffers.Encoding.UTF8_BYTES) {
 | |
|     return this.bytes_.subarray(offset, offset + length);
 | |
|   }
 | |
| 
 | |
|   while (i < length) {
 | |
|     var codePoint;
 | |
| 
 | |
|     // Decode UTF-8
 | |
|     var a = this.readUint8(offset + i++);
 | |
|     if (a < 0xC0) {
 | |
|       codePoint = a;
 | |
|     } else {
 | |
|       var b = this.readUint8(offset + i++);
 | |
|       if (a < 0xE0) {
 | |
|         codePoint =
 | |
|           ((a & 0x1F) << 6) |
 | |
|           (b & 0x3F);
 | |
|       } else {
 | |
|         var c = this.readUint8(offset + i++);
 | |
|         if (a < 0xF0) {
 | |
|           codePoint =
 | |
|             ((a & 0x0F) << 12) |
 | |
|             ((b & 0x3F) << 6) |
 | |
|             (c & 0x3F);
 | |
|         } else {
 | |
|           var d = this.readUint8(offset + i++);
 | |
|           codePoint =
 | |
|             ((a & 0x07) << 18) |
 | |
|             ((b & 0x3F) << 12) |
 | |
|             ((c & 0x3F) << 6) |
 | |
|             (d & 0x3F);
 | |
|         }
 | |
|       }
 | |
|     }
 | |
| 
 | |
|     // Encode UTF-16
 | |
|     if (codePoint < 0x10000) {
 | |
|       result += String.fromCharCode(codePoint);
 | |
|     } else {
 | |
|       codePoint -= 0x10000;
 | |
|       result += String.fromCharCode(
 | |
|         (codePoint >> 10) + 0xD800,
 | |
|         (codePoint & ((1 << 10) - 1)) + 0xDC00);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   return result;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Retrieve the relative offset stored at "offset"
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__indirect = function(offset) {
 | |
|   return offset + this.readInt32(offset);
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the start of data of a vector whose offset is stored at "offset" in this object.
 | |
|  *
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__vector = function(offset) {
 | |
|   return offset + this.readInt32(offset) + flatbuffers.SIZEOF_INT; // data starts after the length
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * Get the length of a vector whose offset is stored at "offset" in this object.
 | |
|  *
 | |
|  * @param {number} offset
 | |
|  * @returns {number}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__vector_len = function(offset) {
 | |
|   return this.readInt32(offset + this.readInt32(offset));
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * @param {string} ident
 | |
|  * @returns {boolean}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.__has_identifier = function(ident) {
 | |
|   if (ident.length != flatbuffers.FILE_IDENTIFIER_LENGTH) {
 | |
|     throw new Error('FlatBuffers: file identifier must be length ' +
 | |
|                     flatbuffers.FILE_IDENTIFIER_LENGTH);
 | |
|   }
 | |
|   for (var i = 0; i < flatbuffers.FILE_IDENTIFIER_LENGTH; i++) {
 | |
|     if (ident.charCodeAt(i) != this.readInt8(this.position_ + flatbuffers.SIZEOF_INT + i)) {
 | |
|       return false;
 | |
|     }
 | |
|   }
 | |
|   return true;
 | |
| };
 | |
| 
 | |
| /**
 | |
|  * A helper function to avoid generated code depending on this file directly.
 | |
|  *
 | |
|  * @param {number} low
 | |
|  * @param {number} high
 | |
|  * @returns {flatbuffers.Long}
 | |
|  */
 | |
| flatbuffers.ByteBuffer.prototype.createLong = function(low, high) {
 | |
|   return flatbuffers.Long.create(low, high);
 | |
| };
 | |
| 
 | |
| // Exports for Node.js and RequireJS
 | |
| this.flatbuffers = flatbuffers;
 | |
| 
 | |
| /// @endcond
 | |
| /// @}
 |