Flatbuffers Merge commit '8cd6f0538a362ceefbcfcbf6c7b8b3f341d1fb41' into master

Upgrade flatbuffers to the latest.

Change-Id: I901787ac6fc5d7ce2c4019cc0d275de68086b4d8
diff --git a/aos/network/www/config_handler.ts b/aos/network/www/config_handler.ts
index 048c2ba..c554647 100644
--- a/aos/network/www/config_handler.ts
+++ b/aos/network/www/config_handler.ts
@@ -1,4 +1,4 @@
-import {Configuration, Channel} from 'aos/configuration_generated';
+import {aos.Configuration as Configuration, aos.Channel as Channel} from 'aos/configuration_generated';
 import {Connect} from 'aos/network/connect_generated';
 import {Connection} from './proxy';
 
diff --git a/aos/network/www/graph_main.ts b/aos/network/www/graph_main.ts
index bbd70de..74fc54b 100644
--- a/aos/network/www/graph_main.ts
+++ b/aos/network/www/graph_main.ts
@@ -8,11 +8,11 @@
 // timer in the the /aos timing report message (this message was chosen because
 // it is already being published by the web proxy process, so the demo requires
 // very little setup).
-import {Plot, Line} from 'aos/network/www/plotter';
-import {Channel, Configuration} from 'aos/configuration_generated';
-import {Connect} from 'aos/network/connect_generated';
-import {Connection} from 'aos/network/www/proxy';
-import {Parser, Table} from 'aos/network/www/reflection'
+import {Line, Plot} from 'aos/network/www/plotter';
+import {aos} from 'aos/configuration_generated';
+import {aos} from 'aos/network/connect_generated';
+import {aos} from 'aos/network/www/proxy';
+import {aos} from 'aos/network/www/reflection'
 
 const width = 900;
 const height = 400;
@@ -110,7 +110,7 @@
 
 let reportParser = null;
 
-conn.addConfigHandler((config: Configuration) => {
+conn.addConfigHandler((config: aos.Configuration) => {
   // Locate the timing report schema so that we can read the received messages.
   let reportSchema = null;
   for (let ii = 0; ii < config.channelsLength(); ++ii) {
@@ -129,17 +129,17 @@
   for (const channel of [timingReport]) {
     const nameFb = builder.createString(channel.name);
     const typeFb = builder.createString(channel.type);
-    Channel.startChannel(builder);
-    Channel.addName(builder, nameFb);
-    Channel.addType(builder, typeFb);
-    const channelFb = Channel.endChannel(builder);
+    aos.Channel.startChannel(builder);
+    aos.Channel.addName(builder, nameFb);
+    aos.Channel.addType(builder, typeFb);
+    const channelFb = aos.Channel.endChannel(builder);
     channels.push(channelFb);
   }
 
-  const channelsFb = Connect.createChannelsToTransferVector(builder, channels);
-  Connect.startConnect(builder);
-  Connect.addChannelsToTransfer(builder, channelsFb);
-  const connect = Connect.endConnect(builder);
+  const channelsFb = aos.message_bridge.Connect.createChannelsToTransferVector(builder, channels);
+  aos.message_bridge.Connect.startConnect(builder);
+  aos.message_bridge.Connect.addChannelsToTransfer(builder, channelsFb);
+  const connect = aos.message_bridge.Connect.endConnect(builder);
   builder.finish(connect);
   conn.sendConnectMessage(builder);
 });
diff --git a/aos/network/www/ping_handler.ts b/aos/network/www/ping_handler.ts
index df7635d..9b37d70 100644
--- a/aos/network/www/ping_handler.ts
+++ b/aos/network/www/ping_handler.ts
@@ -1,8 +1,8 @@
-import {Ping} from 'aos/events/ping_generated';
+import {aos} from 'aos/events/ping_generated';
 
 export function HandlePing(data: Uint8Array) {
   const fbBuffer = new flatbuffers.ByteBuffer(data);
-  const ping = Ping.getRootAsPing(fbBuffer);
+  const ping = aos.examples.Ping.getRootAsPing(fbBuffer);
 
   document.getElementById('val').innerHTML = ping.value();
   document.getElementById('time').innerHTML = ping.sendTime().low;
diff --git a/aos/network/www/proxy.ts b/aos/network/www/proxy.ts
index 4ba7e39..29f055b 100644
--- a/aos/network/www/proxy.ts
+++ b/aos/network/www/proxy.ts
@@ -1,5 +1,5 @@
 import {ConfigHandler} from './config_handler';
-import {Configuration} from 'aos/configuration_generated';
+import {aos} from 'aos/configuration_generated';
 import * as WebProxy from 'aos/network/web_proxy_generated';
 
 // There is one handler for each DataChannel, it maintains the state of
@@ -52,9 +52,9 @@
   private dataChannel: DataChannel|null = null;
   private webSocketUrl: string;
 
-  private configInternal: Configuration|null = null;
+  private configInternal: aos.Configuration|null = null;
   // A set of functions that accept the config to handle.
-  private readonly configHandlers = new Set<(config: Configuration) => void>();
+  private readonly configHandlers = new Set<(config: aos.Configuration) => void>();
 
   private readonly handlerFuncs =
       new Map<string, (data: Uint8Array, sentTime: number) => void>();
@@ -65,7 +65,7 @@
     this.webSocketUrl = `ws://${server}/ws`;
   }
 
-  addConfigHandler(handler: (config: Configuration) => void): void {
+  addConfigHandler(handler: (config: aos.Configuration) => void): void {
     this.configHandlers.add(handler);
   }
 
@@ -95,7 +95,7 @@
   // all other messages are sent on specific DataChannels.
   onConfigMessage(data: Uint8Array): void {
     const fbBuffer = new flatbuffers.ByteBuffer(data);
-    this.configInternal = Configuration.getRootAsConfiguration(fbBuffer);
+    this.configInternal = aos.Configuration.getRootAsConfiguration(fbBuffer);
     for (const handler of Array.from(this.configHandlers)) {
       handler(this.configInternal);
     }
diff --git a/aos/network/www/reflection.ts b/aos/network/www/reflection.ts
index 5141790..62cfa61 100644
--- a/aos/network/www/reflection.ts
+++ b/aos/network/www/reflection.ts
@@ -6,88 +6,88 @@
 // constructed flatbuffers.
 // See reflection_test_main.ts for sample usage.
 
-import {BaseType, Schema, Object, Field} from 'aos/configuration_generated';
+import {reflection, aos} from 'aos/configuration_generated';
 
 // Returns the size, in bytes, of the given type. For vectors/strings/etc.
 // returns the size of the offset.
-function typeSize(baseType: BaseType): number {
+function typeSize(baseType: reflection.BaseType): number {
   switch (baseType) {
-    case BaseType.None:
-    case BaseType.UType:
-    case BaseType.Bool:
-    case BaseType.Byte:
-    case BaseType.UByte:
+    case reflection.BaseType.None:
+    case reflection.BaseType.UType:
+    case reflection.BaseType.Bool:
+    case reflection.BaseType.Byte:
+    case reflection.BaseType.UByte:
       return 1;
-    case BaseType.Short:
-    case BaseType.UShort:
+    case reflection.BaseType.Short:
+    case reflection.BaseType.UShort:
       return 2;
-    case BaseType.Int:
-    case BaseType.UInt:
+    case reflection.BaseType.Int:
+    case reflection.BaseType.UInt:
       return 4;
-    case BaseType.Long:
-    case BaseType.ULong:
+    case reflection.BaseType.Long:
+    case reflection.BaseType.ULong:
       return 8;
-    case BaseType.Float:
+    case reflection.BaseType.Float:
       return 4;
-    case BaseType.Double:
+    case reflection.BaseType.Double:
       return 8;
-    case BaseType.String:
-    case BaseType.Vector:
-    case BaseType.Obj:
-    case BaseType.Union:
-    case BaseType.Array:
+    case reflection.BaseType.String:
+    case reflection.BaseType.Vector:
+    case reflection.BaseType.Obj:
+    case reflection.BaseType.Union:
+    case reflection.BaseType.Array:
       return 4;
   }
 }
 
 // Returns whether the given type is a scalar type.
-function isScalar(baseType: BaseType): boolean {
+function isScalar(baseType: reflection.BaseType): boolean {
   switch (baseType) {
-    case BaseType.UType:
-    case BaseType.Bool:
-    case BaseType.Byte:
-    case BaseType.UByte:
-    case BaseType.Short:
-    case BaseType.UShort:
-    case BaseType.Int:
-    case BaseType.UInt:
-    case BaseType.Long:
-    case BaseType.ULong:
-    case BaseType.Float:
-    case BaseType.Double:
+    case reflection.BaseType.UType:
+    case reflection.BaseType.Bool:
+    case reflection.BaseType.Byte:
+    case reflection.BaseType.UByte:
+    case reflection.BaseType.Short:
+    case reflection.BaseType.UShort:
+    case reflection.BaseType.Int:
+    case reflection.BaseType.UInt:
+    case reflection.BaseType.Long:
+    case reflection.BaseType.ULong:
+    case reflection.BaseType.Float:
+    case reflection.BaseType.Double:
       return true;
-    case BaseType.None:
-    case BaseType.String:
-    case BaseType.Vector:
-    case BaseType.Obj:
-    case BaseType.Union:
-    case BaseType.Array:
+    case reflection.BaseType.None:
+    case reflection.BaseType.String:
+    case reflection.BaseType.Vector:
+    case reflection.BaseType.Obj:
+    case reflection.BaseType.Union:
+    case reflection.BaseType.Array:
       return false;
   }
 }
 
 // Returns whether the given type is integer or not.
-function isInteger(baseType: BaseType): boolean {
+function isInteger(baseType: reflection.BaseType): boolean {
   switch (baseType) {
-    case BaseType.UType:
-    case BaseType.Bool:
-    case BaseType.Byte:
-    case BaseType.UByte:
-    case BaseType.Short:
-    case BaseType.UShort:
-    case BaseType.Int:
-    case BaseType.UInt:
-    case BaseType.Long:
-    case BaseType.ULong:
+    case reflection.BaseType.UType:
+    case reflection.BaseType.Bool:
+    case reflection.BaseType.Byte:
+    case reflection.BaseType.UByte:
+    case reflection.BaseType.Short:
+    case reflection.BaseType.UShort:
+    case reflection.BaseType.Int:
+    case reflection.BaseType.UInt:
+    case reflection.BaseType.Long:
+    case reflection.BaseType.ULong:
       return true;
-    case BaseType.Float:
-    case BaseType.Double:
-    case BaseType.None:
-    case BaseType.String:
-    case BaseType.Vector:
-    case BaseType.Obj:
-    case BaseType.Union:
-    case BaseType.Array:
+    case reflection.BaseType.Float:
+    case reflection.BaseType.Double:
+    case reflection.BaseType.None:
+    case reflection.BaseType.String:
+    case reflection.BaseType.Vector:
+    case reflection.BaseType.Obj:
+    case reflection.BaseType.Union:
+    case reflection.BaseType.Array:
       return false;
   }
 }
@@ -96,7 +96,7 @@
 // can be represented by the normal javascript number (8-byte integers require a
 // special type, since the native number type is an 8-byte double, which won't
 // represent 8-byte integers to full precision).
-function isLong(baseType: BaseType): boolean {
+function isLong(baseType: reflection.BaseType): boolean {
   return isInteger(baseType) && (typeSize(baseType) > 4);
 }
 
@@ -124,30 +124,30 @@
     return new Table(bb, -1, bb.readInt32(bb.position()) + bb.position());
   }
   // Reads a scalar of a given type at a given offset.
-  readScalar(fieldType: BaseType, offset: number) {
+  readScalar(fieldType: reflection.BaseType, offset: number) {
     switch (fieldType) {
-      case BaseType.UType:
-      case BaseType.Bool:
+      case reflection.BaseType.UType:
+      case reflection.BaseType.Bool:
         return this.bb.readUint8(offset);
-      case BaseType.Byte:
+      case reflection.BaseType.Byte:
         return this.bb.readInt8(offset);
-      case BaseType.UByte:
+      case reflection.BaseType.UByte:
         return this.bb.readUint8(offset);
-      case BaseType.Short:
+      case reflection.BaseType.Short:
         return this.bb.readInt16(offset);
-      case BaseType.UShort:
+      case reflection.BaseType.UShort:
         return this.bb.readUint16(offset);
-      case BaseType.Int:
+      case reflection.BaseType.Int:
         return this.bb.readInt32(offset);
-      case BaseType.UInt:
+      case reflection.BaseType.UInt:
         return this.bb.readUint32(offset);
-      case BaseType.Long:
+      case reflection.BaseType.Long:
         return this.bb.readInt64(offset);
-      case BaseType.ULong:
+      case reflection.BaseType.ULong:
         return this.bb.readUint64(offset);
-      case BaseType.Float:
+      case reflection.BaseType.Float:
         return this.bb.readFloat32(offset);
-      case BaseType.Double:
+      case reflection.BaseType.Double:
         return this.bb.readFloat64(offset);
     }
     throw new Error('Unsupported message type ' + baseType);
@@ -164,7 +164,7 @@
 // then access the members using the various methods of the Parser (or just
 // convert the entire object to a javascript Object/JSON using toObject()).
 export class Parser {
-  constructor(private readonly schema: Schema) {}
+  constructor(private readonly schema: reflection.Schema) {}
 
   // Parse a Table to a javascript object. This is can be used, e.g., to convert
   // a flatbuffer Table to JSON.
@@ -181,20 +181,20 @@
       let fieldValue = null;
       if (isScalar(baseType)) {
         fieldValue = this.readScalar(table, field.name(), readDefaults);
-      } else if (baseType === BaseType.String) {
+      } else if (baseType === reflection.BaseType.String) {
         fieldValue = this.readString(table, field.name());
-      } else if (baseType === BaseType.Obj) {
+      } else if (baseType === reflection.BaseType.Obj) {
         const subTable = this.readTable(table, field.name());
         if (subTable !== null) {
           fieldValue = this.toObject(subTable, readDefaults);
         }
-      } else if (baseType === BaseType.Vector) {
+      } else if (baseType === reflection.BaseType.Vector) {
         const elementType = field.type().element();
         if (isScalar(elementType)) {
           fieldValue = this.readVectorOfScalars(table, field.name());
-        } else if (elementType === BaseType.String) {
+        } else if (elementType === reflection.BaseType.String) {
           fieldValue = this.readVectorOfStrings(table, field.name());
-        } else if (elementType === BaseType.Obj) {
+        } else if (elementType === reflection.BaseType.Obj) {
           const tables = this.readVectorOfTables(table, field.name());
           if (tables !== null) {
             fieldValue = [];
@@ -229,7 +229,7 @@
 
   // Retrieves the Field schema for the given field name within a given
   // type index.
-  getField(fieldName: string, typeIndex: number): Field {
+  getField(fieldName: string, typeIndex: number): reflection.Field {
     const schema: Object = this.getType(typeIndex);
     const numFields = schema.fieldsLength();
     for (let ii = 0; ii < numFields; ++ii) {
@@ -292,7 +292,7 @@
   readString(table: Table, fieldName: string): string|null {
     const field = this.getField(fieldName, table.typeIndex);
     const fieldType = field.type();
-    if (fieldType.baseType() !== BaseType.String) {
+    if (fieldType.baseType() !== reflection.BaseType.String) {
       throw new Error('Field ' + fieldName + ' is not a string.');
     }
 
@@ -309,7 +309,7 @@
     const field = this.getField(fieldName, table.typeIndex);
     const fieldType = field.type();
     const parentIsStruct = this.getType(table.typeIndex).isStruct();
-    if (fieldType.baseType() !== BaseType.Obj) {
+    if (fieldType.baseType() !== reflection.BaseType.Obj) {
       throw new Error('Field ' + fieldName + ' is not an object type.');
     }
 
@@ -335,7 +335,7 @@
   readVectorOfScalars(table: Table, fieldName: string): number[]|null {
     const field = this.getField(fieldName, table.typeIndex);
     const fieldType = field.type();
-    if (fieldType.baseType() !== BaseType.Vector) {
+    if (fieldType.baseType() !== reflection.BaseType.Vector) {
       throw new Error('Field ' + fieldName + ' is not an vector.');
     }
     if (!isScalar(fieldType.element())) {
@@ -361,10 +361,10 @@
   readVectorOfTables(table: Table, fieldName: string) {
     const field = this.getField(fieldName, table.typeIndex);
     const fieldType = field.type();
-    if (fieldType.baseType() !== BaseType.Vector) {
+    if (fieldType.baseType() !== reflection.BaseType.Vector) {
       throw new Error('Field ' + fieldName + ' is not an vector.');
     }
-    if (fieldType.element() !== BaseType.Obj) {
+    if (fieldType.element() !== reflection.BaseType.Obj) {
       throw new Error('Field ' + fieldName + ' is not an vector of objects.');
     }
 
@@ -393,10 +393,10 @@
   readVectorOfStrings(table: Table, fieldName: string): string[]|null {
     const field = this.getField(fieldName, table.typeIndex);
     const fieldType = field.type();
-    if (fieldType.baseType() !== BaseType.Vector) {
+    if (fieldType.baseType() !== reflection.BaseType.Vector) {
       throw new Error('Field ' + fieldName + ' is not an vector.');
     }
-    if (fieldType.element() !== BaseType.String) {
+    if (fieldType.element() !== reflection.BaseType.String) {
       throw new Error('Field ' + fieldName + ' is not an vector of strings.');
     }
 
diff --git a/aos/network/www/reflection_test_main.ts b/aos/network/www/reflection_test_main.ts
index 5c6436e..75cf107 100644
--- a/aos/network/www/reflection_test_main.ts
+++ b/aos/network/www/reflection_test_main.ts
@@ -1,12 +1,6 @@
-import {Configuration, Schema} from 'aos/configuration_generated'
-import {BaseType,
-        Configuration as TestTable,
-        FooStruct,
-        FooStructNested,
-        Location,
-        Map,
-        VectorOfStrings,
-        VectorOfVectorOfString} from 'aos/json_to_flatbuffer_generated'
+import {aos} from 'aos/configuration_generated'
+// TODO(james): Fix all the things imported from here to actually run.
+import {aos} from 'aos/json_to_flatbuffer_generated'
 
 import {Connection} from './proxy';
 import {Parser, Table} from './reflection'
@@ -29,7 +23,7 @@
 // Constructs a flatbuffer and then uses Parser.toObject to parse it and confirm
 // that the start/end results are the same. This is largely meant to ensure
 // that we are exercising most of the logic associated with parsing flatbuffers.
-function DoTest(config: Configuration): void {
+function DoTest(config: aos.Configuration): void {
   const builder = new flatbuffers.Builder();
   {
     TestTable.startVectorFooStructVector(builder, 3);
@@ -70,7 +64,7 @@
     TestTable.addFooEnum(builder, BaseType.Array);
   }
 
-  builder.finish(Configuration.endConfiguration(builder));
+  builder.finish(aos.Configuration.endConfiguration(builder));
   const array = builder.asUint8Array();
   const fbBuffer = new flatbuffers.ByteBuffer(array);