Add subgraph index field into SignatureDefs table in TFLite flatbuffer schema

PiperOrigin-RevId: 380910556
Change-Id: Ie58b56fc07d76dffb001e750941b4e92e6f61f65
diff --git a/tensorflow/lite/schema/schema.fbs b/tensorflow/lite/schema/schema.fbs
index a925bb6..6fc51f8 100644
--- a/tensorflow/lite/schema/schema.fbs
+++ b/tensorflow/lite/schema/schema.fbs
@@ -1199,6 +1199,9 @@
 
   // Key value which was in the Tensorflow SavedModel SignatureDef map.
   key:string;
+
+  // Subgraph index of the exported method.
+  subgraph_index:uint;
 }
 
 table Model {
diff --git a/tensorflow/lite/schema/schema_generated.h b/tensorflow/lite/schema/schema_generated.h
index f5e86c7..8b86b60 100755
--- a/tensorflow/lite/schema/schema_generated.h
+++ b/tensorflow/lite/schema/schema_generated.h
@@ -11763,7 +11763,9 @@
   std::vector<std::unique_ptr<tflite::TensorMapT>> outputs;
   std::string method_name;
   std::string key;
-  SignatureDefT() {
+  uint32_t subgraph_index;
+  SignatureDefT()
+      : subgraph_index(0) {
   }
 };
 
@@ -11773,7 +11775,8 @@
     VT_INPUTS = 4,
     VT_OUTPUTS = 6,
     VT_METHOD_NAME = 8,
-    VT_KEY = 10
+    VT_KEY = 10,
+    VT_SUBGRAPH_INDEX = 12
   };
   const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *inputs() const {
     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>> *>(VT_INPUTS);
@@ -11787,6 +11790,9 @@
   const flatbuffers::String *key() const {
     return GetPointer<const flatbuffers::String *>(VT_KEY);
   }
+  uint32_t subgraph_index() const {
+    return GetField<uint32_t>(VT_SUBGRAPH_INDEX, 0);
+  }
   bool Verify(flatbuffers::Verifier &verifier) const {
     return VerifyTableStart(verifier) &&
            VerifyOffset(verifier, VT_INPUTS) &&
@@ -11799,6 +11805,7 @@
            verifier.VerifyString(method_name()) &&
            VerifyOffset(verifier, VT_KEY) &&
            verifier.VerifyString(key()) &&
+           VerifyField<uint32_t>(verifier, VT_SUBGRAPH_INDEX) &&
            verifier.EndTable();
   }
   SignatureDefT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
@@ -11821,6 +11828,9 @@
   void add_key(flatbuffers::Offset<flatbuffers::String> key) {
     fbb_.AddOffset(SignatureDef::VT_KEY, key);
   }
+  void add_subgraph_index(uint32_t subgraph_index) {
+    fbb_.AddElement<uint32_t>(SignatureDef::VT_SUBGRAPH_INDEX, subgraph_index, 0);
+  }
   explicit SignatureDefBuilder(flatbuffers::FlatBufferBuilder &_fbb)
         : fbb_(_fbb) {
     start_ = fbb_.StartTable();
@@ -11838,8 +11848,10 @@
     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> inputs = 0,
     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<tflite::TensorMap>>> outputs = 0,
     flatbuffers::Offset<flatbuffers::String> method_name = 0,
-    flatbuffers::Offset<flatbuffers::String> key = 0) {
+    flatbuffers::Offset<flatbuffers::String> key = 0,
+    uint32_t subgraph_index = 0) {
   SignatureDefBuilder builder_(_fbb);
+  builder_.add_subgraph_index(subgraph_index);
   builder_.add_key(key);
   builder_.add_method_name(method_name);
   builder_.add_outputs(outputs);
@@ -11852,7 +11864,8 @@
     const std::vector<flatbuffers::Offset<tflite::TensorMap>> *inputs = nullptr,
     const std::vector<flatbuffers::Offset<tflite::TensorMap>> *outputs = nullptr,
     const char *method_name = nullptr,
-    const char *key = nullptr) {
+    const char *key = nullptr,
+    uint32_t subgraph_index = 0) {
   auto inputs__ = inputs ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>>(*inputs) : 0;
   auto outputs__ = outputs ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>>(*outputs) : 0;
   auto method_name__ = method_name ? _fbb.CreateString(method_name) : 0;
@@ -11862,7 +11875,8 @@
       inputs__,
       outputs__,
       method_name__,
-      key__);
+      key__,
+      subgraph_index);
 }
 
 flatbuffers::Offset<SignatureDef> CreateSignatureDef(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
@@ -15544,6 +15558,7 @@
   { auto _e = outputs(); if (_e) { _o->outputs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->outputs[_i] = std::unique_ptr<tflite::TensorMapT>(_e->Get(_i)->UnPack(_resolver)); } } }
   { auto _e = method_name(); if (_e) _o->method_name = _e->str(); }
   { auto _e = key(); if (_e) _o->key = _e->str(); }
+  { auto _e = subgraph_index(); _o->subgraph_index = _e; }
 }
 
 inline flatbuffers::Offset<SignatureDef> SignatureDef::Pack(flatbuffers::FlatBufferBuilder &_fbb, const SignatureDefT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
@@ -15558,12 +15573,14 @@
   auto _outputs = _o->outputs.size() ? _fbb.CreateVector<flatbuffers::Offset<tflite::TensorMap>> (_o->outputs.size(), [](size_t i, _VectorArgs *__va) { return CreateTensorMap(*__va->__fbb, __va->__o->outputs[i].get(), __va->__rehasher); }, &_va ) : 0;
   auto _method_name = _o->method_name.empty() ? 0 : _fbb.CreateString(_o->method_name);
   auto _key = _o->key.empty() ? 0 : _fbb.CreateString(_o->key);
+  auto _subgraph_index = _o->subgraph_index;
   return tflite::CreateSignatureDef(
       _fbb,
       _inputs,
       _outputs,
       _method_name,
-      _key);
+      _key,
+      _subgraph_index);
 }
 
 inline ModelT *Model::UnPack(const flatbuffers::resolver_function_t *_resolver) const {