Skip to main content

tract_tflite/
tflite_generated.rs

1// automatically generated by the FlatBuffers compiler, do not modify
2
3
4// @generated
5
6use core::mem;
7use core::cmp::Ordering;
8
9extern crate flatbuffers;
10use self::flatbuffers::{EndianScalar, Follow};
11
12#[allow(unused_imports, dead_code)]
13pub mod tflite {
14
15  use core::mem;
16  use core::cmp::Ordering;
17
18  extern crate flatbuffers;
19  use self::flatbuffers::{EndianScalar, Follow};
20
21#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
22pub const ENUM_MIN_TENSOR_TYPE: i8 = 0;
23#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
24pub const ENUM_MAX_TENSOR_TYPE: i8 = 17;
25#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
26#[allow(non_camel_case_types)]
27pub const ENUM_VALUES_TENSOR_TYPE: [TensorType; 18] = [
28  TensorType::FLOAT32,
29  TensorType::FLOAT16,
30  TensorType::INT32,
31  TensorType::UINT8,
32  TensorType::INT64,
33  TensorType::STRING,
34  TensorType::BOOL,
35  TensorType::INT16,
36  TensorType::COMPLEX64,
37  TensorType::INT8,
38  TensorType::FLOAT64,
39  TensorType::COMPLEX128,
40  TensorType::UINT64,
41  TensorType::RESOURCE,
42  TensorType::VARIANT,
43  TensorType::UINT32,
44  TensorType::UINT16,
45  TensorType::INT4,
46];
47
48#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
49#[repr(transparent)]
50pub struct TensorType(pub i8);
51#[allow(non_upper_case_globals)]
52impl TensorType {
53  pub const FLOAT32: Self = Self(0);
54  pub const FLOAT16: Self = Self(1);
55  pub const INT32: Self = Self(2);
56  pub const UINT8: Self = Self(3);
57  pub const INT64: Self = Self(4);
58  pub const STRING: Self = Self(5);
59  pub const BOOL: Self = Self(6);
60  pub const INT16: Self = Self(7);
61  pub const COMPLEX64: Self = Self(8);
62  pub const INT8: Self = Self(9);
63  pub const FLOAT64: Self = Self(10);
64  pub const COMPLEX128: Self = Self(11);
65  pub const UINT64: Self = Self(12);
66  pub const RESOURCE: Self = Self(13);
67  pub const VARIANT: Self = Self(14);
68  pub const UINT32: Self = Self(15);
69  pub const UINT16: Self = Self(16);
70  pub const INT4: Self = Self(17);
71
72  pub const ENUM_MIN: i8 = 0;
73  pub const ENUM_MAX: i8 = 17;
74  pub const ENUM_VALUES: &'static [Self] = &[
75    Self::FLOAT32,
76    Self::FLOAT16,
77    Self::INT32,
78    Self::UINT8,
79    Self::INT64,
80    Self::STRING,
81    Self::BOOL,
82    Self::INT16,
83    Self::COMPLEX64,
84    Self::INT8,
85    Self::FLOAT64,
86    Self::COMPLEX128,
87    Self::UINT64,
88    Self::RESOURCE,
89    Self::VARIANT,
90    Self::UINT32,
91    Self::UINT16,
92    Self::INT4,
93  ];
94  /// Returns the variant's name or "" if unknown.
95  pub fn variant_name(self) -> Option<&'static str> {
96    match self {
97      Self::FLOAT32 => Some("FLOAT32"),
98      Self::FLOAT16 => Some("FLOAT16"),
99      Self::INT32 => Some("INT32"),
100      Self::UINT8 => Some("UINT8"),
101      Self::INT64 => Some("INT64"),
102      Self::STRING => Some("STRING"),
103      Self::BOOL => Some("BOOL"),
104      Self::INT16 => Some("INT16"),
105      Self::COMPLEX64 => Some("COMPLEX64"),
106      Self::INT8 => Some("INT8"),
107      Self::FLOAT64 => Some("FLOAT64"),
108      Self::COMPLEX128 => Some("COMPLEX128"),
109      Self::UINT64 => Some("UINT64"),
110      Self::RESOURCE => Some("RESOURCE"),
111      Self::VARIANT => Some("VARIANT"),
112      Self::UINT32 => Some("UINT32"),
113      Self::UINT16 => Some("UINT16"),
114      Self::INT4 => Some("INT4"),
115      _ => None,
116    }
117  }
118}
119impl core::fmt::Debug for TensorType {
120  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
121    if let Some(name) = self.variant_name() {
122      f.write_str(name)
123    } else {
124      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
125    }
126  }
127}
128impl<'a> flatbuffers::Follow<'a> for TensorType {
129  type Inner = Self;
130  #[inline]
131  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
132    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
133    Self(b)
134  }
135}
136
137impl flatbuffers::Push for TensorType {
138    type Output = TensorType;
139    #[inline]
140    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
141        flatbuffers::emplace_scalar::<i8>(dst, self.0);
142    }
143}
144
145impl flatbuffers::EndianScalar for TensorType {
146  type Scalar = i8;
147  #[inline]
148  fn to_little_endian(self) -> i8 {
149    self.0.to_le()
150  }
151  #[inline]
152  #[allow(clippy::wrong_self_convention)]
153  fn from_little_endian(v: i8) -> Self {
154    let b = i8::from_le(v);
155    Self(b)
156  }
157}
158
159impl<'a> flatbuffers::Verifiable for TensorType {
160  #[inline]
161  fn run_verifier(
162    v: &mut flatbuffers::Verifier, pos: usize
163  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
164    use self::flatbuffers::Verifiable;
165    i8::run_verifier(v, pos)
166  }
167}
168
169impl flatbuffers::SimpleToVerifyInSlice for TensorType {}
170#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
171pub const ENUM_MIN_QUANTIZATION_DETAILS: u8 = 0;
172#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
173pub const ENUM_MAX_QUANTIZATION_DETAILS: u8 = 1;
174#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
175#[allow(non_camel_case_types)]
176pub const ENUM_VALUES_QUANTIZATION_DETAILS: [QuantizationDetails; 2] = [
177  QuantizationDetails::NONE,
178  QuantizationDetails::CustomQuantization,
179];
180
181#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
182#[repr(transparent)]
183pub struct QuantizationDetails(pub u8);
184#[allow(non_upper_case_globals)]
185impl QuantizationDetails {
186  pub const NONE: Self = Self(0);
187  pub const CustomQuantization: Self = Self(1);
188
189  pub const ENUM_MIN: u8 = 0;
190  pub const ENUM_MAX: u8 = 1;
191  pub const ENUM_VALUES: &'static [Self] = &[
192    Self::NONE,
193    Self::CustomQuantization,
194  ];
195  /// Returns the variant's name or "" if unknown.
196  pub fn variant_name(self) -> Option<&'static str> {
197    match self {
198      Self::NONE => Some("NONE"),
199      Self::CustomQuantization => Some("CustomQuantization"),
200      _ => None,
201    }
202  }
203}
204impl core::fmt::Debug for QuantizationDetails {
205  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
206    if let Some(name) = self.variant_name() {
207      f.write_str(name)
208    } else {
209      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
210    }
211  }
212}
213impl<'a> flatbuffers::Follow<'a> for QuantizationDetails {
214  type Inner = Self;
215  #[inline]
216  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
217    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
218    Self(b)
219  }
220}
221
222impl flatbuffers::Push for QuantizationDetails {
223    type Output = QuantizationDetails;
224    #[inline]
225    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
226        flatbuffers::emplace_scalar::<u8>(dst, self.0);
227    }
228}
229
230impl flatbuffers::EndianScalar for QuantizationDetails {
231  type Scalar = u8;
232  #[inline]
233  fn to_little_endian(self) -> u8 {
234    self.0.to_le()
235  }
236  #[inline]
237  #[allow(clippy::wrong_self_convention)]
238  fn from_little_endian(v: u8) -> Self {
239    let b = u8::from_le(v);
240    Self(b)
241  }
242}
243
244impl<'a> flatbuffers::Verifiable for QuantizationDetails {
245  #[inline]
246  fn run_verifier(
247    v: &mut flatbuffers::Verifier, pos: usize
248  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
249    use self::flatbuffers::Verifiable;
250    u8::run_verifier(v, pos)
251  }
252}
253
254impl flatbuffers::SimpleToVerifyInSlice for QuantizationDetails {}
255pub struct QuantizationDetailsUnionTableOffset {}
256
257#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
258pub const ENUM_MIN_DIMENSION_TYPE: i8 = 0;
259#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
260pub const ENUM_MAX_DIMENSION_TYPE: i8 = 1;
261#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
262#[allow(non_camel_case_types)]
263pub const ENUM_VALUES_DIMENSION_TYPE: [DimensionType; 2] = [
264  DimensionType::DENSE,
265  DimensionType::SPARSE_CSR,
266];
267
268#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
269#[repr(transparent)]
270pub struct DimensionType(pub i8);
271#[allow(non_upper_case_globals)]
272impl DimensionType {
273  pub const DENSE: Self = Self(0);
274  pub const SPARSE_CSR: Self = Self(1);
275
276  pub const ENUM_MIN: i8 = 0;
277  pub const ENUM_MAX: i8 = 1;
278  pub const ENUM_VALUES: &'static [Self] = &[
279    Self::DENSE,
280    Self::SPARSE_CSR,
281  ];
282  /// Returns the variant's name or "" if unknown.
283  pub fn variant_name(self) -> Option<&'static str> {
284    match self {
285      Self::DENSE => Some("DENSE"),
286      Self::SPARSE_CSR => Some("SPARSE_CSR"),
287      _ => None,
288    }
289  }
290}
291impl core::fmt::Debug for DimensionType {
292  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
293    if let Some(name) = self.variant_name() {
294      f.write_str(name)
295    } else {
296      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
297    }
298  }
299}
300impl<'a> flatbuffers::Follow<'a> for DimensionType {
301  type Inner = Self;
302  #[inline]
303  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
304    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
305    Self(b)
306  }
307}
308
309impl flatbuffers::Push for DimensionType {
310    type Output = DimensionType;
311    #[inline]
312    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
313        flatbuffers::emplace_scalar::<i8>(dst, self.0);
314    }
315}
316
317impl flatbuffers::EndianScalar for DimensionType {
318  type Scalar = i8;
319  #[inline]
320  fn to_little_endian(self) -> i8 {
321    self.0.to_le()
322  }
323  #[inline]
324  #[allow(clippy::wrong_self_convention)]
325  fn from_little_endian(v: i8) -> Self {
326    let b = i8::from_le(v);
327    Self(b)
328  }
329}
330
331impl<'a> flatbuffers::Verifiable for DimensionType {
332  #[inline]
333  fn run_verifier(
334    v: &mut flatbuffers::Verifier, pos: usize
335  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
336    use self::flatbuffers::Verifiable;
337    i8::run_verifier(v, pos)
338  }
339}
340
341impl flatbuffers::SimpleToVerifyInSlice for DimensionType {}
342#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
343pub const ENUM_MIN_SPARSE_INDEX_VECTOR: u8 = 0;
344#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
345pub const ENUM_MAX_SPARSE_INDEX_VECTOR: u8 = 3;
346#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
347#[allow(non_camel_case_types)]
348pub const ENUM_VALUES_SPARSE_INDEX_VECTOR: [SparseIndexVector; 4] = [
349  SparseIndexVector::NONE,
350  SparseIndexVector::Int32Vector,
351  SparseIndexVector::Uint16Vector,
352  SparseIndexVector::Uint8Vector,
353];
354
355#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
356#[repr(transparent)]
357pub struct SparseIndexVector(pub u8);
358#[allow(non_upper_case_globals)]
359impl SparseIndexVector {
360  pub const NONE: Self = Self(0);
361  pub const Int32Vector: Self = Self(1);
362  pub const Uint16Vector: Self = Self(2);
363  pub const Uint8Vector: Self = Self(3);
364
365  pub const ENUM_MIN: u8 = 0;
366  pub const ENUM_MAX: u8 = 3;
367  pub const ENUM_VALUES: &'static [Self] = &[
368    Self::NONE,
369    Self::Int32Vector,
370    Self::Uint16Vector,
371    Self::Uint8Vector,
372  ];
373  /// Returns the variant's name or "" if unknown.
374  pub fn variant_name(self) -> Option<&'static str> {
375    match self {
376      Self::NONE => Some("NONE"),
377      Self::Int32Vector => Some("Int32Vector"),
378      Self::Uint16Vector => Some("Uint16Vector"),
379      Self::Uint8Vector => Some("Uint8Vector"),
380      _ => None,
381    }
382  }
383}
384impl core::fmt::Debug for SparseIndexVector {
385  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
386    if let Some(name) = self.variant_name() {
387      f.write_str(name)
388    } else {
389      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
390    }
391  }
392}
393impl<'a> flatbuffers::Follow<'a> for SparseIndexVector {
394  type Inner = Self;
395  #[inline]
396  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
397    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
398    Self(b)
399  }
400}
401
402impl flatbuffers::Push for SparseIndexVector {
403    type Output = SparseIndexVector;
404    #[inline]
405    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
406        flatbuffers::emplace_scalar::<u8>(dst, self.0);
407    }
408}
409
410impl flatbuffers::EndianScalar for SparseIndexVector {
411  type Scalar = u8;
412  #[inline]
413  fn to_little_endian(self) -> u8 {
414    self.0.to_le()
415  }
416  #[inline]
417  #[allow(clippy::wrong_self_convention)]
418  fn from_little_endian(v: u8) -> Self {
419    let b = u8::from_le(v);
420    Self(b)
421  }
422}
423
424impl<'a> flatbuffers::Verifiable for SparseIndexVector {
425  #[inline]
426  fn run_verifier(
427    v: &mut flatbuffers::Verifier, pos: usize
428  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
429    use self::flatbuffers::Verifiable;
430    u8::run_verifier(v, pos)
431  }
432}
433
434impl flatbuffers::SimpleToVerifyInSlice for SparseIndexVector {}
435pub struct SparseIndexVectorUnionTableOffset {}
436
437#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
438pub const ENUM_MIN_BUILTIN_OPERATOR: i32 = 0;
439#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
440pub const ENUM_MAX_BUILTIN_OPERATOR: i32 = 161;
441#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
442#[allow(non_camel_case_types)]
443pub const ENUM_VALUES_BUILTIN_OPERATOR: [BuiltinOperator; 162] = [
444  BuiltinOperator::ADD,
445  BuiltinOperator::AVERAGE_POOL_2D,
446  BuiltinOperator::CONCATENATION,
447  BuiltinOperator::CONV_2D,
448  BuiltinOperator::DEPTHWISE_CONV_2D,
449  BuiltinOperator::DEPTH_TO_SPACE,
450  BuiltinOperator::DEQUANTIZE,
451  BuiltinOperator::EMBEDDING_LOOKUP,
452  BuiltinOperator::FLOOR,
453  BuiltinOperator::FULLY_CONNECTED,
454  BuiltinOperator::HASHTABLE_LOOKUP,
455  BuiltinOperator::L2_NORMALIZATION,
456  BuiltinOperator::L2_POOL_2D,
457  BuiltinOperator::LOCAL_RESPONSE_NORMALIZATION,
458  BuiltinOperator::LOGISTIC,
459  BuiltinOperator::LSH_PROJECTION,
460  BuiltinOperator::LSTM,
461  BuiltinOperator::MAX_POOL_2D,
462  BuiltinOperator::MUL,
463  BuiltinOperator::RELU,
464  BuiltinOperator::RELU_N1_TO_1,
465  BuiltinOperator::RELU6,
466  BuiltinOperator::RESHAPE,
467  BuiltinOperator::RESIZE_BILINEAR,
468  BuiltinOperator::RNN,
469  BuiltinOperator::SOFTMAX,
470  BuiltinOperator::SPACE_TO_DEPTH,
471  BuiltinOperator::SVDF,
472  BuiltinOperator::TANH,
473  BuiltinOperator::CONCAT_EMBEDDINGS,
474  BuiltinOperator::SKIP_GRAM,
475  BuiltinOperator::CALL,
476  BuiltinOperator::CUSTOM,
477  BuiltinOperator::EMBEDDING_LOOKUP_SPARSE,
478  BuiltinOperator::PAD,
479  BuiltinOperator::UNIDIRECTIONAL_SEQUENCE_RNN,
480  BuiltinOperator::GATHER,
481  BuiltinOperator::BATCH_TO_SPACE_ND,
482  BuiltinOperator::SPACE_TO_BATCH_ND,
483  BuiltinOperator::TRANSPOSE,
484  BuiltinOperator::MEAN,
485  BuiltinOperator::SUB,
486  BuiltinOperator::DIV,
487  BuiltinOperator::SQUEEZE,
488  BuiltinOperator::UNIDIRECTIONAL_SEQUENCE_LSTM,
489  BuiltinOperator::STRIDED_SLICE,
490  BuiltinOperator::BIDIRECTIONAL_SEQUENCE_RNN,
491  BuiltinOperator::EXP,
492  BuiltinOperator::TOPK_V2,
493  BuiltinOperator::SPLIT,
494  BuiltinOperator::LOG_SOFTMAX,
495  BuiltinOperator::DELEGATE,
496  BuiltinOperator::BIDIRECTIONAL_SEQUENCE_LSTM,
497  BuiltinOperator::CAST,
498  BuiltinOperator::PRELU,
499  BuiltinOperator::MAXIMUM,
500  BuiltinOperator::ARG_MAX,
501  BuiltinOperator::MINIMUM,
502  BuiltinOperator::LESS,
503  BuiltinOperator::NEG,
504  BuiltinOperator::PADV2,
505  BuiltinOperator::GREATER,
506  BuiltinOperator::GREATER_EQUAL,
507  BuiltinOperator::LESS_EQUAL,
508  BuiltinOperator::SELECT,
509  BuiltinOperator::SLICE,
510  BuiltinOperator::SIN,
511  BuiltinOperator::TRANSPOSE_CONV,
512  BuiltinOperator::SPARSE_TO_DENSE,
513  BuiltinOperator::TILE,
514  BuiltinOperator::EXPAND_DIMS,
515  BuiltinOperator::EQUAL,
516  BuiltinOperator::NOT_EQUAL,
517  BuiltinOperator::LOG,
518  BuiltinOperator::SUM,
519  BuiltinOperator::SQRT,
520  BuiltinOperator::RSQRT,
521  BuiltinOperator::SHAPE,
522  BuiltinOperator::POW,
523  BuiltinOperator::ARG_MIN,
524  BuiltinOperator::FAKE_QUANT,
525  BuiltinOperator::REDUCE_PROD,
526  BuiltinOperator::REDUCE_MAX,
527  BuiltinOperator::PACK,
528  BuiltinOperator::LOGICAL_OR,
529  BuiltinOperator::ONE_HOT,
530  BuiltinOperator::LOGICAL_AND,
531  BuiltinOperator::LOGICAL_NOT,
532  BuiltinOperator::UNPACK,
533  BuiltinOperator::REDUCE_MIN,
534  BuiltinOperator::FLOOR_DIV,
535  BuiltinOperator::REDUCE_ANY,
536  BuiltinOperator::SQUARE,
537  BuiltinOperator::ZEROS_LIKE,
538  BuiltinOperator::FILL,
539  BuiltinOperator::FLOOR_MOD,
540  BuiltinOperator::RANGE,
541  BuiltinOperator::RESIZE_NEAREST_NEIGHBOR,
542  BuiltinOperator::LEAKY_RELU,
543  BuiltinOperator::SQUARED_DIFFERENCE,
544  BuiltinOperator::MIRROR_PAD,
545  BuiltinOperator::ABS,
546  BuiltinOperator::SPLIT_V,
547  BuiltinOperator::UNIQUE,
548  BuiltinOperator::CEIL,
549  BuiltinOperator::REVERSE_V2,
550  BuiltinOperator::ADD_N,
551  BuiltinOperator::GATHER_ND,
552  BuiltinOperator::COS,
553  BuiltinOperator::WHERE,
554  BuiltinOperator::RANK,
555  BuiltinOperator::ELU,
556  BuiltinOperator::REVERSE_SEQUENCE,
557  BuiltinOperator::MATRIX_DIAG,
558  BuiltinOperator::QUANTIZE,
559  BuiltinOperator::MATRIX_SET_DIAG,
560  BuiltinOperator::ROUND,
561  BuiltinOperator::HARD_SWISH,
562  BuiltinOperator::IF,
563  BuiltinOperator::WHILE,
564  BuiltinOperator::NON_MAX_SUPPRESSION_V4,
565  BuiltinOperator::NON_MAX_SUPPRESSION_V5,
566  BuiltinOperator::SCATTER_ND,
567  BuiltinOperator::SELECT_V2,
568  BuiltinOperator::DENSIFY,
569  BuiltinOperator::SEGMENT_SUM,
570  BuiltinOperator::BATCH_MATMUL,
571  BuiltinOperator::PLACEHOLDER_FOR_GREATER_OP_CODES,
572  BuiltinOperator::CUMSUM,
573  BuiltinOperator::CALL_ONCE,
574  BuiltinOperator::BROADCAST_TO,
575  BuiltinOperator::RFFT2D,
576  BuiltinOperator::CONV_3D,
577  BuiltinOperator::IMAG,
578  BuiltinOperator::REAL,
579  BuiltinOperator::COMPLEX_ABS,
580  BuiltinOperator::HASHTABLE,
581  BuiltinOperator::HASHTABLE_FIND,
582  BuiltinOperator::HASHTABLE_IMPORT,
583  BuiltinOperator::HASHTABLE_SIZE,
584  BuiltinOperator::REDUCE_ALL,
585  BuiltinOperator::CONV_3D_TRANSPOSE,
586  BuiltinOperator::VAR_HANDLE,
587  BuiltinOperator::READ_VARIABLE,
588  BuiltinOperator::ASSIGN_VARIABLE,
589  BuiltinOperator::BROADCAST_ARGS,
590  BuiltinOperator::RANDOM_STANDARD_NORMAL,
591  BuiltinOperator::BUCKETIZE,
592  BuiltinOperator::RANDOM_UNIFORM,
593  BuiltinOperator::MULTINOMIAL,
594  BuiltinOperator::GELU,
595  BuiltinOperator::DYNAMIC_UPDATE_SLICE,
596  BuiltinOperator::RELU_0_TO_1,
597  BuiltinOperator::UNSORTED_SEGMENT_PROD,
598  BuiltinOperator::UNSORTED_SEGMENT_MAX,
599  BuiltinOperator::UNSORTED_SEGMENT_SUM,
600  BuiltinOperator::ATAN2,
601  BuiltinOperator::UNSORTED_SEGMENT_MIN,
602  BuiltinOperator::SIGN,
603  BuiltinOperator::BITCAST,
604  BuiltinOperator::BITWISE_XOR,
605  BuiltinOperator::RIGHT_SHIFT,
606];
607
608#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
609#[repr(transparent)]
610pub struct BuiltinOperator(pub i32);
611#[allow(non_upper_case_globals)]
612impl BuiltinOperator {
613  pub const ADD: Self = Self(0);
614  pub const AVERAGE_POOL_2D: Self = Self(1);
615  pub const CONCATENATION: Self = Self(2);
616  pub const CONV_2D: Self = Self(3);
617  pub const DEPTHWISE_CONV_2D: Self = Self(4);
618  pub const DEPTH_TO_SPACE: Self = Self(5);
619  pub const DEQUANTIZE: Self = Self(6);
620  pub const EMBEDDING_LOOKUP: Self = Self(7);
621  pub const FLOOR: Self = Self(8);
622  pub const FULLY_CONNECTED: Self = Self(9);
623  pub const HASHTABLE_LOOKUP: Self = Self(10);
624  pub const L2_NORMALIZATION: Self = Self(11);
625  pub const L2_POOL_2D: Self = Self(12);
626  pub const LOCAL_RESPONSE_NORMALIZATION: Self = Self(13);
627  pub const LOGISTIC: Self = Self(14);
628  pub const LSH_PROJECTION: Self = Self(15);
629  pub const LSTM: Self = Self(16);
630  pub const MAX_POOL_2D: Self = Self(17);
631  pub const MUL: Self = Self(18);
632  pub const RELU: Self = Self(19);
633  pub const RELU_N1_TO_1: Self = Self(20);
634  pub const RELU6: Self = Self(21);
635  pub const RESHAPE: Self = Self(22);
636  pub const RESIZE_BILINEAR: Self = Self(23);
637  pub const RNN: Self = Self(24);
638  pub const SOFTMAX: Self = Self(25);
639  pub const SPACE_TO_DEPTH: Self = Self(26);
640  pub const SVDF: Self = Self(27);
641  pub const TANH: Self = Self(28);
642  pub const CONCAT_EMBEDDINGS: Self = Self(29);
643  pub const SKIP_GRAM: Self = Self(30);
644  pub const CALL: Self = Self(31);
645  pub const CUSTOM: Self = Self(32);
646  pub const EMBEDDING_LOOKUP_SPARSE: Self = Self(33);
647  pub const PAD: Self = Self(34);
648  pub const UNIDIRECTIONAL_SEQUENCE_RNN: Self = Self(35);
649  pub const GATHER: Self = Self(36);
650  pub const BATCH_TO_SPACE_ND: Self = Self(37);
651  pub const SPACE_TO_BATCH_ND: Self = Self(38);
652  pub const TRANSPOSE: Self = Self(39);
653  pub const MEAN: Self = Self(40);
654  pub const SUB: Self = Self(41);
655  pub const DIV: Self = Self(42);
656  pub const SQUEEZE: Self = Self(43);
657  pub const UNIDIRECTIONAL_SEQUENCE_LSTM: Self = Self(44);
658  pub const STRIDED_SLICE: Self = Self(45);
659  pub const BIDIRECTIONAL_SEQUENCE_RNN: Self = Self(46);
660  pub const EXP: Self = Self(47);
661  pub const TOPK_V2: Self = Self(48);
662  pub const SPLIT: Self = Self(49);
663  pub const LOG_SOFTMAX: Self = Self(50);
664  pub const DELEGATE: Self = Self(51);
665  pub const BIDIRECTIONAL_SEQUENCE_LSTM: Self = Self(52);
666  pub const CAST: Self = Self(53);
667  pub const PRELU: Self = Self(54);
668  pub const MAXIMUM: Self = Self(55);
669  pub const ARG_MAX: Self = Self(56);
670  pub const MINIMUM: Self = Self(57);
671  pub const LESS: Self = Self(58);
672  pub const NEG: Self = Self(59);
673  pub const PADV2: Self = Self(60);
674  pub const GREATER: Self = Self(61);
675  pub const GREATER_EQUAL: Self = Self(62);
676  pub const LESS_EQUAL: Self = Self(63);
677  pub const SELECT: Self = Self(64);
678  pub const SLICE: Self = Self(65);
679  pub const SIN: Self = Self(66);
680  pub const TRANSPOSE_CONV: Self = Self(67);
681  pub const SPARSE_TO_DENSE: Self = Self(68);
682  pub const TILE: Self = Self(69);
683  pub const EXPAND_DIMS: Self = Self(70);
684  pub const EQUAL: Self = Self(71);
685  pub const NOT_EQUAL: Self = Self(72);
686  pub const LOG: Self = Self(73);
687  pub const SUM: Self = Self(74);
688  pub const SQRT: Self = Self(75);
689  pub const RSQRT: Self = Self(76);
690  pub const SHAPE: Self = Self(77);
691  pub const POW: Self = Self(78);
692  pub const ARG_MIN: Self = Self(79);
693  pub const FAKE_QUANT: Self = Self(80);
694  pub const REDUCE_PROD: Self = Self(81);
695  pub const REDUCE_MAX: Self = Self(82);
696  pub const PACK: Self = Self(83);
697  pub const LOGICAL_OR: Self = Self(84);
698  pub const ONE_HOT: Self = Self(85);
699  pub const LOGICAL_AND: Self = Self(86);
700  pub const LOGICAL_NOT: Self = Self(87);
701  pub const UNPACK: Self = Self(88);
702  pub const REDUCE_MIN: Self = Self(89);
703  pub const FLOOR_DIV: Self = Self(90);
704  pub const REDUCE_ANY: Self = Self(91);
705  pub const SQUARE: Self = Self(92);
706  pub const ZEROS_LIKE: Self = Self(93);
707  pub const FILL: Self = Self(94);
708  pub const FLOOR_MOD: Self = Self(95);
709  pub const RANGE: Self = Self(96);
710  pub const RESIZE_NEAREST_NEIGHBOR: Self = Self(97);
711  pub const LEAKY_RELU: Self = Self(98);
712  pub const SQUARED_DIFFERENCE: Self = Self(99);
713  pub const MIRROR_PAD: Self = Self(100);
714  pub const ABS: Self = Self(101);
715  pub const SPLIT_V: Self = Self(102);
716  pub const UNIQUE: Self = Self(103);
717  pub const CEIL: Self = Self(104);
718  pub const REVERSE_V2: Self = Self(105);
719  pub const ADD_N: Self = Self(106);
720  pub const GATHER_ND: Self = Self(107);
721  pub const COS: Self = Self(108);
722  pub const WHERE: Self = Self(109);
723  pub const RANK: Self = Self(110);
724  pub const ELU: Self = Self(111);
725  pub const REVERSE_SEQUENCE: Self = Self(112);
726  pub const MATRIX_DIAG: Self = Self(113);
727  pub const QUANTIZE: Self = Self(114);
728  pub const MATRIX_SET_DIAG: Self = Self(115);
729  pub const ROUND: Self = Self(116);
730  pub const HARD_SWISH: Self = Self(117);
731  pub const IF: Self = Self(118);
732  pub const WHILE: Self = Self(119);
733  pub const NON_MAX_SUPPRESSION_V4: Self = Self(120);
734  pub const NON_MAX_SUPPRESSION_V5: Self = Self(121);
735  pub const SCATTER_ND: Self = Self(122);
736  pub const SELECT_V2: Self = Self(123);
737  pub const DENSIFY: Self = Self(124);
738  pub const SEGMENT_SUM: Self = Self(125);
739  pub const BATCH_MATMUL: Self = Self(126);
740  pub const PLACEHOLDER_FOR_GREATER_OP_CODES: Self = Self(127);
741  pub const CUMSUM: Self = Self(128);
742  pub const CALL_ONCE: Self = Self(129);
743  pub const BROADCAST_TO: Self = Self(130);
744  pub const RFFT2D: Self = Self(131);
745  pub const CONV_3D: Self = Self(132);
746  pub const IMAG: Self = Self(133);
747  pub const REAL: Self = Self(134);
748  pub const COMPLEX_ABS: Self = Self(135);
749  pub const HASHTABLE: Self = Self(136);
750  pub const HASHTABLE_FIND: Self = Self(137);
751  pub const HASHTABLE_IMPORT: Self = Self(138);
752  pub const HASHTABLE_SIZE: Self = Self(139);
753  pub const REDUCE_ALL: Self = Self(140);
754  pub const CONV_3D_TRANSPOSE: Self = Self(141);
755  pub const VAR_HANDLE: Self = Self(142);
756  pub const READ_VARIABLE: Self = Self(143);
757  pub const ASSIGN_VARIABLE: Self = Self(144);
758  pub const BROADCAST_ARGS: Self = Self(145);
759  pub const RANDOM_STANDARD_NORMAL: Self = Self(146);
760  pub const BUCKETIZE: Self = Self(147);
761  pub const RANDOM_UNIFORM: Self = Self(148);
762  pub const MULTINOMIAL: Self = Self(149);
763  pub const GELU: Self = Self(150);
764  pub const DYNAMIC_UPDATE_SLICE: Self = Self(151);
765  pub const RELU_0_TO_1: Self = Self(152);
766  pub const UNSORTED_SEGMENT_PROD: Self = Self(153);
767  pub const UNSORTED_SEGMENT_MAX: Self = Self(154);
768  pub const UNSORTED_SEGMENT_SUM: Self = Self(155);
769  pub const ATAN2: Self = Self(156);
770  pub const UNSORTED_SEGMENT_MIN: Self = Self(157);
771  pub const SIGN: Self = Self(158);
772  pub const BITCAST: Self = Self(159);
773  pub const BITWISE_XOR: Self = Self(160);
774  pub const RIGHT_SHIFT: Self = Self(161);
775
776  pub const ENUM_MIN: i32 = 0;
777  pub const ENUM_MAX: i32 = 161;
778  pub const ENUM_VALUES: &'static [Self] = &[
779    Self::ADD,
780    Self::AVERAGE_POOL_2D,
781    Self::CONCATENATION,
782    Self::CONV_2D,
783    Self::DEPTHWISE_CONV_2D,
784    Self::DEPTH_TO_SPACE,
785    Self::DEQUANTIZE,
786    Self::EMBEDDING_LOOKUP,
787    Self::FLOOR,
788    Self::FULLY_CONNECTED,
789    Self::HASHTABLE_LOOKUP,
790    Self::L2_NORMALIZATION,
791    Self::L2_POOL_2D,
792    Self::LOCAL_RESPONSE_NORMALIZATION,
793    Self::LOGISTIC,
794    Self::LSH_PROJECTION,
795    Self::LSTM,
796    Self::MAX_POOL_2D,
797    Self::MUL,
798    Self::RELU,
799    Self::RELU_N1_TO_1,
800    Self::RELU6,
801    Self::RESHAPE,
802    Self::RESIZE_BILINEAR,
803    Self::RNN,
804    Self::SOFTMAX,
805    Self::SPACE_TO_DEPTH,
806    Self::SVDF,
807    Self::TANH,
808    Self::CONCAT_EMBEDDINGS,
809    Self::SKIP_GRAM,
810    Self::CALL,
811    Self::CUSTOM,
812    Self::EMBEDDING_LOOKUP_SPARSE,
813    Self::PAD,
814    Self::UNIDIRECTIONAL_SEQUENCE_RNN,
815    Self::GATHER,
816    Self::BATCH_TO_SPACE_ND,
817    Self::SPACE_TO_BATCH_ND,
818    Self::TRANSPOSE,
819    Self::MEAN,
820    Self::SUB,
821    Self::DIV,
822    Self::SQUEEZE,
823    Self::UNIDIRECTIONAL_SEQUENCE_LSTM,
824    Self::STRIDED_SLICE,
825    Self::BIDIRECTIONAL_SEQUENCE_RNN,
826    Self::EXP,
827    Self::TOPK_V2,
828    Self::SPLIT,
829    Self::LOG_SOFTMAX,
830    Self::DELEGATE,
831    Self::BIDIRECTIONAL_SEQUENCE_LSTM,
832    Self::CAST,
833    Self::PRELU,
834    Self::MAXIMUM,
835    Self::ARG_MAX,
836    Self::MINIMUM,
837    Self::LESS,
838    Self::NEG,
839    Self::PADV2,
840    Self::GREATER,
841    Self::GREATER_EQUAL,
842    Self::LESS_EQUAL,
843    Self::SELECT,
844    Self::SLICE,
845    Self::SIN,
846    Self::TRANSPOSE_CONV,
847    Self::SPARSE_TO_DENSE,
848    Self::TILE,
849    Self::EXPAND_DIMS,
850    Self::EQUAL,
851    Self::NOT_EQUAL,
852    Self::LOG,
853    Self::SUM,
854    Self::SQRT,
855    Self::RSQRT,
856    Self::SHAPE,
857    Self::POW,
858    Self::ARG_MIN,
859    Self::FAKE_QUANT,
860    Self::REDUCE_PROD,
861    Self::REDUCE_MAX,
862    Self::PACK,
863    Self::LOGICAL_OR,
864    Self::ONE_HOT,
865    Self::LOGICAL_AND,
866    Self::LOGICAL_NOT,
867    Self::UNPACK,
868    Self::REDUCE_MIN,
869    Self::FLOOR_DIV,
870    Self::REDUCE_ANY,
871    Self::SQUARE,
872    Self::ZEROS_LIKE,
873    Self::FILL,
874    Self::FLOOR_MOD,
875    Self::RANGE,
876    Self::RESIZE_NEAREST_NEIGHBOR,
877    Self::LEAKY_RELU,
878    Self::SQUARED_DIFFERENCE,
879    Self::MIRROR_PAD,
880    Self::ABS,
881    Self::SPLIT_V,
882    Self::UNIQUE,
883    Self::CEIL,
884    Self::REVERSE_V2,
885    Self::ADD_N,
886    Self::GATHER_ND,
887    Self::COS,
888    Self::WHERE,
889    Self::RANK,
890    Self::ELU,
891    Self::REVERSE_SEQUENCE,
892    Self::MATRIX_DIAG,
893    Self::QUANTIZE,
894    Self::MATRIX_SET_DIAG,
895    Self::ROUND,
896    Self::HARD_SWISH,
897    Self::IF,
898    Self::WHILE,
899    Self::NON_MAX_SUPPRESSION_V4,
900    Self::NON_MAX_SUPPRESSION_V5,
901    Self::SCATTER_ND,
902    Self::SELECT_V2,
903    Self::DENSIFY,
904    Self::SEGMENT_SUM,
905    Self::BATCH_MATMUL,
906    Self::PLACEHOLDER_FOR_GREATER_OP_CODES,
907    Self::CUMSUM,
908    Self::CALL_ONCE,
909    Self::BROADCAST_TO,
910    Self::RFFT2D,
911    Self::CONV_3D,
912    Self::IMAG,
913    Self::REAL,
914    Self::COMPLEX_ABS,
915    Self::HASHTABLE,
916    Self::HASHTABLE_FIND,
917    Self::HASHTABLE_IMPORT,
918    Self::HASHTABLE_SIZE,
919    Self::REDUCE_ALL,
920    Self::CONV_3D_TRANSPOSE,
921    Self::VAR_HANDLE,
922    Self::READ_VARIABLE,
923    Self::ASSIGN_VARIABLE,
924    Self::BROADCAST_ARGS,
925    Self::RANDOM_STANDARD_NORMAL,
926    Self::BUCKETIZE,
927    Self::RANDOM_UNIFORM,
928    Self::MULTINOMIAL,
929    Self::GELU,
930    Self::DYNAMIC_UPDATE_SLICE,
931    Self::RELU_0_TO_1,
932    Self::UNSORTED_SEGMENT_PROD,
933    Self::UNSORTED_SEGMENT_MAX,
934    Self::UNSORTED_SEGMENT_SUM,
935    Self::ATAN2,
936    Self::UNSORTED_SEGMENT_MIN,
937    Self::SIGN,
938    Self::BITCAST,
939    Self::BITWISE_XOR,
940    Self::RIGHT_SHIFT,
941  ];
942  /// Returns the variant's name or "" if unknown.
943  pub fn variant_name(self) -> Option<&'static str> {
944    match self {
945      Self::ADD => Some("ADD"),
946      Self::AVERAGE_POOL_2D => Some("AVERAGE_POOL_2D"),
947      Self::CONCATENATION => Some("CONCATENATION"),
948      Self::CONV_2D => Some("CONV_2D"),
949      Self::DEPTHWISE_CONV_2D => Some("DEPTHWISE_CONV_2D"),
950      Self::DEPTH_TO_SPACE => Some("DEPTH_TO_SPACE"),
951      Self::DEQUANTIZE => Some("DEQUANTIZE"),
952      Self::EMBEDDING_LOOKUP => Some("EMBEDDING_LOOKUP"),
953      Self::FLOOR => Some("FLOOR"),
954      Self::FULLY_CONNECTED => Some("FULLY_CONNECTED"),
955      Self::HASHTABLE_LOOKUP => Some("HASHTABLE_LOOKUP"),
956      Self::L2_NORMALIZATION => Some("L2_NORMALIZATION"),
957      Self::L2_POOL_2D => Some("L2_POOL_2D"),
958      Self::LOCAL_RESPONSE_NORMALIZATION => Some("LOCAL_RESPONSE_NORMALIZATION"),
959      Self::LOGISTIC => Some("LOGISTIC"),
960      Self::LSH_PROJECTION => Some("LSH_PROJECTION"),
961      Self::LSTM => Some("LSTM"),
962      Self::MAX_POOL_2D => Some("MAX_POOL_2D"),
963      Self::MUL => Some("MUL"),
964      Self::RELU => Some("RELU"),
965      Self::RELU_N1_TO_1 => Some("RELU_N1_TO_1"),
966      Self::RELU6 => Some("RELU6"),
967      Self::RESHAPE => Some("RESHAPE"),
968      Self::RESIZE_BILINEAR => Some("RESIZE_BILINEAR"),
969      Self::RNN => Some("RNN"),
970      Self::SOFTMAX => Some("SOFTMAX"),
971      Self::SPACE_TO_DEPTH => Some("SPACE_TO_DEPTH"),
972      Self::SVDF => Some("SVDF"),
973      Self::TANH => Some("TANH"),
974      Self::CONCAT_EMBEDDINGS => Some("CONCAT_EMBEDDINGS"),
975      Self::SKIP_GRAM => Some("SKIP_GRAM"),
976      Self::CALL => Some("CALL"),
977      Self::CUSTOM => Some("CUSTOM"),
978      Self::EMBEDDING_LOOKUP_SPARSE => Some("EMBEDDING_LOOKUP_SPARSE"),
979      Self::PAD => Some("PAD"),
980      Self::UNIDIRECTIONAL_SEQUENCE_RNN => Some("UNIDIRECTIONAL_SEQUENCE_RNN"),
981      Self::GATHER => Some("GATHER"),
982      Self::BATCH_TO_SPACE_ND => Some("BATCH_TO_SPACE_ND"),
983      Self::SPACE_TO_BATCH_ND => Some("SPACE_TO_BATCH_ND"),
984      Self::TRANSPOSE => Some("TRANSPOSE"),
985      Self::MEAN => Some("MEAN"),
986      Self::SUB => Some("SUB"),
987      Self::DIV => Some("DIV"),
988      Self::SQUEEZE => Some("SQUEEZE"),
989      Self::UNIDIRECTIONAL_SEQUENCE_LSTM => Some("UNIDIRECTIONAL_SEQUENCE_LSTM"),
990      Self::STRIDED_SLICE => Some("STRIDED_SLICE"),
991      Self::BIDIRECTIONAL_SEQUENCE_RNN => Some("BIDIRECTIONAL_SEQUENCE_RNN"),
992      Self::EXP => Some("EXP"),
993      Self::TOPK_V2 => Some("TOPK_V2"),
994      Self::SPLIT => Some("SPLIT"),
995      Self::LOG_SOFTMAX => Some("LOG_SOFTMAX"),
996      Self::DELEGATE => Some("DELEGATE"),
997      Self::BIDIRECTIONAL_SEQUENCE_LSTM => Some("BIDIRECTIONAL_SEQUENCE_LSTM"),
998      Self::CAST => Some("CAST"),
999      Self::PRELU => Some("PRELU"),
1000      Self::MAXIMUM => Some("MAXIMUM"),
1001      Self::ARG_MAX => Some("ARG_MAX"),
1002      Self::MINIMUM => Some("MINIMUM"),
1003      Self::LESS => Some("LESS"),
1004      Self::NEG => Some("NEG"),
1005      Self::PADV2 => Some("PADV2"),
1006      Self::GREATER => Some("GREATER"),
1007      Self::GREATER_EQUAL => Some("GREATER_EQUAL"),
1008      Self::LESS_EQUAL => Some("LESS_EQUAL"),
1009      Self::SELECT => Some("SELECT"),
1010      Self::SLICE => Some("SLICE"),
1011      Self::SIN => Some("SIN"),
1012      Self::TRANSPOSE_CONV => Some("TRANSPOSE_CONV"),
1013      Self::SPARSE_TO_DENSE => Some("SPARSE_TO_DENSE"),
1014      Self::TILE => Some("TILE"),
1015      Self::EXPAND_DIMS => Some("EXPAND_DIMS"),
1016      Self::EQUAL => Some("EQUAL"),
1017      Self::NOT_EQUAL => Some("NOT_EQUAL"),
1018      Self::LOG => Some("LOG"),
1019      Self::SUM => Some("SUM"),
1020      Self::SQRT => Some("SQRT"),
1021      Self::RSQRT => Some("RSQRT"),
1022      Self::SHAPE => Some("SHAPE"),
1023      Self::POW => Some("POW"),
1024      Self::ARG_MIN => Some("ARG_MIN"),
1025      Self::FAKE_QUANT => Some("FAKE_QUANT"),
1026      Self::REDUCE_PROD => Some("REDUCE_PROD"),
1027      Self::REDUCE_MAX => Some("REDUCE_MAX"),
1028      Self::PACK => Some("PACK"),
1029      Self::LOGICAL_OR => Some("LOGICAL_OR"),
1030      Self::ONE_HOT => Some("ONE_HOT"),
1031      Self::LOGICAL_AND => Some("LOGICAL_AND"),
1032      Self::LOGICAL_NOT => Some("LOGICAL_NOT"),
1033      Self::UNPACK => Some("UNPACK"),
1034      Self::REDUCE_MIN => Some("REDUCE_MIN"),
1035      Self::FLOOR_DIV => Some("FLOOR_DIV"),
1036      Self::REDUCE_ANY => Some("REDUCE_ANY"),
1037      Self::SQUARE => Some("SQUARE"),
1038      Self::ZEROS_LIKE => Some("ZEROS_LIKE"),
1039      Self::FILL => Some("FILL"),
1040      Self::FLOOR_MOD => Some("FLOOR_MOD"),
1041      Self::RANGE => Some("RANGE"),
1042      Self::RESIZE_NEAREST_NEIGHBOR => Some("RESIZE_NEAREST_NEIGHBOR"),
1043      Self::LEAKY_RELU => Some("LEAKY_RELU"),
1044      Self::SQUARED_DIFFERENCE => Some("SQUARED_DIFFERENCE"),
1045      Self::MIRROR_PAD => Some("MIRROR_PAD"),
1046      Self::ABS => Some("ABS"),
1047      Self::SPLIT_V => Some("SPLIT_V"),
1048      Self::UNIQUE => Some("UNIQUE"),
1049      Self::CEIL => Some("CEIL"),
1050      Self::REVERSE_V2 => Some("REVERSE_V2"),
1051      Self::ADD_N => Some("ADD_N"),
1052      Self::GATHER_ND => Some("GATHER_ND"),
1053      Self::COS => Some("COS"),
1054      Self::WHERE => Some("WHERE"),
1055      Self::RANK => Some("RANK"),
1056      Self::ELU => Some("ELU"),
1057      Self::REVERSE_SEQUENCE => Some("REVERSE_SEQUENCE"),
1058      Self::MATRIX_DIAG => Some("MATRIX_DIAG"),
1059      Self::QUANTIZE => Some("QUANTIZE"),
1060      Self::MATRIX_SET_DIAG => Some("MATRIX_SET_DIAG"),
1061      Self::ROUND => Some("ROUND"),
1062      Self::HARD_SWISH => Some("HARD_SWISH"),
1063      Self::IF => Some("IF"),
1064      Self::WHILE => Some("WHILE"),
1065      Self::NON_MAX_SUPPRESSION_V4 => Some("NON_MAX_SUPPRESSION_V4"),
1066      Self::NON_MAX_SUPPRESSION_V5 => Some("NON_MAX_SUPPRESSION_V5"),
1067      Self::SCATTER_ND => Some("SCATTER_ND"),
1068      Self::SELECT_V2 => Some("SELECT_V2"),
1069      Self::DENSIFY => Some("DENSIFY"),
1070      Self::SEGMENT_SUM => Some("SEGMENT_SUM"),
1071      Self::BATCH_MATMUL => Some("BATCH_MATMUL"),
1072      Self::PLACEHOLDER_FOR_GREATER_OP_CODES => Some("PLACEHOLDER_FOR_GREATER_OP_CODES"),
1073      Self::CUMSUM => Some("CUMSUM"),
1074      Self::CALL_ONCE => Some("CALL_ONCE"),
1075      Self::BROADCAST_TO => Some("BROADCAST_TO"),
1076      Self::RFFT2D => Some("RFFT2D"),
1077      Self::CONV_3D => Some("CONV_3D"),
1078      Self::IMAG => Some("IMAG"),
1079      Self::REAL => Some("REAL"),
1080      Self::COMPLEX_ABS => Some("COMPLEX_ABS"),
1081      Self::HASHTABLE => Some("HASHTABLE"),
1082      Self::HASHTABLE_FIND => Some("HASHTABLE_FIND"),
1083      Self::HASHTABLE_IMPORT => Some("HASHTABLE_IMPORT"),
1084      Self::HASHTABLE_SIZE => Some("HASHTABLE_SIZE"),
1085      Self::REDUCE_ALL => Some("REDUCE_ALL"),
1086      Self::CONV_3D_TRANSPOSE => Some("CONV_3D_TRANSPOSE"),
1087      Self::VAR_HANDLE => Some("VAR_HANDLE"),
1088      Self::READ_VARIABLE => Some("READ_VARIABLE"),
1089      Self::ASSIGN_VARIABLE => Some("ASSIGN_VARIABLE"),
1090      Self::BROADCAST_ARGS => Some("BROADCAST_ARGS"),
1091      Self::RANDOM_STANDARD_NORMAL => Some("RANDOM_STANDARD_NORMAL"),
1092      Self::BUCKETIZE => Some("BUCKETIZE"),
1093      Self::RANDOM_UNIFORM => Some("RANDOM_UNIFORM"),
1094      Self::MULTINOMIAL => Some("MULTINOMIAL"),
1095      Self::GELU => Some("GELU"),
1096      Self::DYNAMIC_UPDATE_SLICE => Some("DYNAMIC_UPDATE_SLICE"),
1097      Self::RELU_0_TO_1 => Some("RELU_0_TO_1"),
1098      Self::UNSORTED_SEGMENT_PROD => Some("UNSORTED_SEGMENT_PROD"),
1099      Self::UNSORTED_SEGMENT_MAX => Some("UNSORTED_SEGMENT_MAX"),
1100      Self::UNSORTED_SEGMENT_SUM => Some("UNSORTED_SEGMENT_SUM"),
1101      Self::ATAN2 => Some("ATAN2"),
1102      Self::UNSORTED_SEGMENT_MIN => Some("UNSORTED_SEGMENT_MIN"),
1103      Self::SIGN => Some("SIGN"),
1104      Self::BITCAST => Some("BITCAST"),
1105      Self::BITWISE_XOR => Some("BITWISE_XOR"),
1106      Self::RIGHT_SHIFT => Some("RIGHT_SHIFT"),
1107      _ => None,
1108    }
1109  }
1110}
1111impl core::fmt::Debug for BuiltinOperator {
1112  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1113    if let Some(name) = self.variant_name() {
1114      f.write_str(name)
1115    } else {
1116      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1117    }
1118  }
1119}
1120impl<'a> flatbuffers::Follow<'a> for BuiltinOperator {
1121  type Inner = Self;
1122  #[inline]
1123  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1124    let b = flatbuffers::read_scalar_at::<i32>(buf, loc);
1125    Self(b)
1126  }
1127}
1128
1129impl flatbuffers::Push for BuiltinOperator {
1130    type Output = BuiltinOperator;
1131    #[inline]
1132    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1133        flatbuffers::emplace_scalar::<i32>(dst, self.0);
1134    }
1135}
1136
1137impl flatbuffers::EndianScalar for BuiltinOperator {
1138  type Scalar = i32;
1139  #[inline]
1140  fn to_little_endian(self) -> i32 {
1141    self.0.to_le()
1142  }
1143  #[inline]
1144  #[allow(clippy::wrong_self_convention)]
1145  fn from_little_endian(v: i32) -> Self {
1146    let b = i32::from_le(v);
1147    Self(b)
1148  }
1149}
1150
1151impl<'a> flatbuffers::Verifiable for BuiltinOperator {
1152  #[inline]
1153  fn run_verifier(
1154    v: &mut flatbuffers::Verifier, pos: usize
1155  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1156    use self::flatbuffers::Verifiable;
1157    i32::run_verifier(v, pos)
1158  }
1159}
1160
1161impl flatbuffers::SimpleToVerifyInSlice for BuiltinOperator {}
1162#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1163pub const ENUM_MIN_BUILTIN_OPTIONS: u8 = 0;
1164#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1165pub const ENUM_MAX_BUILTIN_OPTIONS: u8 = 126;
1166#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1167#[allow(non_camel_case_types)]
1168pub const ENUM_VALUES_BUILTIN_OPTIONS: [BuiltinOptions; 127] = [
1169  BuiltinOptions::NONE,
1170  BuiltinOptions::Conv2DOptions,
1171  BuiltinOptions::DepthwiseConv2DOptions,
1172  BuiltinOptions::ConcatEmbeddingsOptions,
1173  BuiltinOptions::LSHProjectionOptions,
1174  BuiltinOptions::Pool2DOptions,
1175  BuiltinOptions::SVDFOptions,
1176  BuiltinOptions::RNNOptions,
1177  BuiltinOptions::FullyConnectedOptions,
1178  BuiltinOptions::SoftmaxOptions,
1179  BuiltinOptions::ConcatenationOptions,
1180  BuiltinOptions::AddOptions,
1181  BuiltinOptions::L2NormOptions,
1182  BuiltinOptions::LocalResponseNormalizationOptions,
1183  BuiltinOptions::LSTMOptions,
1184  BuiltinOptions::ResizeBilinearOptions,
1185  BuiltinOptions::CallOptions,
1186  BuiltinOptions::ReshapeOptions,
1187  BuiltinOptions::SkipGramOptions,
1188  BuiltinOptions::SpaceToDepthOptions,
1189  BuiltinOptions::EmbeddingLookupSparseOptions,
1190  BuiltinOptions::MulOptions,
1191  BuiltinOptions::PadOptions,
1192  BuiltinOptions::GatherOptions,
1193  BuiltinOptions::BatchToSpaceNDOptions,
1194  BuiltinOptions::SpaceToBatchNDOptions,
1195  BuiltinOptions::TransposeOptions,
1196  BuiltinOptions::ReducerOptions,
1197  BuiltinOptions::SubOptions,
1198  BuiltinOptions::DivOptions,
1199  BuiltinOptions::SqueezeOptions,
1200  BuiltinOptions::SequenceRNNOptions,
1201  BuiltinOptions::StridedSliceOptions,
1202  BuiltinOptions::ExpOptions,
1203  BuiltinOptions::TopKV2Options,
1204  BuiltinOptions::SplitOptions,
1205  BuiltinOptions::LogSoftmaxOptions,
1206  BuiltinOptions::CastOptions,
1207  BuiltinOptions::DequantizeOptions,
1208  BuiltinOptions::MaximumMinimumOptions,
1209  BuiltinOptions::ArgMaxOptions,
1210  BuiltinOptions::LessOptions,
1211  BuiltinOptions::NegOptions,
1212  BuiltinOptions::PadV2Options,
1213  BuiltinOptions::GreaterOptions,
1214  BuiltinOptions::GreaterEqualOptions,
1215  BuiltinOptions::LessEqualOptions,
1216  BuiltinOptions::SelectOptions,
1217  BuiltinOptions::SliceOptions,
1218  BuiltinOptions::TransposeConvOptions,
1219  BuiltinOptions::SparseToDenseOptions,
1220  BuiltinOptions::TileOptions,
1221  BuiltinOptions::ExpandDimsOptions,
1222  BuiltinOptions::EqualOptions,
1223  BuiltinOptions::NotEqualOptions,
1224  BuiltinOptions::ShapeOptions,
1225  BuiltinOptions::PowOptions,
1226  BuiltinOptions::ArgMinOptions,
1227  BuiltinOptions::FakeQuantOptions,
1228  BuiltinOptions::PackOptions,
1229  BuiltinOptions::LogicalOrOptions,
1230  BuiltinOptions::OneHotOptions,
1231  BuiltinOptions::LogicalAndOptions,
1232  BuiltinOptions::LogicalNotOptions,
1233  BuiltinOptions::UnpackOptions,
1234  BuiltinOptions::FloorDivOptions,
1235  BuiltinOptions::SquareOptions,
1236  BuiltinOptions::ZerosLikeOptions,
1237  BuiltinOptions::FillOptions,
1238  BuiltinOptions::BidirectionalSequenceLSTMOptions,
1239  BuiltinOptions::BidirectionalSequenceRNNOptions,
1240  BuiltinOptions::UnidirectionalSequenceLSTMOptions,
1241  BuiltinOptions::FloorModOptions,
1242  BuiltinOptions::RangeOptions,
1243  BuiltinOptions::ResizeNearestNeighborOptions,
1244  BuiltinOptions::LeakyReluOptions,
1245  BuiltinOptions::SquaredDifferenceOptions,
1246  BuiltinOptions::MirrorPadOptions,
1247  BuiltinOptions::AbsOptions,
1248  BuiltinOptions::SplitVOptions,
1249  BuiltinOptions::UniqueOptions,
1250  BuiltinOptions::ReverseV2Options,
1251  BuiltinOptions::AddNOptions,
1252  BuiltinOptions::GatherNdOptions,
1253  BuiltinOptions::CosOptions,
1254  BuiltinOptions::WhereOptions,
1255  BuiltinOptions::RankOptions,
1256  BuiltinOptions::ReverseSequenceOptions,
1257  BuiltinOptions::MatrixDiagOptions,
1258  BuiltinOptions::QuantizeOptions,
1259  BuiltinOptions::MatrixSetDiagOptions,
1260  BuiltinOptions::HardSwishOptions,
1261  BuiltinOptions::IfOptions,
1262  BuiltinOptions::WhileOptions,
1263  BuiltinOptions::DepthToSpaceOptions,
1264  BuiltinOptions::NonMaxSuppressionV4Options,
1265  BuiltinOptions::NonMaxSuppressionV5Options,
1266  BuiltinOptions::ScatterNdOptions,
1267  BuiltinOptions::SelectV2Options,
1268  BuiltinOptions::DensifyOptions,
1269  BuiltinOptions::SegmentSumOptions,
1270  BuiltinOptions::BatchMatMulOptions,
1271  BuiltinOptions::CumsumOptions,
1272  BuiltinOptions::CallOnceOptions,
1273  BuiltinOptions::BroadcastToOptions,
1274  BuiltinOptions::Rfft2dOptions,
1275  BuiltinOptions::Conv3DOptions,
1276  BuiltinOptions::HashtableOptions,
1277  BuiltinOptions::HashtableFindOptions,
1278  BuiltinOptions::HashtableImportOptions,
1279  BuiltinOptions::HashtableSizeOptions,
1280  BuiltinOptions::VarHandleOptions,
1281  BuiltinOptions::ReadVariableOptions,
1282  BuiltinOptions::AssignVariableOptions,
1283  BuiltinOptions::RandomOptions,
1284  BuiltinOptions::BucketizeOptions,
1285  BuiltinOptions::GeluOptions,
1286  BuiltinOptions::DynamicUpdateSliceOptions,
1287  BuiltinOptions::UnsortedSegmentProdOptions,
1288  BuiltinOptions::UnsortedSegmentMaxOptions,
1289  BuiltinOptions::UnsortedSegmentMinOptions,
1290  BuiltinOptions::UnsortedSegmentSumOptions,
1291  BuiltinOptions::ATan2Options,
1292  BuiltinOptions::SignOptions,
1293  BuiltinOptions::BitcastOptions,
1294  BuiltinOptions::BitwiseXorOptions,
1295  BuiltinOptions::RightShiftOptions,
1296];
1297
1298#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1299#[repr(transparent)]
1300pub struct BuiltinOptions(pub u8);
1301#[allow(non_upper_case_globals)]
1302impl BuiltinOptions {
1303  pub const NONE: Self = Self(0);
1304  pub const Conv2DOptions: Self = Self(1);
1305  pub const DepthwiseConv2DOptions: Self = Self(2);
1306  pub const ConcatEmbeddingsOptions: Self = Self(3);
1307  pub const LSHProjectionOptions: Self = Self(4);
1308  pub const Pool2DOptions: Self = Self(5);
1309  pub const SVDFOptions: Self = Self(6);
1310  pub const RNNOptions: Self = Self(7);
1311  pub const FullyConnectedOptions: Self = Self(8);
1312  pub const SoftmaxOptions: Self = Self(9);
1313  pub const ConcatenationOptions: Self = Self(10);
1314  pub const AddOptions: Self = Self(11);
1315  pub const L2NormOptions: Self = Self(12);
1316  pub const LocalResponseNormalizationOptions: Self = Self(13);
1317  pub const LSTMOptions: Self = Self(14);
1318  pub const ResizeBilinearOptions: Self = Self(15);
1319  pub const CallOptions: Self = Self(16);
1320  pub const ReshapeOptions: Self = Self(17);
1321  pub const SkipGramOptions: Self = Self(18);
1322  pub const SpaceToDepthOptions: Self = Self(19);
1323  pub const EmbeddingLookupSparseOptions: Self = Self(20);
1324  pub const MulOptions: Self = Self(21);
1325  pub const PadOptions: Self = Self(22);
1326  pub const GatherOptions: Self = Self(23);
1327  pub const BatchToSpaceNDOptions: Self = Self(24);
1328  pub const SpaceToBatchNDOptions: Self = Self(25);
1329  pub const TransposeOptions: Self = Self(26);
1330  pub const ReducerOptions: Self = Self(27);
1331  pub const SubOptions: Self = Self(28);
1332  pub const DivOptions: Self = Self(29);
1333  pub const SqueezeOptions: Self = Self(30);
1334  pub const SequenceRNNOptions: Self = Self(31);
1335  pub const StridedSliceOptions: Self = Self(32);
1336  pub const ExpOptions: Self = Self(33);
1337  pub const TopKV2Options: Self = Self(34);
1338  pub const SplitOptions: Self = Self(35);
1339  pub const LogSoftmaxOptions: Self = Self(36);
1340  pub const CastOptions: Self = Self(37);
1341  pub const DequantizeOptions: Self = Self(38);
1342  pub const MaximumMinimumOptions: Self = Self(39);
1343  pub const ArgMaxOptions: Self = Self(40);
1344  pub const LessOptions: Self = Self(41);
1345  pub const NegOptions: Self = Self(42);
1346  pub const PadV2Options: Self = Self(43);
1347  pub const GreaterOptions: Self = Self(44);
1348  pub const GreaterEqualOptions: Self = Self(45);
1349  pub const LessEqualOptions: Self = Self(46);
1350  pub const SelectOptions: Self = Self(47);
1351  pub const SliceOptions: Self = Self(48);
1352  pub const TransposeConvOptions: Self = Self(49);
1353  pub const SparseToDenseOptions: Self = Self(50);
1354  pub const TileOptions: Self = Self(51);
1355  pub const ExpandDimsOptions: Self = Self(52);
1356  pub const EqualOptions: Self = Self(53);
1357  pub const NotEqualOptions: Self = Self(54);
1358  pub const ShapeOptions: Self = Self(55);
1359  pub const PowOptions: Self = Self(56);
1360  pub const ArgMinOptions: Self = Self(57);
1361  pub const FakeQuantOptions: Self = Self(58);
1362  pub const PackOptions: Self = Self(59);
1363  pub const LogicalOrOptions: Self = Self(60);
1364  pub const OneHotOptions: Self = Self(61);
1365  pub const LogicalAndOptions: Self = Self(62);
1366  pub const LogicalNotOptions: Self = Self(63);
1367  pub const UnpackOptions: Self = Self(64);
1368  pub const FloorDivOptions: Self = Self(65);
1369  pub const SquareOptions: Self = Self(66);
1370  pub const ZerosLikeOptions: Self = Self(67);
1371  pub const FillOptions: Self = Self(68);
1372  pub const BidirectionalSequenceLSTMOptions: Self = Self(69);
1373  pub const BidirectionalSequenceRNNOptions: Self = Self(70);
1374  pub const UnidirectionalSequenceLSTMOptions: Self = Self(71);
1375  pub const FloorModOptions: Self = Self(72);
1376  pub const RangeOptions: Self = Self(73);
1377  pub const ResizeNearestNeighborOptions: Self = Self(74);
1378  pub const LeakyReluOptions: Self = Self(75);
1379  pub const SquaredDifferenceOptions: Self = Self(76);
1380  pub const MirrorPadOptions: Self = Self(77);
1381  pub const AbsOptions: Self = Self(78);
1382  pub const SplitVOptions: Self = Self(79);
1383  pub const UniqueOptions: Self = Self(80);
1384  pub const ReverseV2Options: Self = Self(81);
1385  pub const AddNOptions: Self = Self(82);
1386  pub const GatherNdOptions: Self = Self(83);
1387  pub const CosOptions: Self = Self(84);
1388  pub const WhereOptions: Self = Self(85);
1389  pub const RankOptions: Self = Self(86);
1390  pub const ReverseSequenceOptions: Self = Self(87);
1391  pub const MatrixDiagOptions: Self = Self(88);
1392  pub const QuantizeOptions: Self = Self(89);
1393  pub const MatrixSetDiagOptions: Self = Self(90);
1394  pub const HardSwishOptions: Self = Self(91);
1395  pub const IfOptions: Self = Self(92);
1396  pub const WhileOptions: Self = Self(93);
1397  pub const DepthToSpaceOptions: Self = Self(94);
1398  pub const NonMaxSuppressionV4Options: Self = Self(95);
1399  pub const NonMaxSuppressionV5Options: Self = Self(96);
1400  pub const ScatterNdOptions: Self = Self(97);
1401  pub const SelectV2Options: Self = Self(98);
1402  pub const DensifyOptions: Self = Self(99);
1403  pub const SegmentSumOptions: Self = Self(100);
1404  pub const BatchMatMulOptions: Self = Self(101);
1405  pub const CumsumOptions: Self = Self(102);
1406  pub const CallOnceOptions: Self = Self(103);
1407  pub const BroadcastToOptions: Self = Self(104);
1408  pub const Rfft2dOptions: Self = Self(105);
1409  pub const Conv3DOptions: Self = Self(106);
1410  pub const HashtableOptions: Self = Self(107);
1411  pub const HashtableFindOptions: Self = Self(108);
1412  pub const HashtableImportOptions: Self = Self(109);
1413  pub const HashtableSizeOptions: Self = Self(110);
1414  pub const VarHandleOptions: Self = Self(111);
1415  pub const ReadVariableOptions: Self = Self(112);
1416  pub const AssignVariableOptions: Self = Self(113);
1417  pub const RandomOptions: Self = Self(114);
1418  pub const BucketizeOptions: Self = Self(115);
1419  pub const GeluOptions: Self = Self(116);
1420  pub const DynamicUpdateSliceOptions: Self = Self(117);
1421  pub const UnsortedSegmentProdOptions: Self = Self(118);
1422  pub const UnsortedSegmentMaxOptions: Self = Self(119);
1423  pub const UnsortedSegmentMinOptions: Self = Self(120);
1424  pub const UnsortedSegmentSumOptions: Self = Self(121);
1425  pub const ATan2Options: Self = Self(122);
1426  pub const SignOptions: Self = Self(123);
1427  pub const BitcastOptions: Self = Self(124);
1428  pub const BitwiseXorOptions: Self = Self(125);
1429  pub const RightShiftOptions: Self = Self(126);
1430
1431  pub const ENUM_MIN: u8 = 0;
1432  pub const ENUM_MAX: u8 = 126;
1433  pub const ENUM_VALUES: &'static [Self] = &[
1434    Self::NONE,
1435    Self::Conv2DOptions,
1436    Self::DepthwiseConv2DOptions,
1437    Self::ConcatEmbeddingsOptions,
1438    Self::LSHProjectionOptions,
1439    Self::Pool2DOptions,
1440    Self::SVDFOptions,
1441    Self::RNNOptions,
1442    Self::FullyConnectedOptions,
1443    Self::SoftmaxOptions,
1444    Self::ConcatenationOptions,
1445    Self::AddOptions,
1446    Self::L2NormOptions,
1447    Self::LocalResponseNormalizationOptions,
1448    Self::LSTMOptions,
1449    Self::ResizeBilinearOptions,
1450    Self::CallOptions,
1451    Self::ReshapeOptions,
1452    Self::SkipGramOptions,
1453    Self::SpaceToDepthOptions,
1454    Self::EmbeddingLookupSparseOptions,
1455    Self::MulOptions,
1456    Self::PadOptions,
1457    Self::GatherOptions,
1458    Self::BatchToSpaceNDOptions,
1459    Self::SpaceToBatchNDOptions,
1460    Self::TransposeOptions,
1461    Self::ReducerOptions,
1462    Self::SubOptions,
1463    Self::DivOptions,
1464    Self::SqueezeOptions,
1465    Self::SequenceRNNOptions,
1466    Self::StridedSliceOptions,
1467    Self::ExpOptions,
1468    Self::TopKV2Options,
1469    Self::SplitOptions,
1470    Self::LogSoftmaxOptions,
1471    Self::CastOptions,
1472    Self::DequantizeOptions,
1473    Self::MaximumMinimumOptions,
1474    Self::ArgMaxOptions,
1475    Self::LessOptions,
1476    Self::NegOptions,
1477    Self::PadV2Options,
1478    Self::GreaterOptions,
1479    Self::GreaterEqualOptions,
1480    Self::LessEqualOptions,
1481    Self::SelectOptions,
1482    Self::SliceOptions,
1483    Self::TransposeConvOptions,
1484    Self::SparseToDenseOptions,
1485    Self::TileOptions,
1486    Self::ExpandDimsOptions,
1487    Self::EqualOptions,
1488    Self::NotEqualOptions,
1489    Self::ShapeOptions,
1490    Self::PowOptions,
1491    Self::ArgMinOptions,
1492    Self::FakeQuantOptions,
1493    Self::PackOptions,
1494    Self::LogicalOrOptions,
1495    Self::OneHotOptions,
1496    Self::LogicalAndOptions,
1497    Self::LogicalNotOptions,
1498    Self::UnpackOptions,
1499    Self::FloorDivOptions,
1500    Self::SquareOptions,
1501    Self::ZerosLikeOptions,
1502    Self::FillOptions,
1503    Self::BidirectionalSequenceLSTMOptions,
1504    Self::BidirectionalSequenceRNNOptions,
1505    Self::UnidirectionalSequenceLSTMOptions,
1506    Self::FloorModOptions,
1507    Self::RangeOptions,
1508    Self::ResizeNearestNeighborOptions,
1509    Self::LeakyReluOptions,
1510    Self::SquaredDifferenceOptions,
1511    Self::MirrorPadOptions,
1512    Self::AbsOptions,
1513    Self::SplitVOptions,
1514    Self::UniqueOptions,
1515    Self::ReverseV2Options,
1516    Self::AddNOptions,
1517    Self::GatherNdOptions,
1518    Self::CosOptions,
1519    Self::WhereOptions,
1520    Self::RankOptions,
1521    Self::ReverseSequenceOptions,
1522    Self::MatrixDiagOptions,
1523    Self::QuantizeOptions,
1524    Self::MatrixSetDiagOptions,
1525    Self::HardSwishOptions,
1526    Self::IfOptions,
1527    Self::WhileOptions,
1528    Self::DepthToSpaceOptions,
1529    Self::NonMaxSuppressionV4Options,
1530    Self::NonMaxSuppressionV5Options,
1531    Self::ScatterNdOptions,
1532    Self::SelectV2Options,
1533    Self::DensifyOptions,
1534    Self::SegmentSumOptions,
1535    Self::BatchMatMulOptions,
1536    Self::CumsumOptions,
1537    Self::CallOnceOptions,
1538    Self::BroadcastToOptions,
1539    Self::Rfft2dOptions,
1540    Self::Conv3DOptions,
1541    Self::HashtableOptions,
1542    Self::HashtableFindOptions,
1543    Self::HashtableImportOptions,
1544    Self::HashtableSizeOptions,
1545    Self::VarHandleOptions,
1546    Self::ReadVariableOptions,
1547    Self::AssignVariableOptions,
1548    Self::RandomOptions,
1549    Self::BucketizeOptions,
1550    Self::GeluOptions,
1551    Self::DynamicUpdateSliceOptions,
1552    Self::UnsortedSegmentProdOptions,
1553    Self::UnsortedSegmentMaxOptions,
1554    Self::UnsortedSegmentMinOptions,
1555    Self::UnsortedSegmentSumOptions,
1556    Self::ATan2Options,
1557    Self::SignOptions,
1558    Self::BitcastOptions,
1559    Self::BitwiseXorOptions,
1560    Self::RightShiftOptions,
1561  ];
1562  /// Returns the variant's name or "" if unknown.
1563  pub fn variant_name(self) -> Option<&'static str> {
1564    match self {
1565      Self::NONE => Some("NONE"),
1566      Self::Conv2DOptions => Some("Conv2DOptions"),
1567      Self::DepthwiseConv2DOptions => Some("DepthwiseConv2DOptions"),
1568      Self::ConcatEmbeddingsOptions => Some("ConcatEmbeddingsOptions"),
1569      Self::LSHProjectionOptions => Some("LSHProjectionOptions"),
1570      Self::Pool2DOptions => Some("Pool2DOptions"),
1571      Self::SVDFOptions => Some("SVDFOptions"),
1572      Self::RNNOptions => Some("RNNOptions"),
1573      Self::FullyConnectedOptions => Some("FullyConnectedOptions"),
1574      Self::SoftmaxOptions => Some("SoftmaxOptions"),
1575      Self::ConcatenationOptions => Some("ConcatenationOptions"),
1576      Self::AddOptions => Some("AddOptions"),
1577      Self::L2NormOptions => Some("L2NormOptions"),
1578      Self::LocalResponseNormalizationOptions => Some("LocalResponseNormalizationOptions"),
1579      Self::LSTMOptions => Some("LSTMOptions"),
1580      Self::ResizeBilinearOptions => Some("ResizeBilinearOptions"),
1581      Self::CallOptions => Some("CallOptions"),
1582      Self::ReshapeOptions => Some("ReshapeOptions"),
1583      Self::SkipGramOptions => Some("SkipGramOptions"),
1584      Self::SpaceToDepthOptions => Some("SpaceToDepthOptions"),
1585      Self::EmbeddingLookupSparseOptions => Some("EmbeddingLookupSparseOptions"),
1586      Self::MulOptions => Some("MulOptions"),
1587      Self::PadOptions => Some("PadOptions"),
1588      Self::GatherOptions => Some("GatherOptions"),
1589      Self::BatchToSpaceNDOptions => Some("BatchToSpaceNDOptions"),
1590      Self::SpaceToBatchNDOptions => Some("SpaceToBatchNDOptions"),
1591      Self::TransposeOptions => Some("TransposeOptions"),
1592      Self::ReducerOptions => Some("ReducerOptions"),
1593      Self::SubOptions => Some("SubOptions"),
1594      Self::DivOptions => Some("DivOptions"),
1595      Self::SqueezeOptions => Some("SqueezeOptions"),
1596      Self::SequenceRNNOptions => Some("SequenceRNNOptions"),
1597      Self::StridedSliceOptions => Some("StridedSliceOptions"),
1598      Self::ExpOptions => Some("ExpOptions"),
1599      Self::TopKV2Options => Some("TopKV2Options"),
1600      Self::SplitOptions => Some("SplitOptions"),
1601      Self::LogSoftmaxOptions => Some("LogSoftmaxOptions"),
1602      Self::CastOptions => Some("CastOptions"),
1603      Self::DequantizeOptions => Some("DequantizeOptions"),
1604      Self::MaximumMinimumOptions => Some("MaximumMinimumOptions"),
1605      Self::ArgMaxOptions => Some("ArgMaxOptions"),
1606      Self::LessOptions => Some("LessOptions"),
1607      Self::NegOptions => Some("NegOptions"),
1608      Self::PadV2Options => Some("PadV2Options"),
1609      Self::GreaterOptions => Some("GreaterOptions"),
1610      Self::GreaterEqualOptions => Some("GreaterEqualOptions"),
1611      Self::LessEqualOptions => Some("LessEqualOptions"),
1612      Self::SelectOptions => Some("SelectOptions"),
1613      Self::SliceOptions => Some("SliceOptions"),
1614      Self::TransposeConvOptions => Some("TransposeConvOptions"),
1615      Self::SparseToDenseOptions => Some("SparseToDenseOptions"),
1616      Self::TileOptions => Some("TileOptions"),
1617      Self::ExpandDimsOptions => Some("ExpandDimsOptions"),
1618      Self::EqualOptions => Some("EqualOptions"),
1619      Self::NotEqualOptions => Some("NotEqualOptions"),
1620      Self::ShapeOptions => Some("ShapeOptions"),
1621      Self::PowOptions => Some("PowOptions"),
1622      Self::ArgMinOptions => Some("ArgMinOptions"),
1623      Self::FakeQuantOptions => Some("FakeQuantOptions"),
1624      Self::PackOptions => Some("PackOptions"),
1625      Self::LogicalOrOptions => Some("LogicalOrOptions"),
1626      Self::OneHotOptions => Some("OneHotOptions"),
1627      Self::LogicalAndOptions => Some("LogicalAndOptions"),
1628      Self::LogicalNotOptions => Some("LogicalNotOptions"),
1629      Self::UnpackOptions => Some("UnpackOptions"),
1630      Self::FloorDivOptions => Some("FloorDivOptions"),
1631      Self::SquareOptions => Some("SquareOptions"),
1632      Self::ZerosLikeOptions => Some("ZerosLikeOptions"),
1633      Self::FillOptions => Some("FillOptions"),
1634      Self::BidirectionalSequenceLSTMOptions => Some("BidirectionalSequenceLSTMOptions"),
1635      Self::BidirectionalSequenceRNNOptions => Some("BidirectionalSequenceRNNOptions"),
1636      Self::UnidirectionalSequenceLSTMOptions => Some("UnidirectionalSequenceLSTMOptions"),
1637      Self::FloorModOptions => Some("FloorModOptions"),
1638      Self::RangeOptions => Some("RangeOptions"),
1639      Self::ResizeNearestNeighborOptions => Some("ResizeNearestNeighborOptions"),
1640      Self::LeakyReluOptions => Some("LeakyReluOptions"),
1641      Self::SquaredDifferenceOptions => Some("SquaredDifferenceOptions"),
1642      Self::MirrorPadOptions => Some("MirrorPadOptions"),
1643      Self::AbsOptions => Some("AbsOptions"),
1644      Self::SplitVOptions => Some("SplitVOptions"),
1645      Self::UniqueOptions => Some("UniqueOptions"),
1646      Self::ReverseV2Options => Some("ReverseV2Options"),
1647      Self::AddNOptions => Some("AddNOptions"),
1648      Self::GatherNdOptions => Some("GatherNdOptions"),
1649      Self::CosOptions => Some("CosOptions"),
1650      Self::WhereOptions => Some("WhereOptions"),
1651      Self::RankOptions => Some("RankOptions"),
1652      Self::ReverseSequenceOptions => Some("ReverseSequenceOptions"),
1653      Self::MatrixDiagOptions => Some("MatrixDiagOptions"),
1654      Self::QuantizeOptions => Some("QuantizeOptions"),
1655      Self::MatrixSetDiagOptions => Some("MatrixSetDiagOptions"),
1656      Self::HardSwishOptions => Some("HardSwishOptions"),
1657      Self::IfOptions => Some("IfOptions"),
1658      Self::WhileOptions => Some("WhileOptions"),
1659      Self::DepthToSpaceOptions => Some("DepthToSpaceOptions"),
1660      Self::NonMaxSuppressionV4Options => Some("NonMaxSuppressionV4Options"),
1661      Self::NonMaxSuppressionV5Options => Some("NonMaxSuppressionV5Options"),
1662      Self::ScatterNdOptions => Some("ScatterNdOptions"),
1663      Self::SelectV2Options => Some("SelectV2Options"),
1664      Self::DensifyOptions => Some("DensifyOptions"),
1665      Self::SegmentSumOptions => Some("SegmentSumOptions"),
1666      Self::BatchMatMulOptions => Some("BatchMatMulOptions"),
1667      Self::CumsumOptions => Some("CumsumOptions"),
1668      Self::CallOnceOptions => Some("CallOnceOptions"),
1669      Self::BroadcastToOptions => Some("BroadcastToOptions"),
1670      Self::Rfft2dOptions => Some("Rfft2dOptions"),
1671      Self::Conv3DOptions => Some("Conv3DOptions"),
1672      Self::HashtableOptions => Some("HashtableOptions"),
1673      Self::HashtableFindOptions => Some("HashtableFindOptions"),
1674      Self::HashtableImportOptions => Some("HashtableImportOptions"),
1675      Self::HashtableSizeOptions => Some("HashtableSizeOptions"),
1676      Self::VarHandleOptions => Some("VarHandleOptions"),
1677      Self::ReadVariableOptions => Some("ReadVariableOptions"),
1678      Self::AssignVariableOptions => Some("AssignVariableOptions"),
1679      Self::RandomOptions => Some("RandomOptions"),
1680      Self::BucketizeOptions => Some("BucketizeOptions"),
1681      Self::GeluOptions => Some("GeluOptions"),
1682      Self::DynamicUpdateSliceOptions => Some("DynamicUpdateSliceOptions"),
1683      Self::UnsortedSegmentProdOptions => Some("UnsortedSegmentProdOptions"),
1684      Self::UnsortedSegmentMaxOptions => Some("UnsortedSegmentMaxOptions"),
1685      Self::UnsortedSegmentMinOptions => Some("UnsortedSegmentMinOptions"),
1686      Self::UnsortedSegmentSumOptions => Some("UnsortedSegmentSumOptions"),
1687      Self::ATan2Options => Some("ATan2Options"),
1688      Self::SignOptions => Some("SignOptions"),
1689      Self::BitcastOptions => Some("BitcastOptions"),
1690      Self::BitwiseXorOptions => Some("BitwiseXorOptions"),
1691      Self::RightShiftOptions => Some("RightShiftOptions"),
1692      _ => None,
1693    }
1694  }
1695}
1696impl core::fmt::Debug for BuiltinOptions {
1697  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1698    if let Some(name) = self.variant_name() {
1699      f.write_str(name)
1700    } else {
1701      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1702    }
1703  }
1704}
1705impl<'a> flatbuffers::Follow<'a> for BuiltinOptions {
1706  type Inner = Self;
1707  #[inline]
1708  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1709    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1710    Self(b)
1711  }
1712}
1713
1714impl flatbuffers::Push for BuiltinOptions {
1715    type Output = BuiltinOptions;
1716    #[inline]
1717    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1718        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1719    }
1720}
1721
1722impl flatbuffers::EndianScalar for BuiltinOptions {
1723  type Scalar = u8;
1724  #[inline]
1725  fn to_little_endian(self) -> u8 {
1726    self.0.to_le()
1727  }
1728  #[inline]
1729  #[allow(clippy::wrong_self_convention)]
1730  fn from_little_endian(v: u8) -> Self {
1731    let b = u8::from_le(v);
1732    Self(b)
1733  }
1734}
1735
1736impl<'a> flatbuffers::Verifiable for BuiltinOptions {
1737  #[inline]
1738  fn run_verifier(
1739    v: &mut flatbuffers::Verifier, pos: usize
1740  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1741    use self::flatbuffers::Verifiable;
1742    u8::run_verifier(v, pos)
1743  }
1744}
1745
1746impl flatbuffers::SimpleToVerifyInSlice for BuiltinOptions {}
1747pub struct BuiltinOptionsUnionTableOffset {}
1748
1749#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1750pub const ENUM_MIN_PADDING: i8 = 0;
1751#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1752pub const ENUM_MAX_PADDING: i8 = 1;
1753#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1754#[allow(non_camel_case_types)]
1755pub const ENUM_VALUES_PADDING: [Padding; 2] = [
1756  Padding::SAME,
1757  Padding::VALID,
1758];
1759
1760#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1761#[repr(transparent)]
1762pub struct Padding(pub i8);
1763#[allow(non_upper_case_globals)]
1764impl Padding {
1765  pub const SAME: Self = Self(0);
1766  pub const VALID: Self = Self(1);
1767
1768  pub const ENUM_MIN: i8 = 0;
1769  pub const ENUM_MAX: i8 = 1;
1770  pub const ENUM_VALUES: &'static [Self] = &[
1771    Self::SAME,
1772    Self::VALID,
1773  ];
1774  /// Returns the variant's name or "" if unknown.
1775  pub fn variant_name(self) -> Option<&'static str> {
1776    match self {
1777      Self::SAME => Some("SAME"),
1778      Self::VALID => Some("VALID"),
1779      _ => None,
1780    }
1781  }
1782}
1783impl core::fmt::Debug for Padding {
1784  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1785    if let Some(name) = self.variant_name() {
1786      f.write_str(name)
1787    } else {
1788      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1789    }
1790  }
1791}
1792impl<'a> flatbuffers::Follow<'a> for Padding {
1793  type Inner = Self;
1794  #[inline]
1795  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1796    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
1797    Self(b)
1798  }
1799}
1800
1801impl flatbuffers::Push for Padding {
1802    type Output = Padding;
1803    #[inline]
1804    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1805        flatbuffers::emplace_scalar::<i8>(dst, self.0);
1806    }
1807}
1808
1809impl flatbuffers::EndianScalar for Padding {
1810  type Scalar = i8;
1811  #[inline]
1812  fn to_little_endian(self) -> i8 {
1813    self.0.to_le()
1814  }
1815  #[inline]
1816  #[allow(clippy::wrong_self_convention)]
1817  fn from_little_endian(v: i8) -> Self {
1818    let b = i8::from_le(v);
1819    Self(b)
1820  }
1821}
1822
1823impl<'a> flatbuffers::Verifiable for Padding {
1824  #[inline]
1825  fn run_verifier(
1826    v: &mut flatbuffers::Verifier, pos: usize
1827  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1828    use self::flatbuffers::Verifiable;
1829    i8::run_verifier(v, pos)
1830  }
1831}
1832
1833impl flatbuffers::SimpleToVerifyInSlice for Padding {}
1834#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1835pub const ENUM_MIN_ACTIVATION_FUNCTION_TYPE: i8 = 0;
1836#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1837pub const ENUM_MAX_ACTIVATION_FUNCTION_TYPE: i8 = 5;
1838#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1839#[allow(non_camel_case_types)]
1840pub const ENUM_VALUES_ACTIVATION_FUNCTION_TYPE: [ActivationFunctionType; 6] = [
1841  ActivationFunctionType::NONE,
1842  ActivationFunctionType::RELU,
1843  ActivationFunctionType::RELU_N1_TO_1,
1844  ActivationFunctionType::RELU6,
1845  ActivationFunctionType::TANH,
1846  ActivationFunctionType::SIGN_BIT,
1847];
1848
1849#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1850#[repr(transparent)]
1851pub struct ActivationFunctionType(pub i8);
1852#[allow(non_upper_case_globals)]
1853impl ActivationFunctionType {
1854  pub const NONE: Self = Self(0);
1855  pub const RELU: Self = Self(1);
1856  pub const RELU_N1_TO_1: Self = Self(2);
1857  pub const RELU6: Self = Self(3);
1858  pub const TANH: Self = Self(4);
1859  pub const SIGN_BIT: Self = Self(5);
1860
1861  pub const ENUM_MIN: i8 = 0;
1862  pub const ENUM_MAX: i8 = 5;
1863  pub const ENUM_VALUES: &'static [Self] = &[
1864    Self::NONE,
1865    Self::RELU,
1866    Self::RELU_N1_TO_1,
1867    Self::RELU6,
1868    Self::TANH,
1869    Self::SIGN_BIT,
1870  ];
1871  /// Returns the variant's name or "" if unknown.
1872  pub fn variant_name(self) -> Option<&'static str> {
1873    match self {
1874      Self::NONE => Some("NONE"),
1875      Self::RELU => Some("RELU"),
1876      Self::RELU_N1_TO_1 => Some("RELU_N1_TO_1"),
1877      Self::RELU6 => Some("RELU6"),
1878      Self::TANH => Some("TANH"),
1879      Self::SIGN_BIT => Some("SIGN_BIT"),
1880      _ => None,
1881    }
1882  }
1883}
1884impl core::fmt::Debug for ActivationFunctionType {
1885  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1886    if let Some(name) = self.variant_name() {
1887      f.write_str(name)
1888    } else {
1889      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1890    }
1891  }
1892}
1893impl<'a> flatbuffers::Follow<'a> for ActivationFunctionType {
1894  type Inner = Self;
1895  #[inline]
1896  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1897    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
1898    Self(b)
1899  }
1900}
1901
1902impl flatbuffers::Push for ActivationFunctionType {
1903    type Output = ActivationFunctionType;
1904    #[inline]
1905    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1906        flatbuffers::emplace_scalar::<i8>(dst, self.0);
1907    }
1908}
1909
1910impl flatbuffers::EndianScalar for ActivationFunctionType {
1911  type Scalar = i8;
1912  #[inline]
1913  fn to_little_endian(self) -> i8 {
1914    self.0.to_le()
1915  }
1916  #[inline]
1917  #[allow(clippy::wrong_self_convention)]
1918  fn from_little_endian(v: i8) -> Self {
1919    let b = i8::from_le(v);
1920    Self(b)
1921  }
1922}
1923
1924impl<'a> flatbuffers::Verifiable for ActivationFunctionType {
1925  #[inline]
1926  fn run_verifier(
1927    v: &mut flatbuffers::Verifier, pos: usize
1928  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1929    use self::flatbuffers::Verifiable;
1930    i8::run_verifier(v, pos)
1931  }
1932}
1933
1934impl flatbuffers::SimpleToVerifyInSlice for ActivationFunctionType {}
1935#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1936pub const ENUM_MIN_LSHPROJECTION_TYPE: i8 = 0;
1937#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1938pub const ENUM_MAX_LSHPROJECTION_TYPE: i8 = 2;
1939#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1940#[allow(non_camel_case_types)]
1941pub const ENUM_VALUES_LSHPROJECTION_TYPE: [LSHProjectionType; 3] = [
1942  LSHProjectionType::UNKNOWN,
1943  LSHProjectionType::SPARSE,
1944  LSHProjectionType::DENSE,
1945];
1946
1947#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1948#[repr(transparent)]
1949pub struct LSHProjectionType(pub i8);
1950#[allow(non_upper_case_globals)]
1951impl LSHProjectionType {
1952  pub const UNKNOWN: Self = Self(0);
1953  pub const SPARSE: Self = Self(1);
1954  pub const DENSE: Self = Self(2);
1955
1956  pub const ENUM_MIN: i8 = 0;
1957  pub const ENUM_MAX: i8 = 2;
1958  pub const ENUM_VALUES: &'static [Self] = &[
1959    Self::UNKNOWN,
1960    Self::SPARSE,
1961    Self::DENSE,
1962  ];
1963  /// Returns the variant's name or "" if unknown.
1964  pub fn variant_name(self) -> Option<&'static str> {
1965    match self {
1966      Self::UNKNOWN => Some("UNKNOWN"),
1967      Self::SPARSE => Some("SPARSE"),
1968      Self::DENSE => Some("DENSE"),
1969      _ => None,
1970    }
1971  }
1972}
1973impl core::fmt::Debug for LSHProjectionType {
1974  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1975    if let Some(name) = self.variant_name() {
1976      f.write_str(name)
1977    } else {
1978      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1979    }
1980  }
1981}
1982impl<'a> flatbuffers::Follow<'a> for LSHProjectionType {
1983  type Inner = Self;
1984  #[inline]
1985  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1986    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
1987    Self(b)
1988  }
1989}
1990
1991impl flatbuffers::Push for LSHProjectionType {
1992    type Output = LSHProjectionType;
1993    #[inline]
1994    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1995        flatbuffers::emplace_scalar::<i8>(dst, self.0);
1996    }
1997}
1998
1999impl flatbuffers::EndianScalar for LSHProjectionType {
2000  type Scalar = i8;
2001  #[inline]
2002  fn to_little_endian(self) -> i8 {
2003    self.0.to_le()
2004  }
2005  #[inline]
2006  #[allow(clippy::wrong_self_convention)]
2007  fn from_little_endian(v: i8) -> Self {
2008    let b = i8::from_le(v);
2009    Self(b)
2010  }
2011}
2012
2013impl<'a> flatbuffers::Verifiable for LSHProjectionType {
2014  #[inline]
2015  fn run_verifier(
2016    v: &mut flatbuffers::Verifier, pos: usize
2017  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2018    use self::flatbuffers::Verifiable;
2019    i8::run_verifier(v, pos)
2020  }
2021}
2022
2023impl flatbuffers::SimpleToVerifyInSlice for LSHProjectionType {}
2024#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2025pub const ENUM_MIN_FULLY_CONNECTED_OPTIONS_WEIGHTS_FORMAT: i8 = 0;
2026#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2027pub const ENUM_MAX_FULLY_CONNECTED_OPTIONS_WEIGHTS_FORMAT: i8 = 1;
2028#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2029#[allow(non_camel_case_types)]
2030pub const ENUM_VALUES_FULLY_CONNECTED_OPTIONS_WEIGHTS_FORMAT: [FullyConnectedOptionsWeightsFormat; 2] = [
2031  FullyConnectedOptionsWeightsFormat::DEFAULT,
2032  FullyConnectedOptionsWeightsFormat::SHUFFLED4x16INT8,
2033];
2034
2035#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2036#[repr(transparent)]
2037pub struct FullyConnectedOptionsWeightsFormat(pub i8);
2038#[allow(non_upper_case_globals)]
2039impl FullyConnectedOptionsWeightsFormat {
2040  pub const DEFAULT: Self = Self(0);
2041  pub const SHUFFLED4x16INT8: Self = Self(1);
2042
2043  pub const ENUM_MIN: i8 = 0;
2044  pub const ENUM_MAX: i8 = 1;
2045  pub const ENUM_VALUES: &'static [Self] = &[
2046    Self::DEFAULT,
2047    Self::SHUFFLED4x16INT8,
2048  ];
2049  /// Returns the variant's name or "" if unknown.
2050  pub fn variant_name(self) -> Option<&'static str> {
2051    match self {
2052      Self::DEFAULT => Some("DEFAULT"),
2053      Self::SHUFFLED4x16INT8 => Some("SHUFFLED4x16INT8"),
2054      _ => None,
2055    }
2056  }
2057}
2058impl core::fmt::Debug for FullyConnectedOptionsWeightsFormat {
2059  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2060    if let Some(name) = self.variant_name() {
2061      f.write_str(name)
2062    } else {
2063      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2064    }
2065  }
2066}
2067impl<'a> flatbuffers::Follow<'a> for FullyConnectedOptionsWeightsFormat {
2068  type Inner = Self;
2069  #[inline]
2070  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2071    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
2072    Self(b)
2073  }
2074}
2075
2076impl flatbuffers::Push for FullyConnectedOptionsWeightsFormat {
2077    type Output = FullyConnectedOptionsWeightsFormat;
2078    #[inline]
2079    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2080        flatbuffers::emplace_scalar::<i8>(dst, self.0);
2081    }
2082}
2083
2084impl flatbuffers::EndianScalar for FullyConnectedOptionsWeightsFormat {
2085  type Scalar = i8;
2086  #[inline]
2087  fn to_little_endian(self) -> i8 {
2088    self.0.to_le()
2089  }
2090  #[inline]
2091  #[allow(clippy::wrong_self_convention)]
2092  fn from_little_endian(v: i8) -> Self {
2093    let b = i8::from_le(v);
2094    Self(b)
2095  }
2096}
2097
2098impl<'a> flatbuffers::Verifiable for FullyConnectedOptionsWeightsFormat {
2099  #[inline]
2100  fn run_verifier(
2101    v: &mut flatbuffers::Verifier, pos: usize
2102  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2103    use self::flatbuffers::Verifiable;
2104    i8::run_verifier(v, pos)
2105  }
2106}
2107
2108impl flatbuffers::SimpleToVerifyInSlice for FullyConnectedOptionsWeightsFormat {}
2109#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2110pub const ENUM_MIN_LSTMKERNEL_TYPE: i8 = 0;
2111#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2112pub const ENUM_MAX_LSTMKERNEL_TYPE: i8 = 1;
2113#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2114#[allow(non_camel_case_types)]
2115pub const ENUM_VALUES_LSTMKERNEL_TYPE: [LSTMKernelType; 2] = [
2116  LSTMKernelType::FULL,
2117  LSTMKernelType::BASIC,
2118];
2119
2120#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2121#[repr(transparent)]
2122pub struct LSTMKernelType(pub i8);
2123#[allow(non_upper_case_globals)]
2124impl LSTMKernelType {
2125  pub const FULL: Self = Self(0);
2126  pub const BASIC: Self = Self(1);
2127
2128  pub const ENUM_MIN: i8 = 0;
2129  pub const ENUM_MAX: i8 = 1;
2130  pub const ENUM_VALUES: &'static [Self] = &[
2131    Self::FULL,
2132    Self::BASIC,
2133  ];
2134  /// Returns the variant's name or "" if unknown.
2135  pub fn variant_name(self) -> Option<&'static str> {
2136    match self {
2137      Self::FULL => Some("FULL"),
2138      Self::BASIC => Some("BASIC"),
2139      _ => None,
2140    }
2141  }
2142}
2143impl core::fmt::Debug for LSTMKernelType {
2144  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2145    if let Some(name) = self.variant_name() {
2146      f.write_str(name)
2147    } else {
2148      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2149    }
2150  }
2151}
2152impl<'a> flatbuffers::Follow<'a> for LSTMKernelType {
2153  type Inner = Self;
2154  #[inline]
2155  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2156    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
2157    Self(b)
2158  }
2159}
2160
2161impl flatbuffers::Push for LSTMKernelType {
2162    type Output = LSTMKernelType;
2163    #[inline]
2164    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2165        flatbuffers::emplace_scalar::<i8>(dst, self.0);
2166    }
2167}
2168
2169impl flatbuffers::EndianScalar for LSTMKernelType {
2170  type Scalar = i8;
2171  #[inline]
2172  fn to_little_endian(self) -> i8 {
2173    self.0.to_le()
2174  }
2175  #[inline]
2176  #[allow(clippy::wrong_self_convention)]
2177  fn from_little_endian(v: i8) -> Self {
2178    let b = i8::from_le(v);
2179    Self(b)
2180  }
2181}
2182
2183impl<'a> flatbuffers::Verifiable for LSTMKernelType {
2184  #[inline]
2185  fn run_verifier(
2186    v: &mut flatbuffers::Verifier, pos: usize
2187  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2188    use self::flatbuffers::Verifiable;
2189    i8::run_verifier(v, pos)
2190  }
2191}
2192
2193impl flatbuffers::SimpleToVerifyInSlice for LSTMKernelType {}
2194#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2195pub const ENUM_MIN_COMBINER_TYPE: i8 = 0;
2196#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2197pub const ENUM_MAX_COMBINER_TYPE: i8 = 2;
2198#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2199#[allow(non_camel_case_types)]
2200pub const ENUM_VALUES_COMBINER_TYPE: [CombinerType; 3] = [
2201  CombinerType::SUM,
2202  CombinerType::MEAN,
2203  CombinerType::SQRTN,
2204];
2205
2206#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2207#[repr(transparent)]
2208pub struct CombinerType(pub i8);
2209#[allow(non_upper_case_globals)]
2210impl CombinerType {
2211  pub const SUM: Self = Self(0);
2212  pub const MEAN: Self = Self(1);
2213  pub const SQRTN: Self = Self(2);
2214
2215  pub const ENUM_MIN: i8 = 0;
2216  pub const ENUM_MAX: i8 = 2;
2217  pub const ENUM_VALUES: &'static [Self] = &[
2218    Self::SUM,
2219    Self::MEAN,
2220    Self::SQRTN,
2221  ];
2222  /// Returns the variant's name or "" if unknown.
2223  pub fn variant_name(self) -> Option<&'static str> {
2224    match self {
2225      Self::SUM => Some("SUM"),
2226      Self::MEAN => Some("MEAN"),
2227      Self::SQRTN => Some("SQRTN"),
2228      _ => None,
2229    }
2230  }
2231}
2232impl core::fmt::Debug for CombinerType {
2233  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2234    if let Some(name) = self.variant_name() {
2235      f.write_str(name)
2236    } else {
2237      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2238    }
2239  }
2240}
2241impl<'a> flatbuffers::Follow<'a> for CombinerType {
2242  type Inner = Self;
2243  #[inline]
2244  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2245    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
2246    Self(b)
2247  }
2248}
2249
2250impl flatbuffers::Push for CombinerType {
2251    type Output = CombinerType;
2252    #[inline]
2253    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2254        flatbuffers::emplace_scalar::<i8>(dst, self.0);
2255    }
2256}
2257
2258impl flatbuffers::EndianScalar for CombinerType {
2259  type Scalar = i8;
2260  #[inline]
2261  fn to_little_endian(self) -> i8 {
2262    self.0.to_le()
2263  }
2264  #[inline]
2265  #[allow(clippy::wrong_self_convention)]
2266  fn from_little_endian(v: i8) -> Self {
2267    let b = i8::from_le(v);
2268    Self(b)
2269  }
2270}
2271
2272impl<'a> flatbuffers::Verifiable for CombinerType {
2273  #[inline]
2274  fn run_verifier(
2275    v: &mut flatbuffers::Verifier, pos: usize
2276  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2277    use self::flatbuffers::Verifiable;
2278    i8::run_verifier(v, pos)
2279  }
2280}
2281
2282impl flatbuffers::SimpleToVerifyInSlice for CombinerType {}
2283#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2284pub const ENUM_MIN_MIRROR_PAD_MODE: i8 = 0;
2285#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2286pub const ENUM_MAX_MIRROR_PAD_MODE: i8 = 1;
2287#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2288#[allow(non_camel_case_types)]
2289pub const ENUM_VALUES_MIRROR_PAD_MODE: [MirrorPadMode; 2] = [
2290  MirrorPadMode::REFLECT,
2291  MirrorPadMode::SYMMETRIC,
2292];
2293
2294#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2295#[repr(transparent)]
2296pub struct MirrorPadMode(pub i8);
2297#[allow(non_upper_case_globals)]
2298impl MirrorPadMode {
2299  pub const REFLECT: Self = Self(0);
2300  pub const SYMMETRIC: Self = Self(1);
2301
2302  pub const ENUM_MIN: i8 = 0;
2303  pub const ENUM_MAX: i8 = 1;
2304  pub const ENUM_VALUES: &'static [Self] = &[
2305    Self::REFLECT,
2306    Self::SYMMETRIC,
2307  ];
2308  /// Returns the variant's name or "" if unknown.
2309  pub fn variant_name(self) -> Option<&'static str> {
2310    match self {
2311      Self::REFLECT => Some("REFLECT"),
2312      Self::SYMMETRIC => Some("SYMMETRIC"),
2313      _ => None,
2314    }
2315  }
2316}
2317impl core::fmt::Debug for MirrorPadMode {
2318  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2319    if let Some(name) = self.variant_name() {
2320      f.write_str(name)
2321    } else {
2322      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2323    }
2324  }
2325}
2326impl<'a> flatbuffers::Follow<'a> for MirrorPadMode {
2327  type Inner = Self;
2328  #[inline]
2329  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2330    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
2331    Self(b)
2332  }
2333}
2334
2335impl flatbuffers::Push for MirrorPadMode {
2336    type Output = MirrorPadMode;
2337    #[inline]
2338    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2339        flatbuffers::emplace_scalar::<i8>(dst, self.0);
2340    }
2341}
2342
2343impl flatbuffers::EndianScalar for MirrorPadMode {
2344  type Scalar = i8;
2345  #[inline]
2346  fn to_little_endian(self) -> i8 {
2347    self.0.to_le()
2348  }
2349  #[inline]
2350  #[allow(clippy::wrong_self_convention)]
2351  fn from_little_endian(v: i8) -> Self {
2352    let b = i8::from_le(v);
2353    Self(b)
2354  }
2355}
2356
2357impl<'a> flatbuffers::Verifiable for MirrorPadMode {
2358  #[inline]
2359  fn run_verifier(
2360    v: &mut flatbuffers::Verifier, pos: usize
2361  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2362    use self::flatbuffers::Verifiable;
2363    i8::run_verifier(v, pos)
2364  }
2365}
2366
2367impl flatbuffers::SimpleToVerifyInSlice for MirrorPadMode {}
2368#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2369pub const ENUM_MIN_CUSTOM_OPTIONS_FORMAT: i8 = 0;
2370#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2371pub const ENUM_MAX_CUSTOM_OPTIONS_FORMAT: i8 = 0;
2372#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2373#[allow(non_camel_case_types)]
2374pub const ENUM_VALUES_CUSTOM_OPTIONS_FORMAT: [CustomOptionsFormat; 1] = [
2375  CustomOptionsFormat::FLEXBUFFERS,
2376];
2377
2378#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2379#[repr(transparent)]
2380pub struct CustomOptionsFormat(pub i8);
2381#[allow(non_upper_case_globals)]
2382impl CustomOptionsFormat {
2383  pub const FLEXBUFFERS: Self = Self(0);
2384
2385  pub const ENUM_MIN: i8 = 0;
2386  pub const ENUM_MAX: i8 = 0;
2387  pub const ENUM_VALUES: &'static [Self] = &[
2388    Self::FLEXBUFFERS,
2389  ];
2390  /// Returns the variant's name or "" if unknown.
2391  pub fn variant_name(self) -> Option<&'static str> {
2392    match self {
2393      Self::FLEXBUFFERS => Some("FLEXBUFFERS"),
2394      _ => None,
2395    }
2396  }
2397}
2398impl core::fmt::Debug for CustomOptionsFormat {
2399  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2400    if let Some(name) = self.variant_name() {
2401      f.write_str(name)
2402    } else {
2403      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2404    }
2405  }
2406}
2407impl<'a> flatbuffers::Follow<'a> for CustomOptionsFormat {
2408  type Inner = Self;
2409  #[inline]
2410  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2411    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
2412    Self(b)
2413  }
2414}
2415
2416impl flatbuffers::Push for CustomOptionsFormat {
2417    type Output = CustomOptionsFormat;
2418    #[inline]
2419    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2420        flatbuffers::emplace_scalar::<i8>(dst, self.0);
2421    }
2422}
2423
2424impl flatbuffers::EndianScalar for CustomOptionsFormat {
2425  type Scalar = i8;
2426  #[inline]
2427  fn to_little_endian(self) -> i8 {
2428    self.0.to_le()
2429  }
2430  #[inline]
2431  #[allow(clippy::wrong_self_convention)]
2432  fn from_little_endian(v: i8) -> Self {
2433    let b = i8::from_le(v);
2434    Self(b)
2435  }
2436}
2437
2438impl<'a> flatbuffers::Verifiable for CustomOptionsFormat {
2439  #[inline]
2440  fn run_verifier(
2441    v: &mut flatbuffers::Verifier, pos: usize
2442  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2443    use self::flatbuffers::Verifiable;
2444    i8::run_verifier(v, pos)
2445  }
2446}
2447
2448impl flatbuffers::SimpleToVerifyInSlice for CustomOptionsFormat {}
2449pub enum CustomQuantizationOffset {}
2450#[derive(Copy, Clone, PartialEq)]
2451
2452pub struct CustomQuantization<'a> {
2453  pub _tab: flatbuffers::Table<'a>,
2454}
2455
2456impl<'a> flatbuffers::Follow<'a> for CustomQuantization<'a> {
2457  type Inner = CustomQuantization<'a>;
2458  #[inline]
2459  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2460    Self { _tab: flatbuffers::Table::new(buf, loc) }
2461  }
2462}
2463
2464impl<'a> CustomQuantization<'a> {
2465  pub const VT_CUSTOM: flatbuffers::VOffsetT = 4;
2466
2467  #[inline]
2468  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
2469    CustomQuantization { _tab: table }
2470  }
2471  #[allow(unused_mut)]
2472  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
2473    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
2474    args: &'args CustomQuantizationArgs<'args>
2475  ) -> flatbuffers::WIPOffset<CustomQuantization<'bldr>> {
2476    let mut builder = CustomQuantizationBuilder::new(_fbb);
2477    if let Some(x) = args.custom { builder.add_custom(x); }
2478    builder.finish()
2479  }
2480
2481
2482  #[inline]
2483  pub fn custom(&self) -> Option<flatbuffers::Vector<'a, u8>> {
2484    // Safety:
2485    // Created from valid Table for this object
2486    // which contains a valid value in this slot
2487    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(CustomQuantization::VT_CUSTOM, None)}
2488  }
2489}
2490
2491impl flatbuffers::Verifiable for CustomQuantization<'_> {
2492  #[inline]
2493  fn run_verifier(
2494    v: &mut flatbuffers::Verifier, pos: usize
2495  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2496    use self::flatbuffers::Verifiable;
2497    v.visit_table(pos)?
2498     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("custom", Self::VT_CUSTOM, false)?
2499     .finish();
2500    Ok(())
2501  }
2502}
2503pub struct CustomQuantizationArgs<'a> {
2504    pub custom: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
2505}
2506impl<'a> Default for CustomQuantizationArgs<'a> {
2507  #[inline]
2508  fn default() -> Self {
2509    CustomQuantizationArgs {
2510      custom: None,
2511    }
2512  }
2513}
2514
2515pub struct CustomQuantizationBuilder<'a: 'b, 'b> {
2516  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
2517  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
2518}
2519impl<'a: 'b, 'b> CustomQuantizationBuilder<'a, 'b> {
2520  #[inline]
2521  pub fn add_custom(&mut self, custom: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
2522    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(CustomQuantization::VT_CUSTOM, custom);
2523  }
2524  #[inline]
2525  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CustomQuantizationBuilder<'a, 'b> {
2526    let start = _fbb.start_table();
2527    CustomQuantizationBuilder {
2528      fbb_: _fbb,
2529      start_: start,
2530    }
2531  }
2532  #[inline]
2533  pub fn finish(self) -> flatbuffers::WIPOffset<CustomQuantization<'a>> {
2534    let o = self.fbb_.end_table(self.start_);
2535    flatbuffers::WIPOffset::new(o.value())
2536  }
2537}
2538
2539impl core::fmt::Debug for CustomQuantization<'_> {
2540  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2541    let mut ds = f.debug_struct("CustomQuantization");
2542      ds.field("custom", &self.custom());
2543      ds.finish()
2544  }
2545}
2546pub enum QuantizationParametersOffset {}
2547#[derive(Copy, Clone, PartialEq)]
2548
2549pub struct QuantizationParameters<'a> {
2550  pub _tab: flatbuffers::Table<'a>,
2551}
2552
2553impl<'a> flatbuffers::Follow<'a> for QuantizationParameters<'a> {
2554  type Inner = QuantizationParameters<'a>;
2555  #[inline]
2556  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2557    Self { _tab: flatbuffers::Table::new(buf, loc) }
2558  }
2559}
2560
2561impl<'a> QuantizationParameters<'a> {
2562  pub const VT_MIN: flatbuffers::VOffsetT = 4;
2563  pub const VT_MAX: flatbuffers::VOffsetT = 6;
2564  pub const VT_SCALE: flatbuffers::VOffsetT = 8;
2565  pub const VT_ZERO_POINT: flatbuffers::VOffsetT = 10;
2566  pub const VT_DETAILS_TYPE: flatbuffers::VOffsetT = 12;
2567  pub const VT_DETAILS: flatbuffers::VOffsetT = 14;
2568  pub const VT_QUANTIZED_DIMENSION: flatbuffers::VOffsetT = 16;
2569
2570  #[inline]
2571  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
2572    QuantizationParameters { _tab: table }
2573  }
2574  #[allow(unused_mut)]
2575  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
2576    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
2577    args: &'args QuantizationParametersArgs<'args>
2578  ) -> flatbuffers::WIPOffset<QuantizationParameters<'bldr>> {
2579    let mut builder = QuantizationParametersBuilder::new(_fbb);
2580    builder.add_quantized_dimension(args.quantized_dimension);
2581    if let Some(x) = args.details { builder.add_details(x); }
2582    if let Some(x) = args.zero_point { builder.add_zero_point(x); }
2583    if let Some(x) = args.scale { builder.add_scale(x); }
2584    if let Some(x) = args.max { builder.add_max(x); }
2585    if let Some(x) = args.min { builder.add_min(x); }
2586    builder.add_details_type(args.details_type);
2587    builder.finish()
2588  }
2589
2590
2591  #[inline]
2592  pub fn min(&self) -> Option<flatbuffers::Vector<'a, f32>> {
2593    // Safety:
2594    // Created from valid Table for this object
2595    // which contains a valid value in this slot
2596    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f32>>>(QuantizationParameters::VT_MIN, None)}
2597  }
2598  #[inline]
2599  pub fn max(&self) -> Option<flatbuffers::Vector<'a, f32>> {
2600    // Safety:
2601    // Created from valid Table for this object
2602    // which contains a valid value in this slot
2603    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f32>>>(QuantizationParameters::VT_MAX, None)}
2604  }
2605  #[inline]
2606  pub fn scale(&self) -> Option<flatbuffers::Vector<'a, f32>> {
2607    // Safety:
2608    // Created from valid Table for this object
2609    // which contains a valid value in this slot
2610    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f32>>>(QuantizationParameters::VT_SCALE, None)}
2611  }
2612  #[inline]
2613  pub fn zero_point(&self) -> Option<flatbuffers::Vector<'a, i64>> {
2614    // Safety:
2615    // Created from valid Table for this object
2616    // which contains a valid value in this slot
2617    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i64>>>(QuantizationParameters::VT_ZERO_POINT, None)}
2618  }
2619  #[inline]
2620  pub fn details_type(&self) -> QuantizationDetails {
2621    // Safety:
2622    // Created from valid Table for this object
2623    // which contains a valid value in this slot
2624    unsafe { self._tab.get::<QuantizationDetails>(QuantizationParameters::VT_DETAILS_TYPE, Some(QuantizationDetails::NONE)).unwrap()}
2625  }
2626  #[inline]
2627  pub fn details(&self) -> Option<flatbuffers::Table<'a>> {
2628    // Safety:
2629    // Created from valid Table for this object
2630    // which contains a valid value in this slot
2631    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(QuantizationParameters::VT_DETAILS, None)}
2632  }
2633  #[inline]
2634  pub fn quantized_dimension(&self) -> i32 {
2635    // Safety:
2636    // Created from valid Table for this object
2637    // which contains a valid value in this slot
2638    unsafe { self._tab.get::<i32>(QuantizationParameters::VT_QUANTIZED_DIMENSION, Some(0)).unwrap()}
2639  }
2640  #[inline]
2641  #[allow(non_snake_case)]
2642  pub fn details_as_custom_quantization(&self) -> Option<CustomQuantization<'a>> {
2643    if self.details_type() == QuantizationDetails::CustomQuantization {
2644      self.details().map(|t| {
2645       // Safety:
2646       // Created from a valid Table for this object
2647       // Which contains a valid union in this slot
2648       unsafe { CustomQuantization::init_from_table(t) }
2649     })
2650    } else {
2651      None
2652    }
2653  }
2654
2655}
2656
2657impl flatbuffers::Verifiable for QuantizationParameters<'_> {
2658  #[inline]
2659  fn run_verifier(
2660    v: &mut flatbuffers::Verifier, pos: usize
2661  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2662    use self::flatbuffers::Verifiable;
2663    v.visit_table(pos)?
2664     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f32>>>("min", Self::VT_MIN, false)?
2665     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f32>>>("max", Self::VT_MAX, false)?
2666     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f32>>>("scale", Self::VT_SCALE, false)?
2667     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i64>>>("zero_point", Self::VT_ZERO_POINT, false)?
2668     .visit_union::<QuantizationDetails, _>("details_type", Self::VT_DETAILS_TYPE, "details", Self::VT_DETAILS, false, |key, v, pos| {
2669        match key {
2670          QuantizationDetails::CustomQuantization => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CustomQuantization>>("QuantizationDetails::CustomQuantization", pos),
2671          _ => Ok(()),
2672        }
2673     })?
2674     .visit_field::<i32>("quantized_dimension", Self::VT_QUANTIZED_DIMENSION, false)?
2675     .finish();
2676    Ok(())
2677  }
2678}
2679pub struct QuantizationParametersArgs<'a> {
2680    pub min: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f32>>>,
2681    pub max: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f32>>>,
2682    pub scale: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f32>>>,
2683    pub zero_point: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i64>>>,
2684    pub details_type: QuantizationDetails,
2685    pub details: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
2686    pub quantized_dimension: i32,
2687}
2688impl<'a> Default for QuantizationParametersArgs<'a> {
2689  #[inline]
2690  fn default() -> Self {
2691    QuantizationParametersArgs {
2692      min: None,
2693      max: None,
2694      scale: None,
2695      zero_point: None,
2696      details_type: QuantizationDetails::NONE,
2697      details: None,
2698      quantized_dimension: 0,
2699    }
2700  }
2701}
2702
2703pub struct QuantizationParametersBuilder<'a: 'b, 'b> {
2704  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
2705  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
2706}
2707impl<'a: 'b, 'b> QuantizationParametersBuilder<'a, 'b> {
2708  #[inline]
2709  pub fn add_min(&mut self, min: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f32>>) {
2710    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(QuantizationParameters::VT_MIN, min);
2711  }
2712  #[inline]
2713  pub fn add_max(&mut self, max: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f32>>) {
2714    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(QuantizationParameters::VT_MAX, max);
2715  }
2716  #[inline]
2717  pub fn add_scale(&mut self, scale: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f32>>) {
2718    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(QuantizationParameters::VT_SCALE, scale);
2719  }
2720  #[inline]
2721  pub fn add_zero_point(&mut self, zero_point: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i64>>) {
2722    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(QuantizationParameters::VT_ZERO_POINT, zero_point);
2723  }
2724  #[inline]
2725  pub fn add_details_type(&mut self, details_type: QuantizationDetails) {
2726    self.fbb_.push_slot::<QuantizationDetails>(QuantizationParameters::VT_DETAILS_TYPE, details_type, QuantizationDetails::NONE);
2727  }
2728  #[inline]
2729  pub fn add_details(&mut self, details: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
2730    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(QuantizationParameters::VT_DETAILS, details);
2731  }
2732  #[inline]
2733  pub fn add_quantized_dimension(&mut self, quantized_dimension: i32) {
2734    self.fbb_.push_slot::<i32>(QuantizationParameters::VT_QUANTIZED_DIMENSION, quantized_dimension, 0);
2735  }
2736  #[inline]
2737  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuantizationParametersBuilder<'a, 'b> {
2738    let start = _fbb.start_table();
2739    QuantizationParametersBuilder {
2740      fbb_: _fbb,
2741      start_: start,
2742    }
2743  }
2744  #[inline]
2745  pub fn finish(self) -> flatbuffers::WIPOffset<QuantizationParameters<'a>> {
2746    let o = self.fbb_.end_table(self.start_);
2747    flatbuffers::WIPOffset::new(o.value())
2748  }
2749}
2750
2751impl core::fmt::Debug for QuantizationParameters<'_> {
2752  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2753    let mut ds = f.debug_struct("QuantizationParameters");
2754      ds.field("min", &self.min());
2755      ds.field("max", &self.max());
2756      ds.field("scale", &self.scale());
2757      ds.field("zero_point", &self.zero_point());
2758      ds.field("details_type", &self.details_type());
2759      match self.details_type() {
2760        QuantizationDetails::CustomQuantization => {
2761          if let Some(x) = self.details_as_custom_quantization() {
2762            ds.field("details", &x)
2763          } else {
2764            ds.field("details", &"InvalidFlatbuffer: Union discriminant does not match value.")
2765          }
2766        },
2767        _ => {
2768          let x: Option<()> = None;
2769          ds.field("details", &x)
2770        },
2771      };
2772      ds.field("quantized_dimension", &self.quantized_dimension());
2773      ds.finish()
2774  }
2775}
2776pub enum Int32VectorOffset {}
2777#[derive(Copy, Clone, PartialEq)]
2778
2779pub struct Int32Vector<'a> {
2780  pub _tab: flatbuffers::Table<'a>,
2781}
2782
2783impl<'a> flatbuffers::Follow<'a> for Int32Vector<'a> {
2784  type Inner = Int32Vector<'a>;
2785  #[inline]
2786  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2787    Self { _tab: flatbuffers::Table::new(buf, loc) }
2788  }
2789}
2790
2791impl<'a> Int32Vector<'a> {
2792  pub const VT_VALUES: flatbuffers::VOffsetT = 4;
2793
2794  #[inline]
2795  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
2796    Int32Vector { _tab: table }
2797  }
2798  #[allow(unused_mut)]
2799  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
2800    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
2801    args: &'args Int32VectorArgs<'args>
2802  ) -> flatbuffers::WIPOffset<Int32Vector<'bldr>> {
2803    let mut builder = Int32VectorBuilder::new(_fbb);
2804    if let Some(x) = args.values { builder.add_values(x); }
2805    builder.finish()
2806  }
2807
2808
2809  #[inline]
2810  pub fn values(&self) -> Option<flatbuffers::Vector<'a, i32>> {
2811    // Safety:
2812    // Created from valid Table for this object
2813    // which contains a valid value in this slot
2814    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Int32Vector::VT_VALUES, None)}
2815  }
2816}
2817
2818impl flatbuffers::Verifiable for Int32Vector<'_> {
2819  #[inline]
2820  fn run_verifier(
2821    v: &mut flatbuffers::Verifier, pos: usize
2822  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2823    use self::flatbuffers::Verifiable;
2824    v.visit_table(pos)?
2825     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("values", Self::VT_VALUES, false)?
2826     .finish();
2827    Ok(())
2828  }
2829}
2830pub struct Int32VectorArgs<'a> {
2831    pub values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
2832}
2833impl<'a> Default for Int32VectorArgs<'a> {
2834  #[inline]
2835  fn default() -> Self {
2836    Int32VectorArgs {
2837      values: None,
2838    }
2839  }
2840}
2841
2842pub struct Int32VectorBuilder<'a: 'b, 'b> {
2843  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
2844  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
2845}
2846impl<'a: 'b, 'b> Int32VectorBuilder<'a, 'b> {
2847  #[inline]
2848  pub fn add_values(&mut self, values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
2849    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Int32Vector::VT_VALUES, values);
2850  }
2851  #[inline]
2852  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Int32VectorBuilder<'a, 'b> {
2853    let start = _fbb.start_table();
2854    Int32VectorBuilder {
2855      fbb_: _fbb,
2856      start_: start,
2857    }
2858  }
2859  #[inline]
2860  pub fn finish(self) -> flatbuffers::WIPOffset<Int32Vector<'a>> {
2861    let o = self.fbb_.end_table(self.start_);
2862    flatbuffers::WIPOffset::new(o.value())
2863  }
2864}
2865
2866impl core::fmt::Debug for Int32Vector<'_> {
2867  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2868    let mut ds = f.debug_struct("Int32Vector");
2869      ds.field("values", &self.values());
2870      ds.finish()
2871  }
2872}
2873pub enum Uint16VectorOffset {}
2874#[derive(Copy, Clone, PartialEq)]
2875
2876pub struct Uint16Vector<'a> {
2877  pub _tab: flatbuffers::Table<'a>,
2878}
2879
2880impl<'a> flatbuffers::Follow<'a> for Uint16Vector<'a> {
2881  type Inner = Uint16Vector<'a>;
2882  #[inline]
2883  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2884    Self { _tab: flatbuffers::Table::new(buf, loc) }
2885  }
2886}
2887
2888impl<'a> Uint16Vector<'a> {
2889  pub const VT_VALUES: flatbuffers::VOffsetT = 4;
2890
2891  #[inline]
2892  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
2893    Uint16Vector { _tab: table }
2894  }
2895  #[allow(unused_mut)]
2896  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
2897    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
2898    args: &'args Uint16VectorArgs<'args>
2899  ) -> flatbuffers::WIPOffset<Uint16Vector<'bldr>> {
2900    let mut builder = Uint16VectorBuilder::new(_fbb);
2901    if let Some(x) = args.values { builder.add_values(x); }
2902    builder.finish()
2903  }
2904
2905
2906  #[inline]
2907  pub fn values(&self) -> Option<flatbuffers::Vector<'a, u16>> {
2908    // Safety:
2909    // Created from valid Table for this object
2910    // which contains a valid value in this slot
2911    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u16>>>(Uint16Vector::VT_VALUES, None)}
2912  }
2913}
2914
2915impl flatbuffers::Verifiable for Uint16Vector<'_> {
2916  #[inline]
2917  fn run_verifier(
2918    v: &mut flatbuffers::Verifier, pos: usize
2919  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2920    use self::flatbuffers::Verifiable;
2921    v.visit_table(pos)?
2922     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u16>>>("values", Self::VT_VALUES, false)?
2923     .finish();
2924    Ok(())
2925  }
2926}
2927pub struct Uint16VectorArgs<'a> {
2928    pub values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u16>>>,
2929}
2930impl<'a> Default for Uint16VectorArgs<'a> {
2931  #[inline]
2932  fn default() -> Self {
2933    Uint16VectorArgs {
2934      values: None,
2935    }
2936  }
2937}
2938
2939pub struct Uint16VectorBuilder<'a: 'b, 'b> {
2940  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
2941  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
2942}
2943impl<'a: 'b, 'b> Uint16VectorBuilder<'a, 'b> {
2944  #[inline]
2945  pub fn add_values(&mut self, values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u16>>) {
2946    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Uint16Vector::VT_VALUES, values);
2947  }
2948  #[inline]
2949  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Uint16VectorBuilder<'a, 'b> {
2950    let start = _fbb.start_table();
2951    Uint16VectorBuilder {
2952      fbb_: _fbb,
2953      start_: start,
2954    }
2955  }
2956  #[inline]
2957  pub fn finish(self) -> flatbuffers::WIPOffset<Uint16Vector<'a>> {
2958    let o = self.fbb_.end_table(self.start_);
2959    flatbuffers::WIPOffset::new(o.value())
2960  }
2961}
2962
2963impl core::fmt::Debug for Uint16Vector<'_> {
2964  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2965    let mut ds = f.debug_struct("Uint16Vector");
2966      ds.field("values", &self.values());
2967      ds.finish()
2968  }
2969}
2970pub enum Uint8VectorOffset {}
2971#[derive(Copy, Clone, PartialEq)]
2972
2973pub struct Uint8Vector<'a> {
2974  pub _tab: flatbuffers::Table<'a>,
2975}
2976
2977impl<'a> flatbuffers::Follow<'a> for Uint8Vector<'a> {
2978  type Inner = Uint8Vector<'a>;
2979  #[inline]
2980  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2981    Self { _tab: flatbuffers::Table::new(buf, loc) }
2982  }
2983}
2984
2985impl<'a> Uint8Vector<'a> {
2986  pub const VT_VALUES: flatbuffers::VOffsetT = 4;
2987
2988  #[inline]
2989  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
2990    Uint8Vector { _tab: table }
2991  }
2992  #[allow(unused_mut)]
2993  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
2994    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
2995    args: &'args Uint8VectorArgs<'args>
2996  ) -> flatbuffers::WIPOffset<Uint8Vector<'bldr>> {
2997    let mut builder = Uint8VectorBuilder::new(_fbb);
2998    if let Some(x) = args.values { builder.add_values(x); }
2999    builder.finish()
3000  }
3001
3002
3003  #[inline]
3004  pub fn values(&self) -> Option<flatbuffers::Vector<'a, u8>> {
3005    // Safety:
3006    // Created from valid Table for this object
3007    // which contains a valid value in this slot
3008    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(Uint8Vector::VT_VALUES, None)}
3009  }
3010}
3011
3012impl flatbuffers::Verifiable for Uint8Vector<'_> {
3013  #[inline]
3014  fn run_verifier(
3015    v: &mut flatbuffers::Verifier, pos: usize
3016  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3017    use self::flatbuffers::Verifiable;
3018    v.visit_table(pos)?
3019     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("values", Self::VT_VALUES, false)?
3020     .finish();
3021    Ok(())
3022  }
3023}
3024pub struct Uint8VectorArgs<'a> {
3025    pub values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
3026}
3027impl<'a> Default for Uint8VectorArgs<'a> {
3028  #[inline]
3029  fn default() -> Self {
3030    Uint8VectorArgs {
3031      values: None,
3032    }
3033  }
3034}
3035
3036pub struct Uint8VectorBuilder<'a: 'b, 'b> {
3037  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
3038  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
3039}
3040impl<'a: 'b, 'b> Uint8VectorBuilder<'a, 'b> {
3041  #[inline]
3042  pub fn add_values(&mut self, values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
3043    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Uint8Vector::VT_VALUES, values);
3044  }
3045  #[inline]
3046  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Uint8VectorBuilder<'a, 'b> {
3047    let start = _fbb.start_table();
3048    Uint8VectorBuilder {
3049      fbb_: _fbb,
3050      start_: start,
3051    }
3052  }
3053  #[inline]
3054  pub fn finish(self) -> flatbuffers::WIPOffset<Uint8Vector<'a>> {
3055    let o = self.fbb_.end_table(self.start_);
3056    flatbuffers::WIPOffset::new(o.value())
3057  }
3058}
3059
3060impl core::fmt::Debug for Uint8Vector<'_> {
3061  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3062    let mut ds = f.debug_struct("Uint8Vector");
3063      ds.field("values", &self.values());
3064      ds.finish()
3065  }
3066}
3067pub enum DimensionMetadataOffset {}
3068#[derive(Copy, Clone, PartialEq)]
3069
3070pub struct DimensionMetadata<'a> {
3071  pub _tab: flatbuffers::Table<'a>,
3072}
3073
3074impl<'a> flatbuffers::Follow<'a> for DimensionMetadata<'a> {
3075  type Inner = DimensionMetadata<'a>;
3076  #[inline]
3077  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3078    Self { _tab: flatbuffers::Table::new(buf, loc) }
3079  }
3080}
3081
3082impl<'a> DimensionMetadata<'a> {
3083  pub const VT_FORMAT: flatbuffers::VOffsetT = 4;
3084  pub const VT_DENSE_SIZE: flatbuffers::VOffsetT = 6;
3085  pub const VT_ARRAY_SEGMENTS_TYPE: flatbuffers::VOffsetT = 8;
3086  pub const VT_ARRAY_SEGMENTS: flatbuffers::VOffsetT = 10;
3087  pub const VT_ARRAY_INDICES_TYPE: flatbuffers::VOffsetT = 12;
3088  pub const VT_ARRAY_INDICES: flatbuffers::VOffsetT = 14;
3089
3090  #[inline]
3091  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
3092    DimensionMetadata { _tab: table }
3093  }
3094  #[allow(unused_mut)]
3095  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
3096    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
3097    args: &'args DimensionMetadataArgs
3098  ) -> flatbuffers::WIPOffset<DimensionMetadata<'bldr>> {
3099    let mut builder = DimensionMetadataBuilder::new(_fbb);
3100    if let Some(x) = args.array_indices { builder.add_array_indices(x); }
3101    if let Some(x) = args.array_segments { builder.add_array_segments(x); }
3102    builder.add_dense_size(args.dense_size);
3103    builder.add_array_indices_type(args.array_indices_type);
3104    builder.add_array_segments_type(args.array_segments_type);
3105    builder.add_format(args.format);
3106    builder.finish()
3107  }
3108
3109
3110  #[inline]
3111  pub fn format(&self) -> DimensionType {
3112    // Safety:
3113    // Created from valid Table for this object
3114    // which contains a valid value in this slot
3115    unsafe { self._tab.get::<DimensionType>(DimensionMetadata::VT_FORMAT, Some(DimensionType::DENSE)).unwrap()}
3116  }
3117  #[inline]
3118  pub fn dense_size(&self) -> i32 {
3119    // Safety:
3120    // Created from valid Table for this object
3121    // which contains a valid value in this slot
3122    unsafe { self._tab.get::<i32>(DimensionMetadata::VT_DENSE_SIZE, Some(0)).unwrap()}
3123  }
3124  #[inline]
3125  pub fn array_segments_type(&self) -> SparseIndexVector {
3126    // Safety:
3127    // Created from valid Table for this object
3128    // which contains a valid value in this slot
3129    unsafe { self._tab.get::<SparseIndexVector>(DimensionMetadata::VT_ARRAY_SEGMENTS_TYPE, Some(SparseIndexVector::NONE)).unwrap()}
3130  }
3131  #[inline]
3132  pub fn array_segments(&self) -> Option<flatbuffers::Table<'a>> {
3133    // Safety:
3134    // Created from valid Table for this object
3135    // which contains a valid value in this slot
3136    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(DimensionMetadata::VT_ARRAY_SEGMENTS, None)}
3137  }
3138  #[inline]
3139  pub fn array_indices_type(&self) -> SparseIndexVector {
3140    // Safety:
3141    // Created from valid Table for this object
3142    // which contains a valid value in this slot
3143    unsafe { self._tab.get::<SparseIndexVector>(DimensionMetadata::VT_ARRAY_INDICES_TYPE, Some(SparseIndexVector::NONE)).unwrap()}
3144  }
3145  #[inline]
3146  pub fn array_indices(&self) -> Option<flatbuffers::Table<'a>> {
3147    // Safety:
3148    // Created from valid Table for this object
3149    // which contains a valid value in this slot
3150    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(DimensionMetadata::VT_ARRAY_INDICES, None)}
3151  }
3152  #[inline]
3153  #[allow(non_snake_case)]
3154  pub fn array_segments_as_int_32_vector(&self) -> Option<Int32Vector<'a>> {
3155    if self.array_segments_type() == SparseIndexVector::Int32Vector {
3156      self.array_segments().map(|t| {
3157       // Safety:
3158       // Created from a valid Table for this object
3159       // Which contains a valid union in this slot
3160       unsafe { Int32Vector::init_from_table(t) }
3161     })
3162    } else {
3163      None
3164    }
3165  }
3166
3167  #[inline]
3168  #[allow(non_snake_case)]
3169  pub fn array_segments_as_uint_16_vector(&self) -> Option<Uint16Vector<'a>> {
3170    if self.array_segments_type() == SparseIndexVector::Uint16Vector {
3171      self.array_segments().map(|t| {
3172       // Safety:
3173       // Created from a valid Table for this object
3174       // Which contains a valid union in this slot
3175       unsafe { Uint16Vector::init_from_table(t) }
3176     })
3177    } else {
3178      None
3179    }
3180  }
3181
3182  #[inline]
3183  #[allow(non_snake_case)]
3184  pub fn array_segments_as_uint_8_vector(&self) -> Option<Uint8Vector<'a>> {
3185    if self.array_segments_type() == SparseIndexVector::Uint8Vector {
3186      self.array_segments().map(|t| {
3187       // Safety:
3188       // Created from a valid Table for this object
3189       // Which contains a valid union in this slot
3190       unsafe { Uint8Vector::init_from_table(t) }
3191     })
3192    } else {
3193      None
3194    }
3195  }
3196
3197  #[inline]
3198  #[allow(non_snake_case)]
3199  pub fn array_indices_as_int_32_vector(&self) -> Option<Int32Vector<'a>> {
3200    if self.array_indices_type() == SparseIndexVector::Int32Vector {
3201      self.array_indices().map(|t| {
3202       // Safety:
3203       // Created from a valid Table for this object
3204       // Which contains a valid union in this slot
3205       unsafe { Int32Vector::init_from_table(t) }
3206     })
3207    } else {
3208      None
3209    }
3210  }
3211
3212  #[inline]
3213  #[allow(non_snake_case)]
3214  pub fn array_indices_as_uint_16_vector(&self) -> Option<Uint16Vector<'a>> {
3215    if self.array_indices_type() == SparseIndexVector::Uint16Vector {
3216      self.array_indices().map(|t| {
3217       // Safety:
3218       // Created from a valid Table for this object
3219       // Which contains a valid union in this slot
3220       unsafe { Uint16Vector::init_from_table(t) }
3221     })
3222    } else {
3223      None
3224    }
3225  }
3226
3227  #[inline]
3228  #[allow(non_snake_case)]
3229  pub fn array_indices_as_uint_8_vector(&self) -> Option<Uint8Vector<'a>> {
3230    if self.array_indices_type() == SparseIndexVector::Uint8Vector {
3231      self.array_indices().map(|t| {
3232       // Safety:
3233       // Created from a valid Table for this object
3234       // Which contains a valid union in this slot
3235       unsafe { Uint8Vector::init_from_table(t) }
3236     })
3237    } else {
3238      None
3239    }
3240  }
3241
3242}
3243
3244impl flatbuffers::Verifiable for DimensionMetadata<'_> {
3245  #[inline]
3246  fn run_verifier(
3247    v: &mut flatbuffers::Verifier, pos: usize
3248  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3249    use self::flatbuffers::Verifiable;
3250    v.visit_table(pos)?
3251     .visit_field::<DimensionType>("format", Self::VT_FORMAT, false)?
3252     .visit_field::<i32>("dense_size", Self::VT_DENSE_SIZE, false)?
3253     .visit_union::<SparseIndexVector, _>("array_segments_type", Self::VT_ARRAY_SEGMENTS_TYPE, "array_segments", Self::VT_ARRAY_SEGMENTS, false, |key, v, pos| {
3254        match key {
3255          SparseIndexVector::Int32Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Int32Vector>>("SparseIndexVector::Int32Vector", pos),
3256          SparseIndexVector::Uint16Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Uint16Vector>>("SparseIndexVector::Uint16Vector", pos),
3257          SparseIndexVector::Uint8Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Uint8Vector>>("SparseIndexVector::Uint8Vector", pos),
3258          _ => Ok(()),
3259        }
3260     })?
3261     .visit_union::<SparseIndexVector, _>("array_indices_type", Self::VT_ARRAY_INDICES_TYPE, "array_indices", Self::VT_ARRAY_INDICES, false, |key, v, pos| {
3262        match key {
3263          SparseIndexVector::Int32Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Int32Vector>>("SparseIndexVector::Int32Vector", pos),
3264          SparseIndexVector::Uint16Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Uint16Vector>>("SparseIndexVector::Uint16Vector", pos),
3265          SparseIndexVector::Uint8Vector => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Uint8Vector>>("SparseIndexVector::Uint8Vector", pos),
3266          _ => Ok(()),
3267        }
3268     })?
3269     .finish();
3270    Ok(())
3271  }
3272}
3273pub struct DimensionMetadataArgs {
3274    pub format: DimensionType,
3275    pub dense_size: i32,
3276    pub array_segments_type: SparseIndexVector,
3277    pub array_segments: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
3278    pub array_indices_type: SparseIndexVector,
3279    pub array_indices: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
3280}
3281impl<'a> Default for DimensionMetadataArgs {
3282  #[inline]
3283  fn default() -> Self {
3284    DimensionMetadataArgs {
3285      format: DimensionType::DENSE,
3286      dense_size: 0,
3287      array_segments_type: SparseIndexVector::NONE,
3288      array_segments: None,
3289      array_indices_type: SparseIndexVector::NONE,
3290      array_indices: None,
3291    }
3292  }
3293}
3294
3295pub struct DimensionMetadataBuilder<'a: 'b, 'b> {
3296  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
3297  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
3298}
3299impl<'a: 'b, 'b> DimensionMetadataBuilder<'a, 'b> {
3300  #[inline]
3301  pub fn add_format(&mut self, format: DimensionType) {
3302    self.fbb_.push_slot::<DimensionType>(DimensionMetadata::VT_FORMAT, format, DimensionType::DENSE);
3303  }
3304  #[inline]
3305  pub fn add_dense_size(&mut self, dense_size: i32) {
3306    self.fbb_.push_slot::<i32>(DimensionMetadata::VT_DENSE_SIZE, dense_size, 0);
3307  }
3308  #[inline]
3309  pub fn add_array_segments_type(&mut self, array_segments_type: SparseIndexVector) {
3310    self.fbb_.push_slot::<SparseIndexVector>(DimensionMetadata::VT_ARRAY_SEGMENTS_TYPE, array_segments_type, SparseIndexVector::NONE);
3311  }
3312  #[inline]
3313  pub fn add_array_segments(&mut self, array_segments: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
3314    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionMetadata::VT_ARRAY_SEGMENTS, array_segments);
3315  }
3316  #[inline]
3317  pub fn add_array_indices_type(&mut self, array_indices_type: SparseIndexVector) {
3318    self.fbb_.push_slot::<SparseIndexVector>(DimensionMetadata::VT_ARRAY_INDICES_TYPE, array_indices_type, SparseIndexVector::NONE);
3319  }
3320  #[inline]
3321  pub fn add_array_indices(&mut self, array_indices: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
3322    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionMetadata::VT_ARRAY_INDICES, array_indices);
3323  }
3324  #[inline]
3325  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DimensionMetadataBuilder<'a, 'b> {
3326    let start = _fbb.start_table();
3327    DimensionMetadataBuilder {
3328      fbb_: _fbb,
3329      start_: start,
3330    }
3331  }
3332  #[inline]
3333  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionMetadata<'a>> {
3334    let o = self.fbb_.end_table(self.start_);
3335    flatbuffers::WIPOffset::new(o.value())
3336  }
3337}
3338
3339impl core::fmt::Debug for DimensionMetadata<'_> {
3340  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3341    let mut ds = f.debug_struct("DimensionMetadata");
3342      ds.field("format", &self.format());
3343      ds.field("dense_size", &self.dense_size());
3344      ds.field("array_segments_type", &self.array_segments_type());
3345      match self.array_segments_type() {
3346        SparseIndexVector::Int32Vector => {
3347          if let Some(x) = self.array_segments_as_int_32_vector() {
3348            ds.field("array_segments", &x)
3349          } else {
3350            ds.field("array_segments", &"InvalidFlatbuffer: Union discriminant does not match value.")
3351          }
3352        },
3353        SparseIndexVector::Uint16Vector => {
3354          if let Some(x) = self.array_segments_as_uint_16_vector() {
3355            ds.field("array_segments", &x)
3356          } else {
3357            ds.field("array_segments", &"InvalidFlatbuffer: Union discriminant does not match value.")
3358          }
3359        },
3360        SparseIndexVector::Uint8Vector => {
3361          if let Some(x) = self.array_segments_as_uint_8_vector() {
3362            ds.field("array_segments", &x)
3363          } else {
3364            ds.field("array_segments", &"InvalidFlatbuffer: Union discriminant does not match value.")
3365          }
3366        },
3367        _ => {
3368          let x: Option<()> = None;
3369          ds.field("array_segments", &x)
3370        },
3371      };
3372      ds.field("array_indices_type", &self.array_indices_type());
3373      match self.array_indices_type() {
3374        SparseIndexVector::Int32Vector => {
3375          if let Some(x) = self.array_indices_as_int_32_vector() {
3376            ds.field("array_indices", &x)
3377          } else {
3378            ds.field("array_indices", &"InvalidFlatbuffer: Union discriminant does not match value.")
3379          }
3380        },
3381        SparseIndexVector::Uint16Vector => {
3382          if let Some(x) = self.array_indices_as_uint_16_vector() {
3383            ds.field("array_indices", &x)
3384          } else {
3385            ds.field("array_indices", &"InvalidFlatbuffer: Union discriminant does not match value.")
3386          }
3387        },
3388        SparseIndexVector::Uint8Vector => {
3389          if let Some(x) = self.array_indices_as_uint_8_vector() {
3390            ds.field("array_indices", &x)
3391          } else {
3392            ds.field("array_indices", &"InvalidFlatbuffer: Union discriminant does not match value.")
3393          }
3394        },
3395        _ => {
3396          let x: Option<()> = None;
3397          ds.field("array_indices", &x)
3398        },
3399      };
3400      ds.finish()
3401  }
3402}
3403pub enum SparsityParametersOffset {}
3404#[derive(Copy, Clone, PartialEq)]
3405
3406pub struct SparsityParameters<'a> {
3407  pub _tab: flatbuffers::Table<'a>,
3408}
3409
3410impl<'a> flatbuffers::Follow<'a> for SparsityParameters<'a> {
3411  type Inner = SparsityParameters<'a>;
3412  #[inline]
3413  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3414    Self { _tab: flatbuffers::Table::new(buf, loc) }
3415  }
3416}
3417
3418impl<'a> SparsityParameters<'a> {
3419  pub const VT_TRAVERSAL_ORDER: flatbuffers::VOffsetT = 4;
3420  pub const VT_BLOCK_MAP: flatbuffers::VOffsetT = 6;
3421  pub const VT_DIM_METADATA: flatbuffers::VOffsetT = 8;
3422
3423  #[inline]
3424  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
3425    SparsityParameters { _tab: table }
3426  }
3427  #[allow(unused_mut)]
3428  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
3429    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
3430    args: &'args SparsityParametersArgs<'args>
3431  ) -> flatbuffers::WIPOffset<SparsityParameters<'bldr>> {
3432    let mut builder = SparsityParametersBuilder::new(_fbb);
3433    if let Some(x) = args.dim_metadata { builder.add_dim_metadata(x); }
3434    if let Some(x) = args.block_map { builder.add_block_map(x); }
3435    if let Some(x) = args.traversal_order { builder.add_traversal_order(x); }
3436    builder.finish()
3437  }
3438
3439
3440  #[inline]
3441  pub fn traversal_order(&self) -> Option<flatbuffers::Vector<'a, i32>> {
3442    // Safety:
3443    // Created from valid Table for this object
3444    // which contains a valid value in this slot
3445    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(SparsityParameters::VT_TRAVERSAL_ORDER, None)}
3446  }
3447  #[inline]
3448  pub fn block_map(&self) -> Option<flatbuffers::Vector<'a, i32>> {
3449    // Safety:
3450    // Created from valid Table for this object
3451    // which contains a valid value in this slot
3452    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(SparsityParameters::VT_BLOCK_MAP, None)}
3453  }
3454  #[inline]
3455  pub fn dim_metadata(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DimensionMetadata<'a>>>> {
3456    // Safety:
3457    // Created from valid Table for this object
3458    // which contains a valid value in this slot
3459    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DimensionMetadata>>>>(SparsityParameters::VT_DIM_METADATA, None)}
3460  }
3461}
3462
3463impl flatbuffers::Verifiable for SparsityParameters<'_> {
3464  #[inline]
3465  fn run_verifier(
3466    v: &mut flatbuffers::Verifier, pos: usize
3467  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3468    use self::flatbuffers::Verifiable;
3469    v.visit_table(pos)?
3470     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("traversal_order", Self::VT_TRAVERSAL_ORDER, false)?
3471     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("block_map", Self::VT_BLOCK_MAP, false)?
3472     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DimensionMetadata>>>>("dim_metadata", Self::VT_DIM_METADATA, false)?
3473     .finish();
3474    Ok(())
3475  }
3476}
3477pub struct SparsityParametersArgs<'a> {
3478    pub traversal_order: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
3479    pub block_map: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
3480    pub dim_metadata: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DimensionMetadata<'a>>>>>,
3481}
3482impl<'a> Default for SparsityParametersArgs<'a> {
3483  #[inline]
3484  fn default() -> Self {
3485    SparsityParametersArgs {
3486      traversal_order: None,
3487      block_map: None,
3488      dim_metadata: None,
3489    }
3490  }
3491}
3492
3493pub struct SparsityParametersBuilder<'a: 'b, 'b> {
3494  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
3495  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
3496}
3497impl<'a: 'b, 'b> SparsityParametersBuilder<'a, 'b> {
3498  #[inline]
3499  pub fn add_traversal_order(&mut self, traversal_order: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
3500    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SparsityParameters::VT_TRAVERSAL_ORDER, traversal_order);
3501  }
3502  #[inline]
3503  pub fn add_block_map(&mut self, block_map: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
3504    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SparsityParameters::VT_BLOCK_MAP, block_map);
3505  }
3506  #[inline]
3507  pub fn add_dim_metadata(&mut self, dim_metadata: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DimensionMetadata<'b >>>>) {
3508    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SparsityParameters::VT_DIM_METADATA, dim_metadata);
3509  }
3510  #[inline]
3511  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SparsityParametersBuilder<'a, 'b> {
3512    let start = _fbb.start_table();
3513    SparsityParametersBuilder {
3514      fbb_: _fbb,
3515      start_: start,
3516    }
3517  }
3518  #[inline]
3519  pub fn finish(self) -> flatbuffers::WIPOffset<SparsityParameters<'a>> {
3520    let o = self.fbb_.end_table(self.start_);
3521    flatbuffers::WIPOffset::new(o.value())
3522  }
3523}
3524
3525impl core::fmt::Debug for SparsityParameters<'_> {
3526  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3527    let mut ds = f.debug_struct("SparsityParameters");
3528      ds.field("traversal_order", &self.traversal_order());
3529      ds.field("block_map", &self.block_map());
3530      ds.field("dim_metadata", &self.dim_metadata());
3531      ds.finish()
3532  }
3533}
3534pub enum VariantSubTypeOffset {}
3535#[derive(Copy, Clone, PartialEq)]
3536
3537pub struct VariantSubType<'a> {
3538  pub _tab: flatbuffers::Table<'a>,
3539}
3540
3541impl<'a> flatbuffers::Follow<'a> for VariantSubType<'a> {
3542  type Inner = VariantSubType<'a>;
3543  #[inline]
3544  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3545    Self { _tab: flatbuffers::Table::new(buf, loc) }
3546  }
3547}
3548
3549impl<'a> VariantSubType<'a> {
3550  pub const VT_SHAPE: flatbuffers::VOffsetT = 4;
3551  pub const VT_TYPE_: flatbuffers::VOffsetT = 6;
3552  pub const VT_HAS_RANK: flatbuffers::VOffsetT = 8;
3553
3554  #[inline]
3555  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
3556    VariantSubType { _tab: table }
3557  }
3558  #[allow(unused_mut)]
3559  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
3560    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
3561    args: &'args VariantSubTypeArgs<'args>
3562  ) -> flatbuffers::WIPOffset<VariantSubType<'bldr>> {
3563    let mut builder = VariantSubTypeBuilder::new(_fbb);
3564    if let Some(x) = args.shape { builder.add_shape(x); }
3565    builder.add_has_rank(args.has_rank);
3566    builder.add_type_(args.type_);
3567    builder.finish()
3568  }
3569
3570
3571  #[inline]
3572  pub fn shape(&self) -> Option<flatbuffers::Vector<'a, i32>> {
3573    // Safety:
3574    // Created from valid Table for this object
3575    // which contains a valid value in this slot
3576    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(VariantSubType::VT_SHAPE, None)}
3577  }
3578  #[inline]
3579  pub fn type_(&self) -> TensorType {
3580    // Safety:
3581    // Created from valid Table for this object
3582    // which contains a valid value in this slot
3583    unsafe { self._tab.get::<TensorType>(VariantSubType::VT_TYPE_, Some(TensorType::FLOAT32)).unwrap()}
3584  }
3585  #[inline]
3586  pub fn has_rank(&self) -> bool {
3587    // Safety:
3588    // Created from valid Table for this object
3589    // which contains a valid value in this slot
3590    unsafe { self._tab.get::<bool>(VariantSubType::VT_HAS_RANK, Some(false)).unwrap()}
3591  }
3592}
3593
3594impl flatbuffers::Verifiable for VariantSubType<'_> {
3595  #[inline]
3596  fn run_verifier(
3597    v: &mut flatbuffers::Verifier, pos: usize
3598  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3599    use self::flatbuffers::Verifiable;
3600    v.visit_table(pos)?
3601     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("shape", Self::VT_SHAPE, false)?
3602     .visit_field::<TensorType>("type_", Self::VT_TYPE_, false)?
3603     .visit_field::<bool>("has_rank", Self::VT_HAS_RANK, false)?
3604     .finish();
3605    Ok(())
3606  }
3607}
3608pub struct VariantSubTypeArgs<'a> {
3609    pub shape: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
3610    pub type_: TensorType,
3611    pub has_rank: bool,
3612}
3613impl<'a> Default for VariantSubTypeArgs<'a> {
3614  #[inline]
3615  fn default() -> Self {
3616    VariantSubTypeArgs {
3617      shape: None,
3618      type_: TensorType::FLOAT32,
3619      has_rank: false,
3620    }
3621  }
3622}
3623
3624pub struct VariantSubTypeBuilder<'a: 'b, 'b> {
3625  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
3626  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
3627}
3628impl<'a: 'b, 'b> VariantSubTypeBuilder<'a, 'b> {
3629  #[inline]
3630  pub fn add_shape(&mut self, shape: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
3631    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VariantSubType::VT_SHAPE, shape);
3632  }
3633  #[inline]
3634  pub fn add_type_(&mut self, type_: TensorType) {
3635    self.fbb_.push_slot::<TensorType>(VariantSubType::VT_TYPE_, type_, TensorType::FLOAT32);
3636  }
3637  #[inline]
3638  pub fn add_has_rank(&mut self, has_rank: bool) {
3639    self.fbb_.push_slot::<bool>(VariantSubType::VT_HAS_RANK, has_rank, false);
3640  }
3641  #[inline]
3642  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> VariantSubTypeBuilder<'a, 'b> {
3643    let start = _fbb.start_table();
3644    VariantSubTypeBuilder {
3645      fbb_: _fbb,
3646      start_: start,
3647    }
3648  }
3649  #[inline]
3650  pub fn finish(self) -> flatbuffers::WIPOffset<VariantSubType<'a>> {
3651    let o = self.fbb_.end_table(self.start_);
3652    flatbuffers::WIPOffset::new(o.value())
3653  }
3654}
3655
3656impl core::fmt::Debug for VariantSubType<'_> {
3657  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3658    let mut ds = f.debug_struct("VariantSubType");
3659      ds.field("shape", &self.shape());
3660      ds.field("type_", &self.type_());
3661      ds.field("has_rank", &self.has_rank());
3662      ds.finish()
3663  }
3664}
3665pub enum TensorOffset {}
3666#[derive(Copy, Clone, PartialEq)]
3667
3668pub struct Tensor<'a> {
3669  pub _tab: flatbuffers::Table<'a>,
3670}
3671
3672impl<'a> flatbuffers::Follow<'a> for Tensor<'a> {
3673  type Inner = Tensor<'a>;
3674  #[inline]
3675  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3676    Self { _tab: flatbuffers::Table::new(buf, loc) }
3677  }
3678}
3679
3680impl<'a> Tensor<'a> {
3681  pub const VT_SHAPE: flatbuffers::VOffsetT = 4;
3682  pub const VT_TYPE_: flatbuffers::VOffsetT = 6;
3683  pub const VT_BUFFER: flatbuffers::VOffsetT = 8;
3684  pub const VT_NAME: flatbuffers::VOffsetT = 10;
3685  pub const VT_QUANTIZATION: flatbuffers::VOffsetT = 12;
3686  pub const VT_IS_VARIABLE: flatbuffers::VOffsetT = 14;
3687  pub const VT_SPARSITY: flatbuffers::VOffsetT = 16;
3688  pub const VT_SHAPE_SIGNATURE: flatbuffers::VOffsetT = 18;
3689  pub const VT_HAS_RANK: flatbuffers::VOffsetT = 20;
3690  pub const VT_VARIANT_TENSORS: flatbuffers::VOffsetT = 22;
3691
3692  #[inline]
3693  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
3694    Tensor { _tab: table }
3695  }
3696  #[allow(unused_mut)]
3697  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
3698    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
3699    args: &'args TensorArgs<'args>
3700  ) -> flatbuffers::WIPOffset<Tensor<'bldr>> {
3701    let mut builder = TensorBuilder::new(_fbb);
3702    if let Some(x) = args.variant_tensors { builder.add_variant_tensors(x); }
3703    if let Some(x) = args.shape_signature { builder.add_shape_signature(x); }
3704    if let Some(x) = args.sparsity { builder.add_sparsity(x); }
3705    if let Some(x) = args.quantization { builder.add_quantization(x); }
3706    if let Some(x) = args.name { builder.add_name(x); }
3707    builder.add_buffer(args.buffer);
3708    if let Some(x) = args.shape { builder.add_shape(x); }
3709    builder.add_has_rank(args.has_rank);
3710    builder.add_is_variable(args.is_variable);
3711    builder.add_type_(args.type_);
3712    builder.finish()
3713  }
3714
3715
3716  #[inline]
3717  pub fn shape(&self) -> Option<flatbuffers::Vector<'a, i32>> {
3718    // Safety:
3719    // Created from valid Table for this object
3720    // which contains a valid value in this slot
3721    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Tensor::VT_SHAPE, None)}
3722  }
3723  #[inline]
3724  pub fn type_(&self) -> TensorType {
3725    // Safety:
3726    // Created from valid Table for this object
3727    // which contains a valid value in this slot
3728    unsafe { self._tab.get::<TensorType>(Tensor::VT_TYPE_, Some(TensorType::FLOAT32)).unwrap()}
3729  }
3730  #[inline]
3731  pub fn buffer(&self) -> u32 {
3732    // Safety:
3733    // Created from valid Table for this object
3734    // which contains a valid value in this slot
3735    unsafe { self._tab.get::<u32>(Tensor::VT_BUFFER, Some(0)).unwrap()}
3736  }
3737  #[inline]
3738  pub fn name(&self) -> Option<&'a str> {
3739    // Safety:
3740    // Created from valid Table for this object
3741    // which contains a valid value in this slot
3742    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Tensor::VT_NAME, None)}
3743  }
3744  #[inline]
3745  pub fn quantization(&self) -> Option<QuantizationParameters<'a>> {
3746    // Safety:
3747    // Created from valid Table for this object
3748    // which contains a valid value in this slot
3749    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<QuantizationParameters>>(Tensor::VT_QUANTIZATION, None)}
3750  }
3751  #[inline]
3752  pub fn is_variable(&self) -> bool {
3753    // Safety:
3754    // Created from valid Table for this object
3755    // which contains a valid value in this slot
3756    unsafe { self._tab.get::<bool>(Tensor::VT_IS_VARIABLE, Some(false)).unwrap()}
3757  }
3758  #[inline]
3759  pub fn sparsity(&self) -> Option<SparsityParameters<'a>> {
3760    // Safety:
3761    // Created from valid Table for this object
3762    // which contains a valid value in this slot
3763    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<SparsityParameters>>(Tensor::VT_SPARSITY, None)}
3764  }
3765  #[inline]
3766  pub fn shape_signature(&self) -> Option<flatbuffers::Vector<'a, i32>> {
3767    // Safety:
3768    // Created from valid Table for this object
3769    // which contains a valid value in this slot
3770    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Tensor::VT_SHAPE_SIGNATURE, None)}
3771  }
3772  #[inline]
3773  pub fn has_rank(&self) -> bool {
3774    // Safety:
3775    // Created from valid Table for this object
3776    // which contains a valid value in this slot
3777    unsafe { self._tab.get::<bool>(Tensor::VT_HAS_RANK, Some(false)).unwrap()}
3778  }
3779  #[inline]
3780  pub fn variant_tensors(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<VariantSubType<'a>>>> {
3781    // Safety:
3782    // Created from valid Table for this object
3783    // which contains a valid value in this slot
3784    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<VariantSubType>>>>(Tensor::VT_VARIANT_TENSORS, None)}
3785  }
3786}
3787
3788impl flatbuffers::Verifiable for Tensor<'_> {
3789  #[inline]
3790  fn run_verifier(
3791    v: &mut flatbuffers::Verifier, pos: usize
3792  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3793    use self::flatbuffers::Verifiable;
3794    v.visit_table(pos)?
3795     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("shape", Self::VT_SHAPE, false)?
3796     .visit_field::<TensorType>("type_", Self::VT_TYPE_, false)?
3797     .visit_field::<u32>("buffer", Self::VT_BUFFER, false)?
3798     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
3799     .visit_field::<flatbuffers::ForwardsUOffset<QuantizationParameters>>("quantization", Self::VT_QUANTIZATION, false)?
3800     .visit_field::<bool>("is_variable", Self::VT_IS_VARIABLE, false)?
3801     .visit_field::<flatbuffers::ForwardsUOffset<SparsityParameters>>("sparsity", Self::VT_SPARSITY, false)?
3802     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("shape_signature", Self::VT_SHAPE_SIGNATURE, false)?
3803     .visit_field::<bool>("has_rank", Self::VT_HAS_RANK, false)?
3804     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<VariantSubType>>>>("variant_tensors", Self::VT_VARIANT_TENSORS, false)?
3805     .finish();
3806    Ok(())
3807  }
3808}
3809pub struct TensorArgs<'a> {
3810    pub shape: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
3811    pub type_: TensorType,
3812    pub buffer: u32,
3813    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
3814    pub quantization: Option<flatbuffers::WIPOffset<QuantizationParameters<'a>>>,
3815    pub is_variable: bool,
3816    pub sparsity: Option<flatbuffers::WIPOffset<SparsityParameters<'a>>>,
3817    pub shape_signature: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
3818    pub has_rank: bool,
3819    pub variant_tensors: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<VariantSubType<'a>>>>>,
3820}
3821impl<'a> Default for TensorArgs<'a> {
3822  #[inline]
3823  fn default() -> Self {
3824    TensorArgs {
3825      shape: None,
3826      type_: TensorType::FLOAT32,
3827      buffer: 0,
3828      name: None,
3829      quantization: None,
3830      is_variable: false,
3831      sparsity: None,
3832      shape_signature: None,
3833      has_rank: false,
3834      variant_tensors: None,
3835    }
3836  }
3837}
3838
3839pub struct TensorBuilder<'a: 'b, 'b> {
3840  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
3841  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
3842}
3843impl<'a: 'b, 'b> TensorBuilder<'a, 'b> {
3844  #[inline]
3845  pub fn add_shape(&mut self, shape: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
3846    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Tensor::VT_SHAPE, shape);
3847  }
3848  #[inline]
3849  pub fn add_type_(&mut self, type_: TensorType) {
3850    self.fbb_.push_slot::<TensorType>(Tensor::VT_TYPE_, type_, TensorType::FLOAT32);
3851  }
3852  #[inline]
3853  pub fn add_buffer(&mut self, buffer: u32) {
3854    self.fbb_.push_slot::<u32>(Tensor::VT_BUFFER, buffer, 0);
3855  }
3856  #[inline]
3857  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
3858    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Tensor::VT_NAME, name);
3859  }
3860  #[inline]
3861  pub fn add_quantization(&mut self, quantization: flatbuffers::WIPOffset<QuantizationParameters<'b >>) {
3862    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<QuantizationParameters>>(Tensor::VT_QUANTIZATION, quantization);
3863  }
3864  #[inline]
3865  pub fn add_is_variable(&mut self, is_variable: bool) {
3866    self.fbb_.push_slot::<bool>(Tensor::VT_IS_VARIABLE, is_variable, false);
3867  }
3868  #[inline]
3869  pub fn add_sparsity(&mut self, sparsity: flatbuffers::WIPOffset<SparsityParameters<'b >>) {
3870    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<SparsityParameters>>(Tensor::VT_SPARSITY, sparsity);
3871  }
3872  #[inline]
3873  pub fn add_shape_signature(&mut self, shape_signature: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
3874    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Tensor::VT_SHAPE_SIGNATURE, shape_signature);
3875  }
3876  #[inline]
3877  pub fn add_has_rank(&mut self, has_rank: bool) {
3878    self.fbb_.push_slot::<bool>(Tensor::VT_HAS_RANK, has_rank, false);
3879  }
3880  #[inline]
3881  pub fn add_variant_tensors(&mut self, variant_tensors: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<VariantSubType<'b >>>>) {
3882    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Tensor::VT_VARIANT_TENSORS, variant_tensors);
3883  }
3884  #[inline]
3885  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TensorBuilder<'a, 'b> {
3886    let start = _fbb.start_table();
3887    TensorBuilder {
3888      fbb_: _fbb,
3889      start_: start,
3890    }
3891  }
3892  #[inline]
3893  pub fn finish(self) -> flatbuffers::WIPOffset<Tensor<'a>> {
3894    let o = self.fbb_.end_table(self.start_);
3895    flatbuffers::WIPOffset::new(o.value())
3896  }
3897}
3898
3899impl core::fmt::Debug for Tensor<'_> {
3900  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3901    let mut ds = f.debug_struct("Tensor");
3902      ds.field("shape", &self.shape());
3903      ds.field("type_", &self.type_());
3904      ds.field("buffer", &self.buffer());
3905      ds.field("name", &self.name());
3906      ds.field("quantization", &self.quantization());
3907      ds.field("is_variable", &self.is_variable());
3908      ds.field("sparsity", &self.sparsity());
3909      ds.field("shape_signature", &self.shape_signature());
3910      ds.field("has_rank", &self.has_rank());
3911      ds.field("variant_tensors", &self.variant_tensors());
3912      ds.finish()
3913  }
3914}
3915pub enum Conv2DOptionsOffset {}
3916#[derive(Copy, Clone, PartialEq)]
3917
3918pub struct Conv2DOptions<'a> {
3919  pub _tab: flatbuffers::Table<'a>,
3920}
3921
3922impl<'a> flatbuffers::Follow<'a> for Conv2DOptions<'a> {
3923  type Inner = Conv2DOptions<'a>;
3924  #[inline]
3925  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3926    Self { _tab: flatbuffers::Table::new(buf, loc) }
3927  }
3928}
3929
3930impl<'a> Conv2DOptions<'a> {
3931  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
3932  pub const VT_STRIDE_W: flatbuffers::VOffsetT = 6;
3933  pub const VT_STRIDE_H: flatbuffers::VOffsetT = 8;
3934  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 10;
3935  pub const VT_DILATION_W_FACTOR: flatbuffers::VOffsetT = 12;
3936  pub const VT_DILATION_H_FACTOR: flatbuffers::VOffsetT = 14;
3937
3938  #[inline]
3939  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
3940    Conv2DOptions { _tab: table }
3941  }
3942  #[allow(unused_mut)]
3943  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
3944    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
3945    args: &'args Conv2DOptionsArgs
3946  ) -> flatbuffers::WIPOffset<Conv2DOptions<'bldr>> {
3947    let mut builder = Conv2DOptionsBuilder::new(_fbb);
3948    builder.add_dilation_h_factor(args.dilation_h_factor);
3949    builder.add_dilation_w_factor(args.dilation_w_factor);
3950    builder.add_stride_h(args.stride_h);
3951    builder.add_stride_w(args.stride_w);
3952    builder.add_fused_activation_function(args.fused_activation_function);
3953    builder.add_padding(args.padding);
3954    builder.finish()
3955  }
3956
3957
3958  #[inline]
3959  pub fn padding(&self) -> Padding {
3960    // Safety:
3961    // Created from valid Table for this object
3962    // which contains a valid value in this slot
3963    unsafe { self._tab.get::<Padding>(Conv2DOptions::VT_PADDING, Some(Padding::SAME)).unwrap()}
3964  }
3965  #[inline]
3966  pub fn stride_w(&self) -> i32 {
3967    // Safety:
3968    // Created from valid Table for this object
3969    // which contains a valid value in this slot
3970    unsafe { self._tab.get::<i32>(Conv2DOptions::VT_STRIDE_W, Some(0)).unwrap()}
3971  }
3972  #[inline]
3973  pub fn stride_h(&self) -> i32 {
3974    // Safety:
3975    // Created from valid Table for this object
3976    // which contains a valid value in this slot
3977    unsafe { self._tab.get::<i32>(Conv2DOptions::VT_STRIDE_H, Some(0)).unwrap()}
3978  }
3979  #[inline]
3980  pub fn fused_activation_function(&self) -> ActivationFunctionType {
3981    // Safety:
3982    // Created from valid Table for this object
3983    // which contains a valid value in this slot
3984    unsafe { self._tab.get::<ActivationFunctionType>(Conv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
3985  }
3986  #[inline]
3987  pub fn dilation_w_factor(&self) -> i32 {
3988    // Safety:
3989    // Created from valid Table for this object
3990    // which contains a valid value in this slot
3991    unsafe { self._tab.get::<i32>(Conv2DOptions::VT_DILATION_W_FACTOR, Some(1)).unwrap()}
3992  }
3993  #[inline]
3994  pub fn dilation_h_factor(&self) -> i32 {
3995    // Safety:
3996    // Created from valid Table for this object
3997    // which contains a valid value in this slot
3998    unsafe { self._tab.get::<i32>(Conv2DOptions::VT_DILATION_H_FACTOR, Some(1)).unwrap()}
3999  }
4000}
4001
4002impl flatbuffers::Verifiable for Conv2DOptions<'_> {
4003  #[inline]
4004  fn run_verifier(
4005    v: &mut flatbuffers::Verifier, pos: usize
4006  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4007    use self::flatbuffers::Verifiable;
4008    v.visit_table(pos)?
4009     .visit_field::<Padding>("padding", Self::VT_PADDING, false)?
4010     .visit_field::<i32>("stride_w", Self::VT_STRIDE_W, false)?
4011     .visit_field::<i32>("stride_h", Self::VT_STRIDE_H, false)?
4012     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
4013     .visit_field::<i32>("dilation_w_factor", Self::VT_DILATION_W_FACTOR, false)?
4014     .visit_field::<i32>("dilation_h_factor", Self::VT_DILATION_H_FACTOR, false)?
4015     .finish();
4016    Ok(())
4017  }
4018}
4019pub struct Conv2DOptionsArgs {
4020    pub padding: Padding,
4021    pub stride_w: i32,
4022    pub stride_h: i32,
4023    pub fused_activation_function: ActivationFunctionType,
4024    pub dilation_w_factor: i32,
4025    pub dilation_h_factor: i32,
4026}
4027impl<'a> Default for Conv2DOptionsArgs {
4028  #[inline]
4029  fn default() -> Self {
4030    Conv2DOptionsArgs {
4031      padding: Padding::SAME,
4032      stride_w: 0,
4033      stride_h: 0,
4034      fused_activation_function: ActivationFunctionType::NONE,
4035      dilation_w_factor: 1,
4036      dilation_h_factor: 1,
4037    }
4038  }
4039}
4040
4041pub struct Conv2DOptionsBuilder<'a: 'b, 'b> {
4042  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4043  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4044}
4045impl<'a: 'b, 'b> Conv2DOptionsBuilder<'a, 'b> {
4046  #[inline]
4047  pub fn add_padding(&mut self, padding: Padding) {
4048    self.fbb_.push_slot::<Padding>(Conv2DOptions::VT_PADDING, padding, Padding::SAME);
4049  }
4050  #[inline]
4051  pub fn add_stride_w(&mut self, stride_w: i32) {
4052    self.fbb_.push_slot::<i32>(Conv2DOptions::VT_STRIDE_W, stride_w, 0);
4053  }
4054  #[inline]
4055  pub fn add_stride_h(&mut self, stride_h: i32) {
4056    self.fbb_.push_slot::<i32>(Conv2DOptions::VT_STRIDE_H, stride_h, 0);
4057  }
4058  #[inline]
4059  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
4060    self.fbb_.push_slot::<ActivationFunctionType>(Conv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
4061  }
4062  #[inline]
4063  pub fn add_dilation_w_factor(&mut self, dilation_w_factor: i32) {
4064    self.fbb_.push_slot::<i32>(Conv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
4065  }
4066  #[inline]
4067  pub fn add_dilation_h_factor(&mut self, dilation_h_factor: i32) {
4068    self.fbb_.push_slot::<i32>(Conv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
4069  }
4070  #[inline]
4071  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Conv2DOptionsBuilder<'a, 'b> {
4072    let start = _fbb.start_table();
4073    Conv2DOptionsBuilder {
4074      fbb_: _fbb,
4075      start_: start,
4076    }
4077  }
4078  #[inline]
4079  pub fn finish(self) -> flatbuffers::WIPOffset<Conv2DOptions<'a>> {
4080    let o = self.fbb_.end_table(self.start_);
4081    flatbuffers::WIPOffset::new(o.value())
4082  }
4083}
4084
4085impl core::fmt::Debug for Conv2DOptions<'_> {
4086  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4087    let mut ds = f.debug_struct("Conv2DOptions");
4088      ds.field("padding", &self.padding());
4089      ds.field("stride_w", &self.stride_w());
4090      ds.field("stride_h", &self.stride_h());
4091      ds.field("fused_activation_function", &self.fused_activation_function());
4092      ds.field("dilation_w_factor", &self.dilation_w_factor());
4093      ds.field("dilation_h_factor", &self.dilation_h_factor());
4094      ds.finish()
4095  }
4096}
4097pub enum Conv3DOptionsOffset {}
4098#[derive(Copy, Clone, PartialEq)]
4099
4100pub struct Conv3DOptions<'a> {
4101  pub _tab: flatbuffers::Table<'a>,
4102}
4103
4104impl<'a> flatbuffers::Follow<'a> for Conv3DOptions<'a> {
4105  type Inner = Conv3DOptions<'a>;
4106  #[inline]
4107  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4108    Self { _tab: flatbuffers::Table::new(buf, loc) }
4109  }
4110}
4111
4112impl<'a> Conv3DOptions<'a> {
4113  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
4114  pub const VT_STRIDE_D: flatbuffers::VOffsetT = 6;
4115  pub const VT_STRIDE_W: flatbuffers::VOffsetT = 8;
4116  pub const VT_STRIDE_H: flatbuffers::VOffsetT = 10;
4117  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 12;
4118  pub const VT_DILATION_D_FACTOR: flatbuffers::VOffsetT = 14;
4119  pub const VT_DILATION_W_FACTOR: flatbuffers::VOffsetT = 16;
4120  pub const VT_DILATION_H_FACTOR: flatbuffers::VOffsetT = 18;
4121
4122  #[inline]
4123  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4124    Conv3DOptions { _tab: table }
4125  }
4126  #[allow(unused_mut)]
4127  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4128    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4129    args: &'args Conv3DOptionsArgs
4130  ) -> flatbuffers::WIPOffset<Conv3DOptions<'bldr>> {
4131    let mut builder = Conv3DOptionsBuilder::new(_fbb);
4132    builder.add_dilation_h_factor(args.dilation_h_factor);
4133    builder.add_dilation_w_factor(args.dilation_w_factor);
4134    builder.add_dilation_d_factor(args.dilation_d_factor);
4135    builder.add_stride_h(args.stride_h);
4136    builder.add_stride_w(args.stride_w);
4137    builder.add_stride_d(args.stride_d);
4138    builder.add_fused_activation_function(args.fused_activation_function);
4139    builder.add_padding(args.padding);
4140    builder.finish()
4141  }
4142
4143
4144  #[inline]
4145  pub fn padding(&self) -> Padding {
4146    // Safety:
4147    // Created from valid Table for this object
4148    // which contains a valid value in this slot
4149    unsafe { self._tab.get::<Padding>(Conv3DOptions::VT_PADDING, Some(Padding::SAME)).unwrap()}
4150  }
4151  #[inline]
4152  pub fn stride_d(&self) -> i32 {
4153    // Safety:
4154    // Created from valid Table for this object
4155    // which contains a valid value in this slot
4156    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_STRIDE_D, Some(0)).unwrap()}
4157  }
4158  #[inline]
4159  pub fn stride_w(&self) -> i32 {
4160    // Safety:
4161    // Created from valid Table for this object
4162    // which contains a valid value in this slot
4163    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_STRIDE_W, Some(0)).unwrap()}
4164  }
4165  #[inline]
4166  pub fn stride_h(&self) -> i32 {
4167    // Safety:
4168    // Created from valid Table for this object
4169    // which contains a valid value in this slot
4170    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_STRIDE_H, Some(0)).unwrap()}
4171  }
4172  #[inline]
4173  pub fn fused_activation_function(&self) -> ActivationFunctionType {
4174    // Safety:
4175    // Created from valid Table for this object
4176    // which contains a valid value in this slot
4177    unsafe { self._tab.get::<ActivationFunctionType>(Conv3DOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
4178  }
4179  #[inline]
4180  pub fn dilation_d_factor(&self) -> i32 {
4181    // Safety:
4182    // Created from valid Table for this object
4183    // which contains a valid value in this slot
4184    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_DILATION_D_FACTOR, Some(1)).unwrap()}
4185  }
4186  #[inline]
4187  pub fn dilation_w_factor(&self) -> i32 {
4188    // Safety:
4189    // Created from valid Table for this object
4190    // which contains a valid value in this slot
4191    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_DILATION_W_FACTOR, Some(1)).unwrap()}
4192  }
4193  #[inline]
4194  pub fn dilation_h_factor(&self) -> i32 {
4195    // Safety:
4196    // Created from valid Table for this object
4197    // which contains a valid value in this slot
4198    unsafe { self._tab.get::<i32>(Conv3DOptions::VT_DILATION_H_FACTOR, Some(1)).unwrap()}
4199  }
4200}
4201
4202impl flatbuffers::Verifiable for Conv3DOptions<'_> {
4203  #[inline]
4204  fn run_verifier(
4205    v: &mut flatbuffers::Verifier, pos: usize
4206  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4207    use self::flatbuffers::Verifiable;
4208    v.visit_table(pos)?
4209     .visit_field::<Padding>("padding", Self::VT_PADDING, false)?
4210     .visit_field::<i32>("stride_d", Self::VT_STRIDE_D, false)?
4211     .visit_field::<i32>("stride_w", Self::VT_STRIDE_W, false)?
4212     .visit_field::<i32>("stride_h", Self::VT_STRIDE_H, false)?
4213     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
4214     .visit_field::<i32>("dilation_d_factor", Self::VT_DILATION_D_FACTOR, false)?
4215     .visit_field::<i32>("dilation_w_factor", Self::VT_DILATION_W_FACTOR, false)?
4216     .visit_field::<i32>("dilation_h_factor", Self::VT_DILATION_H_FACTOR, false)?
4217     .finish();
4218    Ok(())
4219  }
4220}
4221pub struct Conv3DOptionsArgs {
4222    pub padding: Padding,
4223    pub stride_d: i32,
4224    pub stride_w: i32,
4225    pub stride_h: i32,
4226    pub fused_activation_function: ActivationFunctionType,
4227    pub dilation_d_factor: i32,
4228    pub dilation_w_factor: i32,
4229    pub dilation_h_factor: i32,
4230}
4231impl<'a> Default for Conv3DOptionsArgs {
4232  #[inline]
4233  fn default() -> Self {
4234    Conv3DOptionsArgs {
4235      padding: Padding::SAME,
4236      stride_d: 0,
4237      stride_w: 0,
4238      stride_h: 0,
4239      fused_activation_function: ActivationFunctionType::NONE,
4240      dilation_d_factor: 1,
4241      dilation_w_factor: 1,
4242      dilation_h_factor: 1,
4243    }
4244  }
4245}
4246
4247pub struct Conv3DOptionsBuilder<'a: 'b, 'b> {
4248  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4249  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4250}
4251impl<'a: 'b, 'b> Conv3DOptionsBuilder<'a, 'b> {
4252  #[inline]
4253  pub fn add_padding(&mut self, padding: Padding) {
4254    self.fbb_.push_slot::<Padding>(Conv3DOptions::VT_PADDING, padding, Padding::SAME);
4255  }
4256  #[inline]
4257  pub fn add_stride_d(&mut self, stride_d: i32) {
4258    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_STRIDE_D, stride_d, 0);
4259  }
4260  #[inline]
4261  pub fn add_stride_w(&mut self, stride_w: i32) {
4262    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_STRIDE_W, stride_w, 0);
4263  }
4264  #[inline]
4265  pub fn add_stride_h(&mut self, stride_h: i32) {
4266    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_STRIDE_H, stride_h, 0);
4267  }
4268  #[inline]
4269  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
4270    self.fbb_.push_slot::<ActivationFunctionType>(Conv3DOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
4271  }
4272  #[inline]
4273  pub fn add_dilation_d_factor(&mut self, dilation_d_factor: i32) {
4274    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_DILATION_D_FACTOR, dilation_d_factor, 1);
4275  }
4276  #[inline]
4277  pub fn add_dilation_w_factor(&mut self, dilation_w_factor: i32) {
4278    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
4279  }
4280  #[inline]
4281  pub fn add_dilation_h_factor(&mut self, dilation_h_factor: i32) {
4282    self.fbb_.push_slot::<i32>(Conv3DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
4283  }
4284  #[inline]
4285  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Conv3DOptionsBuilder<'a, 'b> {
4286    let start = _fbb.start_table();
4287    Conv3DOptionsBuilder {
4288      fbb_: _fbb,
4289      start_: start,
4290    }
4291  }
4292  #[inline]
4293  pub fn finish(self) -> flatbuffers::WIPOffset<Conv3DOptions<'a>> {
4294    let o = self.fbb_.end_table(self.start_);
4295    flatbuffers::WIPOffset::new(o.value())
4296  }
4297}
4298
4299impl core::fmt::Debug for Conv3DOptions<'_> {
4300  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4301    let mut ds = f.debug_struct("Conv3DOptions");
4302      ds.field("padding", &self.padding());
4303      ds.field("stride_d", &self.stride_d());
4304      ds.field("stride_w", &self.stride_w());
4305      ds.field("stride_h", &self.stride_h());
4306      ds.field("fused_activation_function", &self.fused_activation_function());
4307      ds.field("dilation_d_factor", &self.dilation_d_factor());
4308      ds.field("dilation_w_factor", &self.dilation_w_factor());
4309      ds.field("dilation_h_factor", &self.dilation_h_factor());
4310      ds.finish()
4311  }
4312}
4313pub enum Pool2DOptionsOffset {}
4314#[derive(Copy, Clone, PartialEq)]
4315
4316pub struct Pool2DOptions<'a> {
4317  pub _tab: flatbuffers::Table<'a>,
4318}
4319
4320impl<'a> flatbuffers::Follow<'a> for Pool2DOptions<'a> {
4321  type Inner = Pool2DOptions<'a>;
4322  #[inline]
4323  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4324    Self { _tab: flatbuffers::Table::new(buf, loc) }
4325  }
4326}
4327
4328impl<'a> Pool2DOptions<'a> {
4329  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
4330  pub const VT_STRIDE_W: flatbuffers::VOffsetT = 6;
4331  pub const VT_STRIDE_H: flatbuffers::VOffsetT = 8;
4332  pub const VT_FILTER_WIDTH: flatbuffers::VOffsetT = 10;
4333  pub const VT_FILTER_HEIGHT: flatbuffers::VOffsetT = 12;
4334  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 14;
4335
4336  #[inline]
4337  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4338    Pool2DOptions { _tab: table }
4339  }
4340  #[allow(unused_mut)]
4341  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4342    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4343    args: &'args Pool2DOptionsArgs
4344  ) -> flatbuffers::WIPOffset<Pool2DOptions<'bldr>> {
4345    let mut builder = Pool2DOptionsBuilder::new(_fbb);
4346    builder.add_filter_height(args.filter_height);
4347    builder.add_filter_width(args.filter_width);
4348    builder.add_stride_h(args.stride_h);
4349    builder.add_stride_w(args.stride_w);
4350    builder.add_fused_activation_function(args.fused_activation_function);
4351    builder.add_padding(args.padding);
4352    builder.finish()
4353  }
4354
4355
4356  #[inline]
4357  pub fn padding(&self) -> Padding {
4358    // Safety:
4359    // Created from valid Table for this object
4360    // which contains a valid value in this slot
4361    unsafe { self._tab.get::<Padding>(Pool2DOptions::VT_PADDING, Some(Padding::SAME)).unwrap()}
4362  }
4363  #[inline]
4364  pub fn stride_w(&self) -> i32 {
4365    // Safety:
4366    // Created from valid Table for this object
4367    // which contains a valid value in this slot
4368    unsafe { self._tab.get::<i32>(Pool2DOptions::VT_STRIDE_W, Some(0)).unwrap()}
4369  }
4370  #[inline]
4371  pub fn stride_h(&self) -> i32 {
4372    // Safety:
4373    // Created from valid Table for this object
4374    // which contains a valid value in this slot
4375    unsafe { self._tab.get::<i32>(Pool2DOptions::VT_STRIDE_H, Some(0)).unwrap()}
4376  }
4377  #[inline]
4378  pub fn filter_width(&self) -> i32 {
4379    // Safety:
4380    // Created from valid Table for this object
4381    // which contains a valid value in this slot
4382    unsafe { self._tab.get::<i32>(Pool2DOptions::VT_FILTER_WIDTH, Some(0)).unwrap()}
4383  }
4384  #[inline]
4385  pub fn filter_height(&self) -> i32 {
4386    // Safety:
4387    // Created from valid Table for this object
4388    // which contains a valid value in this slot
4389    unsafe { self._tab.get::<i32>(Pool2DOptions::VT_FILTER_HEIGHT, Some(0)).unwrap()}
4390  }
4391  #[inline]
4392  pub fn fused_activation_function(&self) -> ActivationFunctionType {
4393    // Safety:
4394    // Created from valid Table for this object
4395    // which contains a valid value in this slot
4396    unsafe { self._tab.get::<ActivationFunctionType>(Pool2DOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
4397  }
4398}
4399
4400impl flatbuffers::Verifiable for Pool2DOptions<'_> {
4401  #[inline]
4402  fn run_verifier(
4403    v: &mut flatbuffers::Verifier, pos: usize
4404  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4405    use self::flatbuffers::Verifiable;
4406    v.visit_table(pos)?
4407     .visit_field::<Padding>("padding", Self::VT_PADDING, false)?
4408     .visit_field::<i32>("stride_w", Self::VT_STRIDE_W, false)?
4409     .visit_field::<i32>("stride_h", Self::VT_STRIDE_H, false)?
4410     .visit_field::<i32>("filter_width", Self::VT_FILTER_WIDTH, false)?
4411     .visit_field::<i32>("filter_height", Self::VT_FILTER_HEIGHT, false)?
4412     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
4413     .finish();
4414    Ok(())
4415  }
4416}
4417pub struct Pool2DOptionsArgs {
4418    pub padding: Padding,
4419    pub stride_w: i32,
4420    pub stride_h: i32,
4421    pub filter_width: i32,
4422    pub filter_height: i32,
4423    pub fused_activation_function: ActivationFunctionType,
4424}
4425impl<'a> Default for Pool2DOptionsArgs {
4426  #[inline]
4427  fn default() -> Self {
4428    Pool2DOptionsArgs {
4429      padding: Padding::SAME,
4430      stride_w: 0,
4431      stride_h: 0,
4432      filter_width: 0,
4433      filter_height: 0,
4434      fused_activation_function: ActivationFunctionType::NONE,
4435    }
4436  }
4437}
4438
4439pub struct Pool2DOptionsBuilder<'a: 'b, 'b> {
4440  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4441  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4442}
4443impl<'a: 'b, 'b> Pool2DOptionsBuilder<'a, 'b> {
4444  #[inline]
4445  pub fn add_padding(&mut self, padding: Padding) {
4446    self.fbb_.push_slot::<Padding>(Pool2DOptions::VT_PADDING, padding, Padding::SAME);
4447  }
4448  #[inline]
4449  pub fn add_stride_w(&mut self, stride_w: i32) {
4450    self.fbb_.push_slot::<i32>(Pool2DOptions::VT_STRIDE_W, stride_w, 0);
4451  }
4452  #[inline]
4453  pub fn add_stride_h(&mut self, stride_h: i32) {
4454    self.fbb_.push_slot::<i32>(Pool2DOptions::VT_STRIDE_H, stride_h, 0);
4455  }
4456  #[inline]
4457  pub fn add_filter_width(&mut self, filter_width: i32) {
4458    self.fbb_.push_slot::<i32>(Pool2DOptions::VT_FILTER_WIDTH, filter_width, 0);
4459  }
4460  #[inline]
4461  pub fn add_filter_height(&mut self, filter_height: i32) {
4462    self.fbb_.push_slot::<i32>(Pool2DOptions::VT_FILTER_HEIGHT, filter_height, 0);
4463  }
4464  #[inline]
4465  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
4466    self.fbb_.push_slot::<ActivationFunctionType>(Pool2DOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
4467  }
4468  #[inline]
4469  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Pool2DOptionsBuilder<'a, 'b> {
4470    let start = _fbb.start_table();
4471    Pool2DOptionsBuilder {
4472      fbb_: _fbb,
4473      start_: start,
4474    }
4475  }
4476  #[inline]
4477  pub fn finish(self) -> flatbuffers::WIPOffset<Pool2DOptions<'a>> {
4478    let o = self.fbb_.end_table(self.start_);
4479    flatbuffers::WIPOffset::new(o.value())
4480  }
4481}
4482
4483impl core::fmt::Debug for Pool2DOptions<'_> {
4484  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4485    let mut ds = f.debug_struct("Pool2DOptions");
4486      ds.field("padding", &self.padding());
4487      ds.field("stride_w", &self.stride_w());
4488      ds.field("stride_h", &self.stride_h());
4489      ds.field("filter_width", &self.filter_width());
4490      ds.field("filter_height", &self.filter_height());
4491      ds.field("fused_activation_function", &self.fused_activation_function());
4492      ds.finish()
4493  }
4494}
4495pub enum DepthwiseConv2DOptionsOffset {}
4496#[derive(Copy, Clone, PartialEq)]
4497
4498pub struct DepthwiseConv2DOptions<'a> {
4499  pub _tab: flatbuffers::Table<'a>,
4500}
4501
4502impl<'a> flatbuffers::Follow<'a> for DepthwiseConv2DOptions<'a> {
4503  type Inner = DepthwiseConv2DOptions<'a>;
4504  #[inline]
4505  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4506    Self { _tab: flatbuffers::Table::new(buf, loc) }
4507  }
4508}
4509
4510impl<'a> DepthwiseConv2DOptions<'a> {
4511  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
4512  pub const VT_STRIDE_W: flatbuffers::VOffsetT = 6;
4513  pub const VT_STRIDE_H: flatbuffers::VOffsetT = 8;
4514  pub const VT_DEPTH_MULTIPLIER: flatbuffers::VOffsetT = 10;
4515  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 12;
4516  pub const VT_DILATION_W_FACTOR: flatbuffers::VOffsetT = 14;
4517  pub const VT_DILATION_H_FACTOR: flatbuffers::VOffsetT = 16;
4518
4519  #[inline]
4520  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4521    DepthwiseConv2DOptions { _tab: table }
4522  }
4523  #[allow(unused_mut)]
4524  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4525    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4526    args: &'args DepthwiseConv2DOptionsArgs
4527  ) -> flatbuffers::WIPOffset<DepthwiseConv2DOptions<'bldr>> {
4528    let mut builder = DepthwiseConv2DOptionsBuilder::new(_fbb);
4529    builder.add_dilation_h_factor(args.dilation_h_factor);
4530    builder.add_dilation_w_factor(args.dilation_w_factor);
4531    builder.add_depth_multiplier(args.depth_multiplier);
4532    builder.add_stride_h(args.stride_h);
4533    builder.add_stride_w(args.stride_w);
4534    builder.add_fused_activation_function(args.fused_activation_function);
4535    builder.add_padding(args.padding);
4536    builder.finish()
4537  }
4538
4539
4540  #[inline]
4541  pub fn padding(&self) -> Padding {
4542    // Safety:
4543    // Created from valid Table for this object
4544    // which contains a valid value in this slot
4545    unsafe { self._tab.get::<Padding>(DepthwiseConv2DOptions::VT_PADDING, Some(Padding::SAME)).unwrap()}
4546  }
4547  #[inline]
4548  pub fn stride_w(&self) -> i32 {
4549    // Safety:
4550    // Created from valid Table for this object
4551    // which contains a valid value in this slot
4552    unsafe { self._tab.get::<i32>(DepthwiseConv2DOptions::VT_STRIDE_W, Some(0)).unwrap()}
4553  }
4554  #[inline]
4555  pub fn stride_h(&self) -> i32 {
4556    // Safety:
4557    // Created from valid Table for this object
4558    // which contains a valid value in this slot
4559    unsafe { self._tab.get::<i32>(DepthwiseConv2DOptions::VT_STRIDE_H, Some(0)).unwrap()}
4560  }
4561  #[inline]
4562  pub fn depth_multiplier(&self) -> i32 {
4563    // Safety:
4564    // Created from valid Table for this object
4565    // which contains a valid value in this slot
4566    unsafe { self._tab.get::<i32>(DepthwiseConv2DOptions::VT_DEPTH_MULTIPLIER, Some(0)).unwrap()}
4567  }
4568  #[inline]
4569  pub fn fused_activation_function(&self) -> ActivationFunctionType {
4570    // Safety:
4571    // Created from valid Table for this object
4572    // which contains a valid value in this slot
4573    unsafe { self._tab.get::<ActivationFunctionType>(DepthwiseConv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
4574  }
4575  #[inline]
4576  pub fn dilation_w_factor(&self) -> i32 {
4577    // Safety:
4578    // Created from valid Table for this object
4579    // which contains a valid value in this slot
4580    unsafe { self._tab.get::<i32>(DepthwiseConv2DOptions::VT_DILATION_W_FACTOR, Some(1)).unwrap()}
4581  }
4582  #[inline]
4583  pub fn dilation_h_factor(&self) -> i32 {
4584    // Safety:
4585    // Created from valid Table for this object
4586    // which contains a valid value in this slot
4587    unsafe { self._tab.get::<i32>(DepthwiseConv2DOptions::VT_DILATION_H_FACTOR, Some(1)).unwrap()}
4588  }
4589}
4590
4591impl flatbuffers::Verifiable for DepthwiseConv2DOptions<'_> {
4592  #[inline]
4593  fn run_verifier(
4594    v: &mut flatbuffers::Verifier, pos: usize
4595  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4596    use self::flatbuffers::Verifiable;
4597    v.visit_table(pos)?
4598     .visit_field::<Padding>("padding", Self::VT_PADDING, false)?
4599     .visit_field::<i32>("stride_w", Self::VT_STRIDE_W, false)?
4600     .visit_field::<i32>("stride_h", Self::VT_STRIDE_H, false)?
4601     .visit_field::<i32>("depth_multiplier", Self::VT_DEPTH_MULTIPLIER, false)?
4602     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
4603     .visit_field::<i32>("dilation_w_factor", Self::VT_DILATION_W_FACTOR, false)?
4604     .visit_field::<i32>("dilation_h_factor", Self::VT_DILATION_H_FACTOR, false)?
4605     .finish();
4606    Ok(())
4607  }
4608}
4609pub struct DepthwiseConv2DOptionsArgs {
4610    pub padding: Padding,
4611    pub stride_w: i32,
4612    pub stride_h: i32,
4613    pub depth_multiplier: i32,
4614    pub fused_activation_function: ActivationFunctionType,
4615    pub dilation_w_factor: i32,
4616    pub dilation_h_factor: i32,
4617}
4618impl<'a> Default for DepthwiseConv2DOptionsArgs {
4619  #[inline]
4620  fn default() -> Self {
4621    DepthwiseConv2DOptionsArgs {
4622      padding: Padding::SAME,
4623      stride_w: 0,
4624      stride_h: 0,
4625      depth_multiplier: 0,
4626      fused_activation_function: ActivationFunctionType::NONE,
4627      dilation_w_factor: 1,
4628      dilation_h_factor: 1,
4629    }
4630  }
4631}
4632
4633pub struct DepthwiseConv2DOptionsBuilder<'a: 'b, 'b> {
4634  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4635  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4636}
4637impl<'a: 'b, 'b> DepthwiseConv2DOptionsBuilder<'a, 'b> {
4638  #[inline]
4639  pub fn add_padding(&mut self, padding: Padding) {
4640    self.fbb_.push_slot::<Padding>(DepthwiseConv2DOptions::VT_PADDING, padding, Padding::SAME);
4641  }
4642  #[inline]
4643  pub fn add_stride_w(&mut self, stride_w: i32) {
4644    self.fbb_.push_slot::<i32>(DepthwiseConv2DOptions::VT_STRIDE_W, stride_w, 0);
4645  }
4646  #[inline]
4647  pub fn add_stride_h(&mut self, stride_h: i32) {
4648    self.fbb_.push_slot::<i32>(DepthwiseConv2DOptions::VT_STRIDE_H, stride_h, 0);
4649  }
4650  #[inline]
4651  pub fn add_depth_multiplier(&mut self, depth_multiplier: i32) {
4652    self.fbb_.push_slot::<i32>(DepthwiseConv2DOptions::VT_DEPTH_MULTIPLIER, depth_multiplier, 0);
4653  }
4654  #[inline]
4655  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
4656    self.fbb_.push_slot::<ActivationFunctionType>(DepthwiseConv2DOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
4657  }
4658  #[inline]
4659  pub fn add_dilation_w_factor(&mut self, dilation_w_factor: i32) {
4660    self.fbb_.push_slot::<i32>(DepthwiseConv2DOptions::VT_DILATION_W_FACTOR, dilation_w_factor, 1);
4661  }
4662  #[inline]
4663  pub fn add_dilation_h_factor(&mut self, dilation_h_factor: i32) {
4664    self.fbb_.push_slot::<i32>(DepthwiseConv2DOptions::VT_DILATION_H_FACTOR, dilation_h_factor, 1);
4665  }
4666  #[inline]
4667  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DepthwiseConv2DOptionsBuilder<'a, 'b> {
4668    let start = _fbb.start_table();
4669    DepthwiseConv2DOptionsBuilder {
4670      fbb_: _fbb,
4671      start_: start,
4672    }
4673  }
4674  #[inline]
4675  pub fn finish(self) -> flatbuffers::WIPOffset<DepthwiseConv2DOptions<'a>> {
4676    let o = self.fbb_.end_table(self.start_);
4677    flatbuffers::WIPOffset::new(o.value())
4678  }
4679}
4680
4681impl core::fmt::Debug for DepthwiseConv2DOptions<'_> {
4682  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4683    let mut ds = f.debug_struct("DepthwiseConv2DOptions");
4684      ds.field("padding", &self.padding());
4685      ds.field("stride_w", &self.stride_w());
4686      ds.field("stride_h", &self.stride_h());
4687      ds.field("depth_multiplier", &self.depth_multiplier());
4688      ds.field("fused_activation_function", &self.fused_activation_function());
4689      ds.field("dilation_w_factor", &self.dilation_w_factor());
4690      ds.field("dilation_h_factor", &self.dilation_h_factor());
4691      ds.finish()
4692  }
4693}
4694pub enum ConcatEmbeddingsOptionsOffset {}
4695#[derive(Copy, Clone, PartialEq)]
4696
4697pub struct ConcatEmbeddingsOptions<'a> {
4698  pub _tab: flatbuffers::Table<'a>,
4699}
4700
4701impl<'a> flatbuffers::Follow<'a> for ConcatEmbeddingsOptions<'a> {
4702  type Inner = ConcatEmbeddingsOptions<'a>;
4703  #[inline]
4704  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4705    Self { _tab: flatbuffers::Table::new(buf, loc) }
4706  }
4707}
4708
4709impl<'a> ConcatEmbeddingsOptions<'a> {
4710  pub const VT_NUM_CHANNELS: flatbuffers::VOffsetT = 4;
4711  pub const VT_NUM_COLUMNS_PER_CHANNEL: flatbuffers::VOffsetT = 6;
4712  pub const VT_EMBEDDING_DIM_PER_CHANNEL: flatbuffers::VOffsetT = 8;
4713
4714  #[inline]
4715  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4716    ConcatEmbeddingsOptions { _tab: table }
4717  }
4718  #[allow(unused_mut)]
4719  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4720    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4721    args: &'args ConcatEmbeddingsOptionsArgs<'args>
4722  ) -> flatbuffers::WIPOffset<ConcatEmbeddingsOptions<'bldr>> {
4723    let mut builder = ConcatEmbeddingsOptionsBuilder::new(_fbb);
4724    if let Some(x) = args.embedding_dim_per_channel { builder.add_embedding_dim_per_channel(x); }
4725    if let Some(x) = args.num_columns_per_channel { builder.add_num_columns_per_channel(x); }
4726    builder.add_num_channels(args.num_channels);
4727    builder.finish()
4728  }
4729
4730
4731  #[inline]
4732  pub fn num_channels(&self) -> i32 {
4733    // Safety:
4734    // Created from valid Table for this object
4735    // which contains a valid value in this slot
4736    unsafe { self._tab.get::<i32>(ConcatEmbeddingsOptions::VT_NUM_CHANNELS, Some(0)).unwrap()}
4737  }
4738  #[inline]
4739  pub fn num_columns_per_channel(&self) -> Option<flatbuffers::Vector<'a, i32>> {
4740    // Safety:
4741    // Created from valid Table for this object
4742    // which contains a valid value in this slot
4743    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(ConcatEmbeddingsOptions::VT_NUM_COLUMNS_PER_CHANNEL, None)}
4744  }
4745  #[inline]
4746  pub fn embedding_dim_per_channel(&self) -> Option<flatbuffers::Vector<'a, i32>> {
4747    // Safety:
4748    // Created from valid Table for this object
4749    // which contains a valid value in this slot
4750    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(ConcatEmbeddingsOptions::VT_EMBEDDING_DIM_PER_CHANNEL, None)}
4751  }
4752}
4753
4754impl flatbuffers::Verifiable for ConcatEmbeddingsOptions<'_> {
4755  #[inline]
4756  fn run_verifier(
4757    v: &mut flatbuffers::Verifier, pos: usize
4758  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4759    use self::flatbuffers::Verifiable;
4760    v.visit_table(pos)?
4761     .visit_field::<i32>("num_channels", Self::VT_NUM_CHANNELS, false)?
4762     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("num_columns_per_channel", Self::VT_NUM_COLUMNS_PER_CHANNEL, false)?
4763     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("embedding_dim_per_channel", Self::VT_EMBEDDING_DIM_PER_CHANNEL, false)?
4764     .finish();
4765    Ok(())
4766  }
4767}
4768pub struct ConcatEmbeddingsOptionsArgs<'a> {
4769    pub num_channels: i32,
4770    pub num_columns_per_channel: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
4771    pub embedding_dim_per_channel: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
4772}
4773impl<'a> Default for ConcatEmbeddingsOptionsArgs<'a> {
4774  #[inline]
4775  fn default() -> Self {
4776    ConcatEmbeddingsOptionsArgs {
4777      num_channels: 0,
4778      num_columns_per_channel: None,
4779      embedding_dim_per_channel: None,
4780    }
4781  }
4782}
4783
4784pub struct ConcatEmbeddingsOptionsBuilder<'a: 'b, 'b> {
4785  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4786  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4787}
4788impl<'a: 'b, 'b> ConcatEmbeddingsOptionsBuilder<'a, 'b> {
4789  #[inline]
4790  pub fn add_num_channels(&mut self, num_channels: i32) {
4791    self.fbb_.push_slot::<i32>(ConcatEmbeddingsOptions::VT_NUM_CHANNELS, num_channels, 0);
4792  }
4793  #[inline]
4794  pub fn add_num_columns_per_channel(&mut self, num_columns_per_channel: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
4795    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ConcatEmbeddingsOptions::VT_NUM_COLUMNS_PER_CHANNEL, num_columns_per_channel);
4796  }
4797  #[inline]
4798  pub fn add_embedding_dim_per_channel(&mut self, embedding_dim_per_channel: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
4799    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ConcatEmbeddingsOptions::VT_EMBEDDING_DIM_PER_CHANNEL, embedding_dim_per_channel);
4800  }
4801  #[inline]
4802  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ConcatEmbeddingsOptionsBuilder<'a, 'b> {
4803    let start = _fbb.start_table();
4804    ConcatEmbeddingsOptionsBuilder {
4805      fbb_: _fbb,
4806      start_: start,
4807    }
4808  }
4809  #[inline]
4810  pub fn finish(self) -> flatbuffers::WIPOffset<ConcatEmbeddingsOptions<'a>> {
4811    let o = self.fbb_.end_table(self.start_);
4812    flatbuffers::WIPOffset::new(o.value())
4813  }
4814}
4815
4816impl core::fmt::Debug for ConcatEmbeddingsOptions<'_> {
4817  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4818    let mut ds = f.debug_struct("ConcatEmbeddingsOptions");
4819      ds.field("num_channels", &self.num_channels());
4820      ds.field("num_columns_per_channel", &self.num_columns_per_channel());
4821      ds.field("embedding_dim_per_channel", &self.embedding_dim_per_channel());
4822      ds.finish()
4823  }
4824}
4825pub enum LSHProjectionOptionsOffset {}
4826#[derive(Copy, Clone, PartialEq)]
4827
4828pub struct LSHProjectionOptions<'a> {
4829  pub _tab: flatbuffers::Table<'a>,
4830}
4831
4832impl<'a> flatbuffers::Follow<'a> for LSHProjectionOptions<'a> {
4833  type Inner = LSHProjectionOptions<'a>;
4834  #[inline]
4835  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4836    Self { _tab: flatbuffers::Table::new(buf, loc) }
4837  }
4838}
4839
4840impl<'a> LSHProjectionOptions<'a> {
4841  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
4842
4843  #[inline]
4844  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4845    LSHProjectionOptions { _tab: table }
4846  }
4847  #[allow(unused_mut)]
4848  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4849    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4850    args: &'args LSHProjectionOptionsArgs
4851  ) -> flatbuffers::WIPOffset<LSHProjectionOptions<'bldr>> {
4852    let mut builder = LSHProjectionOptionsBuilder::new(_fbb);
4853    builder.add_type_(args.type_);
4854    builder.finish()
4855  }
4856
4857
4858  #[inline]
4859  pub fn type_(&self) -> LSHProjectionType {
4860    // Safety:
4861    // Created from valid Table for this object
4862    // which contains a valid value in this slot
4863    unsafe { self._tab.get::<LSHProjectionType>(LSHProjectionOptions::VT_TYPE_, Some(LSHProjectionType::UNKNOWN)).unwrap()}
4864  }
4865}
4866
4867impl flatbuffers::Verifiable for LSHProjectionOptions<'_> {
4868  #[inline]
4869  fn run_verifier(
4870    v: &mut flatbuffers::Verifier, pos: usize
4871  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4872    use self::flatbuffers::Verifiable;
4873    v.visit_table(pos)?
4874     .visit_field::<LSHProjectionType>("type_", Self::VT_TYPE_, false)?
4875     .finish();
4876    Ok(())
4877  }
4878}
4879pub struct LSHProjectionOptionsArgs {
4880    pub type_: LSHProjectionType,
4881}
4882impl<'a> Default for LSHProjectionOptionsArgs {
4883  #[inline]
4884  fn default() -> Self {
4885    LSHProjectionOptionsArgs {
4886      type_: LSHProjectionType::UNKNOWN,
4887    }
4888  }
4889}
4890
4891pub struct LSHProjectionOptionsBuilder<'a: 'b, 'b> {
4892  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
4893  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
4894}
4895impl<'a: 'b, 'b> LSHProjectionOptionsBuilder<'a, 'b> {
4896  #[inline]
4897  pub fn add_type_(&mut self, type_: LSHProjectionType) {
4898    self.fbb_.push_slot::<LSHProjectionType>(LSHProjectionOptions::VT_TYPE_, type_, LSHProjectionType::UNKNOWN);
4899  }
4900  #[inline]
4901  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LSHProjectionOptionsBuilder<'a, 'b> {
4902    let start = _fbb.start_table();
4903    LSHProjectionOptionsBuilder {
4904      fbb_: _fbb,
4905      start_: start,
4906    }
4907  }
4908  #[inline]
4909  pub fn finish(self) -> flatbuffers::WIPOffset<LSHProjectionOptions<'a>> {
4910    let o = self.fbb_.end_table(self.start_);
4911    flatbuffers::WIPOffset::new(o.value())
4912  }
4913}
4914
4915impl core::fmt::Debug for LSHProjectionOptions<'_> {
4916  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
4917    let mut ds = f.debug_struct("LSHProjectionOptions");
4918      ds.field("type_", &self.type_());
4919      ds.finish()
4920  }
4921}
4922pub enum SVDFOptionsOffset {}
4923#[derive(Copy, Clone, PartialEq)]
4924
4925pub struct SVDFOptions<'a> {
4926  pub _tab: flatbuffers::Table<'a>,
4927}
4928
4929impl<'a> flatbuffers::Follow<'a> for SVDFOptions<'a> {
4930  type Inner = SVDFOptions<'a>;
4931  #[inline]
4932  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4933    Self { _tab: flatbuffers::Table::new(buf, loc) }
4934  }
4935}
4936
4937impl<'a> SVDFOptions<'a> {
4938  pub const VT_RANK: flatbuffers::VOffsetT = 4;
4939  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 6;
4940  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 8;
4941
4942  #[inline]
4943  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
4944    SVDFOptions { _tab: table }
4945  }
4946  #[allow(unused_mut)]
4947  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
4948    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
4949    args: &'args SVDFOptionsArgs
4950  ) -> flatbuffers::WIPOffset<SVDFOptions<'bldr>> {
4951    let mut builder = SVDFOptionsBuilder::new(_fbb);
4952    builder.add_rank(args.rank);
4953    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
4954    builder.add_fused_activation_function(args.fused_activation_function);
4955    builder.finish()
4956  }
4957
4958
4959  #[inline]
4960  pub fn rank(&self) -> i32 {
4961    // Safety:
4962    // Created from valid Table for this object
4963    // which contains a valid value in this slot
4964    unsafe { self._tab.get::<i32>(SVDFOptions::VT_RANK, Some(0)).unwrap()}
4965  }
4966  #[inline]
4967  pub fn fused_activation_function(&self) -> ActivationFunctionType {
4968    // Safety:
4969    // Created from valid Table for this object
4970    // which contains a valid value in this slot
4971    unsafe { self._tab.get::<ActivationFunctionType>(SVDFOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
4972  }
4973  #[inline]
4974  pub fn asymmetric_quantize_inputs(&self) -> bool {
4975    // Safety:
4976    // Created from valid Table for this object
4977    // which contains a valid value in this slot
4978    unsafe { self._tab.get::<bool>(SVDFOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
4979  }
4980}
4981
4982impl flatbuffers::Verifiable for SVDFOptions<'_> {
4983  #[inline]
4984  fn run_verifier(
4985    v: &mut flatbuffers::Verifier, pos: usize
4986  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4987    use self::flatbuffers::Verifiable;
4988    v.visit_table(pos)?
4989     .visit_field::<i32>("rank", Self::VT_RANK, false)?
4990     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
4991     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
4992     .finish();
4993    Ok(())
4994  }
4995}
4996pub struct SVDFOptionsArgs {
4997    pub rank: i32,
4998    pub fused_activation_function: ActivationFunctionType,
4999    pub asymmetric_quantize_inputs: bool,
5000}
5001impl<'a> Default for SVDFOptionsArgs {
5002  #[inline]
5003  fn default() -> Self {
5004    SVDFOptionsArgs {
5005      rank: 0,
5006      fused_activation_function: ActivationFunctionType::NONE,
5007      asymmetric_quantize_inputs: false,
5008    }
5009  }
5010}
5011
5012pub struct SVDFOptionsBuilder<'a: 'b, 'b> {
5013  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5014  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5015}
5016impl<'a: 'b, 'b> SVDFOptionsBuilder<'a, 'b> {
5017  #[inline]
5018  pub fn add_rank(&mut self, rank: i32) {
5019    self.fbb_.push_slot::<i32>(SVDFOptions::VT_RANK, rank, 0);
5020  }
5021  #[inline]
5022  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5023    self.fbb_.push_slot::<ActivationFunctionType>(SVDFOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5024  }
5025  #[inline]
5026  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
5027    self.fbb_.push_slot::<bool>(SVDFOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
5028  }
5029  #[inline]
5030  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SVDFOptionsBuilder<'a, 'b> {
5031    let start = _fbb.start_table();
5032    SVDFOptionsBuilder {
5033      fbb_: _fbb,
5034      start_: start,
5035    }
5036  }
5037  #[inline]
5038  pub fn finish(self) -> flatbuffers::WIPOffset<SVDFOptions<'a>> {
5039    let o = self.fbb_.end_table(self.start_);
5040    flatbuffers::WIPOffset::new(o.value())
5041  }
5042}
5043
5044impl core::fmt::Debug for SVDFOptions<'_> {
5045  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5046    let mut ds = f.debug_struct("SVDFOptions");
5047      ds.field("rank", &self.rank());
5048      ds.field("fused_activation_function", &self.fused_activation_function());
5049      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
5050      ds.finish()
5051  }
5052}
5053pub enum RNNOptionsOffset {}
5054#[derive(Copy, Clone, PartialEq)]
5055
5056pub struct RNNOptions<'a> {
5057  pub _tab: flatbuffers::Table<'a>,
5058}
5059
5060impl<'a> flatbuffers::Follow<'a> for RNNOptions<'a> {
5061  type Inner = RNNOptions<'a>;
5062  #[inline]
5063  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5064    Self { _tab: flatbuffers::Table::new(buf, loc) }
5065  }
5066}
5067
5068impl<'a> RNNOptions<'a> {
5069  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
5070  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 6;
5071
5072  #[inline]
5073  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5074    RNNOptions { _tab: table }
5075  }
5076  #[allow(unused_mut)]
5077  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5078    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5079    args: &'args RNNOptionsArgs
5080  ) -> flatbuffers::WIPOffset<RNNOptions<'bldr>> {
5081    let mut builder = RNNOptionsBuilder::new(_fbb);
5082    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
5083    builder.add_fused_activation_function(args.fused_activation_function);
5084    builder.finish()
5085  }
5086
5087
5088  #[inline]
5089  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5090    // Safety:
5091    // Created from valid Table for this object
5092    // which contains a valid value in this slot
5093    unsafe { self._tab.get::<ActivationFunctionType>(RNNOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5094  }
5095  #[inline]
5096  pub fn asymmetric_quantize_inputs(&self) -> bool {
5097    // Safety:
5098    // Created from valid Table for this object
5099    // which contains a valid value in this slot
5100    unsafe { self._tab.get::<bool>(RNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
5101  }
5102}
5103
5104impl flatbuffers::Verifiable for RNNOptions<'_> {
5105  #[inline]
5106  fn run_verifier(
5107    v: &mut flatbuffers::Verifier, pos: usize
5108  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5109    use self::flatbuffers::Verifiable;
5110    v.visit_table(pos)?
5111     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5112     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
5113     .finish();
5114    Ok(())
5115  }
5116}
5117pub struct RNNOptionsArgs {
5118    pub fused_activation_function: ActivationFunctionType,
5119    pub asymmetric_quantize_inputs: bool,
5120}
5121impl<'a> Default for RNNOptionsArgs {
5122  #[inline]
5123  fn default() -> Self {
5124    RNNOptionsArgs {
5125      fused_activation_function: ActivationFunctionType::NONE,
5126      asymmetric_quantize_inputs: false,
5127    }
5128  }
5129}
5130
5131pub struct RNNOptionsBuilder<'a: 'b, 'b> {
5132  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5133  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5134}
5135impl<'a: 'b, 'b> RNNOptionsBuilder<'a, 'b> {
5136  #[inline]
5137  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5138    self.fbb_.push_slot::<ActivationFunctionType>(RNNOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5139  }
5140  #[inline]
5141  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
5142    self.fbb_.push_slot::<bool>(RNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
5143  }
5144  #[inline]
5145  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RNNOptionsBuilder<'a, 'b> {
5146    let start = _fbb.start_table();
5147    RNNOptionsBuilder {
5148      fbb_: _fbb,
5149      start_: start,
5150    }
5151  }
5152  #[inline]
5153  pub fn finish(self) -> flatbuffers::WIPOffset<RNNOptions<'a>> {
5154    let o = self.fbb_.end_table(self.start_);
5155    flatbuffers::WIPOffset::new(o.value())
5156  }
5157}
5158
5159impl core::fmt::Debug for RNNOptions<'_> {
5160  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5161    let mut ds = f.debug_struct("RNNOptions");
5162      ds.field("fused_activation_function", &self.fused_activation_function());
5163      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
5164      ds.finish()
5165  }
5166}
5167pub enum SequenceRNNOptionsOffset {}
5168#[derive(Copy, Clone, PartialEq)]
5169
5170pub struct SequenceRNNOptions<'a> {
5171  pub _tab: flatbuffers::Table<'a>,
5172}
5173
5174impl<'a> flatbuffers::Follow<'a> for SequenceRNNOptions<'a> {
5175  type Inner = SequenceRNNOptions<'a>;
5176  #[inline]
5177  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5178    Self { _tab: flatbuffers::Table::new(buf, loc) }
5179  }
5180}
5181
5182impl<'a> SequenceRNNOptions<'a> {
5183  pub const VT_TIME_MAJOR: flatbuffers::VOffsetT = 4;
5184  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 6;
5185  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 8;
5186
5187  #[inline]
5188  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5189    SequenceRNNOptions { _tab: table }
5190  }
5191  #[allow(unused_mut)]
5192  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5193    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5194    args: &'args SequenceRNNOptionsArgs
5195  ) -> flatbuffers::WIPOffset<SequenceRNNOptions<'bldr>> {
5196    let mut builder = SequenceRNNOptionsBuilder::new(_fbb);
5197    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
5198    builder.add_fused_activation_function(args.fused_activation_function);
5199    builder.add_time_major(args.time_major);
5200    builder.finish()
5201  }
5202
5203
5204  #[inline]
5205  pub fn time_major(&self) -> bool {
5206    // Safety:
5207    // Created from valid Table for this object
5208    // which contains a valid value in this slot
5209    unsafe { self._tab.get::<bool>(SequenceRNNOptions::VT_TIME_MAJOR, Some(false)).unwrap()}
5210  }
5211  #[inline]
5212  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5213    // Safety:
5214    // Created from valid Table for this object
5215    // which contains a valid value in this slot
5216    unsafe { self._tab.get::<ActivationFunctionType>(SequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5217  }
5218  #[inline]
5219  pub fn asymmetric_quantize_inputs(&self) -> bool {
5220    // Safety:
5221    // Created from valid Table for this object
5222    // which contains a valid value in this slot
5223    unsafe { self._tab.get::<bool>(SequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
5224  }
5225}
5226
5227impl flatbuffers::Verifiable for SequenceRNNOptions<'_> {
5228  #[inline]
5229  fn run_verifier(
5230    v: &mut flatbuffers::Verifier, pos: usize
5231  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5232    use self::flatbuffers::Verifiable;
5233    v.visit_table(pos)?
5234     .visit_field::<bool>("time_major", Self::VT_TIME_MAJOR, false)?
5235     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5236     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
5237     .finish();
5238    Ok(())
5239  }
5240}
5241pub struct SequenceRNNOptionsArgs {
5242    pub time_major: bool,
5243    pub fused_activation_function: ActivationFunctionType,
5244    pub asymmetric_quantize_inputs: bool,
5245}
5246impl<'a> Default for SequenceRNNOptionsArgs {
5247  #[inline]
5248  fn default() -> Self {
5249    SequenceRNNOptionsArgs {
5250      time_major: false,
5251      fused_activation_function: ActivationFunctionType::NONE,
5252      asymmetric_quantize_inputs: false,
5253    }
5254  }
5255}
5256
5257pub struct SequenceRNNOptionsBuilder<'a: 'b, 'b> {
5258  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5259  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5260}
5261impl<'a: 'b, 'b> SequenceRNNOptionsBuilder<'a, 'b> {
5262  #[inline]
5263  pub fn add_time_major(&mut self, time_major: bool) {
5264    self.fbb_.push_slot::<bool>(SequenceRNNOptions::VT_TIME_MAJOR, time_major, false);
5265  }
5266  #[inline]
5267  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5268    self.fbb_.push_slot::<ActivationFunctionType>(SequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5269  }
5270  #[inline]
5271  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
5272    self.fbb_.push_slot::<bool>(SequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
5273  }
5274  #[inline]
5275  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SequenceRNNOptionsBuilder<'a, 'b> {
5276    let start = _fbb.start_table();
5277    SequenceRNNOptionsBuilder {
5278      fbb_: _fbb,
5279      start_: start,
5280    }
5281  }
5282  #[inline]
5283  pub fn finish(self) -> flatbuffers::WIPOffset<SequenceRNNOptions<'a>> {
5284    let o = self.fbb_.end_table(self.start_);
5285    flatbuffers::WIPOffset::new(o.value())
5286  }
5287}
5288
5289impl core::fmt::Debug for SequenceRNNOptions<'_> {
5290  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5291    let mut ds = f.debug_struct("SequenceRNNOptions");
5292      ds.field("time_major", &self.time_major());
5293      ds.field("fused_activation_function", &self.fused_activation_function());
5294      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
5295      ds.finish()
5296  }
5297}
5298pub enum BidirectionalSequenceRNNOptionsOffset {}
5299#[derive(Copy, Clone, PartialEq)]
5300
5301pub struct BidirectionalSequenceRNNOptions<'a> {
5302  pub _tab: flatbuffers::Table<'a>,
5303}
5304
5305impl<'a> flatbuffers::Follow<'a> for BidirectionalSequenceRNNOptions<'a> {
5306  type Inner = BidirectionalSequenceRNNOptions<'a>;
5307  #[inline]
5308  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5309    Self { _tab: flatbuffers::Table::new(buf, loc) }
5310  }
5311}
5312
5313impl<'a> BidirectionalSequenceRNNOptions<'a> {
5314  pub const VT_TIME_MAJOR: flatbuffers::VOffsetT = 4;
5315  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 6;
5316  pub const VT_MERGE_OUTPUTS: flatbuffers::VOffsetT = 8;
5317  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 10;
5318
5319  #[inline]
5320  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5321    BidirectionalSequenceRNNOptions { _tab: table }
5322  }
5323  #[allow(unused_mut)]
5324  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5325    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5326    args: &'args BidirectionalSequenceRNNOptionsArgs
5327  ) -> flatbuffers::WIPOffset<BidirectionalSequenceRNNOptions<'bldr>> {
5328    let mut builder = BidirectionalSequenceRNNOptionsBuilder::new(_fbb);
5329    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
5330    builder.add_merge_outputs(args.merge_outputs);
5331    builder.add_fused_activation_function(args.fused_activation_function);
5332    builder.add_time_major(args.time_major);
5333    builder.finish()
5334  }
5335
5336
5337  #[inline]
5338  pub fn time_major(&self) -> bool {
5339    // Safety:
5340    // Created from valid Table for this object
5341    // which contains a valid value in this slot
5342    unsafe { self._tab.get::<bool>(BidirectionalSequenceRNNOptions::VT_TIME_MAJOR, Some(false)).unwrap()}
5343  }
5344  #[inline]
5345  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5346    // Safety:
5347    // Created from valid Table for this object
5348    // which contains a valid value in this slot
5349    unsafe { self._tab.get::<ActivationFunctionType>(BidirectionalSequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5350  }
5351  #[inline]
5352  pub fn merge_outputs(&self) -> bool {
5353    // Safety:
5354    // Created from valid Table for this object
5355    // which contains a valid value in this slot
5356    unsafe { self._tab.get::<bool>(BidirectionalSequenceRNNOptions::VT_MERGE_OUTPUTS, Some(false)).unwrap()}
5357  }
5358  #[inline]
5359  pub fn asymmetric_quantize_inputs(&self) -> bool {
5360    // Safety:
5361    // Created from valid Table for this object
5362    // which contains a valid value in this slot
5363    unsafe { self._tab.get::<bool>(BidirectionalSequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
5364  }
5365}
5366
5367impl flatbuffers::Verifiable for BidirectionalSequenceRNNOptions<'_> {
5368  #[inline]
5369  fn run_verifier(
5370    v: &mut flatbuffers::Verifier, pos: usize
5371  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5372    use self::flatbuffers::Verifiable;
5373    v.visit_table(pos)?
5374     .visit_field::<bool>("time_major", Self::VT_TIME_MAJOR, false)?
5375     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5376     .visit_field::<bool>("merge_outputs", Self::VT_MERGE_OUTPUTS, false)?
5377     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
5378     .finish();
5379    Ok(())
5380  }
5381}
5382pub struct BidirectionalSequenceRNNOptionsArgs {
5383    pub time_major: bool,
5384    pub fused_activation_function: ActivationFunctionType,
5385    pub merge_outputs: bool,
5386    pub asymmetric_quantize_inputs: bool,
5387}
5388impl<'a> Default for BidirectionalSequenceRNNOptionsArgs {
5389  #[inline]
5390  fn default() -> Self {
5391    BidirectionalSequenceRNNOptionsArgs {
5392      time_major: false,
5393      fused_activation_function: ActivationFunctionType::NONE,
5394      merge_outputs: false,
5395      asymmetric_quantize_inputs: false,
5396    }
5397  }
5398}
5399
5400pub struct BidirectionalSequenceRNNOptionsBuilder<'a: 'b, 'b> {
5401  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5402  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5403}
5404impl<'a: 'b, 'b> BidirectionalSequenceRNNOptionsBuilder<'a, 'b> {
5405  #[inline]
5406  pub fn add_time_major(&mut self, time_major: bool) {
5407    self.fbb_.push_slot::<bool>(BidirectionalSequenceRNNOptions::VT_TIME_MAJOR, time_major, false);
5408  }
5409  #[inline]
5410  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5411    self.fbb_.push_slot::<ActivationFunctionType>(BidirectionalSequenceRNNOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5412  }
5413  #[inline]
5414  pub fn add_merge_outputs(&mut self, merge_outputs: bool) {
5415    self.fbb_.push_slot::<bool>(BidirectionalSequenceRNNOptions::VT_MERGE_OUTPUTS, merge_outputs, false);
5416  }
5417  #[inline]
5418  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
5419    self.fbb_.push_slot::<bool>(BidirectionalSequenceRNNOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
5420  }
5421  #[inline]
5422  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BidirectionalSequenceRNNOptionsBuilder<'a, 'b> {
5423    let start = _fbb.start_table();
5424    BidirectionalSequenceRNNOptionsBuilder {
5425      fbb_: _fbb,
5426      start_: start,
5427    }
5428  }
5429  #[inline]
5430  pub fn finish(self) -> flatbuffers::WIPOffset<BidirectionalSequenceRNNOptions<'a>> {
5431    let o = self.fbb_.end_table(self.start_);
5432    flatbuffers::WIPOffset::new(o.value())
5433  }
5434}
5435
5436impl core::fmt::Debug for BidirectionalSequenceRNNOptions<'_> {
5437  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5438    let mut ds = f.debug_struct("BidirectionalSequenceRNNOptions");
5439      ds.field("time_major", &self.time_major());
5440      ds.field("fused_activation_function", &self.fused_activation_function());
5441      ds.field("merge_outputs", &self.merge_outputs());
5442      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
5443      ds.finish()
5444  }
5445}
5446pub enum FullyConnectedOptionsOffset {}
5447#[derive(Copy, Clone, PartialEq)]
5448
5449pub struct FullyConnectedOptions<'a> {
5450  pub _tab: flatbuffers::Table<'a>,
5451}
5452
5453impl<'a> flatbuffers::Follow<'a> for FullyConnectedOptions<'a> {
5454  type Inner = FullyConnectedOptions<'a>;
5455  #[inline]
5456  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5457    Self { _tab: flatbuffers::Table::new(buf, loc) }
5458  }
5459}
5460
5461impl<'a> FullyConnectedOptions<'a> {
5462  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
5463  pub const VT_WEIGHTS_FORMAT: flatbuffers::VOffsetT = 6;
5464  pub const VT_KEEP_NUM_DIMS: flatbuffers::VOffsetT = 8;
5465  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 10;
5466
5467  #[inline]
5468  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5469    FullyConnectedOptions { _tab: table }
5470  }
5471  #[allow(unused_mut)]
5472  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5473    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5474    args: &'args FullyConnectedOptionsArgs
5475  ) -> flatbuffers::WIPOffset<FullyConnectedOptions<'bldr>> {
5476    let mut builder = FullyConnectedOptionsBuilder::new(_fbb);
5477    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
5478    builder.add_keep_num_dims(args.keep_num_dims);
5479    builder.add_weights_format(args.weights_format);
5480    builder.add_fused_activation_function(args.fused_activation_function);
5481    builder.finish()
5482  }
5483
5484
5485  #[inline]
5486  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5487    // Safety:
5488    // Created from valid Table for this object
5489    // which contains a valid value in this slot
5490    unsafe { self._tab.get::<ActivationFunctionType>(FullyConnectedOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5491  }
5492  #[inline]
5493  pub fn weights_format(&self) -> FullyConnectedOptionsWeightsFormat {
5494    // Safety:
5495    // Created from valid Table for this object
5496    // which contains a valid value in this slot
5497    unsafe { self._tab.get::<FullyConnectedOptionsWeightsFormat>(FullyConnectedOptions::VT_WEIGHTS_FORMAT, Some(FullyConnectedOptionsWeightsFormat::DEFAULT)).unwrap()}
5498  }
5499  #[inline]
5500  pub fn keep_num_dims(&self) -> bool {
5501    // Safety:
5502    // Created from valid Table for this object
5503    // which contains a valid value in this slot
5504    unsafe { self._tab.get::<bool>(FullyConnectedOptions::VT_KEEP_NUM_DIMS, Some(false)).unwrap()}
5505  }
5506  #[inline]
5507  pub fn asymmetric_quantize_inputs(&self) -> bool {
5508    // Safety:
5509    // Created from valid Table for this object
5510    // which contains a valid value in this slot
5511    unsafe { self._tab.get::<bool>(FullyConnectedOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
5512  }
5513}
5514
5515impl flatbuffers::Verifiable for FullyConnectedOptions<'_> {
5516  #[inline]
5517  fn run_verifier(
5518    v: &mut flatbuffers::Verifier, pos: usize
5519  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5520    use self::flatbuffers::Verifiable;
5521    v.visit_table(pos)?
5522     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5523     .visit_field::<FullyConnectedOptionsWeightsFormat>("weights_format", Self::VT_WEIGHTS_FORMAT, false)?
5524     .visit_field::<bool>("keep_num_dims", Self::VT_KEEP_NUM_DIMS, false)?
5525     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
5526     .finish();
5527    Ok(())
5528  }
5529}
5530pub struct FullyConnectedOptionsArgs {
5531    pub fused_activation_function: ActivationFunctionType,
5532    pub weights_format: FullyConnectedOptionsWeightsFormat,
5533    pub keep_num_dims: bool,
5534    pub asymmetric_quantize_inputs: bool,
5535}
5536impl<'a> Default for FullyConnectedOptionsArgs {
5537  #[inline]
5538  fn default() -> Self {
5539    FullyConnectedOptionsArgs {
5540      fused_activation_function: ActivationFunctionType::NONE,
5541      weights_format: FullyConnectedOptionsWeightsFormat::DEFAULT,
5542      keep_num_dims: false,
5543      asymmetric_quantize_inputs: false,
5544    }
5545  }
5546}
5547
5548pub struct FullyConnectedOptionsBuilder<'a: 'b, 'b> {
5549  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5550  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5551}
5552impl<'a: 'b, 'b> FullyConnectedOptionsBuilder<'a, 'b> {
5553  #[inline]
5554  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5555    self.fbb_.push_slot::<ActivationFunctionType>(FullyConnectedOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5556  }
5557  #[inline]
5558  pub fn add_weights_format(&mut self, weights_format: FullyConnectedOptionsWeightsFormat) {
5559    self.fbb_.push_slot::<FullyConnectedOptionsWeightsFormat>(FullyConnectedOptions::VT_WEIGHTS_FORMAT, weights_format, FullyConnectedOptionsWeightsFormat::DEFAULT);
5560  }
5561  #[inline]
5562  pub fn add_keep_num_dims(&mut self, keep_num_dims: bool) {
5563    self.fbb_.push_slot::<bool>(FullyConnectedOptions::VT_KEEP_NUM_DIMS, keep_num_dims, false);
5564  }
5565  #[inline]
5566  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
5567    self.fbb_.push_slot::<bool>(FullyConnectedOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
5568  }
5569  #[inline]
5570  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FullyConnectedOptionsBuilder<'a, 'b> {
5571    let start = _fbb.start_table();
5572    FullyConnectedOptionsBuilder {
5573      fbb_: _fbb,
5574      start_: start,
5575    }
5576  }
5577  #[inline]
5578  pub fn finish(self) -> flatbuffers::WIPOffset<FullyConnectedOptions<'a>> {
5579    let o = self.fbb_.end_table(self.start_);
5580    flatbuffers::WIPOffset::new(o.value())
5581  }
5582}
5583
5584impl core::fmt::Debug for FullyConnectedOptions<'_> {
5585  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5586    let mut ds = f.debug_struct("FullyConnectedOptions");
5587      ds.field("fused_activation_function", &self.fused_activation_function());
5588      ds.field("weights_format", &self.weights_format());
5589      ds.field("keep_num_dims", &self.keep_num_dims());
5590      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
5591      ds.finish()
5592  }
5593}
5594pub enum SoftmaxOptionsOffset {}
5595#[derive(Copy, Clone, PartialEq)]
5596
5597pub struct SoftmaxOptions<'a> {
5598  pub _tab: flatbuffers::Table<'a>,
5599}
5600
5601impl<'a> flatbuffers::Follow<'a> for SoftmaxOptions<'a> {
5602  type Inner = SoftmaxOptions<'a>;
5603  #[inline]
5604  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5605    Self { _tab: flatbuffers::Table::new(buf, loc) }
5606  }
5607}
5608
5609impl<'a> SoftmaxOptions<'a> {
5610  pub const VT_BETA: flatbuffers::VOffsetT = 4;
5611
5612  #[inline]
5613  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5614    SoftmaxOptions { _tab: table }
5615  }
5616  #[allow(unused_mut)]
5617  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5618    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5619    args: &'args SoftmaxOptionsArgs
5620  ) -> flatbuffers::WIPOffset<SoftmaxOptions<'bldr>> {
5621    let mut builder = SoftmaxOptionsBuilder::new(_fbb);
5622    builder.add_beta(args.beta);
5623    builder.finish()
5624  }
5625
5626
5627  #[inline]
5628  pub fn beta(&self) -> f32 {
5629    // Safety:
5630    // Created from valid Table for this object
5631    // which contains a valid value in this slot
5632    unsafe { self._tab.get::<f32>(SoftmaxOptions::VT_BETA, Some(0.0)).unwrap()}
5633  }
5634}
5635
5636impl flatbuffers::Verifiable for SoftmaxOptions<'_> {
5637  #[inline]
5638  fn run_verifier(
5639    v: &mut flatbuffers::Verifier, pos: usize
5640  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5641    use self::flatbuffers::Verifiable;
5642    v.visit_table(pos)?
5643     .visit_field::<f32>("beta", Self::VT_BETA, false)?
5644     .finish();
5645    Ok(())
5646  }
5647}
5648pub struct SoftmaxOptionsArgs {
5649    pub beta: f32,
5650}
5651impl<'a> Default for SoftmaxOptionsArgs {
5652  #[inline]
5653  fn default() -> Self {
5654    SoftmaxOptionsArgs {
5655      beta: 0.0,
5656    }
5657  }
5658}
5659
5660pub struct SoftmaxOptionsBuilder<'a: 'b, 'b> {
5661  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5662  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5663}
5664impl<'a: 'b, 'b> SoftmaxOptionsBuilder<'a, 'b> {
5665  #[inline]
5666  pub fn add_beta(&mut self, beta: f32) {
5667    self.fbb_.push_slot::<f32>(SoftmaxOptions::VT_BETA, beta, 0.0);
5668  }
5669  #[inline]
5670  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SoftmaxOptionsBuilder<'a, 'b> {
5671    let start = _fbb.start_table();
5672    SoftmaxOptionsBuilder {
5673      fbb_: _fbb,
5674      start_: start,
5675    }
5676  }
5677  #[inline]
5678  pub fn finish(self) -> flatbuffers::WIPOffset<SoftmaxOptions<'a>> {
5679    let o = self.fbb_.end_table(self.start_);
5680    flatbuffers::WIPOffset::new(o.value())
5681  }
5682}
5683
5684impl core::fmt::Debug for SoftmaxOptions<'_> {
5685  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5686    let mut ds = f.debug_struct("SoftmaxOptions");
5687      ds.field("beta", &self.beta());
5688      ds.finish()
5689  }
5690}
5691pub enum ConcatenationOptionsOffset {}
5692#[derive(Copy, Clone, PartialEq)]
5693
5694pub struct ConcatenationOptions<'a> {
5695  pub _tab: flatbuffers::Table<'a>,
5696}
5697
5698impl<'a> flatbuffers::Follow<'a> for ConcatenationOptions<'a> {
5699  type Inner = ConcatenationOptions<'a>;
5700  #[inline]
5701  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5702    Self { _tab: flatbuffers::Table::new(buf, loc) }
5703  }
5704}
5705
5706impl<'a> ConcatenationOptions<'a> {
5707  pub const VT_AXIS: flatbuffers::VOffsetT = 4;
5708  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 6;
5709
5710  #[inline]
5711  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5712    ConcatenationOptions { _tab: table }
5713  }
5714  #[allow(unused_mut)]
5715  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5716    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5717    args: &'args ConcatenationOptionsArgs
5718  ) -> flatbuffers::WIPOffset<ConcatenationOptions<'bldr>> {
5719    let mut builder = ConcatenationOptionsBuilder::new(_fbb);
5720    builder.add_axis(args.axis);
5721    builder.add_fused_activation_function(args.fused_activation_function);
5722    builder.finish()
5723  }
5724
5725
5726  #[inline]
5727  pub fn axis(&self) -> i32 {
5728    // Safety:
5729    // Created from valid Table for this object
5730    // which contains a valid value in this slot
5731    unsafe { self._tab.get::<i32>(ConcatenationOptions::VT_AXIS, Some(0)).unwrap()}
5732  }
5733  #[inline]
5734  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5735    // Safety:
5736    // Created from valid Table for this object
5737    // which contains a valid value in this slot
5738    unsafe { self._tab.get::<ActivationFunctionType>(ConcatenationOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5739  }
5740}
5741
5742impl flatbuffers::Verifiable for ConcatenationOptions<'_> {
5743  #[inline]
5744  fn run_verifier(
5745    v: &mut flatbuffers::Verifier, pos: usize
5746  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5747    use self::flatbuffers::Verifiable;
5748    v.visit_table(pos)?
5749     .visit_field::<i32>("axis", Self::VT_AXIS, false)?
5750     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5751     .finish();
5752    Ok(())
5753  }
5754}
5755pub struct ConcatenationOptionsArgs {
5756    pub axis: i32,
5757    pub fused_activation_function: ActivationFunctionType,
5758}
5759impl<'a> Default for ConcatenationOptionsArgs {
5760  #[inline]
5761  fn default() -> Self {
5762    ConcatenationOptionsArgs {
5763      axis: 0,
5764      fused_activation_function: ActivationFunctionType::NONE,
5765    }
5766  }
5767}
5768
5769pub struct ConcatenationOptionsBuilder<'a: 'b, 'b> {
5770  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5771  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5772}
5773impl<'a: 'b, 'b> ConcatenationOptionsBuilder<'a, 'b> {
5774  #[inline]
5775  pub fn add_axis(&mut self, axis: i32) {
5776    self.fbb_.push_slot::<i32>(ConcatenationOptions::VT_AXIS, axis, 0);
5777  }
5778  #[inline]
5779  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5780    self.fbb_.push_slot::<ActivationFunctionType>(ConcatenationOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5781  }
5782  #[inline]
5783  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ConcatenationOptionsBuilder<'a, 'b> {
5784    let start = _fbb.start_table();
5785    ConcatenationOptionsBuilder {
5786      fbb_: _fbb,
5787      start_: start,
5788    }
5789  }
5790  #[inline]
5791  pub fn finish(self) -> flatbuffers::WIPOffset<ConcatenationOptions<'a>> {
5792    let o = self.fbb_.end_table(self.start_);
5793    flatbuffers::WIPOffset::new(o.value())
5794  }
5795}
5796
5797impl core::fmt::Debug for ConcatenationOptions<'_> {
5798  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5799    let mut ds = f.debug_struct("ConcatenationOptions");
5800      ds.field("axis", &self.axis());
5801      ds.field("fused_activation_function", &self.fused_activation_function());
5802      ds.finish()
5803  }
5804}
5805pub enum AddOptionsOffset {}
5806#[derive(Copy, Clone, PartialEq)]
5807
5808pub struct AddOptions<'a> {
5809  pub _tab: flatbuffers::Table<'a>,
5810}
5811
5812impl<'a> flatbuffers::Follow<'a> for AddOptions<'a> {
5813  type Inner = AddOptions<'a>;
5814  #[inline]
5815  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5816    Self { _tab: flatbuffers::Table::new(buf, loc) }
5817  }
5818}
5819
5820impl<'a> AddOptions<'a> {
5821  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
5822  pub const VT_POT_SCALE_INT16: flatbuffers::VOffsetT = 6;
5823
5824  #[inline]
5825  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5826    AddOptions { _tab: table }
5827  }
5828  #[allow(unused_mut)]
5829  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5830    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5831    args: &'args AddOptionsArgs
5832  ) -> flatbuffers::WIPOffset<AddOptions<'bldr>> {
5833    let mut builder = AddOptionsBuilder::new(_fbb);
5834    builder.add_pot_scale_int16(args.pot_scale_int16);
5835    builder.add_fused_activation_function(args.fused_activation_function);
5836    builder.finish()
5837  }
5838
5839
5840  #[inline]
5841  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5842    // Safety:
5843    // Created from valid Table for this object
5844    // which contains a valid value in this slot
5845    unsafe { self._tab.get::<ActivationFunctionType>(AddOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5846  }
5847  #[inline]
5848  pub fn pot_scale_int16(&self) -> bool {
5849    // Safety:
5850    // Created from valid Table for this object
5851    // which contains a valid value in this slot
5852    unsafe { self._tab.get::<bool>(AddOptions::VT_POT_SCALE_INT16, Some(true)).unwrap()}
5853  }
5854}
5855
5856impl flatbuffers::Verifiable for AddOptions<'_> {
5857  #[inline]
5858  fn run_verifier(
5859    v: &mut flatbuffers::Verifier, pos: usize
5860  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5861    use self::flatbuffers::Verifiable;
5862    v.visit_table(pos)?
5863     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5864     .visit_field::<bool>("pot_scale_int16", Self::VT_POT_SCALE_INT16, false)?
5865     .finish();
5866    Ok(())
5867  }
5868}
5869pub struct AddOptionsArgs {
5870    pub fused_activation_function: ActivationFunctionType,
5871    pub pot_scale_int16: bool,
5872}
5873impl<'a> Default for AddOptionsArgs {
5874  #[inline]
5875  fn default() -> Self {
5876    AddOptionsArgs {
5877      fused_activation_function: ActivationFunctionType::NONE,
5878      pot_scale_int16: true,
5879    }
5880  }
5881}
5882
5883pub struct AddOptionsBuilder<'a: 'b, 'b> {
5884  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5885  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5886}
5887impl<'a: 'b, 'b> AddOptionsBuilder<'a, 'b> {
5888  #[inline]
5889  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5890    self.fbb_.push_slot::<ActivationFunctionType>(AddOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5891  }
5892  #[inline]
5893  pub fn add_pot_scale_int16(&mut self, pot_scale_int16: bool) {
5894    self.fbb_.push_slot::<bool>(AddOptions::VT_POT_SCALE_INT16, pot_scale_int16, true);
5895  }
5896  #[inline]
5897  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AddOptionsBuilder<'a, 'b> {
5898    let start = _fbb.start_table();
5899    AddOptionsBuilder {
5900      fbb_: _fbb,
5901      start_: start,
5902    }
5903  }
5904  #[inline]
5905  pub fn finish(self) -> flatbuffers::WIPOffset<AddOptions<'a>> {
5906    let o = self.fbb_.end_table(self.start_);
5907    flatbuffers::WIPOffset::new(o.value())
5908  }
5909}
5910
5911impl core::fmt::Debug for AddOptions<'_> {
5912  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5913    let mut ds = f.debug_struct("AddOptions");
5914      ds.field("fused_activation_function", &self.fused_activation_function());
5915      ds.field("pot_scale_int16", &self.pot_scale_int16());
5916      ds.finish()
5917  }
5918}
5919pub enum MulOptionsOffset {}
5920#[derive(Copy, Clone, PartialEq)]
5921
5922pub struct MulOptions<'a> {
5923  pub _tab: flatbuffers::Table<'a>,
5924}
5925
5926impl<'a> flatbuffers::Follow<'a> for MulOptions<'a> {
5927  type Inner = MulOptions<'a>;
5928  #[inline]
5929  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5930    Self { _tab: flatbuffers::Table::new(buf, loc) }
5931  }
5932}
5933
5934impl<'a> MulOptions<'a> {
5935  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
5936
5937  #[inline]
5938  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5939    MulOptions { _tab: table }
5940  }
5941  #[allow(unused_mut)]
5942  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
5943    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
5944    args: &'args MulOptionsArgs
5945  ) -> flatbuffers::WIPOffset<MulOptions<'bldr>> {
5946    let mut builder = MulOptionsBuilder::new(_fbb);
5947    builder.add_fused_activation_function(args.fused_activation_function);
5948    builder.finish()
5949  }
5950
5951
5952  #[inline]
5953  pub fn fused_activation_function(&self) -> ActivationFunctionType {
5954    // Safety:
5955    // Created from valid Table for this object
5956    // which contains a valid value in this slot
5957    unsafe { self._tab.get::<ActivationFunctionType>(MulOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
5958  }
5959}
5960
5961impl flatbuffers::Verifiable for MulOptions<'_> {
5962  #[inline]
5963  fn run_verifier(
5964    v: &mut flatbuffers::Verifier, pos: usize
5965  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5966    use self::flatbuffers::Verifiable;
5967    v.visit_table(pos)?
5968     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
5969     .finish();
5970    Ok(())
5971  }
5972}
5973pub struct MulOptionsArgs {
5974    pub fused_activation_function: ActivationFunctionType,
5975}
5976impl<'a> Default for MulOptionsArgs {
5977  #[inline]
5978  fn default() -> Self {
5979    MulOptionsArgs {
5980      fused_activation_function: ActivationFunctionType::NONE,
5981    }
5982  }
5983}
5984
5985pub struct MulOptionsBuilder<'a: 'b, 'b> {
5986  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
5987  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5988}
5989impl<'a: 'b, 'b> MulOptionsBuilder<'a, 'b> {
5990  #[inline]
5991  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
5992    self.fbb_.push_slot::<ActivationFunctionType>(MulOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
5993  }
5994  #[inline]
5995  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MulOptionsBuilder<'a, 'b> {
5996    let start = _fbb.start_table();
5997    MulOptionsBuilder {
5998      fbb_: _fbb,
5999      start_: start,
6000    }
6001  }
6002  #[inline]
6003  pub fn finish(self) -> flatbuffers::WIPOffset<MulOptions<'a>> {
6004    let o = self.fbb_.end_table(self.start_);
6005    flatbuffers::WIPOffset::new(o.value())
6006  }
6007}
6008
6009impl core::fmt::Debug for MulOptions<'_> {
6010  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6011    let mut ds = f.debug_struct("MulOptions");
6012      ds.field("fused_activation_function", &self.fused_activation_function());
6013      ds.finish()
6014  }
6015}
6016pub enum L2NormOptionsOffset {}
6017#[derive(Copy, Clone, PartialEq)]
6018
6019pub struct L2NormOptions<'a> {
6020  pub _tab: flatbuffers::Table<'a>,
6021}
6022
6023impl<'a> flatbuffers::Follow<'a> for L2NormOptions<'a> {
6024  type Inner = L2NormOptions<'a>;
6025  #[inline]
6026  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6027    Self { _tab: flatbuffers::Table::new(buf, loc) }
6028  }
6029}
6030
6031impl<'a> L2NormOptions<'a> {
6032  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
6033
6034  #[inline]
6035  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6036    L2NormOptions { _tab: table }
6037  }
6038  #[allow(unused_mut)]
6039  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6040    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6041    args: &'args L2NormOptionsArgs
6042  ) -> flatbuffers::WIPOffset<L2NormOptions<'bldr>> {
6043    let mut builder = L2NormOptionsBuilder::new(_fbb);
6044    builder.add_fused_activation_function(args.fused_activation_function);
6045    builder.finish()
6046  }
6047
6048
6049  #[inline]
6050  pub fn fused_activation_function(&self) -> ActivationFunctionType {
6051    // Safety:
6052    // Created from valid Table for this object
6053    // which contains a valid value in this slot
6054    unsafe { self._tab.get::<ActivationFunctionType>(L2NormOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
6055  }
6056}
6057
6058impl flatbuffers::Verifiable for L2NormOptions<'_> {
6059  #[inline]
6060  fn run_verifier(
6061    v: &mut flatbuffers::Verifier, pos: usize
6062  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6063    use self::flatbuffers::Verifiable;
6064    v.visit_table(pos)?
6065     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
6066     .finish();
6067    Ok(())
6068  }
6069}
6070pub struct L2NormOptionsArgs {
6071    pub fused_activation_function: ActivationFunctionType,
6072}
6073impl<'a> Default for L2NormOptionsArgs {
6074  #[inline]
6075  fn default() -> Self {
6076    L2NormOptionsArgs {
6077      fused_activation_function: ActivationFunctionType::NONE,
6078    }
6079  }
6080}
6081
6082pub struct L2NormOptionsBuilder<'a: 'b, 'b> {
6083  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6084  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6085}
6086impl<'a: 'b, 'b> L2NormOptionsBuilder<'a, 'b> {
6087  #[inline]
6088  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
6089    self.fbb_.push_slot::<ActivationFunctionType>(L2NormOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
6090  }
6091  #[inline]
6092  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> L2NormOptionsBuilder<'a, 'b> {
6093    let start = _fbb.start_table();
6094    L2NormOptionsBuilder {
6095      fbb_: _fbb,
6096      start_: start,
6097    }
6098  }
6099  #[inline]
6100  pub fn finish(self) -> flatbuffers::WIPOffset<L2NormOptions<'a>> {
6101    let o = self.fbb_.end_table(self.start_);
6102    flatbuffers::WIPOffset::new(o.value())
6103  }
6104}
6105
6106impl core::fmt::Debug for L2NormOptions<'_> {
6107  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6108    let mut ds = f.debug_struct("L2NormOptions");
6109      ds.field("fused_activation_function", &self.fused_activation_function());
6110      ds.finish()
6111  }
6112}
6113pub enum LocalResponseNormalizationOptionsOffset {}
6114#[derive(Copy, Clone, PartialEq)]
6115
6116pub struct LocalResponseNormalizationOptions<'a> {
6117  pub _tab: flatbuffers::Table<'a>,
6118}
6119
6120impl<'a> flatbuffers::Follow<'a> for LocalResponseNormalizationOptions<'a> {
6121  type Inner = LocalResponseNormalizationOptions<'a>;
6122  #[inline]
6123  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6124    Self { _tab: flatbuffers::Table::new(buf, loc) }
6125  }
6126}
6127
6128impl<'a> LocalResponseNormalizationOptions<'a> {
6129  pub const VT_RADIUS: flatbuffers::VOffsetT = 4;
6130  pub const VT_BIAS: flatbuffers::VOffsetT = 6;
6131  pub const VT_ALPHA: flatbuffers::VOffsetT = 8;
6132  pub const VT_BETA: flatbuffers::VOffsetT = 10;
6133
6134  #[inline]
6135  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6136    LocalResponseNormalizationOptions { _tab: table }
6137  }
6138  #[allow(unused_mut)]
6139  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6140    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6141    args: &'args LocalResponseNormalizationOptionsArgs
6142  ) -> flatbuffers::WIPOffset<LocalResponseNormalizationOptions<'bldr>> {
6143    let mut builder = LocalResponseNormalizationOptionsBuilder::new(_fbb);
6144    builder.add_beta(args.beta);
6145    builder.add_alpha(args.alpha);
6146    builder.add_bias(args.bias);
6147    builder.add_radius(args.radius);
6148    builder.finish()
6149  }
6150
6151
6152  #[inline]
6153  pub fn radius(&self) -> i32 {
6154    // Safety:
6155    // Created from valid Table for this object
6156    // which contains a valid value in this slot
6157    unsafe { self._tab.get::<i32>(LocalResponseNormalizationOptions::VT_RADIUS, Some(0)).unwrap()}
6158  }
6159  #[inline]
6160  pub fn bias(&self) -> f32 {
6161    // Safety:
6162    // Created from valid Table for this object
6163    // which contains a valid value in this slot
6164    unsafe { self._tab.get::<f32>(LocalResponseNormalizationOptions::VT_BIAS, Some(0.0)).unwrap()}
6165  }
6166  #[inline]
6167  pub fn alpha(&self) -> f32 {
6168    // Safety:
6169    // Created from valid Table for this object
6170    // which contains a valid value in this slot
6171    unsafe { self._tab.get::<f32>(LocalResponseNormalizationOptions::VT_ALPHA, Some(0.0)).unwrap()}
6172  }
6173  #[inline]
6174  pub fn beta(&self) -> f32 {
6175    // Safety:
6176    // Created from valid Table for this object
6177    // which contains a valid value in this slot
6178    unsafe { self._tab.get::<f32>(LocalResponseNormalizationOptions::VT_BETA, Some(0.0)).unwrap()}
6179  }
6180}
6181
6182impl flatbuffers::Verifiable for LocalResponseNormalizationOptions<'_> {
6183  #[inline]
6184  fn run_verifier(
6185    v: &mut flatbuffers::Verifier, pos: usize
6186  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6187    use self::flatbuffers::Verifiable;
6188    v.visit_table(pos)?
6189     .visit_field::<i32>("radius", Self::VT_RADIUS, false)?
6190     .visit_field::<f32>("bias", Self::VT_BIAS, false)?
6191     .visit_field::<f32>("alpha", Self::VT_ALPHA, false)?
6192     .visit_field::<f32>("beta", Self::VT_BETA, false)?
6193     .finish();
6194    Ok(())
6195  }
6196}
6197pub struct LocalResponseNormalizationOptionsArgs {
6198    pub radius: i32,
6199    pub bias: f32,
6200    pub alpha: f32,
6201    pub beta: f32,
6202}
6203impl<'a> Default for LocalResponseNormalizationOptionsArgs {
6204  #[inline]
6205  fn default() -> Self {
6206    LocalResponseNormalizationOptionsArgs {
6207      radius: 0,
6208      bias: 0.0,
6209      alpha: 0.0,
6210      beta: 0.0,
6211    }
6212  }
6213}
6214
6215pub struct LocalResponseNormalizationOptionsBuilder<'a: 'b, 'b> {
6216  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6217  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6218}
6219impl<'a: 'b, 'b> LocalResponseNormalizationOptionsBuilder<'a, 'b> {
6220  #[inline]
6221  pub fn add_radius(&mut self, radius: i32) {
6222    self.fbb_.push_slot::<i32>(LocalResponseNormalizationOptions::VT_RADIUS, radius, 0);
6223  }
6224  #[inline]
6225  pub fn add_bias(&mut self, bias: f32) {
6226    self.fbb_.push_slot::<f32>(LocalResponseNormalizationOptions::VT_BIAS, bias, 0.0);
6227  }
6228  #[inline]
6229  pub fn add_alpha(&mut self, alpha: f32) {
6230    self.fbb_.push_slot::<f32>(LocalResponseNormalizationOptions::VT_ALPHA, alpha, 0.0);
6231  }
6232  #[inline]
6233  pub fn add_beta(&mut self, beta: f32) {
6234    self.fbb_.push_slot::<f32>(LocalResponseNormalizationOptions::VT_BETA, beta, 0.0);
6235  }
6236  #[inline]
6237  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LocalResponseNormalizationOptionsBuilder<'a, 'b> {
6238    let start = _fbb.start_table();
6239    LocalResponseNormalizationOptionsBuilder {
6240      fbb_: _fbb,
6241      start_: start,
6242    }
6243  }
6244  #[inline]
6245  pub fn finish(self) -> flatbuffers::WIPOffset<LocalResponseNormalizationOptions<'a>> {
6246    let o = self.fbb_.end_table(self.start_);
6247    flatbuffers::WIPOffset::new(o.value())
6248  }
6249}
6250
6251impl core::fmt::Debug for LocalResponseNormalizationOptions<'_> {
6252  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6253    let mut ds = f.debug_struct("LocalResponseNormalizationOptions");
6254      ds.field("radius", &self.radius());
6255      ds.field("bias", &self.bias());
6256      ds.field("alpha", &self.alpha());
6257      ds.field("beta", &self.beta());
6258      ds.finish()
6259  }
6260}
6261pub enum LSTMOptionsOffset {}
6262#[derive(Copy, Clone, PartialEq)]
6263
6264pub struct LSTMOptions<'a> {
6265  pub _tab: flatbuffers::Table<'a>,
6266}
6267
6268impl<'a> flatbuffers::Follow<'a> for LSTMOptions<'a> {
6269  type Inner = LSTMOptions<'a>;
6270  #[inline]
6271  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6272    Self { _tab: flatbuffers::Table::new(buf, loc) }
6273  }
6274}
6275
6276impl<'a> LSTMOptions<'a> {
6277  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
6278  pub const VT_CELL_CLIP: flatbuffers::VOffsetT = 6;
6279  pub const VT_PROJ_CLIP: flatbuffers::VOffsetT = 8;
6280  pub const VT_KERNEL_TYPE: flatbuffers::VOffsetT = 10;
6281  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 12;
6282
6283  #[inline]
6284  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6285    LSTMOptions { _tab: table }
6286  }
6287  #[allow(unused_mut)]
6288  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6289    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6290    args: &'args LSTMOptionsArgs
6291  ) -> flatbuffers::WIPOffset<LSTMOptions<'bldr>> {
6292    let mut builder = LSTMOptionsBuilder::new(_fbb);
6293    builder.add_proj_clip(args.proj_clip);
6294    builder.add_cell_clip(args.cell_clip);
6295    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
6296    builder.add_kernel_type(args.kernel_type);
6297    builder.add_fused_activation_function(args.fused_activation_function);
6298    builder.finish()
6299  }
6300
6301
6302  #[inline]
6303  pub fn fused_activation_function(&self) -> ActivationFunctionType {
6304    // Safety:
6305    // Created from valid Table for this object
6306    // which contains a valid value in this slot
6307    unsafe { self._tab.get::<ActivationFunctionType>(LSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
6308  }
6309  #[inline]
6310  pub fn cell_clip(&self) -> f32 {
6311    // Safety:
6312    // Created from valid Table for this object
6313    // which contains a valid value in this slot
6314    unsafe { self._tab.get::<f32>(LSTMOptions::VT_CELL_CLIP, Some(0.0)).unwrap()}
6315  }
6316  #[inline]
6317  pub fn proj_clip(&self) -> f32 {
6318    // Safety:
6319    // Created from valid Table for this object
6320    // which contains a valid value in this slot
6321    unsafe { self._tab.get::<f32>(LSTMOptions::VT_PROJ_CLIP, Some(0.0)).unwrap()}
6322  }
6323  #[inline]
6324  pub fn kernel_type(&self) -> LSTMKernelType {
6325    // Safety:
6326    // Created from valid Table for this object
6327    // which contains a valid value in this slot
6328    unsafe { self._tab.get::<LSTMKernelType>(LSTMOptions::VT_KERNEL_TYPE, Some(LSTMKernelType::FULL)).unwrap()}
6329  }
6330  #[inline]
6331  pub fn asymmetric_quantize_inputs(&self) -> bool {
6332    // Safety:
6333    // Created from valid Table for this object
6334    // which contains a valid value in this slot
6335    unsafe { self._tab.get::<bool>(LSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
6336  }
6337}
6338
6339impl flatbuffers::Verifiable for LSTMOptions<'_> {
6340  #[inline]
6341  fn run_verifier(
6342    v: &mut flatbuffers::Verifier, pos: usize
6343  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6344    use self::flatbuffers::Verifiable;
6345    v.visit_table(pos)?
6346     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
6347     .visit_field::<f32>("cell_clip", Self::VT_CELL_CLIP, false)?
6348     .visit_field::<f32>("proj_clip", Self::VT_PROJ_CLIP, false)?
6349     .visit_field::<LSTMKernelType>("kernel_type", Self::VT_KERNEL_TYPE, false)?
6350     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
6351     .finish();
6352    Ok(())
6353  }
6354}
6355pub struct LSTMOptionsArgs {
6356    pub fused_activation_function: ActivationFunctionType,
6357    pub cell_clip: f32,
6358    pub proj_clip: f32,
6359    pub kernel_type: LSTMKernelType,
6360    pub asymmetric_quantize_inputs: bool,
6361}
6362impl<'a> Default for LSTMOptionsArgs {
6363  #[inline]
6364  fn default() -> Self {
6365    LSTMOptionsArgs {
6366      fused_activation_function: ActivationFunctionType::NONE,
6367      cell_clip: 0.0,
6368      proj_clip: 0.0,
6369      kernel_type: LSTMKernelType::FULL,
6370      asymmetric_quantize_inputs: false,
6371    }
6372  }
6373}
6374
6375pub struct LSTMOptionsBuilder<'a: 'b, 'b> {
6376  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6377  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6378}
6379impl<'a: 'b, 'b> LSTMOptionsBuilder<'a, 'b> {
6380  #[inline]
6381  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
6382    self.fbb_.push_slot::<ActivationFunctionType>(LSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
6383  }
6384  #[inline]
6385  pub fn add_cell_clip(&mut self, cell_clip: f32) {
6386    self.fbb_.push_slot::<f32>(LSTMOptions::VT_CELL_CLIP, cell_clip, 0.0);
6387  }
6388  #[inline]
6389  pub fn add_proj_clip(&mut self, proj_clip: f32) {
6390    self.fbb_.push_slot::<f32>(LSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0);
6391  }
6392  #[inline]
6393  pub fn add_kernel_type(&mut self, kernel_type: LSTMKernelType) {
6394    self.fbb_.push_slot::<LSTMKernelType>(LSTMOptions::VT_KERNEL_TYPE, kernel_type, LSTMKernelType::FULL);
6395  }
6396  #[inline]
6397  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
6398    self.fbb_.push_slot::<bool>(LSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
6399  }
6400  #[inline]
6401  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LSTMOptionsBuilder<'a, 'b> {
6402    let start = _fbb.start_table();
6403    LSTMOptionsBuilder {
6404      fbb_: _fbb,
6405      start_: start,
6406    }
6407  }
6408  #[inline]
6409  pub fn finish(self) -> flatbuffers::WIPOffset<LSTMOptions<'a>> {
6410    let o = self.fbb_.end_table(self.start_);
6411    flatbuffers::WIPOffset::new(o.value())
6412  }
6413}
6414
6415impl core::fmt::Debug for LSTMOptions<'_> {
6416  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6417    let mut ds = f.debug_struct("LSTMOptions");
6418      ds.field("fused_activation_function", &self.fused_activation_function());
6419      ds.field("cell_clip", &self.cell_clip());
6420      ds.field("proj_clip", &self.proj_clip());
6421      ds.field("kernel_type", &self.kernel_type());
6422      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
6423      ds.finish()
6424  }
6425}
6426pub enum UnidirectionalSequenceLSTMOptionsOffset {}
6427#[derive(Copy, Clone, PartialEq)]
6428
6429pub struct UnidirectionalSequenceLSTMOptions<'a> {
6430  pub _tab: flatbuffers::Table<'a>,
6431}
6432
6433impl<'a> flatbuffers::Follow<'a> for UnidirectionalSequenceLSTMOptions<'a> {
6434  type Inner = UnidirectionalSequenceLSTMOptions<'a>;
6435  #[inline]
6436  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6437    Self { _tab: flatbuffers::Table::new(buf, loc) }
6438  }
6439}
6440
6441impl<'a> UnidirectionalSequenceLSTMOptions<'a> {
6442  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
6443  pub const VT_CELL_CLIP: flatbuffers::VOffsetT = 6;
6444  pub const VT_PROJ_CLIP: flatbuffers::VOffsetT = 8;
6445  pub const VT_TIME_MAJOR: flatbuffers::VOffsetT = 10;
6446  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 12;
6447  pub const VT_DIAGONAL_RECURRENT_TENSORS: flatbuffers::VOffsetT = 14;
6448
6449  #[inline]
6450  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6451    UnidirectionalSequenceLSTMOptions { _tab: table }
6452  }
6453  #[allow(unused_mut)]
6454  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6455    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6456    args: &'args UnidirectionalSequenceLSTMOptionsArgs
6457  ) -> flatbuffers::WIPOffset<UnidirectionalSequenceLSTMOptions<'bldr>> {
6458    let mut builder = UnidirectionalSequenceLSTMOptionsBuilder::new(_fbb);
6459    builder.add_proj_clip(args.proj_clip);
6460    builder.add_cell_clip(args.cell_clip);
6461    builder.add_diagonal_recurrent_tensors(args.diagonal_recurrent_tensors);
6462    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
6463    builder.add_time_major(args.time_major);
6464    builder.add_fused_activation_function(args.fused_activation_function);
6465    builder.finish()
6466  }
6467
6468
6469  #[inline]
6470  pub fn fused_activation_function(&self) -> ActivationFunctionType {
6471    // Safety:
6472    // Created from valid Table for this object
6473    // which contains a valid value in this slot
6474    unsafe { self._tab.get::<ActivationFunctionType>(UnidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
6475  }
6476  #[inline]
6477  pub fn cell_clip(&self) -> f32 {
6478    // Safety:
6479    // Created from valid Table for this object
6480    // which contains a valid value in this slot
6481    unsafe { self._tab.get::<f32>(UnidirectionalSequenceLSTMOptions::VT_CELL_CLIP, Some(0.0)).unwrap()}
6482  }
6483  #[inline]
6484  pub fn proj_clip(&self) -> f32 {
6485    // Safety:
6486    // Created from valid Table for this object
6487    // which contains a valid value in this slot
6488    unsafe { self._tab.get::<f32>(UnidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, Some(0.0)).unwrap()}
6489  }
6490  #[inline]
6491  pub fn time_major(&self) -> bool {
6492    // Safety:
6493    // Created from valid Table for this object
6494    // which contains a valid value in this slot
6495    unsafe { self._tab.get::<bool>(UnidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, Some(false)).unwrap()}
6496  }
6497  #[inline]
6498  pub fn asymmetric_quantize_inputs(&self) -> bool {
6499    // Safety:
6500    // Created from valid Table for this object
6501    // which contains a valid value in this slot
6502    unsafe { self._tab.get::<bool>(UnidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
6503  }
6504  #[inline]
6505  pub fn diagonal_recurrent_tensors(&self) -> bool {
6506    // Safety:
6507    // Created from valid Table for this object
6508    // which contains a valid value in this slot
6509    unsafe { self._tab.get::<bool>(UnidirectionalSequenceLSTMOptions::VT_DIAGONAL_RECURRENT_TENSORS, Some(false)).unwrap()}
6510  }
6511}
6512
6513impl flatbuffers::Verifiable for UnidirectionalSequenceLSTMOptions<'_> {
6514  #[inline]
6515  fn run_verifier(
6516    v: &mut flatbuffers::Verifier, pos: usize
6517  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6518    use self::flatbuffers::Verifiable;
6519    v.visit_table(pos)?
6520     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
6521     .visit_field::<f32>("cell_clip", Self::VT_CELL_CLIP, false)?
6522     .visit_field::<f32>("proj_clip", Self::VT_PROJ_CLIP, false)?
6523     .visit_field::<bool>("time_major", Self::VT_TIME_MAJOR, false)?
6524     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
6525     .visit_field::<bool>("diagonal_recurrent_tensors", Self::VT_DIAGONAL_RECURRENT_TENSORS, false)?
6526     .finish();
6527    Ok(())
6528  }
6529}
6530pub struct UnidirectionalSequenceLSTMOptionsArgs {
6531    pub fused_activation_function: ActivationFunctionType,
6532    pub cell_clip: f32,
6533    pub proj_clip: f32,
6534    pub time_major: bool,
6535    pub asymmetric_quantize_inputs: bool,
6536    pub diagonal_recurrent_tensors: bool,
6537}
6538impl<'a> Default for UnidirectionalSequenceLSTMOptionsArgs {
6539  #[inline]
6540  fn default() -> Self {
6541    UnidirectionalSequenceLSTMOptionsArgs {
6542      fused_activation_function: ActivationFunctionType::NONE,
6543      cell_clip: 0.0,
6544      proj_clip: 0.0,
6545      time_major: false,
6546      asymmetric_quantize_inputs: false,
6547      diagonal_recurrent_tensors: false,
6548    }
6549  }
6550}
6551
6552pub struct UnidirectionalSequenceLSTMOptionsBuilder<'a: 'b, 'b> {
6553  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6554  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6555}
6556impl<'a: 'b, 'b> UnidirectionalSequenceLSTMOptionsBuilder<'a, 'b> {
6557  #[inline]
6558  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
6559    self.fbb_.push_slot::<ActivationFunctionType>(UnidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
6560  }
6561  #[inline]
6562  pub fn add_cell_clip(&mut self, cell_clip: f32) {
6563    self.fbb_.push_slot::<f32>(UnidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0);
6564  }
6565  #[inline]
6566  pub fn add_proj_clip(&mut self, proj_clip: f32) {
6567    self.fbb_.push_slot::<f32>(UnidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0);
6568  }
6569  #[inline]
6570  pub fn add_time_major(&mut self, time_major: bool) {
6571    self.fbb_.push_slot::<bool>(UnidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, time_major, false);
6572  }
6573  #[inline]
6574  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
6575    self.fbb_.push_slot::<bool>(UnidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
6576  }
6577  #[inline]
6578  pub fn add_diagonal_recurrent_tensors(&mut self, diagonal_recurrent_tensors: bool) {
6579    self.fbb_.push_slot::<bool>(UnidirectionalSequenceLSTMOptions::VT_DIAGONAL_RECURRENT_TENSORS, diagonal_recurrent_tensors, false);
6580  }
6581  #[inline]
6582  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnidirectionalSequenceLSTMOptionsBuilder<'a, 'b> {
6583    let start = _fbb.start_table();
6584    UnidirectionalSequenceLSTMOptionsBuilder {
6585      fbb_: _fbb,
6586      start_: start,
6587    }
6588  }
6589  #[inline]
6590  pub fn finish(self) -> flatbuffers::WIPOffset<UnidirectionalSequenceLSTMOptions<'a>> {
6591    let o = self.fbb_.end_table(self.start_);
6592    flatbuffers::WIPOffset::new(o.value())
6593  }
6594}
6595
6596impl core::fmt::Debug for UnidirectionalSequenceLSTMOptions<'_> {
6597  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6598    let mut ds = f.debug_struct("UnidirectionalSequenceLSTMOptions");
6599      ds.field("fused_activation_function", &self.fused_activation_function());
6600      ds.field("cell_clip", &self.cell_clip());
6601      ds.field("proj_clip", &self.proj_clip());
6602      ds.field("time_major", &self.time_major());
6603      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
6604      ds.field("diagonal_recurrent_tensors", &self.diagonal_recurrent_tensors());
6605      ds.finish()
6606  }
6607}
6608pub enum BidirectionalSequenceLSTMOptionsOffset {}
6609#[derive(Copy, Clone, PartialEq)]
6610
6611pub struct BidirectionalSequenceLSTMOptions<'a> {
6612  pub _tab: flatbuffers::Table<'a>,
6613}
6614
6615impl<'a> flatbuffers::Follow<'a> for BidirectionalSequenceLSTMOptions<'a> {
6616  type Inner = BidirectionalSequenceLSTMOptions<'a>;
6617  #[inline]
6618  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6619    Self { _tab: flatbuffers::Table::new(buf, loc) }
6620  }
6621}
6622
6623impl<'a> BidirectionalSequenceLSTMOptions<'a> {
6624  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
6625  pub const VT_CELL_CLIP: flatbuffers::VOffsetT = 6;
6626  pub const VT_PROJ_CLIP: flatbuffers::VOffsetT = 8;
6627  pub const VT_MERGE_OUTPUTS: flatbuffers::VOffsetT = 10;
6628  pub const VT_TIME_MAJOR: flatbuffers::VOffsetT = 12;
6629  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 14;
6630
6631  #[inline]
6632  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6633    BidirectionalSequenceLSTMOptions { _tab: table }
6634  }
6635  #[allow(unused_mut)]
6636  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6637    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6638    args: &'args BidirectionalSequenceLSTMOptionsArgs
6639  ) -> flatbuffers::WIPOffset<BidirectionalSequenceLSTMOptions<'bldr>> {
6640    let mut builder = BidirectionalSequenceLSTMOptionsBuilder::new(_fbb);
6641    builder.add_proj_clip(args.proj_clip);
6642    builder.add_cell_clip(args.cell_clip);
6643    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
6644    builder.add_time_major(args.time_major);
6645    builder.add_merge_outputs(args.merge_outputs);
6646    builder.add_fused_activation_function(args.fused_activation_function);
6647    builder.finish()
6648  }
6649
6650
6651  #[inline]
6652  pub fn fused_activation_function(&self) -> ActivationFunctionType {
6653    // Safety:
6654    // Created from valid Table for this object
6655    // which contains a valid value in this slot
6656    unsafe { self._tab.get::<ActivationFunctionType>(BidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
6657  }
6658  #[inline]
6659  pub fn cell_clip(&self) -> f32 {
6660    // Safety:
6661    // Created from valid Table for this object
6662    // which contains a valid value in this slot
6663    unsafe { self._tab.get::<f32>(BidirectionalSequenceLSTMOptions::VT_CELL_CLIP, Some(0.0)).unwrap()}
6664  }
6665  #[inline]
6666  pub fn proj_clip(&self) -> f32 {
6667    // Safety:
6668    // Created from valid Table for this object
6669    // which contains a valid value in this slot
6670    unsafe { self._tab.get::<f32>(BidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, Some(0.0)).unwrap()}
6671  }
6672  #[inline]
6673  pub fn merge_outputs(&self) -> bool {
6674    // Safety:
6675    // Created from valid Table for this object
6676    // which contains a valid value in this slot
6677    unsafe { self._tab.get::<bool>(BidirectionalSequenceLSTMOptions::VT_MERGE_OUTPUTS, Some(false)).unwrap()}
6678  }
6679  #[inline]
6680  pub fn time_major(&self) -> bool {
6681    // Safety:
6682    // Created from valid Table for this object
6683    // which contains a valid value in this slot
6684    unsafe { self._tab.get::<bool>(BidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, Some(true)).unwrap()}
6685  }
6686  #[inline]
6687  pub fn asymmetric_quantize_inputs(&self) -> bool {
6688    // Safety:
6689    // Created from valid Table for this object
6690    // which contains a valid value in this slot
6691    unsafe { self._tab.get::<bool>(BidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
6692  }
6693}
6694
6695impl flatbuffers::Verifiable for BidirectionalSequenceLSTMOptions<'_> {
6696  #[inline]
6697  fn run_verifier(
6698    v: &mut flatbuffers::Verifier, pos: usize
6699  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6700    use self::flatbuffers::Verifiable;
6701    v.visit_table(pos)?
6702     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
6703     .visit_field::<f32>("cell_clip", Self::VT_CELL_CLIP, false)?
6704     .visit_field::<f32>("proj_clip", Self::VT_PROJ_CLIP, false)?
6705     .visit_field::<bool>("merge_outputs", Self::VT_MERGE_OUTPUTS, false)?
6706     .visit_field::<bool>("time_major", Self::VT_TIME_MAJOR, false)?
6707     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
6708     .finish();
6709    Ok(())
6710  }
6711}
6712pub struct BidirectionalSequenceLSTMOptionsArgs {
6713    pub fused_activation_function: ActivationFunctionType,
6714    pub cell_clip: f32,
6715    pub proj_clip: f32,
6716    pub merge_outputs: bool,
6717    pub time_major: bool,
6718    pub asymmetric_quantize_inputs: bool,
6719}
6720impl<'a> Default for BidirectionalSequenceLSTMOptionsArgs {
6721  #[inline]
6722  fn default() -> Self {
6723    BidirectionalSequenceLSTMOptionsArgs {
6724      fused_activation_function: ActivationFunctionType::NONE,
6725      cell_clip: 0.0,
6726      proj_clip: 0.0,
6727      merge_outputs: false,
6728      time_major: true,
6729      asymmetric_quantize_inputs: false,
6730    }
6731  }
6732}
6733
6734pub struct BidirectionalSequenceLSTMOptionsBuilder<'a: 'b, 'b> {
6735  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6736  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6737}
6738impl<'a: 'b, 'b> BidirectionalSequenceLSTMOptionsBuilder<'a, 'b> {
6739  #[inline]
6740  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
6741    self.fbb_.push_slot::<ActivationFunctionType>(BidirectionalSequenceLSTMOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
6742  }
6743  #[inline]
6744  pub fn add_cell_clip(&mut self, cell_clip: f32) {
6745    self.fbb_.push_slot::<f32>(BidirectionalSequenceLSTMOptions::VT_CELL_CLIP, cell_clip, 0.0);
6746  }
6747  #[inline]
6748  pub fn add_proj_clip(&mut self, proj_clip: f32) {
6749    self.fbb_.push_slot::<f32>(BidirectionalSequenceLSTMOptions::VT_PROJ_CLIP, proj_clip, 0.0);
6750  }
6751  #[inline]
6752  pub fn add_merge_outputs(&mut self, merge_outputs: bool) {
6753    self.fbb_.push_slot::<bool>(BidirectionalSequenceLSTMOptions::VT_MERGE_OUTPUTS, merge_outputs, false);
6754  }
6755  #[inline]
6756  pub fn add_time_major(&mut self, time_major: bool) {
6757    self.fbb_.push_slot::<bool>(BidirectionalSequenceLSTMOptions::VT_TIME_MAJOR, time_major, true);
6758  }
6759  #[inline]
6760  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
6761    self.fbb_.push_slot::<bool>(BidirectionalSequenceLSTMOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
6762  }
6763  #[inline]
6764  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BidirectionalSequenceLSTMOptionsBuilder<'a, 'b> {
6765    let start = _fbb.start_table();
6766    BidirectionalSequenceLSTMOptionsBuilder {
6767      fbb_: _fbb,
6768      start_: start,
6769    }
6770  }
6771  #[inline]
6772  pub fn finish(self) -> flatbuffers::WIPOffset<BidirectionalSequenceLSTMOptions<'a>> {
6773    let o = self.fbb_.end_table(self.start_);
6774    flatbuffers::WIPOffset::new(o.value())
6775  }
6776}
6777
6778impl core::fmt::Debug for BidirectionalSequenceLSTMOptions<'_> {
6779  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6780    let mut ds = f.debug_struct("BidirectionalSequenceLSTMOptions");
6781      ds.field("fused_activation_function", &self.fused_activation_function());
6782      ds.field("cell_clip", &self.cell_clip());
6783      ds.field("proj_clip", &self.proj_clip());
6784      ds.field("merge_outputs", &self.merge_outputs());
6785      ds.field("time_major", &self.time_major());
6786      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
6787      ds.finish()
6788  }
6789}
6790pub enum ResizeBilinearOptionsOffset {}
6791#[derive(Copy, Clone, PartialEq)]
6792
6793pub struct ResizeBilinearOptions<'a> {
6794  pub _tab: flatbuffers::Table<'a>,
6795}
6796
6797impl<'a> flatbuffers::Follow<'a> for ResizeBilinearOptions<'a> {
6798  type Inner = ResizeBilinearOptions<'a>;
6799  #[inline]
6800  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6801    Self { _tab: flatbuffers::Table::new(buf, loc) }
6802  }
6803}
6804
6805impl<'a> ResizeBilinearOptions<'a> {
6806  pub const VT_ALIGN_CORNERS: flatbuffers::VOffsetT = 8;
6807  pub const VT_HALF_PIXEL_CENTERS: flatbuffers::VOffsetT = 10;
6808
6809  #[inline]
6810  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6811    ResizeBilinearOptions { _tab: table }
6812  }
6813  #[allow(unused_mut)]
6814  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6815    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6816    args: &'args ResizeBilinearOptionsArgs
6817  ) -> flatbuffers::WIPOffset<ResizeBilinearOptions<'bldr>> {
6818    let mut builder = ResizeBilinearOptionsBuilder::new(_fbb);
6819    builder.add_half_pixel_centers(args.half_pixel_centers);
6820    builder.add_align_corners(args.align_corners);
6821    builder.finish()
6822  }
6823
6824
6825  #[inline]
6826  pub fn align_corners(&self) -> bool {
6827    // Safety:
6828    // Created from valid Table for this object
6829    // which contains a valid value in this slot
6830    unsafe { self._tab.get::<bool>(ResizeBilinearOptions::VT_ALIGN_CORNERS, Some(false)).unwrap()}
6831  }
6832  #[inline]
6833  pub fn half_pixel_centers(&self) -> bool {
6834    // Safety:
6835    // Created from valid Table for this object
6836    // which contains a valid value in this slot
6837    unsafe { self._tab.get::<bool>(ResizeBilinearOptions::VT_HALF_PIXEL_CENTERS, Some(false)).unwrap()}
6838  }
6839}
6840
6841impl flatbuffers::Verifiable for ResizeBilinearOptions<'_> {
6842  #[inline]
6843  fn run_verifier(
6844    v: &mut flatbuffers::Verifier, pos: usize
6845  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6846    use self::flatbuffers::Verifiable;
6847    v.visit_table(pos)?
6848     .visit_field::<bool>("align_corners", Self::VT_ALIGN_CORNERS, false)?
6849     .visit_field::<bool>("half_pixel_centers", Self::VT_HALF_PIXEL_CENTERS, false)?
6850     .finish();
6851    Ok(())
6852  }
6853}
6854pub struct ResizeBilinearOptionsArgs {
6855    pub align_corners: bool,
6856    pub half_pixel_centers: bool,
6857}
6858impl<'a> Default for ResizeBilinearOptionsArgs {
6859  #[inline]
6860  fn default() -> Self {
6861    ResizeBilinearOptionsArgs {
6862      align_corners: false,
6863      half_pixel_centers: false,
6864    }
6865  }
6866}
6867
6868pub struct ResizeBilinearOptionsBuilder<'a: 'b, 'b> {
6869  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6870  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6871}
6872impl<'a: 'b, 'b> ResizeBilinearOptionsBuilder<'a, 'b> {
6873  #[inline]
6874  pub fn add_align_corners(&mut self, align_corners: bool) {
6875    self.fbb_.push_slot::<bool>(ResizeBilinearOptions::VT_ALIGN_CORNERS, align_corners, false);
6876  }
6877  #[inline]
6878  pub fn add_half_pixel_centers(&mut self, half_pixel_centers: bool) {
6879    self.fbb_.push_slot::<bool>(ResizeBilinearOptions::VT_HALF_PIXEL_CENTERS, half_pixel_centers, false);
6880  }
6881  #[inline]
6882  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ResizeBilinearOptionsBuilder<'a, 'b> {
6883    let start = _fbb.start_table();
6884    ResizeBilinearOptionsBuilder {
6885      fbb_: _fbb,
6886      start_: start,
6887    }
6888  }
6889  #[inline]
6890  pub fn finish(self) -> flatbuffers::WIPOffset<ResizeBilinearOptions<'a>> {
6891    let o = self.fbb_.end_table(self.start_);
6892    flatbuffers::WIPOffset::new(o.value())
6893  }
6894}
6895
6896impl core::fmt::Debug for ResizeBilinearOptions<'_> {
6897  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6898    let mut ds = f.debug_struct("ResizeBilinearOptions");
6899      ds.field("align_corners", &self.align_corners());
6900      ds.field("half_pixel_centers", &self.half_pixel_centers());
6901      ds.finish()
6902  }
6903}
6904pub enum ResizeNearestNeighborOptionsOffset {}
6905#[derive(Copy, Clone, PartialEq)]
6906
6907pub struct ResizeNearestNeighborOptions<'a> {
6908  pub _tab: flatbuffers::Table<'a>,
6909}
6910
6911impl<'a> flatbuffers::Follow<'a> for ResizeNearestNeighborOptions<'a> {
6912  type Inner = ResizeNearestNeighborOptions<'a>;
6913  #[inline]
6914  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6915    Self { _tab: flatbuffers::Table::new(buf, loc) }
6916  }
6917}
6918
6919impl<'a> ResizeNearestNeighborOptions<'a> {
6920  pub const VT_ALIGN_CORNERS: flatbuffers::VOffsetT = 4;
6921  pub const VT_HALF_PIXEL_CENTERS: flatbuffers::VOffsetT = 6;
6922
6923  #[inline]
6924  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6925    ResizeNearestNeighborOptions { _tab: table }
6926  }
6927  #[allow(unused_mut)]
6928  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
6929    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
6930    args: &'args ResizeNearestNeighborOptionsArgs
6931  ) -> flatbuffers::WIPOffset<ResizeNearestNeighborOptions<'bldr>> {
6932    let mut builder = ResizeNearestNeighborOptionsBuilder::new(_fbb);
6933    builder.add_half_pixel_centers(args.half_pixel_centers);
6934    builder.add_align_corners(args.align_corners);
6935    builder.finish()
6936  }
6937
6938
6939  #[inline]
6940  pub fn align_corners(&self) -> bool {
6941    // Safety:
6942    // Created from valid Table for this object
6943    // which contains a valid value in this slot
6944    unsafe { self._tab.get::<bool>(ResizeNearestNeighborOptions::VT_ALIGN_CORNERS, Some(false)).unwrap()}
6945  }
6946  #[inline]
6947  pub fn half_pixel_centers(&self) -> bool {
6948    // Safety:
6949    // Created from valid Table for this object
6950    // which contains a valid value in this slot
6951    unsafe { self._tab.get::<bool>(ResizeNearestNeighborOptions::VT_HALF_PIXEL_CENTERS, Some(false)).unwrap()}
6952  }
6953}
6954
6955impl flatbuffers::Verifiable for ResizeNearestNeighborOptions<'_> {
6956  #[inline]
6957  fn run_verifier(
6958    v: &mut flatbuffers::Verifier, pos: usize
6959  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6960    use self::flatbuffers::Verifiable;
6961    v.visit_table(pos)?
6962     .visit_field::<bool>("align_corners", Self::VT_ALIGN_CORNERS, false)?
6963     .visit_field::<bool>("half_pixel_centers", Self::VT_HALF_PIXEL_CENTERS, false)?
6964     .finish();
6965    Ok(())
6966  }
6967}
6968pub struct ResizeNearestNeighborOptionsArgs {
6969    pub align_corners: bool,
6970    pub half_pixel_centers: bool,
6971}
6972impl<'a> Default for ResizeNearestNeighborOptionsArgs {
6973  #[inline]
6974  fn default() -> Self {
6975    ResizeNearestNeighborOptionsArgs {
6976      align_corners: false,
6977      half_pixel_centers: false,
6978    }
6979  }
6980}
6981
6982pub struct ResizeNearestNeighborOptionsBuilder<'a: 'b, 'b> {
6983  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
6984  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6985}
6986impl<'a: 'b, 'b> ResizeNearestNeighborOptionsBuilder<'a, 'b> {
6987  #[inline]
6988  pub fn add_align_corners(&mut self, align_corners: bool) {
6989    self.fbb_.push_slot::<bool>(ResizeNearestNeighborOptions::VT_ALIGN_CORNERS, align_corners, false);
6990  }
6991  #[inline]
6992  pub fn add_half_pixel_centers(&mut self, half_pixel_centers: bool) {
6993    self.fbb_.push_slot::<bool>(ResizeNearestNeighborOptions::VT_HALF_PIXEL_CENTERS, half_pixel_centers, false);
6994  }
6995  #[inline]
6996  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ResizeNearestNeighborOptionsBuilder<'a, 'b> {
6997    let start = _fbb.start_table();
6998    ResizeNearestNeighborOptionsBuilder {
6999      fbb_: _fbb,
7000      start_: start,
7001    }
7002  }
7003  #[inline]
7004  pub fn finish(self) -> flatbuffers::WIPOffset<ResizeNearestNeighborOptions<'a>> {
7005    let o = self.fbb_.end_table(self.start_);
7006    flatbuffers::WIPOffset::new(o.value())
7007  }
7008}
7009
7010impl core::fmt::Debug for ResizeNearestNeighborOptions<'_> {
7011  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7012    let mut ds = f.debug_struct("ResizeNearestNeighborOptions");
7013      ds.field("align_corners", &self.align_corners());
7014      ds.field("half_pixel_centers", &self.half_pixel_centers());
7015      ds.finish()
7016  }
7017}
7018pub enum CallOptionsOffset {}
7019#[derive(Copy, Clone, PartialEq)]
7020
7021pub struct CallOptions<'a> {
7022  pub _tab: flatbuffers::Table<'a>,
7023}
7024
7025impl<'a> flatbuffers::Follow<'a> for CallOptions<'a> {
7026  type Inner = CallOptions<'a>;
7027  #[inline]
7028  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7029    Self { _tab: flatbuffers::Table::new(buf, loc) }
7030  }
7031}
7032
7033impl<'a> CallOptions<'a> {
7034  pub const VT_SUBGRAPH: flatbuffers::VOffsetT = 4;
7035
7036  #[inline]
7037  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7038    CallOptions { _tab: table }
7039  }
7040  #[allow(unused_mut)]
7041  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7042    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7043    args: &'args CallOptionsArgs
7044  ) -> flatbuffers::WIPOffset<CallOptions<'bldr>> {
7045    let mut builder = CallOptionsBuilder::new(_fbb);
7046    builder.add_subgraph(args.subgraph);
7047    builder.finish()
7048  }
7049
7050
7051  #[inline]
7052  pub fn subgraph(&self) -> u32 {
7053    // Safety:
7054    // Created from valid Table for this object
7055    // which contains a valid value in this slot
7056    unsafe { self._tab.get::<u32>(CallOptions::VT_SUBGRAPH, Some(0)).unwrap()}
7057  }
7058}
7059
7060impl flatbuffers::Verifiable for CallOptions<'_> {
7061  #[inline]
7062  fn run_verifier(
7063    v: &mut flatbuffers::Verifier, pos: usize
7064  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7065    use self::flatbuffers::Verifiable;
7066    v.visit_table(pos)?
7067     .visit_field::<u32>("subgraph", Self::VT_SUBGRAPH, false)?
7068     .finish();
7069    Ok(())
7070  }
7071}
7072pub struct CallOptionsArgs {
7073    pub subgraph: u32,
7074}
7075impl<'a> Default for CallOptionsArgs {
7076  #[inline]
7077  fn default() -> Self {
7078    CallOptionsArgs {
7079      subgraph: 0,
7080    }
7081  }
7082}
7083
7084pub struct CallOptionsBuilder<'a: 'b, 'b> {
7085  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7086  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7087}
7088impl<'a: 'b, 'b> CallOptionsBuilder<'a, 'b> {
7089  #[inline]
7090  pub fn add_subgraph(&mut self, subgraph: u32) {
7091    self.fbb_.push_slot::<u32>(CallOptions::VT_SUBGRAPH, subgraph, 0);
7092  }
7093  #[inline]
7094  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CallOptionsBuilder<'a, 'b> {
7095    let start = _fbb.start_table();
7096    CallOptionsBuilder {
7097      fbb_: _fbb,
7098      start_: start,
7099    }
7100  }
7101  #[inline]
7102  pub fn finish(self) -> flatbuffers::WIPOffset<CallOptions<'a>> {
7103    let o = self.fbb_.end_table(self.start_);
7104    flatbuffers::WIPOffset::new(o.value())
7105  }
7106}
7107
7108impl core::fmt::Debug for CallOptions<'_> {
7109  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7110    let mut ds = f.debug_struct("CallOptions");
7111      ds.field("subgraph", &self.subgraph());
7112      ds.finish()
7113  }
7114}
7115pub enum PadOptionsOffset {}
7116#[derive(Copy, Clone, PartialEq)]
7117
7118pub struct PadOptions<'a> {
7119  pub _tab: flatbuffers::Table<'a>,
7120}
7121
7122impl<'a> flatbuffers::Follow<'a> for PadOptions<'a> {
7123  type Inner = PadOptions<'a>;
7124  #[inline]
7125  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7126    Self { _tab: flatbuffers::Table::new(buf, loc) }
7127  }
7128}
7129
7130impl<'a> PadOptions<'a> {
7131
7132  #[inline]
7133  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7134    PadOptions { _tab: table }
7135  }
7136  #[allow(unused_mut)]
7137  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7138    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7139    _args: &'args PadOptionsArgs
7140  ) -> flatbuffers::WIPOffset<PadOptions<'bldr>> {
7141    let mut builder = PadOptionsBuilder::new(_fbb);
7142    builder.finish()
7143  }
7144
7145}
7146
7147impl flatbuffers::Verifiable for PadOptions<'_> {
7148  #[inline]
7149  fn run_verifier(
7150    v: &mut flatbuffers::Verifier, pos: usize
7151  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7152    use self::flatbuffers::Verifiable;
7153    v.visit_table(pos)?
7154     .finish();
7155    Ok(())
7156  }
7157}
7158pub struct PadOptionsArgs {
7159}
7160impl<'a> Default for PadOptionsArgs {
7161  #[inline]
7162  fn default() -> Self {
7163    PadOptionsArgs {
7164    }
7165  }
7166}
7167
7168pub struct PadOptionsBuilder<'a: 'b, 'b> {
7169  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7170  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7171}
7172impl<'a: 'b, 'b> PadOptionsBuilder<'a, 'b> {
7173  #[inline]
7174  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PadOptionsBuilder<'a, 'b> {
7175    let start = _fbb.start_table();
7176    PadOptionsBuilder {
7177      fbb_: _fbb,
7178      start_: start,
7179    }
7180  }
7181  #[inline]
7182  pub fn finish(self) -> flatbuffers::WIPOffset<PadOptions<'a>> {
7183    let o = self.fbb_.end_table(self.start_);
7184    flatbuffers::WIPOffset::new(o.value())
7185  }
7186}
7187
7188impl core::fmt::Debug for PadOptions<'_> {
7189  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7190    let mut ds = f.debug_struct("PadOptions");
7191      ds.finish()
7192  }
7193}
7194pub enum PadV2OptionsOffset {}
7195#[derive(Copy, Clone, PartialEq)]
7196
7197pub struct PadV2Options<'a> {
7198  pub _tab: flatbuffers::Table<'a>,
7199}
7200
7201impl<'a> flatbuffers::Follow<'a> for PadV2Options<'a> {
7202  type Inner = PadV2Options<'a>;
7203  #[inline]
7204  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7205    Self { _tab: flatbuffers::Table::new(buf, loc) }
7206  }
7207}
7208
7209impl<'a> PadV2Options<'a> {
7210
7211  #[inline]
7212  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7213    PadV2Options { _tab: table }
7214  }
7215  #[allow(unused_mut)]
7216  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7217    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7218    _args: &'args PadV2OptionsArgs
7219  ) -> flatbuffers::WIPOffset<PadV2Options<'bldr>> {
7220    let mut builder = PadV2OptionsBuilder::new(_fbb);
7221    builder.finish()
7222  }
7223
7224}
7225
7226impl flatbuffers::Verifiable for PadV2Options<'_> {
7227  #[inline]
7228  fn run_verifier(
7229    v: &mut flatbuffers::Verifier, pos: usize
7230  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7231    use self::flatbuffers::Verifiable;
7232    v.visit_table(pos)?
7233     .finish();
7234    Ok(())
7235  }
7236}
7237pub struct PadV2OptionsArgs {
7238}
7239impl<'a> Default for PadV2OptionsArgs {
7240  #[inline]
7241  fn default() -> Self {
7242    PadV2OptionsArgs {
7243    }
7244  }
7245}
7246
7247pub struct PadV2OptionsBuilder<'a: 'b, 'b> {
7248  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7249  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7250}
7251impl<'a: 'b, 'b> PadV2OptionsBuilder<'a, 'b> {
7252  #[inline]
7253  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PadV2OptionsBuilder<'a, 'b> {
7254    let start = _fbb.start_table();
7255    PadV2OptionsBuilder {
7256      fbb_: _fbb,
7257      start_: start,
7258    }
7259  }
7260  #[inline]
7261  pub fn finish(self) -> flatbuffers::WIPOffset<PadV2Options<'a>> {
7262    let o = self.fbb_.end_table(self.start_);
7263    flatbuffers::WIPOffset::new(o.value())
7264  }
7265}
7266
7267impl core::fmt::Debug for PadV2Options<'_> {
7268  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7269    let mut ds = f.debug_struct("PadV2Options");
7270      ds.finish()
7271  }
7272}
7273pub enum ReshapeOptionsOffset {}
7274#[derive(Copy, Clone, PartialEq)]
7275
7276pub struct ReshapeOptions<'a> {
7277  pub _tab: flatbuffers::Table<'a>,
7278}
7279
7280impl<'a> flatbuffers::Follow<'a> for ReshapeOptions<'a> {
7281  type Inner = ReshapeOptions<'a>;
7282  #[inline]
7283  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7284    Self { _tab: flatbuffers::Table::new(buf, loc) }
7285  }
7286}
7287
7288impl<'a> ReshapeOptions<'a> {
7289  pub const VT_NEW_SHAPE: flatbuffers::VOffsetT = 4;
7290
7291  #[inline]
7292  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7293    ReshapeOptions { _tab: table }
7294  }
7295  #[allow(unused_mut)]
7296  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7297    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7298    args: &'args ReshapeOptionsArgs<'args>
7299  ) -> flatbuffers::WIPOffset<ReshapeOptions<'bldr>> {
7300    let mut builder = ReshapeOptionsBuilder::new(_fbb);
7301    if let Some(x) = args.new_shape { builder.add_new_shape(x); }
7302    builder.finish()
7303  }
7304
7305
7306  #[inline]
7307  pub fn new_shape(&self) -> Option<flatbuffers::Vector<'a, i32>> {
7308    // Safety:
7309    // Created from valid Table for this object
7310    // which contains a valid value in this slot
7311    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(ReshapeOptions::VT_NEW_SHAPE, None)}
7312  }
7313}
7314
7315impl flatbuffers::Verifiable for ReshapeOptions<'_> {
7316  #[inline]
7317  fn run_verifier(
7318    v: &mut flatbuffers::Verifier, pos: usize
7319  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7320    use self::flatbuffers::Verifiable;
7321    v.visit_table(pos)?
7322     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("new_shape", Self::VT_NEW_SHAPE, false)?
7323     .finish();
7324    Ok(())
7325  }
7326}
7327pub struct ReshapeOptionsArgs<'a> {
7328    pub new_shape: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
7329}
7330impl<'a> Default for ReshapeOptionsArgs<'a> {
7331  #[inline]
7332  fn default() -> Self {
7333    ReshapeOptionsArgs {
7334      new_shape: None,
7335    }
7336  }
7337}
7338
7339pub struct ReshapeOptionsBuilder<'a: 'b, 'b> {
7340  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7341  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7342}
7343impl<'a: 'b, 'b> ReshapeOptionsBuilder<'a, 'b> {
7344  #[inline]
7345  pub fn add_new_shape(&mut self, new_shape: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
7346    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ReshapeOptions::VT_NEW_SHAPE, new_shape);
7347  }
7348  #[inline]
7349  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ReshapeOptionsBuilder<'a, 'b> {
7350    let start = _fbb.start_table();
7351    ReshapeOptionsBuilder {
7352      fbb_: _fbb,
7353      start_: start,
7354    }
7355  }
7356  #[inline]
7357  pub fn finish(self) -> flatbuffers::WIPOffset<ReshapeOptions<'a>> {
7358    let o = self.fbb_.end_table(self.start_);
7359    flatbuffers::WIPOffset::new(o.value())
7360  }
7361}
7362
7363impl core::fmt::Debug for ReshapeOptions<'_> {
7364  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7365    let mut ds = f.debug_struct("ReshapeOptions");
7366      ds.field("new_shape", &self.new_shape());
7367      ds.finish()
7368  }
7369}
7370pub enum SpaceToBatchNDOptionsOffset {}
7371#[derive(Copy, Clone, PartialEq)]
7372
7373pub struct SpaceToBatchNDOptions<'a> {
7374  pub _tab: flatbuffers::Table<'a>,
7375}
7376
7377impl<'a> flatbuffers::Follow<'a> for SpaceToBatchNDOptions<'a> {
7378  type Inner = SpaceToBatchNDOptions<'a>;
7379  #[inline]
7380  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7381    Self { _tab: flatbuffers::Table::new(buf, loc) }
7382  }
7383}
7384
7385impl<'a> SpaceToBatchNDOptions<'a> {
7386
7387  #[inline]
7388  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7389    SpaceToBatchNDOptions { _tab: table }
7390  }
7391  #[allow(unused_mut)]
7392  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7393    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7394    _args: &'args SpaceToBatchNDOptionsArgs
7395  ) -> flatbuffers::WIPOffset<SpaceToBatchNDOptions<'bldr>> {
7396    let mut builder = SpaceToBatchNDOptionsBuilder::new(_fbb);
7397    builder.finish()
7398  }
7399
7400}
7401
7402impl flatbuffers::Verifiable for SpaceToBatchNDOptions<'_> {
7403  #[inline]
7404  fn run_verifier(
7405    v: &mut flatbuffers::Verifier, pos: usize
7406  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7407    use self::flatbuffers::Verifiable;
7408    v.visit_table(pos)?
7409     .finish();
7410    Ok(())
7411  }
7412}
7413pub struct SpaceToBatchNDOptionsArgs {
7414}
7415impl<'a> Default for SpaceToBatchNDOptionsArgs {
7416  #[inline]
7417  fn default() -> Self {
7418    SpaceToBatchNDOptionsArgs {
7419    }
7420  }
7421}
7422
7423pub struct SpaceToBatchNDOptionsBuilder<'a: 'b, 'b> {
7424  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7425  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7426}
7427impl<'a: 'b, 'b> SpaceToBatchNDOptionsBuilder<'a, 'b> {
7428  #[inline]
7429  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpaceToBatchNDOptionsBuilder<'a, 'b> {
7430    let start = _fbb.start_table();
7431    SpaceToBatchNDOptionsBuilder {
7432      fbb_: _fbb,
7433      start_: start,
7434    }
7435  }
7436  #[inline]
7437  pub fn finish(self) -> flatbuffers::WIPOffset<SpaceToBatchNDOptions<'a>> {
7438    let o = self.fbb_.end_table(self.start_);
7439    flatbuffers::WIPOffset::new(o.value())
7440  }
7441}
7442
7443impl core::fmt::Debug for SpaceToBatchNDOptions<'_> {
7444  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7445    let mut ds = f.debug_struct("SpaceToBatchNDOptions");
7446      ds.finish()
7447  }
7448}
7449pub enum BatchToSpaceNDOptionsOffset {}
7450#[derive(Copy, Clone, PartialEq)]
7451
7452pub struct BatchToSpaceNDOptions<'a> {
7453  pub _tab: flatbuffers::Table<'a>,
7454}
7455
7456impl<'a> flatbuffers::Follow<'a> for BatchToSpaceNDOptions<'a> {
7457  type Inner = BatchToSpaceNDOptions<'a>;
7458  #[inline]
7459  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7460    Self { _tab: flatbuffers::Table::new(buf, loc) }
7461  }
7462}
7463
7464impl<'a> BatchToSpaceNDOptions<'a> {
7465
7466  #[inline]
7467  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7468    BatchToSpaceNDOptions { _tab: table }
7469  }
7470  #[allow(unused_mut)]
7471  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7472    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7473    _args: &'args BatchToSpaceNDOptionsArgs
7474  ) -> flatbuffers::WIPOffset<BatchToSpaceNDOptions<'bldr>> {
7475    let mut builder = BatchToSpaceNDOptionsBuilder::new(_fbb);
7476    builder.finish()
7477  }
7478
7479}
7480
7481impl flatbuffers::Verifiable for BatchToSpaceNDOptions<'_> {
7482  #[inline]
7483  fn run_verifier(
7484    v: &mut flatbuffers::Verifier, pos: usize
7485  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7486    use self::flatbuffers::Verifiable;
7487    v.visit_table(pos)?
7488     .finish();
7489    Ok(())
7490  }
7491}
7492pub struct BatchToSpaceNDOptionsArgs {
7493}
7494impl<'a> Default for BatchToSpaceNDOptionsArgs {
7495  #[inline]
7496  fn default() -> Self {
7497    BatchToSpaceNDOptionsArgs {
7498    }
7499  }
7500}
7501
7502pub struct BatchToSpaceNDOptionsBuilder<'a: 'b, 'b> {
7503  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7504  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7505}
7506impl<'a: 'b, 'b> BatchToSpaceNDOptionsBuilder<'a, 'b> {
7507  #[inline]
7508  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BatchToSpaceNDOptionsBuilder<'a, 'b> {
7509    let start = _fbb.start_table();
7510    BatchToSpaceNDOptionsBuilder {
7511      fbb_: _fbb,
7512      start_: start,
7513    }
7514  }
7515  #[inline]
7516  pub fn finish(self) -> flatbuffers::WIPOffset<BatchToSpaceNDOptions<'a>> {
7517    let o = self.fbb_.end_table(self.start_);
7518    flatbuffers::WIPOffset::new(o.value())
7519  }
7520}
7521
7522impl core::fmt::Debug for BatchToSpaceNDOptions<'_> {
7523  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7524    let mut ds = f.debug_struct("BatchToSpaceNDOptions");
7525      ds.finish()
7526  }
7527}
7528pub enum SkipGramOptionsOffset {}
7529#[derive(Copy, Clone, PartialEq)]
7530
7531pub struct SkipGramOptions<'a> {
7532  pub _tab: flatbuffers::Table<'a>,
7533}
7534
7535impl<'a> flatbuffers::Follow<'a> for SkipGramOptions<'a> {
7536  type Inner = SkipGramOptions<'a>;
7537  #[inline]
7538  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7539    Self { _tab: flatbuffers::Table::new(buf, loc) }
7540  }
7541}
7542
7543impl<'a> SkipGramOptions<'a> {
7544  pub const VT_NGRAM_SIZE: flatbuffers::VOffsetT = 4;
7545  pub const VT_MAX_SKIP_SIZE: flatbuffers::VOffsetT = 6;
7546  pub const VT_INCLUDE_ALL_NGRAMS: flatbuffers::VOffsetT = 8;
7547
7548  #[inline]
7549  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7550    SkipGramOptions { _tab: table }
7551  }
7552  #[allow(unused_mut)]
7553  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7554    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7555    args: &'args SkipGramOptionsArgs
7556  ) -> flatbuffers::WIPOffset<SkipGramOptions<'bldr>> {
7557    let mut builder = SkipGramOptionsBuilder::new(_fbb);
7558    builder.add_max_skip_size(args.max_skip_size);
7559    builder.add_ngram_size(args.ngram_size);
7560    builder.add_include_all_ngrams(args.include_all_ngrams);
7561    builder.finish()
7562  }
7563
7564
7565  #[inline]
7566  pub fn ngram_size(&self) -> i32 {
7567    // Safety:
7568    // Created from valid Table for this object
7569    // which contains a valid value in this slot
7570    unsafe { self._tab.get::<i32>(SkipGramOptions::VT_NGRAM_SIZE, Some(0)).unwrap()}
7571  }
7572  #[inline]
7573  pub fn max_skip_size(&self) -> i32 {
7574    // Safety:
7575    // Created from valid Table for this object
7576    // which contains a valid value in this slot
7577    unsafe { self._tab.get::<i32>(SkipGramOptions::VT_MAX_SKIP_SIZE, Some(0)).unwrap()}
7578  }
7579  #[inline]
7580  pub fn include_all_ngrams(&self) -> bool {
7581    // Safety:
7582    // Created from valid Table for this object
7583    // which contains a valid value in this slot
7584    unsafe { self._tab.get::<bool>(SkipGramOptions::VT_INCLUDE_ALL_NGRAMS, Some(false)).unwrap()}
7585  }
7586}
7587
7588impl flatbuffers::Verifiable for SkipGramOptions<'_> {
7589  #[inline]
7590  fn run_verifier(
7591    v: &mut flatbuffers::Verifier, pos: usize
7592  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7593    use self::flatbuffers::Verifiable;
7594    v.visit_table(pos)?
7595     .visit_field::<i32>("ngram_size", Self::VT_NGRAM_SIZE, false)?
7596     .visit_field::<i32>("max_skip_size", Self::VT_MAX_SKIP_SIZE, false)?
7597     .visit_field::<bool>("include_all_ngrams", Self::VT_INCLUDE_ALL_NGRAMS, false)?
7598     .finish();
7599    Ok(())
7600  }
7601}
7602pub struct SkipGramOptionsArgs {
7603    pub ngram_size: i32,
7604    pub max_skip_size: i32,
7605    pub include_all_ngrams: bool,
7606}
7607impl<'a> Default for SkipGramOptionsArgs {
7608  #[inline]
7609  fn default() -> Self {
7610    SkipGramOptionsArgs {
7611      ngram_size: 0,
7612      max_skip_size: 0,
7613      include_all_ngrams: false,
7614    }
7615  }
7616}
7617
7618pub struct SkipGramOptionsBuilder<'a: 'b, 'b> {
7619  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7620  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7621}
7622impl<'a: 'b, 'b> SkipGramOptionsBuilder<'a, 'b> {
7623  #[inline]
7624  pub fn add_ngram_size(&mut self, ngram_size: i32) {
7625    self.fbb_.push_slot::<i32>(SkipGramOptions::VT_NGRAM_SIZE, ngram_size, 0);
7626  }
7627  #[inline]
7628  pub fn add_max_skip_size(&mut self, max_skip_size: i32) {
7629    self.fbb_.push_slot::<i32>(SkipGramOptions::VT_MAX_SKIP_SIZE, max_skip_size, 0);
7630  }
7631  #[inline]
7632  pub fn add_include_all_ngrams(&mut self, include_all_ngrams: bool) {
7633    self.fbb_.push_slot::<bool>(SkipGramOptions::VT_INCLUDE_ALL_NGRAMS, include_all_ngrams, false);
7634  }
7635  #[inline]
7636  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SkipGramOptionsBuilder<'a, 'b> {
7637    let start = _fbb.start_table();
7638    SkipGramOptionsBuilder {
7639      fbb_: _fbb,
7640      start_: start,
7641    }
7642  }
7643  #[inline]
7644  pub fn finish(self) -> flatbuffers::WIPOffset<SkipGramOptions<'a>> {
7645    let o = self.fbb_.end_table(self.start_);
7646    flatbuffers::WIPOffset::new(o.value())
7647  }
7648}
7649
7650impl core::fmt::Debug for SkipGramOptions<'_> {
7651  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7652    let mut ds = f.debug_struct("SkipGramOptions");
7653      ds.field("ngram_size", &self.ngram_size());
7654      ds.field("max_skip_size", &self.max_skip_size());
7655      ds.field("include_all_ngrams", &self.include_all_ngrams());
7656      ds.finish()
7657  }
7658}
7659pub enum SpaceToDepthOptionsOffset {}
7660#[derive(Copy, Clone, PartialEq)]
7661
7662pub struct SpaceToDepthOptions<'a> {
7663  pub _tab: flatbuffers::Table<'a>,
7664}
7665
7666impl<'a> flatbuffers::Follow<'a> for SpaceToDepthOptions<'a> {
7667  type Inner = SpaceToDepthOptions<'a>;
7668  #[inline]
7669  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7670    Self { _tab: flatbuffers::Table::new(buf, loc) }
7671  }
7672}
7673
7674impl<'a> SpaceToDepthOptions<'a> {
7675  pub const VT_BLOCK_SIZE: flatbuffers::VOffsetT = 4;
7676
7677  #[inline]
7678  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7679    SpaceToDepthOptions { _tab: table }
7680  }
7681  #[allow(unused_mut)]
7682  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7683    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7684    args: &'args SpaceToDepthOptionsArgs
7685  ) -> flatbuffers::WIPOffset<SpaceToDepthOptions<'bldr>> {
7686    let mut builder = SpaceToDepthOptionsBuilder::new(_fbb);
7687    builder.add_block_size(args.block_size);
7688    builder.finish()
7689  }
7690
7691
7692  #[inline]
7693  pub fn block_size(&self) -> i32 {
7694    // Safety:
7695    // Created from valid Table for this object
7696    // which contains a valid value in this slot
7697    unsafe { self._tab.get::<i32>(SpaceToDepthOptions::VT_BLOCK_SIZE, Some(0)).unwrap()}
7698  }
7699}
7700
7701impl flatbuffers::Verifiable for SpaceToDepthOptions<'_> {
7702  #[inline]
7703  fn run_verifier(
7704    v: &mut flatbuffers::Verifier, pos: usize
7705  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7706    use self::flatbuffers::Verifiable;
7707    v.visit_table(pos)?
7708     .visit_field::<i32>("block_size", Self::VT_BLOCK_SIZE, false)?
7709     .finish();
7710    Ok(())
7711  }
7712}
7713pub struct SpaceToDepthOptionsArgs {
7714    pub block_size: i32,
7715}
7716impl<'a> Default for SpaceToDepthOptionsArgs {
7717  #[inline]
7718  fn default() -> Self {
7719    SpaceToDepthOptionsArgs {
7720      block_size: 0,
7721    }
7722  }
7723}
7724
7725pub struct SpaceToDepthOptionsBuilder<'a: 'b, 'b> {
7726  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7727  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7728}
7729impl<'a: 'b, 'b> SpaceToDepthOptionsBuilder<'a, 'b> {
7730  #[inline]
7731  pub fn add_block_size(&mut self, block_size: i32) {
7732    self.fbb_.push_slot::<i32>(SpaceToDepthOptions::VT_BLOCK_SIZE, block_size, 0);
7733  }
7734  #[inline]
7735  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SpaceToDepthOptionsBuilder<'a, 'b> {
7736    let start = _fbb.start_table();
7737    SpaceToDepthOptionsBuilder {
7738      fbb_: _fbb,
7739      start_: start,
7740    }
7741  }
7742  #[inline]
7743  pub fn finish(self) -> flatbuffers::WIPOffset<SpaceToDepthOptions<'a>> {
7744    let o = self.fbb_.end_table(self.start_);
7745    flatbuffers::WIPOffset::new(o.value())
7746  }
7747}
7748
7749impl core::fmt::Debug for SpaceToDepthOptions<'_> {
7750  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7751    let mut ds = f.debug_struct("SpaceToDepthOptions");
7752      ds.field("block_size", &self.block_size());
7753      ds.finish()
7754  }
7755}
7756pub enum DepthToSpaceOptionsOffset {}
7757#[derive(Copy, Clone, PartialEq)]
7758
7759pub struct DepthToSpaceOptions<'a> {
7760  pub _tab: flatbuffers::Table<'a>,
7761}
7762
7763impl<'a> flatbuffers::Follow<'a> for DepthToSpaceOptions<'a> {
7764  type Inner = DepthToSpaceOptions<'a>;
7765  #[inline]
7766  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7767    Self { _tab: flatbuffers::Table::new(buf, loc) }
7768  }
7769}
7770
7771impl<'a> DepthToSpaceOptions<'a> {
7772  pub const VT_BLOCK_SIZE: flatbuffers::VOffsetT = 4;
7773
7774  #[inline]
7775  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7776    DepthToSpaceOptions { _tab: table }
7777  }
7778  #[allow(unused_mut)]
7779  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7780    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7781    args: &'args DepthToSpaceOptionsArgs
7782  ) -> flatbuffers::WIPOffset<DepthToSpaceOptions<'bldr>> {
7783    let mut builder = DepthToSpaceOptionsBuilder::new(_fbb);
7784    builder.add_block_size(args.block_size);
7785    builder.finish()
7786  }
7787
7788
7789  #[inline]
7790  pub fn block_size(&self) -> i32 {
7791    // Safety:
7792    // Created from valid Table for this object
7793    // which contains a valid value in this slot
7794    unsafe { self._tab.get::<i32>(DepthToSpaceOptions::VT_BLOCK_SIZE, Some(0)).unwrap()}
7795  }
7796}
7797
7798impl flatbuffers::Verifiable for DepthToSpaceOptions<'_> {
7799  #[inline]
7800  fn run_verifier(
7801    v: &mut flatbuffers::Verifier, pos: usize
7802  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7803    use self::flatbuffers::Verifiable;
7804    v.visit_table(pos)?
7805     .visit_field::<i32>("block_size", Self::VT_BLOCK_SIZE, false)?
7806     .finish();
7807    Ok(())
7808  }
7809}
7810pub struct DepthToSpaceOptionsArgs {
7811    pub block_size: i32,
7812}
7813impl<'a> Default for DepthToSpaceOptionsArgs {
7814  #[inline]
7815  fn default() -> Self {
7816    DepthToSpaceOptionsArgs {
7817      block_size: 0,
7818    }
7819  }
7820}
7821
7822pub struct DepthToSpaceOptionsBuilder<'a: 'b, 'b> {
7823  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7824  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7825}
7826impl<'a: 'b, 'b> DepthToSpaceOptionsBuilder<'a, 'b> {
7827  #[inline]
7828  pub fn add_block_size(&mut self, block_size: i32) {
7829    self.fbb_.push_slot::<i32>(DepthToSpaceOptions::VT_BLOCK_SIZE, block_size, 0);
7830  }
7831  #[inline]
7832  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DepthToSpaceOptionsBuilder<'a, 'b> {
7833    let start = _fbb.start_table();
7834    DepthToSpaceOptionsBuilder {
7835      fbb_: _fbb,
7836      start_: start,
7837    }
7838  }
7839  #[inline]
7840  pub fn finish(self) -> flatbuffers::WIPOffset<DepthToSpaceOptions<'a>> {
7841    let o = self.fbb_.end_table(self.start_);
7842    flatbuffers::WIPOffset::new(o.value())
7843  }
7844}
7845
7846impl core::fmt::Debug for DepthToSpaceOptions<'_> {
7847  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7848    let mut ds = f.debug_struct("DepthToSpaceOptions");
7849      ds.field("block_size", &self.block_size());
7850      ds.finish()
7851  }
7852}
7853pub enum SubOptionsOffset {}
7854#[derive(Copy, Clone, PartialEq)]
7855
7856pub struct SubOptions<'a> {
7857  pub _tab: flatbuffers::Table<'a>,
7858}
7859
7860impl<'a> flatbuffers::Follow<'a> for SubOptions<'a> {
7861  type Inner = SubOptions<'a>;
7862  #[inline]
7863  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7864    Self { _tab: flatbuffers::Table::new(buf, loc) }
7865  }
7866}
7867
7868impl<'a> SubOptions<'a> {
7869  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
7870  pub const VT_POT_SCALE_INT16: flatbuffers::VOffsetT = 6;
7871
7872  #[inline]
7873  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7874    SubOptions { _tab: table }
7875  }
7876  #[allow(unused_mut)]
7877  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7878    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7879    args: &'args SubOptionsArgs
7880  ) -> flatbuffers::WIPOffset<SubOptions<'bldr>> {
7881    let mut builder = SubOptionsBuilder::new(_fbb);
7882    builder.add_pot_scale_int16(args.pot_scale_int16);
7883    builder.add_fused_activation_function(args.fused_activation_function);
7884    builder.finish()
7885  }
7886
7887
7888  #[inline]
7889  pub fn fused_activation_function(&self) -> ActivationFunctionType {
7890    // Safety:
7891    // Created from valid Table for this object
7892    // which contains a valid value in this slot
7893    unsafe { self._tab.get::<ActivationFunctionType>(SubOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
7894  }
7895  #[inline]
7896  pub fn pot_scale_int16(&self) -> bool {
7897    // Safety:
7898    // Created from valid Table for this object
7899    // which contains a valid value in this slot
7900    unsafe { self._tab.get::<bool>(SubOptions::VT_POT_SCALE_INT16, Some(true)).unwrap()}
7901  }
7902}
7903
7904impl flatbuffers::Verifiable for SubOptions<'_> {
7905  #[inline]
7906  fn run_verifier(
7907    v: &mut flatbuffers::Verifier, pos: usize
7908  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7909    use self::flatbuffers::Verifiable;
7910    v.visit_table(pos)?
7911     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
7912     .visit_field::<bool>("pot_scale_int16", Self::VT_POT_SCALE_INT16, false)?
7913     .finish();
7914    Ok(())
7915  }
7916}
7917pub struct SubOptionsArgs {
7918    pub fused_activation_function: ActivationFunctionType,
7919    pub pot_scale_int16: bool,
7920}
7921impl<'a> Default for SubOptionsArgs {
7922  #[inline]
7923  fn default() -> Self {
7924    SubOptionsArgs {
7925      fused_activation_function: ActivationFunctionType::NONE,
7926      pot_scale_int16: true,
7927    }
7928  }
7929}
7930
7931pub struct SubOptionsBuilder<'a: 'b, 'b> {
7932  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
7933  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7934}
7935impl<'a: 'b, 'b> SubOptionsBuilder<'a, 'b> {
7936  #[inline]
7937  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
7938    self.fbb_.push_slot::<ActivationFunctionType>(SubOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
7939  }
7940  #[inline]
7941  pub fn add_pot_scale_int16(&mut self, pot_scale_int16: bool) {
7942    self.fbb_.push_slot::<bool>(SubOptions::VT_POT_SCALE_INT16, pot_scale_int16, true);
7943  }
7944  #[inline]
7945  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SubOptionsBuilder<'a, 'b> {
7946    let start = _fbb.start_table();
7947    SubOptionsBuilder {
7948      fbb_: _fbb,
7949      start_: start,
7950    }
7951  }
7952  #[inline]
7953  pub fn finish(self) -> flatbuffers::WIPOffset<SubOptions<'a>> {
7954    let o = self.fbb_.end_table(self.start_);
7955    flatbuffers::WIPOffset::new(o.value())
7956  }
7957}
7958
7959impl core::fmt::Debug for SubOptions<'_> {
7960  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7961    let mut ds = f.debug_struct("SubOptions");
7962      ds.field("fused_activation_function", &self.fused_activation_function());
7963      ds.field("pot_scale_int16", &self.pot_scale_int16());
7964      ds.finish()
7965  }
7966}
7967pub enum DivOptionsOffset {}
7968#[derive(Copy, Clone, PartialEq)]
7969
7970pub struct DivOptions<'a> {
7971  pub _tab: flatbuffers::Table<'a>,
7972}
7973
7974impl<'a> flatbuffers::Follow<'a> for DivOptions<'a> {
7975  type Inner = DivOptions<'a>;
7976  #[inline]
7977  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7978    Self { _tab: flatbuffers::Table::new(buf, loc) }
7979  }
7980}
7981
7982impl<'a> DivOptions<'a> {
7983  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 4;
7984
7985  #[inline]
7986  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7987    DivOptions { _tab: table }
7988  }
7989  #[allow(unused_mut)]
7990  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
7991    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
7992    args: &'args DivOptionsArgs
7993  ) -> flatbuffers::WIPOffset<DivOptions<'bldr>> {
7994    let mut builder = DivOptionsBuilder::new(_fbb);
7995    builder.add_fused_activation_function(args.fused_activation_function);
7996    builder.finish()
7997  }
7998
7999
8000  #[inline]
8001  pub fn fused_activation_function(&self) -> ActivationFunctionType {
8002    // Safety:
8003    // Created from valid Table for this object
8004    // which contains a valid value in this slot
8005    unsafe { self._tab.get::<ActivationFunctionType>(DivOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
8006  }
8007}
8008
8009impl flatbuffers::Verifiable for DivOptions<'_> {
8010  #[inline]
8011  fn run_verifier(
8012    v: &mut flatbuffers::Verifier, pos: usize
8013  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8014    use self::flatbuffers::Verifiable;
8015    v.visit_table(pos)?
8016     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
8017     .finish();
8018    Ok(())
8019  }
8020}
8021pub struct DivOptionsArgs {
8022    pub fused_activation_function: ActivationFunctionType,
8023}
8024impl<'a> Default for DivOptionsArgs {
8025  #[inline]
8026  fn default() -> Self {
8027    DivOptionsArgs {
8028      fused_activation_function: ActivationFunctionType::NONE,
8029    }
8030  }
8031}
8032
8033pub struct DivOptionsBuilder<'a: 'b, 'b> {
8034  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8035  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8036}
8037impl<'a: 'b, 'b> DivOptionsBuilder<'a, 'b> {
8038  #[inline]
8039  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
8040    self.fbb_.push_slot::<ActivationFunctionType>(DivOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
8041  }
8042  #[inline]
8043  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DivOptionsBuilder<'a, 'b> {
8044    let start = _fbb.start_table();
8045    DivOptionsBuilder {
8046      fbb_: _fbb,
8047      start_: start,
8048    }
8049  }
8050  #[inline]
8051  pub fn finish(self) -> flatbuffers::WIPOffset<DivOptions<'a>> {
8052    let o = self.fbb_.end_table(self.start_);
8053    flatbuffers::WIPOffset::new(o.value())
8054  }
8055}
8056
8057impl core::fmt::Debug for DivOptions<'_> {
8058  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8059    let mut ds = f.debug_struct("DivOptions");
8060      ds.field("fused_activation_function", &self.fused_activation_function());
8061      ds.finish()
8062  }
8063}
8064pub enum TopKV2OptionsOffset {}
8065#[derive(Copy, Clone, PartialEq)]
8066
8067pub struct TopKV2Options<'a> {
8068  pub _tab: flatbuffers::Table<'a>,
8069}
8070
8071impl<'a> flatbuffers::Follow<'a> for TopKV2Options<'a> {
8072  type Inner = TopKV2Options<'a>;
8073  #[inline]
8074  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8075    Self { _tab: flatbuffers::Table::new(buf, loc) }
8076  }
8077}
8078
8079impl<'a> TopKV2Options<'a> {
8080
8081  #[inline]
8082  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8083    TopKV2Options { _tab: table }
8084  }
8085  #[allow(unused_mut)]
8086  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8087    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8088    _args: &'args TopKV2OptionsArgs
8089  ) -> flatbuffers::WIPOffset<TopKV2Options<'bldr>> {
8090    let mut builder = TopKV2OptionsBuilder::new(_fbb);
8091    builder.finish()
8092  }
8093
8094}
8095
8096impl flatbuffers::Verifiable for TopKV2Options<'_> {
8097  #[inline]
8098  fn run_verifier(
8099    v: &mut flatbuffers::Verifier, pos: usize
8100  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8101    use self::flatbuffers::Verifiable;
8102    v.visit_table(pos)?
8103     .finish();
8104    Ok(())
8105  }
8106}
8107pub struct TopKV2OptionsArgs {
8108}
8109impl<'a> Default for TopKV2OptionsArgs {
8110  #[inline]
8111  fn default() -> Self {
8112    TopKV2OptionsArgs {
8113    }
8114  }
8115}
8116
8117pub struct TopKV2OptionsBuilder<'a: 'b, 'b> {
8118  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8119  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8120}
8121impl<'a: 'b, 'b> TopKV2OptionsBuilder<'a, 'b> {
8122  #[inline]
8123  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TopKV2OptionsBuilder<'a, 'b> {
8124    let start = _fbb.start_table();
8125    TopKV2OptionsBuilder {
8126      fbb_: _fbb,
8127      start_: start,
8128    }
8129  }
8130  #[inline]
8131  pub fn finish(self) -> flatbuffers::WIPOffset<TopKV2Options<'a>> {
8132    let o = self.fbb_.end_table(self.start_);
8133    flatbuffers::WIPOffset::new(o.value())
8134  }
8135}
8136
8137impl core::fmt::Debug for TopKV2Options<'_> {
8138  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8139    let mut ds = f.debug_struct("TopKV2Options");
8140      ds.finish()
8141  }
8142}
8143pub enum EmbeddingLookupSparseOptionsOffset {}
8144#[derive(Copy, Clone, PartialEq)]
8145
8146pub struct EmbeddingLookupSparseOptions<'a> {
8147  pub _tab: flatbuffers::Table<'a>,
8148}
8149
8150impl<'a> flatbuffers::Follow<'a> for EmbeddingLookupSparseOptions<'a> {
8151  type Inner = EmbeddingLookupSparseOptions<'a>;
8152  #[inline]
8153  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8154    Self { _tab: flatbuffers::Table::new(buf, loc) }
8155  }
8156}
8157
8158impl<'a> EmbeddingLookupSparseOptions<'a> {
8159  pub const VT_COMBINER: flatbuffers::VOffsetT = 4;
8160
8161  #[inline]
8162  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8163    EmbeddingLookupSparseOptions { _tab: table }
8164  }
8165  #[allow(unused_mut)]
8166  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8167    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8168    args: &'args EmbeddingLookupSparseOptionsArgs
8169  ) -> flatbuffers::WIPOffset<EmbeddingLookupSparseOptions<'bldr>> {
8170    let mut builder = EmbeddingLookupSparseOptionsBuilder::new(_fbb);
8171    builder.add_combiner(args.combiner);
8172    builder.finish()
8173  }
8174
8175
8176  #[inline]
8177  pub fn combiner(&self) -> CombinerType {
8178    // Safety:
8179    // Created from valid Table for this object
8180    // which contains a valid value in this slot
8181    unsafe { self._tab.get::<CombinerType>(EmbeddingLookupSparseOptions::VT_COMBINER, Some(CombinerType::SUM)).unwrap()}
8182  }
8183}
8184
8185impl flatbuffers::Verifiable for EmbeddingLookupSparseOptions<'_> {
8186  #[inline]
8187  fn run_verifier(
8188    v: &mut flatbuffers::Verifier, pos: usize
8189  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8190    use self::flatbuffers::Verifiable;
8191    v.visit_table(pos)?
8192     .visit_field::<CombinerType>("combiner", Self::VT_COMBINER, false)?
8193     .finish();
8194    Ok(())
8195  }
8196}
8197pub struct EmbeddingLookupSparseOptionsArgs {
8198    pub combiner: CombinerType,
8199}
8200impl<'a> Default for EmbeddingLookupSparseOptionsArgs {
8201  #[inline]
8202  fn default() -> Self {
8203    EmbeddingLookupSparseOptionsArgs {
8204      combiner: CombinerType::SUM,
8205    }
8206  }
8207}
8208
8209pub struct EmbeddingLookupSparseOptionsBuilder<'a: 'b, 'b> {
8210  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8211  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8212}
8213impl<'a: 'b, 'b> EmbeddingLookupSparseOptionsBuilder<'a, 'b> {
8214  #[inline]
8215  pub fn add_combiner(&mut self, combiner: CombinerType) {
8216    self.fbb_.push_slot::<CombinerType>(EmbeddingLookupSparseOptions::VT_COMBINER, combiner, CombinerType::SUM);
8217  }
8218  #[inline]
8219  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> EmbeddingLookupSparseOptionsBuilder<'a, 'b> {
8220    let start = _fbb.start_table();
8221    EmbeddingLookupSparseOptionsBuilder {
8222      fbb_: _fbb,
8223      start_: start,
8224    }
8225  }
8226  #[inline]
8227  pub fn finish(self) -> flatbuffers::WIPOffset<EmbeddingLookupSparseOptions<'a>> {
8228    let o = self.fbb_.end_table(self.start_);
8229    flatbuffers::WIPOffset::new(o.value())
8230  }
8231}
8232
8233impl core::fmt::Debug for EmbeddingLookupSparseOptions<'_> {
8234  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8235    let mut ds = f.debug_struct("EmbeddingLookupSparseOptions");
8236      ds.field("combiner", &self.combiner());
8237      ds.finish()
8238  }
8239}
8240pub enum GatherOptionsOffset {}
8241#[derive(Copy, Clone, PartialEq)]
8242
8243pub struct GatherOptions<'a> {
8244  pub _tab: flatbuffers::Table<'a>,
8245}
8246
8247impl<'a> flatbuffers::Follow<'a> for GatherOptions<'a> {
8248  type Inner = GatherOptions<'a>;
8249  #[inline]
8250  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8251    Self { _tab: flatbuffers::Table::new(buf, loc) }
8252  }
8253}
8254
8255impl<'a> GatherOptions<'a> {
8256  pub const VT_AXIS: flatbuffers::VOffsetT = 4;
8257  pub const VT_BATCH_DIMS: flatbuffers::VOffsetT = 6;
8258
8259  #[inline]
8260  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8261    GatherOptions { _tab: table }
8262  }
8263  #[allow(unused_mut)]
8264  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8265    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8266    args: &'args GatherOptionsArgs
8267  ) -> flatbuffers::WIPOffset<GatherOptions<'bldr>> {
8268    let mut builder = GatherOptionsBuilder::new(_fbb);
8269    builder.add_batch_dims(args.batch_dims);
8270    builder.add_axis(args.axis);
8271    builder.finish()
8272  }
8273
8274
8275  #[inline]
8276  pub fn axis(&self) -> i32 {
8277    // Safety:
8278    // Created from valid Table for this object
8279    // which contains a valid value in this slot
8280    unsafe { self._tab.get::<i32>(GatherOptions::VT_AXIS, Some(0)).unwrap()}
8281  }
8282  #[inline]
8283  pub fn batch_dims(&self) -> i32 {
8284    // Safety:
8285    // Created from valid Table for this object
8286    // which contains a valid value in this slot
8287    unsafe { self._tab.get::<i32>(GatherOptions::VT_BATCH_DIMS, Some(0)).unwrap()}
8288  }
8289}
8290
8291impl flatbuffers::Verifiable for GatherOptions<'_> {
8292  #[inline]
8293  fn run_verifier(
8294    v: &mut flatbuffers::Verifier, pos: usize
8295  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8296    use self::flatbuffers::Verifiable;
8297    v.visit_table(pos)?
8298     .visit_field::<i32>("axis", Self::VT_AXIS, false)?
8299     .visit_field::<i32>("batch_dims", Self::VT_BATCH_DIMS, false)?
8300     .finish();
8301    Ok(())
8302  }
8303}
8304pub struct GatherOptionsArgs {
8305    pub axis: i32,
8306    pub batch_dims: i32,
8307}
8308impl<'a> Default for GatherOptionsArgs {
8309  #[inline]
8310  fn default() -> Self {
8311    GatherOptionsArgs {
8312      axis: 0,
8313      batch_dims: 0,
8314    }
8315  }
8316}
8317
8318pub struct GatherOptionsBuilder<'a: 'b, 'b> {
8319  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8320  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8321}
8322impl<'a: 'b, 'b> GatherOptionsBuilder<'a, 'b> {
8323  #[inline]
8324  pub fn add_axis(&mut self, axis: i32) {
8325    self.fbb_.push_slot::<i32>(GatherOptions::VT_AXIS, axis, 0);
8326  }
8327  #[inline]
8328  pub fn add_batch_dims(&mut self, batch_dims: i32) {
8329    self.fbb_.push_slot::<i32>(GatherOptions::VT_BATCH_DIMS, batch_dims, 0);
8330  }
8331  #[inline]
8332  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GatherOptionsBuilder<'a, 'b> {
8333    let start = _fbb.start_table();
8334    GatherOptionsBuilder {
8335      fbb_: _fbb,
8336      start_: start,
8337    }
8338  }
8339  #[inline]
8340  pub fn finish(self) -> flatbuffers::WIPOffset<GatherOptions<'a>> {
8341    let o = self.fbb_.end_table(self.start_);
8342    flatbuffers::WIPOffset::new(o.value())
8343  }
8344}
8345
8346impl core::fmt::Debug for GatherOptions<'_> {
8347  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8348    let mut ds = f.debug_struct("GatherOptions");
8349      ds.field("axis", &self.axis());
8350      ds.field("batch_dims", &self.batch_dims());
8351      ds.finish()
8352  }
8353}
8354pub enum TransposeOptionsOffset {}
8355#[derive(Copy, Clone, PartialEq)]
8356
8357pub struct TransposeOptions<'a> {
8358  pub _tab: flatbuffers::Table<'a>,
8359}
8360
8361impl<'a> flatbuffers::Follow<'a> for TransposeOptions<'a> {
8362  type Inner = TransposeOptions<'a>;
8363  #[inline]
8364  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8365    Self { _tab: flatbuffers::Table::new(buf, loc) }
8366  }
8367}
8368
8369impl<'a> TransposeOptions<'a> {
8370
8371  #[inline]
8372  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8373    TransposeOptions { _tab: table }
8374  }
8375  #[allow(unused_mut)]
8376  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8377    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8378    _args: &'args TransposeOptionsArgs
8379  ) -> flatbuffers::WIPOffset<TransposeOptions<'bldr>> {
8380    let mut builder = TransposeOptionsBuilder::new(_fbb);
8381    builder.finish()
8382  }
8383
8384}
8385
8386impl flatbuffers::Verifiable for TransposeOptions<'_> {
8387  #[inline]
8388  fn run_verifier(
8389    v: &mut flatbuffers::Verifier, pos: usize
8390  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8391    use self::flatbuffers::Verifiable;
8392    v.visit_table(pos)?
8393     .finish();
8394    Ok(())
8395  }
8396}
8397pub struct TransposeOptionsArgs {
8398}
8399impl<'a> Default for TransposeOptionsArgs {
8400  #[inline]
8401  fn default() -> Self {
8402    TransposeOptionsArgs {
8403    }
8404  }
8405}
8406
8407pub struct TransposeOptionsBuilder<'a: 'b, 'b> {
8408  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8409  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8410}
8411impl<'a: 'b, 'b> TransposeOptionsBuilder<'a, 'b> {
8412  #[inline]
8413  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TransposeOptionsBuilder<'a, 'b> {
8414    let start = _fbb.start_table();
8415    TransposeOptionsBuilder {
8416      fbb_: _fbb,
8417      start_: start,
8418    }
8419  }
8420  #[inline]
8421  pub fn finish(self) -> flatbuffers::WIPOffset<TransposeOptions<'a>> {
8422    let o = self.fbb_.end_table(self.start_);
8423    flatbuffers::WIPOffset::new(o.value())
8424  }
8425}
8426
8427impl core::fmt::Debug for TransposeOptions<'_> {
8428  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8429    let mut ds = f.debug_struct("TransposeOptions");
8430      ds.finish()
8431  }
8432}
8433pub enum ExpOptionsOffset {}
8434#[derive(Copy, Clone, PartialEq)]
8435
8436pub struct ExpOptions<'a> {
8437  pub _tab: flatbuffers::Table<'a>,
8438}
8439
8440impl<'a> flatbuffers::Follow<'a> for ExpOptions<'a> {
8441  type Inner = ExpOptions<'a>;
8442  #[inline]
8443  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8444    Self { _tab: flatbuffers::Table::new(buf, loc) }
8445  }
8446}
8447
8448impl<'a> ExpOptions<'a> {
8449
8450  #[inline]
8451  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8452    ExpOptions { _tab: table }
8453  }
8454  #[allow(unused_mut)]
8455  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8456    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8457    _args: &'args ExpOptionsArgs
8458  ) -> flatbuffers::WIPOffset<ExpOptions<'bldr>> {
8459    let mut builder = ExpOptionsBuilder::new(_fbb);
8460    builder.finish()
8461  }
8462
8463}
8464
8465impl flatbuffers::Verifiable for ExpOptions<'_> {
8466  #[inline]
8467  fn run_verifier(
8468    v: &mut flatbuffers::Verifier, pos: usize
8469  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8470    use self::flatbuffers::Verifiable;
8471    v.visit_table(pos)?
8472     .finish();
8473    Ok(())
8474  }
8475}
8476pub struct ExpOptionsArgs {
8477}
8478impl<'a> Default for ExpOptionsArgs {
8479  #[inline]
8480  fn default() -> Self {
8481    ExpOptionsArgs {
8482    }
8483  }
8484}
8485
8486pub struct ExpOptionsBuilder<'a: 'b, 'b> {
8487  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8488  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8489}
8490impl<'a: 'b, 'b> ExpOptionsBuilder<'a, 'b> {
8491  #[inline]
8492  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ExpOptionsBuilder<'a, 'b> {
8493    let start = _fbb.start_table();
8494    ExpOptionsBuilder {
8495      fbb_: _fbb,
8496      start_: start,
8497    }
8498  }
8499  #[inline]
8500  pub fn finish(self) -> flatbuffers::WIPOffset<ExpOptions<'a>> {
8501    let o = self.fbb_.end_table(self.start_);
8502    flatbuffers::WIPOffset::new(o.value())
8503  }
8504}
8505
8506impl core::fmt::Debug for ExpOptions<'_> {
8507  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8508    let mut ds = f.debug_struct("ExpOptions");
8509      ds.finish()
8510  }
8511}
8512pub enum CosOptionsOffset {}
8513#[derive(Copy, Clone, PartialEq)]
8514
8515pub struct CosOptions<'a> {
8516  pub _tab: flatbuffers::Table<'a>,
8517}
8518
8519impl<'a> flatbuffers::Follow<'a> for CosOptions<'a> {
8520  type Inner = CosOptions<'a>;
8521  #[inline]
8522  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8523    Self { _tab: flatbuffers::Table::new(buf, loc) }
8524  }
8525}
8526
8527impl<'a> CosOptions<'a> {
8528
8529  #[inline]
8530  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8531    CosOptions { _tab: table }
8532  }
8533  #[allow(unused_mut)]
8534  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8535    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8536    _args: &'args CosOptionsArgs
8537  ) -> flatbuffers::WIPOffset<CosOptions<'bldr>> {
8538    let mut builder = CosOptionsBuilder::new(_fbb);
8539    builder.finish()
8540  }
8541
8542}
8543
8544impl flatbuffers::Verifiable for CosOptions<'_> {
8545  #[inline]
8546  fn run_verifier(
8547    v: &mut flatbuffers::Verifier, pos: usize
8548  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8549    use self::flatbuffers::Verifiable;
8550    v.visit_table(pos)?
8551     .finish();
8552    Ok(())
8553  }
8554}
8555pub struct CosOptionsArgs {
8556}
8557impl<'a> Default for CosOptionsArgs {
8558  #[inline]
8559  fn default() -> Self {
8560    CosOptionsArgs {
8561    }
8562  }
8563}
8564
8565pub struct CosOptionsBuilder<'a: 'b, 'b> {
8566  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8567  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8568}
8569impl<'a: 'b, 'b> CosOptionsBuilder<'a, 'b> {
8570  #[inline]
8571  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CosOptionsBuilder<'a, 'b> {
8572    let start = _fbb.start_table();
8573    CosOptionsBuilder {
8574      fbb_: _fbb,
8575      start_: start,
8576    }
8577  }
8578  #[inline]
8579  pub fn finish(self) -> flatbuffers::WIPOffset<CosOptions<'a>> {
8580    let o = self.fbb_.end_table(self.start_);
8581    flatbuffers::WIPOffset::new(o.value())
8582  }
8583}
8584
8585impl core::fmt::Debug for CosOptions<'_> {
8586  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8587    let mut ds = f.debug_struct("CosOptions");
8588      ds.finish()
8589  }
8590}
8591pub enum ReducerOptionsOffset {}
8592#[derive(Copy, Clone, PartialEq)]
8593
8594pub struct ReducerOptions<'a> {
8595  pub _tab: flatbuffers::Table<'a>,
8596}
8597
8598impl<'a> flatbuffers::Follow<'a> for ReducerOptions<'a> {
8599  type Inner = ReducerOptions<'a>;
8600  #[inline]
8601  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8602    Self { _tab: flatbuffers::Table::new(buf, loc) }
8603  }
8604}
8605
8606impl<'a> ReducerOptions<'a> {
8607  pub const VT_KEEP_DIMS: flatbuffers::VOffsetT = 4;
8608
8609  #[inline]
8610  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8611    ReducerOptions { _tab: table }
8612  }
8613  #[allow(unused_mut)]
8614  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8615    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8616    args: &'args ReducerOptionsArgs
8617  ) -> flatbuffers::WIPOffset<ReducerOptions<'bldr>> {
8618    let mut builder = ReducerOptionsBuilder::new(_fbb);
8619    builder.add_keep_dims(args.keep_dims);
8620    builder.finish()
8621  }
8622
8623
8624  #[inline]
8625  pub fn keep_dims(&self) -> bool {
8626    // Safety:
8627    // Created from valid Table for this object
8628    // which contains a valid value in this slot
8629    unsafe { self._tab.get::<bool>(ReducerOptions::VT_KEEP_DIMS, Some(false)).unwrap()}
8630  }
8631}
8632
8633impl flatbuffers::Verifiable for ReducerOptions<'_> {
8634  #[inline]
8635  fn run_verifier(
8636    v: &mut flatbuffers::Verifier, pos: usize
8637  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8638    use self::flatbuffers::Verifiable;
8639    v.visit_table(pos)?
8640     .visit_field::<bool>("keep_dims", Self::VT_KEEP_DIMS, false)?
8641     .finish();
8642    Ok(())
8643  }
8644}
8645pub struct ReducerOptionsArgs {
8646    pub keep_dims: bool,
8647}
8648impl<'a> Default for ReducerOptionsArgs {
8649  #[inline]
8650  fn default() -> Self {
8651    ReducerOptionsArgs {
8652      keep_dims: false,
8653    }
8654  }
8655}
8656
8657pub struct ReducerOptionsBuilder<'a: 'b, 'b> {
8658  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8659  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8660}
8661impl<'a: 'b, 'b> ReducerOptionsBuilder<'a, 'b> {
8662  #[inline]
8663  pub fn add_keep_dims(&mut self, keep_dims: bool) {
8664    self.fbb_.push_slot::<bool>(ReducerOptions::VT_KEEP_DIMS, keep_dims, false);
8665  }
8666  #[inline]
8667  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ReducerOptionsBuilder<'a, 'b> {
8668    let start = _fbb.start_table();
8669    ReducerOptionsBuilder {
8670      fbb_: _fbb,
8671      start_: start,
8672    }
8673  }
8674  #[inline]
8675  pub fn finish(self) -> flatbuffers::WIPOffset<ReducerOptions<'a>> {
8676    let o = self.fbb_.end_table(self.start_);
8677    flatbuffers::WIPOffset::new(o.value())
8678  }
8679}
8680
8681impl core::fmt::Debug for ReducerOptions<'_> {
8682  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8683    let mut ds = f.debug_struct("ReducerOptions");
8684      ds.field("keep_dims", &self.keep_dims());
8685      ds.finish()
8686  }
8687}
8688pub enum SqueezeOptionsOffset {}
8689#[derive(Copy, Clone, PartialEq)]
8690
8691pub struct SqueezeOptions<'a> {
8692  pub _tab: flatbuffers::Table<'a>,
8693}
8694
8695impl<'a> flatbuffers::Follow<'a> for SqueezeOptions<'a> {
8696  type Inner = SqueezeOptions<'a>;
8697  #[inline]
8698  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8699    Self { _tab: flatbuffers::Table::new(buf, loc) }
8700  }
8701}
8702
8703impl<'a> SqueezeOptions<'a> {
8704  pub const VT_SQUEEZE_DIMS: flatbuffers::VOffsetT = 4;
8705
8706  #[inline]
8707  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8708    SqueezeOptions { _tab: table }
8709  }
8710  #[allow(unused_mut)]
8711  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8712    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8713    args: &'args SqueezeOptionsArgs<'args>
8714  ) -> flatbuffers::WIPOffset<SqueezeOptions<'bldr>> {
8715    let mut builder = SqueezeOptionsBuilder::new(_fbb);
8716    if let Some(x) = args.squeeze_dims { builder.add_squeeze_dims(x); }
8717    builder.finish()
8718  }
8719
8720
8721  #[inline]
8722  pub fn squeeze_dims(&self) -> Option<flatbuffers::Vector<'a, i32>> {
8723    // Safety:
8724    // Created from valid Table for this object
8725    // which contains a valid value in this slot
8726    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(SqueezeOptions::VT_SQUEEZE_DIMS, None)}
8727  }
8728}
8729
8730impl flatbuffers::Verifiable for SqueezeOptions<'_> {
8731  #[inline]
8732  fn run_verifier(
8733    v: &mut flatbuffers::Verifier, pos: usize
8734  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8735    use self::flatbuffers::Verifiable;
8736    v.visit_table(pos)?
8737     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("squeeze_dims", Self::VT_SQUEEZE_DIMS, false)?
8738     .finish();
8739    Ok(())
8740  }
8741}
8742pub struct SqueezeOptionsArgs<'a> {
8743    pub squeeze_dims: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
8744}
8745impl<'a> Default for SqueezeOptionsArgs<'a> {
8746  #[inline]
8747  fn default() -> Self {
8748    SqueezeOptionsArgs {
8749      squeeze_dims: None,
8750    }
8751  }
8752}
8753
8754pub struct SqueezeOptionsBuilder<'a: 'b, 'b> {
8755  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8756  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8757}
8758impl<'a: 'b, 'b> SqueezeOptionsBuilder<'a, 'b> {
8759  #[inline]
8760  pub fn add_squeeze_dims(&mut self, squeeze_dims: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
8761    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SqueezeOptions::VT_SQUEEZE_DIMS, squeeze_dims);
8762  }
8763  #[inline]
8764  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SqueezeOptionsBuilder<'a, 'b> {
8765    let start = _fbb.start_table();
8766    SqueezeOptionsBuilder {
8767      fbb_: _fbb,
8768      start_: start,
8769    }
8770  }
8771  #[inline]
8772  pub fn finish(self) -> flatbuffers::WIPOffset<SqueezeOptions<'a>> {
8773    let o = self.fbb_.end_table(self.start_);
8774    flatbuffers::WIPOffset::new(o.value())
8775  }
8776}
8777
8778impl core::fmt::Debug for SqueezeOptions<'_> {
8779  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8780    let mut ds = f.debug_struct("SqueezeOptions");
8781      ds.field("squeeze_dims", &self.squeeze_dims());
8782      ds.finish()
8783  }
8784}
8785pub enum SplitOptionsOffset {}
8786#[derive(Copy, Clone, PartialEq)]
8787
8788pub struct SplitOptions<'a> {
8789  pub _tab: flatbuffers::Table<'a>,
8790}
8791
8792impl<'a> flatbuffers::Follow<'a> for SplitOptions<'a> {
8793  type Inner = SplitOptions<'a>;
8794  #[inline]
8795  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8796    Self { _tab: flatbuffers::Table::new(buf, loc) }
8797  }
8798}
8799
8800impl<'a> SplitOptions<'a> {
8801  pub const VT_NUM_SPLITS: flatbuffers::VOffsetT = 4;
8802
8803  #[inline]
8804  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8805    SplitOptions { _tab: table }
8806  }
8807  #[allow(unused_mut)]
8808  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8809    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8810    args: &'args SplitOptionsArgs
8811  ) -> flatbuffers::WIPOffset<SplitOptions<'bldr>> {
8812    let mut builder = SplitOptionsBuilder::new(_fbb);
8813    builder.add_num_splits(args.num_splits);
8814    builder.finish()
8815  }
8816
8817
8818  #[inline]
8819  pub fn num_splits(&self) -> i32 {
8820    // Safety:
8821    // Created from valid Table for this object
8822    // which contains a valid value in this slot
8823    unsafe { self._tab.get::<i32>(SplitOptions::VT_NUM_SPLITS, Some(0)).unwrap()}
8824  }
8825}
8826
8827impl flatbuffers::Verifiable for SplitOptions<'_> {
8828  #[inline]
8829  fn run_verifier(
8830    v: &mut flatbuffers::Verifier, pos: usize
8831  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8832    use self::flatbuffers::Verifiable;
8833    v.visit_table(pos)?
8834     .visit_field::<i32>("num_splits", Self::VT_NUM_SPLITS, false)?
8835     .finish();
8836    Ok(())
8837  }
8838}
8839pub struct SplitOptionsArgs {
8840    pub num_splits: i32,
8841}
8842impl<'a> Default for SplitOptionsArgs {
8843  #[inline]
8844  fn default() -> Self {
8845    SplitOptionsArgs {
8846      num_splits: 0,
8847    }
8848  }
8849}
8850
8851pub struct SplitOptionsBuilder<'a: 'b, 'b> {
8852  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8853  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8854}
8855impl<'a: 'b, 'b> SplitOptionsBuilder<'a, 'b> {
8856  #[inline]
8857  pub fn add_num_splits(&mut self, num_splits: i32) {
8858    self.fbb_.push_slot::<i32>(SplitOptions::VT_NUM_SPLITS, num_splits, 0);
8859  }
8860  #[inline]
8861  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SplitOptionsBuilder<'a, 'b> {
8862    let start = _fbb.start_table();
8863    SplitOptionsBuilder {
8864      fbb_: _fbb,
8865      start_: start,
8866    }
8867  }
8868  #[inline]
8869  pub fn finish(self) -> flatbuffers::WIPOffset<SplitOptions<'a>> {
8870    let o = self.fbb_.end_table(self.start_);
8871    flatbuffers::WIPOffset::new(o.value())
8872  }
8873}
8874
8875impl core::fmt::Debug for SplitOptions<'_> {
8876  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8877    let mut ds = f.debug_struct("SplitOptions");
8878      ds.field("num_splits", &self.num_splits());
8879      ds.finish()
8880  }
8881}
8882pub enum SplitVOptionsOffset {}
8883#[derive(Copy, Clone, PartialEq)]
8884
8885pub struct SplitVOptions<'a> {
8886  pub _tab: flatbuffers::Table<'a>,
8887}
8888
8889impl<'a> flatbuffers::Follow<'a> for SplitVOptions<'a> {
8890  type Inner = SplitVOptions<'a>;
8891  #[inline]
8892  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8893    Self { _tab: flatbuffers::Table::new(buf, loc) }
8894  }
8895}
8896
8897impl<'a> SplitVOptions<'a> {
8898  pub const VT_NUM_SPLITS: flatbuffers::VOffsetT = 4;
8899
8900  #[inline]
8901  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8902    SplitVOptions { _tab: table }
8903  }
8904  #[allow(unused_mut)]
8905  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
8906    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
8907    args: &'args SplitVOptionsArgs
8908  ) -> flatbuffers::WIPOffset<SplitVOptions<'bldr>> {
8909    let mut builder = SplitVOptionsBuilder::new(_fbb);
8910    builder.add_num_splits(args.num_splits);
8911    builder.finish()
8912  }
8913
8914
8915  #[inline]
8916  pub fn num_splits(&self) -> i32 {
8917    // Safety:
8918    // Created from valid Table for this object
8919    // which contains a valid value in this slot
8920    unsafe { self._tab.get::<i32>(SplitVOptions::VT_NUM_SPLITS, Some(0)).unwrap()}
8921  }
8922}
8923
8924impl flatbuffers::Verifiable for SplitVOptions<'_> {
8925  #[inline]
8926  fn run_verifier(
8927    v: &mut flatbuffers::Verifier, pos: usize
8928  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8929    use self::flatbuffers::Verifiable;
8930    v.visit_table(pos)?
8931     .visit_field::<i32>("num_splits", Self::VT_NUM_SPLITS, false)?
8932     .finish();
8933    Ok(())
8934  }
8935}
8936pub struct SplitVOptionsArgs {
8937    pub num_splits: i32,
8938}
8939impl<'a> Default for SplitVOptionsArgs {
8940  #[inline]
8941  fn default() -> Self {
8942    SplitVOptionsArgs {
8943      num_splits: 0,
8944    }
8945  }
8946}
8947
8948pub struct SplitVOptionsBuilder<'a: 'b, 'b> {
8949  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
8950  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8951}
8952impl<'a: 'b, 'b> SplitVOptionsBuilder<'a, 'b> {
8953  #[inline]
8954  pub fn add_num_splits(&mut self, num_splits: i32) {
8955    self.fbb_.push_slot::<i32>(SplitVOptions::VT_NUM_SPLITS, num_splits, 0);
8956  }
8957  #[inline]
8958  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SplitVOptionsBuilder<'a, 'b> {
8959    let start = _fbb.start_table();
8960    SplitVOptionsBuilder {
8961      fbb_: _fbb,
8962      start_: start,
8963    }
8964  }
8965  #[inline]
8966  pub fn finish(self) -> flatbuffers::WIPOffset<SplitVOptions<'a>> {
8967    let o = self.fbb_.end_table(self.start_);
8968    flatbuffers::WIPOffset::new(o.value())
8969  }
8970}
8971
8972impl core::fmt::Debug for SplitVOptions<'_> {
8973  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8974    let mut ds = f.debug_struct("SplitVOptions");
8975      ds.field("num_splits", &self.num_splits());
8976      ds.finish()
8977  }
8978}
8979pub enum StridedSliceOptionsOffset {}
8980#[derive(Copy, Clone, PartialEq)]
8981
8982pub struct StridedSliceOptions<'a> {
8983  pub _tab: flatbuffers::Table<'a>,
8984}
8985
8986impl<'a> flatbuffers::Follow<'a> for StridedSliceOptions<'a> {
8987  type Inner = StridedSliceOptions<'a>;
8988  #[inline]
8989  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8990    Self { _tab: flatbuffers::Table::new(buf, loc) }
8991  }
8992}
8993
8994impl<'a> StridedSliceOptions<'a> {
8995  pub const VT_BEGIN_MASK: flatbuffers::VOffsetT = 4;
8996  pub const VT_END_MASK: flatbuffers::VOffsetT = 6;
8997  pub const VT_ELLIPSIS_MASK: flatbuffers::VOffsetT = 8;
8998  pub const VT_NEW_AXIS_MASK: flatbuffers::VOffsetT = 10;
8999  pub const VT_SHRINK_AXIS_MASK: flatbuffers::VOffsetT = 12;
9000
9001  #[inline]
9002  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9003    StridedSliceOptions { _tab: table }
9004  }
9005  #[allow(unused_mut)]
9006  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9007    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9008    args: &'args StridedSliceOptionsArgs
9009  ) -> flatbuffers::WIPOffset<StridedSliceOptions<'bldr>> {
9010    let mut builder = StridedSliceOptionsBuilder::new(_fbb);
9011    builder.add_shrink_axis_mask(args.shrink_axis_mask);
9012    builder.add_new_axis_mask(args.new_axis_mask);
9013    builder.add_ellipsis_mask(args.ellipsis_mask);
9014    builder.add_end_mask(args.end_mask);
9015    builder.add_begin_mask(args.begin_mask);
9016    builder.finish()
9017  }
9018
9019
9020  #[inline]
9021  pub fn begin_mask(&self) -> i32 {
9022    // Safety:
9023    // Created from valid Table for this object
9024    // which contains a valid value in this slot
9025    unsafe { self._tab.get::<i32>(StridedSliceOptions::VT_BEGIN_MASK, Some(0)).unwrap()}
9026  }
9027  #[inline]
9028  pub fn end_mask(&self) -> i32 {
9029    // Safety:
9030    // Created from valid Table for this object
9031    // which contains a valid value in this slot
9032    unsafe { self._tab.get::<i32>(StridedSliceOptions::VT_END_MASK, Some(0)).unwrap()}
9033  }
9034  #[inline]
9035  pub fn ellipsis_mask(&self) -> i32 {
9036    // Safety:
9037    // Created from valid Table for this object
9038    // which contains a valid value in this slot
9039    unsafe { self._tab.get::<i32>(StridedSliceOptions::VT_ELLIPSIS_MASK, Some(0)).unwrap()}
9040  }
9041  #[inline]
9042  pub fn new_axis_mask(&self) -> i32 {
9043    // Safety:
9044    // Created from valid Table for this object
9045    // which contains a valid value in this slot
9046    unsafe { self._tab.get::<i32>(StridedSliceOptions::VT_NEW_AXIS_MASK, Some(0)).unwrap()}
9047  }
9048  #[inline]
9049  pub fn shrink_axis_mask(&self) -> i32 {
9050    // Safety:
9051    // Created from valid Table for this object
9052    // which contains a valid value in this slot
9053    unsafe { self._tab.get::<i32>(StridedSliceOptions::VT_SHRINK_AXIS_MASK, Some(0)).unwrap()}
9054  }
9055}
9056
9057impl flatbuffers::Verifiable for StridedSliceOptions<'_> {
9058  #[inline]
9059  fn run_verifier(
9060    v: &mut flatbuffers::Verifier, pos: usize
9061  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9062    use self::flatbuffers::Verifiable;
9063    v.visit_table(pos)?
9064     .visit_field::<i32>("begin_mask", Self::VT_BEGIN_MASK, false)?
9065     .visit_field::<i32>("end_mask", Self::VT_END_MASK, false)?
9066     .visit_field::<i32>("ellipsis_mask", Self::VT_ELLIPSIS_MASK, false)?
9067     .visit_field::<i32>("new_axis_mask", Self::VT_NEW_AXIS_MASK, false)?
9068     .visit_field::<i32>("shrink_axis_mask", Self::VT_SHRINK_AXIS_MASK, false)?
9069     .finish();
9070    Ok(())
9071  }
9072}
9073pub struct StridedSliceOptionsArgs {
9074    pub begin_mask: i32,
9075    pub end_mask: i32,
9076    pub ellipsis_mask: i32,
9077    pub new_axis_mask: i32,
9078    pub shrink_axis_mask: i32,
9079}
9080impl<'a> Default for StridedSliceOptionsArgs {
9081  #[inline]
9082  fn default() -> Self {
9083    StridedSliceOptionsArgs {
9084      begin_mask: 0,
9085      end_mask: 0,
9086      ellipsis_mask: 0,
9087      new_axis_mask: 0,
9088      shrink_axis_mask: 0,
9089    }
9090  }
9091}
9092
9093pub struct StridedSliceOptionsBuilder<'a: 'b, 'b> {
9094  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9095  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9096}
9097impl<'a: 'b, 'b> StridedSliceOptionsBuilder<'a, 'b> {
9098  #[inline]
9099  pub fn add_begin_mask(&mut self, begin_mask: i32) {
9100    self.fbb_.push_slot::<i32>(StridedSliceOptions::VT_BEGIN_MASK, begin_mask, 0);
9101  }
9102  #[inline]
9103  pub fn add_end_mask(&mut self, end_mask: i32) {
9104    self.fbb_.push_slot::<i32>(StridedSliceOptions::VT_END_MASK, end_mask, 0);
9105  }
9106  #[inline]
9107  pub fn add_ellipsis_mask(&mut self, ellipsis_mask: i32) {
9108    self.fbb_.push_slot::<i32>(StridedSliceOptions::VT_ELLIPSIS_MASK, ellipsis_mask, 0);
9109  }
9110  #[inline]
9111  pub fn add_new_axis_mask(&mut self, new_axis_mask: i32) {
9112    self.fbb_.push_slot::<i32>(StridedSliceOptions::VT_NEW_AXIS_MASK, new_axis_mask, 0);
9113  }
9114  #[inline]
9115  pub fn add_shrink_axis_mask(&mut self, shrink_axis_mask: i32) {
9116    self.fbb_.push_slot::<i32>(StridedSliceOptions::VT_SHRINK_AXIS_MASK, shrink_axis_mask, 0);
9117  }
9118  #[inline]
9119  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> StridedSliceOptionsBuilder<'a, 'b> {
9120    let start = _fbb.start_table();
9121    StridedSliceOptionsBuilder {
9122      fbb_: _fbb,
9123      start_: start,
9124    }
9125  }
9126  #[inline]
9127  pub fn finish(self) -> flatbuffers::WIPOffset<StridedSliceOptions<'a>> {
9128    let o = self.fbb_.end_table(self.start_);
9129    flatbuffers::WIPOffset::new(o.value())
9130  }
9131}
9132
9133impl core::fmt::Debug for StridedSliceOptions<'_> {
9134  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9135    let mut ds = f.debug_struct("StridedSliceOptions");
9136      ds.field("begin_mask", &self.begin_mask());
9137      ds.field("end_mask", &self.end_mask());
9138      ds.field("ellipsis_mask", &self.ellipsis_mask());
9139      ds.field("new_axis_mask", &self.new_axis_mask());
9140      ds.field("shrink_axis_mask", &self.shrink_axis_mask());
9141      ds.finish()
9142  }
9143}
9144pub enum LogSoftmaxOptionsOffset {}
9145#[derive(Copy, Clone, PartialEq)]
9146
9147pub struct LogSoftmaxOptions<'a> {
9148  pub _tab: flatbuffers::Table<'a>,
9149}
9150
9151impl<'a> flatbuffers::Follow<'a> for LogSoftmaxOptions<'a> {
9152  type Inner = LogSoftmaxOptions<'a>;
9153  #[inline]
9154  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9155    Self { _tab: flatbuffers::Table::new(buf, loc) }
9156  }
9157}
9158
9159impl<'a> LogSoftmaxOptions<'a> {
9160
9161  #[inline]
9162  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9163    LogSoftmaxOptions { _tab: table }
9164  }
9165  #[allow(unused_mut)]
9166  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9167    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9168    _args: &'args LogSoftmaxOptionsArgs
9169  ) -> flatbuffers::WIPOffset<LogSoftmaxOptions<'bldr>> {
9170    let mut builder = LogSoftmaxOptionsBuilder::new(_fbb);
9171    builder.finish()
9172  }
9173
9174}
9175
9176impl flatbuffers::Verifiable for LogSoftmaxOptions<'_> {
9177  #[inline]
9178  fn run_verifier(
9179    v: &mut flatbuffers::Verifier, pos: usize
9180  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9181    use self::flatbuffers::Verifiable;
9182    v.visit_table(pos)?
9183     .finish();
9184    Ok(())
9185  }
9186}
9187pub struct LogSoftmaxOptionsArgs {
9188}
9189impl<'a> Default for LogSoftmaxOptionsArgs {
9190  #[inline]
9191  fn default() -> Self {
9192    LogSoftmaxOptionsArgs {
9193    }
9194  }
9195}
9196
9197pub struct LogSoftmaxOptionsBuilder<'a: 'b, 'b> {
9198  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9199  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9200}
9201impl<'a: 'b, 'b> LogSoftmaxOptionsBuilder<'a, 'b> {
9202  #[inline]
9203  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LogSoftmaxOptionsBuilder<'a, 'b> {
9204    let start = _fbb.start_table();
9205    LogSoftmaxOptionsBuilder {
9206      fbb_: _fbb,
9207      start_: start,
9208    }
9209  }
9210  #[inline]
9211  pub fn finish(self) -> flatbuffers::WIPOffset<LogSoftmaxOptions<'a>> {
9212    let o = self.fbb_.end_table(self.start_);
9213    flatbuffers::WIPOffset::new(o.value())
9214  }
9215}
9216
9217impl core::fmt::Debug for LogSoftmaxOptions<'_> {
9218  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9219    let mut ds = f.debug_struct("LogSoftmaxOptions");
9220      ds.finish()
9221  }
9222}
9223pub enum CastOptionsOffset {}
9224#[derive(Copy, Clone, PartialEq)]
9225
9226pub struct CastOptions<'a> {
9227  pub _tab: flatbuffers::Table<'a>,
9228}
9229
9230impl<'a> flatbuffers::Follow<'a> for CastOptions<'a> {
9231  type Inner = CastOptions<'a>;
9232  #[inline]
9233  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9234    Self { _tab: flatbuffers::Table::new(buf, loc) }
9235  }
9236}
9237
9238impl<'a> CastOptions<'a> {
9239  pub const VT_IN_DATA_TYPE: flatbuffers::VOffsetT = 4;
9240  pub const VT_OUT_DATA_TYPE: flatbuffers::VOffsetT = 6;
9241
9242  #[inline]
9243  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9244    CastOptions { _tab: table }
9245  }
9246  #[allow(unused_mut)]
9247  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9248    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9249    args: &'args CastOptionsArgs
9250  ) -> flatbuffers::WIPOffset<CastOptions<'bldr>> {
9251    let mut builder = CastOptionsBuilder::new(_fbb);
9252    builder.add_out_data_type(args.out_data_type);
9253    builder.add_in_data_type(args.in_data_type);
9254    builder.finish()
9255  }
9256
9257
9258  #[inline]
9259  pub fn in_data_type(&self) -> TensorType {
9260    // Safety:
9261    // Created from valid Table for this object
9262    // which contains a valid value in this slot
9263    unsafe { self._tab.get::<TensorType>(CastOptions::VT_IN_DATA_TYPE, Some(TensorType::FLOAT32)).unwrap()}
9264  }
9265  #[inline]
9266  pub fn out_data_type(&self) -> TensorType {
9267    // Safety:
9268    // Created from valid Table for this object
9269    // which contains a valid value in this slot
9270    unsafe { self._tab.get::<TensorType>(CastOptions::VT_OUT_DATA_TYPE, Some(TensorType::FLOAT32)).unwrap()}
9271  }
9272}
9273
9274impl flatbuffers::Verifiable for CastOptions<'_> {
9275  #[inline]
9276  fn run_verifier(
9277    v: &mut flatbuffers::Verifier, pos: usize
9278  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9279    use self::flatbuffers::Verifiable;
9280    v.visit_table(pos)?
9281     .visit_field::<TensorType>("in_data_type", Self::VT_IN_DATA_TYPE, false)?
9282     .visit_field::<TensorType>("out_data_type", Self::VT_OUT_DATA_TYPE, false)?
9283     .finish();
9284    Ok(())
9285  }
9286}
9287pub struct CastOptionsArgs {
9288    pub in_data_type: TensorType,
9289    pub out_data_type: TensorType,
9290}
9291impl<'a> Default for CastOptionsArgs {
9292  #[inline]
9293  fn default() -> Self {
9294    CastOptionsArgs {
9295      in_data_type: TensorType::FLOAT32,
9296      out_data_type: TensorType::FLOAT32,
9297    }
9298  }
9299}
9300
9301pub struct CastOptionsBuilder<'a: 'b, 'b> {
9302  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9303  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9304}
9305impl<'a: 'b, 'b> CastOptionsBuilder<'a, 'b> {
9306  #[inline]
9307  pub fn add_in_data_type(&mut self, in_data_type: TensorType) {
9308    self.fbb_.push_slot::<TensorType>(CastOptions::VT_IN_DATA_TYPE, in_data_type, TensorType::FLOAT32);
9309  }
9310  #[inline]
9311  pub fn add_out_data_type(&mut self, out_data_type: TensorType) {
9312    self.fbb_.push_slot::<TensorType>(CastOptions::VT_OUT_DATA_TYPE, out_data_type, TensorType::FLOAT32);
9313  }
9314  #[inline]
9315  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CastOptionsBuilder<'a, 'b> {
9316    let start = _fbb.start_table();
9317    CastOptionsBuilder {
9318      fbb_: _fbb,
9319      start_: start,
9320    }
9321  }
9322  #[inline]
9323  pub fn finish(self) -> flatbuffers::WIPOffset<CastOptions<'a>> {
9324    let o = self.fbb_.end_table(self.start_);
9325    flatbuffers::WIPOffset::new(o.value())
9326  }
9327}
9328
9329impl core::fmt::Debug for CastOptions<'_> {
9330  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9331    let mut ds = f.debug_struct("CastOptions");
9332      ds.field("in_data_type", &self.in_data_type());
9333      ds.field("out_data_type", &self.out_data_type());
9334      ds.finish()
9335  }
9336}
9337pub enum DequantizeOptionsOffset {}
9338#[derive(Copy, Clone, PartialEq)]
9339
9340pub struct DequantizeOptions<'a> {
9341  pub _tab: flatbuffers::Table<'a>,
9342}
9343
9344impl<'a> flatbuffers::Follow<'a> for DequantizeOptions<'a> {
9345  type Inner = DequantizeOptions<'a>;
9346  #[inline]
9347  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9348    Self { _tab: flatbuffers::Table::new(buf, loc) }
9349  }
9350}
9351
9352impl<'a> DequantizeOptions<'a> {
9353
9354  #[inline]
9355  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9356    DequantizeOptions { _tab: table }
9357  }
9358  #[allow(unused_mut)]
9359  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9360    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9361    _args: &'args DequantizeOptionsArgs
9362  ) -> flatbuffers::WIPOffset<DequantizeOptions<'bldr>> {
9363    let mut builder = DequantizeOptionsBuilder::new(_fbb);
9364    builder.finish()
9365  }
9366
9367}
9368
9369impl flatbuffers::Verifiable for DequantizeOptions<'_> {
9370  #[inline]
9371  fn run_verifier(
9372    v: &mut flatbuffers::Verifier, pos: usize
9373  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9374    use self::flatbuffers::Verifiable;
9375    v.visit_table(pos)?
9376     .finish();
9377    Ok(())
9378  }
9379}
9380pub struct DequantizeOptionsArgs {
9381}
9382impl<'a> Default for DequantizeOptionsArgs {
9383  #[inline]
9384  fn default() -> Self {
9385    DequantizeOptionsArgs {
9386    }
9387  }
9388}
9389
9390pub struct DequantizeOptionsBuilder<'a: 'b, 'b> {
9391  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9392  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9393}
9394impl<'a: 'b, 'b> DequantizeOptionsBuilder<'a, 'b> {
9395  #[inline]
9396  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DequantizeOptionsBuilder<'a, 'b> {
9397    let start = _fbb.start_table();
9398    DequantizeOptionsBuilder {
9399      fbb_: _fbb,
9400      start_: start,
9401    }
9402  }
9403  #[inline]
9404  pub fn finish(self) -> flatbuffers::WIPOffset<DequantizeOptions<'a>> {
9405    let o = self.fbb_.end_table(self.start_);
9406    flatbuffers::WIPOffset::new(o.value())
9407  }
9408}
9409
9410impl core::fmt::Debug for DequantizeOptions<'_> {
9411  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9412    let mut ds = f.debug_struct("DequantizeOptions");
9413      ds.finish()
9414  }
9415}
9416pub enum MaximumMinimumOptionsOffset {}
9417#[derive(Copy, Clone, PartialEq)]
9418
9419pub struct MaximumMinimumOptions<'a> {
9420  pub _tab: flatbuffers::Table<'a>,
9421}
9422
9423impl<'a> flatbuffers::Follow<'a> for MaximumMinimumOptions<'a> {
9424  type Inner = MaximumMinimumOptions<'a>;
9425  #[inline]
9426  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9427    Self { _tab: flatbuffers::Table::new(buf, loc) }
9428  }
9429}
9430
9431impl<'a> MaximumMinimumOptions<'a> {
9432
9433  #[inline]
9434  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9435    MaximumMinimumOptions { _tab: table }
9436  }
9437  #[allow(unused_mut)]
9438  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9439    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9440    _args: &'args MaximumMinimumOptionsArgs
9441  ) -> flatbuffers::WIPOffset<MaximumMinimumOptions<'bldr>> {
9442    let mut builder = MaximumMinimumOptionsBuilder::new(_fbb);
9443    builder.finish()
9444  }
9445
9446}
9447
9448impl flatbuffers::Verifiable for MaximumMinimumOptions<'_> {
9449  #[inline]
9450  fn run_verifier(
9451    v: &mut flatbuffers::Verifier, pos: usize
9452  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9453    use self::flatbuffers::Verifiable;
9454    v.visit_table(pos)?
9455     .finish();
9456    Ok(())
9457  }
9458}
9459pub struct MaximumMinimumOptionsArgs {
9460}
9461impl<'a> Default for MaximumMinimumOptionsArgs {
9462  #[inline]
9463  fn default() -> Self {
9464    MaximumMinimumOptionsArgs {
9465    }
9466  }
9467}
9468
9469pub struct MaximumMinimumOptionsBuilder<'a: 'b, 'b> {
9470  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9471  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9472}
9473impl<'a: 'b, 'b> MaximumMinimumOptionsBuilder<'a, 'b> {
9474  #[inline]
9475  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MaximumMinimumOptionsBuilder<'a, 'b> {
9476    let start = _fbb.start_table();
9477    MaximumMinimumOptionsBuilder {
9478      fbb_: _fbb,
9479      start_: start,
9480    }
9481  }
9482  #[inline]
9483  pub fn finish(self) -> flatbuffers::WIPOffset<MaximumMinimumOptions<'a>> {
9484    let o = self.fbb_.end_table(self.start_);
9485    flatbuffers::WIPOffset::new(o.value())
9486  }
9487}
9488
9489impl core::fmt::Debug for MaximumMinimumOptions<'_> {
9490  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9491    let mut ds = f.debug_struct("MaximumMinimumOptions");
9492      ds.finish()
9493  }
9494}
9495pub enum TileOptionsOffset {}
9496#[derive(Copy, Clone, PartialEq)]
9497
9498pub struct TileOptions<'a> {
9499  pub _tab: flatbuffers::Table<'a>,
9500}
9501
9502impl<'a> flatbuffers::Follow<'a> for TileOptions<'a> {
9503  type Inner = TileOptions<'a>;
9504  #[inline]
9505  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9506    Self { _tab: flatbuffers::Table::new(buf, loc) }
9507  }
9508}
9509
9510impl<'a> TileOptions<'a> {
9511
9512  #[inline]
9513  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9514    TileOptions { _tab: table }
9515  }
9516  #[allow(unused_mut)]
9517  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9518    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9519    _args: &'args TileOptionsArgs
9520  ) -> flatbuffers::WIPOffset<TileOptions<'bldr>> {
9521    let mut builder = TileOptionsBuilder::new(_fbb);
9522    builder.finish()
9523  }
9524
9525}
9526
9527impl flatbuffers::Verifiable for TileOptions<'_> {
9528  #[inline]
9529  fn run_verifier(
9530    v: &mut flatbuffers::Verifier, pos: usize
9531  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9532    use self::flatbuffers::Verifiable;
9533    v.visit_table(pos)?
9534     .finish();
9535    Ok(())
9536  }
9537}
9538pub struct TileOptionsArgs {
9539}
9540impl<'a> Default for TileOptionsArgs {
9541  #[inline]
9542  fn default() -> Self {
9543    TileOptionsArgs {
9544    }
9545  }
9546}
9547
9548pub struct TileOptionsBuilder<'a: 'b, 'b> {
9549  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9550  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9551}
9552impl<'a: 'b, 'b> TileOptionsBuilder<'a, 'b> {
9553  #[inline]
9554  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TileOptionsBuilder<'a, 'b> {
9555    let start = _fbb.start_table();
9556    TileOptionsBuilder {
9557      fbb_: _fbb,
9558      start_: start,
9559    }
9560  }
9561  #[inline]
9562  pub fn finish(self) -> flatbuffers::WIPOffset<TileOptions<'a>> {
9563    let o = self.fbb_.end_table(self.start_);
9564    flatbuffers::WIPOffset::new(o.value())
9565  }
9566}
9567
9568impl core::fmt::Debug for TileOptions<'_> {
9569  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9570    let mut ds = f.debug_struct("TileOptions");
9571      ds.finish()
9572  }
9573}
9574pub enum ArgMaxOptionsOffset {}
9575#[derive(Copy, Clone, PartialEq)]
9576
9577pub struct ArgMaxOptions<'a> {
9578  pub _tab: flatbuffers::Table<'a>,
9579}
9580
9581impl<'a> flatbuffers::Follow<'a> for ArgMaxOptions<'a> {
9582  type Inner = ArgMaxOptions<'a>;
9583  #[inline]
9584  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9585    Self { _tab: flatbuffers::Table::new(buf, loc) }
9586  }
9587}
9588
9589impl<'a> ArgMaxOptions<'a> {
9590  pub const VT_OUTPUT_TYPE: flatbuffers::VOffsetT = 4;
9591
9592  #[inline]
9593  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9594    ArgMaxOptions { _tab: table }
9595  }
9596  #[allow(unused_mut)]
9597  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9598    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9599    args: &'args ArgMaxOptionsArgs
9600  ) -> flatbuffers::WIPOffset<ArgMaxOptions<'bldr>> {
9601    let mut builder = ArgMaxOptionsBuilder::new(_fbb);
9602    builder.add_output_type(args.output_type);
9603    builder.finish()
9604  }
9605
9606
9607  #[inline]
9608  pub fn output_type(&self) -> TensorType {
9609    // Safety:
9610    // Created from valid Table for this object
9611    // which contains a valid value in this slot
9612    unsafe { self._tab.get::<TensorType>(ArgMaxOptions::VT_OUTPUT_TYPE, Some(TensorType::FLOAT32)).unwrap()}
9613  }
9614}
9615
9616impl flatbuffers::Verifiable for ArgMaxOptions<'_> {
9617  #[inline]
9618  fn run_verifier(
9619    v: &mut flatbuffers::Verifier, pos: usize
9620  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9621    use self::flatbuffers::Verifiable;
9622    v.visit_table(pos)?
9623     .visit_field::<TensorType>("output_type", Self::VT_OUTPUT_TYPE, false)?
9624     .finish();
9625    Ok(())
9626  }
9627}
9628pub struct ArgMaxOptionsArgs {
9629    pub output_type: TensorType,
9630}
9631impl<'a> Default for ArgMaxOptionsArgs {
9632  #[inline]
9633  fn default() -> Self {
9634    ArgMaxOptionsArgs {
9635      output_type: TensorType::FLOAT32,
9636    }
9637  }
9638}
9639
9640pub struct ArgMaxOptionsBuilder<'a: 'b, 'b> {
9641  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9642  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9643}
9644impl<'a: 'b, 'b> ArgMaxOptionsBuilder<'a, 'b> {
9645  #[inline]
9646  pub fn add_output_type(&mut self, output_type: TensorType) {
9647    self.fbb_.push_slot::<TensorType>(ArgMaxOptions::VT_OUTPUT_TYPE, output_type, TensorType::FLOAT32);
9648  }
9649  #[inline]
9650  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ArgMaxOptionsBuilder<'a, 'b> {
9651    let start = _fbb.start_table();
9652    ArgMaxOptionsBuilder {
9653      fbb_: _fbb,
9654      start_: start,
9655    }
9656  }
9657  #[inline]
9658  pub fn finish(self) -> flatbuffers::WIPOffset<ArgMaxOptions<'a>> {
9659    let o = self.fbb_.end_table(self.start_);
9660    flatbuffers::WIPOffset::new(o.value())
9661  }
9662}
9663
9664impl core::fmt::Debug for ArgMaxOptions<'_> {
9665  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9666    let mut ds = f.debug_struct("ArgMaxOptions");
9667      ds.field("output_type", &self.output_type());
9668      ds.finish()
9669  }
9670}
9671pub enum ArgMinOptionsOffset {}
9672#[derive(Copy, Clone, PartialEq)]
9673
9674pub struct ArgMinOptions<'a> {
9675  pub _tab: flatbuffers::Table<'a>,
9676}
9677
9678impl<'a> flatbuffers::Follow<'a> for ArgMinOptions<'a> {
9679  type Inner = ArgMinOptions<'a>;
9680  #[inline]
9681  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9682    Self { _tab: flatbuffers::Table::new(buf, loc) }
9683  }
9684}
9685
9686impl<'a> ArgMinOptions<'a> {
9687  pub const VT_OUTPUT_TYPE: flatbuffers::VOffsetT = 4;
9688
9689  #[inline]
9690  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9691    ArgMinOptions { _tab: table }
9692  }
9693  #[allow(unused_mut)]
9694  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9695    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9696    args: &'args ArgMinOptionsArgs
9697  ) -> flatbuffers::WIPOffset<ArgMinOptions<'bldr>> {
9698    let mut builder = ArgMinOptionsBuilder::new(_fbb);
9699    builder.add_output_type(args.output_type);
9700    builder.finish()
9701  }
9702
9703
9704  #[inline]
9705  pub fn output_type(&self) -> TensorType {
9706    // Safety:
9707    // Created from valid Table for this object
9708    // which contains a valid value in this slot
9709    unsafe { self._tab.get::<TensorType>(ArgMinOptions::VT_OUTPUT_TYPE, Some(TensorType::FLOAT32)).unwrap()}
9710  }
9711}
9712
9713impl flatbuffers::Verifiable for ArgMinOptions<'_> {
9714  #[inline]
9715  fn run_verifier(
9716    v: &mut flatbuffers::Verifier, pos: usize
9717  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9718    use self::flatbuffers::Verifiable;
9719    v.visit_table(pos)?
9720     .visit_field::<TensorType>("output_type", Self::VT_OUTPUT_TYPE, false)?
9721     .finish();
9722    Ok(())
9723  }
9724}
9725pub struct ArgMinOptionsArgs {
9726    pub output_type: TensorType,
9727}
9728impl<'a> Default for ArgMinOptionsArgs {
9729  #[inline]
9730  fn default() -> Self {
9731    ArgMinOptionsArgs {
9732      output_type: TensorType::FLOAT32,
9733    }
9734  }
9735}
9736
9737pub struct ArgMinOptionsBuilder<'a: 'b, 'b> {
9738  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9739  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9740}
9741impl<'a: 'b, 'b> ArgMinOptionsBuilder<'a, 'b> {
9742  #[inline]
9743  pub fn add_output_type(&mut self, output_type: TensorType) {
9744    self.fbb_.push_slot::<TensorType>(ArgMinOptions::VT_OUTPUT_TYPE, output_type, TensorType::FLOAT32);
9745  }
9746  #[inline]
9747  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ArgMinOptionsBuilder<'a, 'b> {
9748    let start = _fbb.start_table();
9749    ArgMinOptionsBuilder {
9750      fbb_: _fbb,
9751      start_: start,
9752    }
9753  }
9754  #[inline]
9755  pub fn finish(self) -> flatbuffers::WIPOffset<ArgMinOptions<'a>> {
9756    let o = self.fbb_.end_table(self.start_);
9757    flatbuffers::WIPOffset::new(o.value())
9758  }
9759}
9760
9761impl core::fmt::Debug for ArgMinOptions<'_> {
9762  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9763    let mut ds = f.debug_struct("ArgMinOptions");
9764      ds.field("output_type", &self.output_type());
9765      ds.finish()
9766  }
9767}
9768pub enum GreaterOptionsOffset {}
9769#[derive(Copy, Clone, PartialEq)]
9770
9771pub struct GreaterOptions<'a> {
9772  pub _tab: flatbuffers::Table<'a>,
9773}
9774
9775impl<'a> flatbuffers::Follow<'a> for GreaterOptions<'a> {
9776  type Inner = GreaterOptions<'a>;
9777  #[inline]
9778  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9779    Self { _tab: flatbuffers::Table::new(buf, loc) }
9780  }
9781}
9782
9783impl<'a> GreaterOptions<'a> {
9784
9785  #[inline]
9786  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9787    GreaterOptions { _tab: table }
9788  }
9789  #[allow(unused_mut)]
9790  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9791    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9792    _args: &'args GreaterOptionsArgs
9793  ) -> flatbuffers::WIPOffset<GreaterOptions<'bldr>> {
9794    let mut builder = GreaterOptionsBuilder::new(_fbb);
9795    builder.finish()
9796  }
9797
9798}
9799
9800impl flatbuffers::Verifiable for GreaterOptions<'_> {
9801  #[inline]
9802  fn run_verifier(
9803    v: &mut flatbuffers::Verifier, pos: usize
9804  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9805    use self::flatbuffers::Verifiable;
9806    v.visit_table(pos)?
9807     .finish();
9808    Ok(())
9809  }
9810}
9811pub struct GreaterOptionsArgs {
9812}
9813impl<'a> Default for GreaterOptionsArgs {
9814  #[inline]
9815  fn default() -> Self {
9816    GreaterOptionsArgs {
9817    }
9818  }
9819}
9820
9821pub struct GreaterOptionsBuilder<'a: 'b, 'b> {
9822  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9823  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9824}
9825impl<'a: 'b, 'b> GreaterOptionsBuilder<'a, 'b> {
9826  #[inline]
9827  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GreaterOptionsBuilder<'a, 'b> {
9828    let start = _fbb.start_table();
9829    GreaterOptionsBuilder {
9830      fbb_: _fbb,
9831      start_: start,
9832    }
9833  }
9834  #[inline]
9835  pub fn finish(self) -> flatbuffers::WIPOffset<GreaterOptions<'a>> {
9836    let o = self.fbb_.end_table(self.start_);
9837    flatbuffers::WIPOffset::new(o.value())
9838  }
9839}
9840
9841impl core::fmt::Debug for GreaterOptions<'_> {
9842  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9843    let mut ds = f.debug_struct("GreaterOptions");
9844      ds.finish()
9845  }
9846}
9847pub enum GreaterEqualOptionsOffset {}
9848#[derive(Copy, Clone, PartialEq)]
9849
9850pub struct GreaterEqualOptions<'a> {
9851  pub _tab: flatbuffers::Table<'a>,
9852}
9853
9854impl<'a> flatbuffers::Follow<'a> for GreaterEqualOptions<'a> {
9855  type Inner = GreaterEqualOptions<'a>;
9856  #[inline]
9857  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9858    Self { _tab: flatbuffers::Table::new(buf, loc) }
9859  }
9860}
9861
9862impl<'a> GreaterEqualOptions<'a> {
9863
9864  #[inline]
9865  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9866    GreaterEqualOptions { _tab: table }
9867  }
9868  #[allow(unused_mut)]
9869  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9870    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9871    _args: &'args GreaterEqualOptionsArgs
9872  ) -> flatbuffers::WIPOffset<GreaterEqualOptions<'bldr>> {
9873    let mut builder = GreaterEqualOptionsBuilder::new(_fbb);
9874    builder.finish()
9875  }
9876
9877}
9878
9879impl flatbuffers::Verifiable for GreaterEqualOptions<'_> {
9880  #[inline]
9881  fn run_verifier(
9882    v: &mut flatbuffers::Verifier, pos: usize
9883  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9884    use self::flatbuffers::Verifiable;
9885    v.visit_table(pos)?
9886     .finish();
9887    Ok(())
9888  }
9889}
9890pub struct GreaterEqualOptionsArgs {
9891}
9892impl<'a> Default for GreaterEqualOptionsArgs {
9893  #[inline]
9894  fn default() -> Self {
9895    GreaterEqualOptionsArgs {
9896    }
9897  }
9898}
9899
9900pub struct GreaterEqualOptionsBuilder<'a: 'b, 'b> {
9901  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9902  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9903}
9904impl<'a: 'b, 'b> GreaterEqualOptionsBuilder<'a, 'b> {
9905  #[inline]
9906  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GreaterEqualOptionsBuilder<'a, 'b> {
9907    let start = _fbb.start_table();
9908    GreaterEqualOptionsBuilder {
9909      fbb_: _fbb,
9910      start_: start,
9911    }
9912  }
9913  #[inline]
9914  pub fn finish(self) -> flatbuffers::WIPOffset<GreaterEqualOptions<'a>> {
9915    let o = self.fbb_.end_table(self.start_);
9916    flatbuffers::WIPOffset::new(o.value())
9917  }
9918}
9919
9920impl core::fmt::Debug for GreaterEqualOptions<'_> {
9921  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9922    let mut ds = f.debug_struct("GreaterEqualOptions");
9923      ds.finish()
9924  }
9925}
9926pub enum LessOptionsOffset {}
9927#[derive(Copy, Clone, PartialEq)]
9928
9929pub struct LessOptions<'a> {
9930  pub _tab: flatbuffers::Table<'a>,
9931}
9932
9933impl<'a> flatbuffers::Follow<'a> for LessOptions<'a> {
9934  type Inner = LessOptions<'a>;
9935  #[inline]
9936  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9937    Self { _tab: flatbuffers::Table::new(buf, loc) }
9938  }
9939}
9940
9941impl<'a> LessOptions<'a> {
9942
9943  #[inline]
9944  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9945    LessOptions { _tab: table }
9946  }
9947  #[allow(unused_mut)]
9948  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
9949    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
9950    _args: &'args LessOptionsArgs
9951  ) -> flatbuffers::WIPOffset<LessOptions<'bldr>> {
9952    let mut builder = LessOptionsBuilder::new(_fbb);
9953    builder.finish()
9954  }
9955
9956}
9957
9958impl flatbuffers::Verifiable for LessOptions<'_> {
9959  #[inline]
9960  fn run_verifier(
9961    v: &mut flatbuffers::Verifier, pos: usize
9962  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9963    use self::flatbuffers::Verifiable;
9964    v.visit_table(pos)?
9965     .finish();
9966    Ok(())
9967  }
9968}
9969pub struct LessOptionsArgs {
9970}
9971impl<'a> Default for LessOptionsArgs {
9972  #[inline]
9973  fn default() -> Self {
9974    LessOptionsArgs {
9975    }
9976  }
9977}
9978
9979pub struct LessOptionsBuilder<'a: 'b, 'b> {
9980  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
9981  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9982}
9983impl<'a: 'b, 'b> LessOptionsBuilder<'a, 'b> {
9984  #[inline]
9985  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LessOptionsBuilder<'a, 'b> {
9986    let start = _fbb.start_table();
9987    LessOptionsBuilder {
9988      fbb_: _fbb,
9989      start_: start,
9990    }
9991  }
9992  #[inline]
9993  pub fn finish(self) -> flatbuffers::WIPOffset<LessOptions<'a>> {
9994    let o = self.fbb_.end_table(self.start_);
9995    flatbuffers::WIPOffset::new(o.value())
9996  }
9997}
9998
9999impl core::fmt::Debug for LessOptions<'_> {
10000  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10001    let mut ds = f.debug_struct("LessOptions");
10002      ds.finish()
10003  }
10004}
10005pub enum LessEqualOptionsOffset {}
10006#[derive(Copy, Clone, PartialEq)]
10007
10008pub struct LessEqualOptions<'a> {
10009  pub _tab: flatbuffers::Table<'a>,
10010}
10011
10012impl<'a> flatbuffers::Follow<'a> for LessEqualOptions<'a> {
10013  type Inner = LessEqualOptions<'a>;
10014  #[inline]
10015  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10016    Self { _tab: flatbuffers::Table::new(buf, loc) }
10017  }
10018}
10019
10020impl<'a> LessEqualOptions<'a> {
10021
10022  #[inline]
10023  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10024    LessEqualOptions { _tab: table }
10025  }
10026  #[allow(unused_mut)]
10027  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10028    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10029    _args: &'args LessEqualOptionsArgs
10030  ) -> flatbuffers::WIPOffset<LessEqualOptions<'bldr>> {
10031    let mut builder = LessEqualOptionsBuilder::new(_fbb);
10032    builder.finish()
10033  }
10034
10035}
10036
10037impl flatbuffers::Verifiable for LessEqualOptions<'_> {
10038  #[inline]
10039  fn run_verifier(
10040    v: &mut flatbuffers::Verifier, pos: usize
10041  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10042    use self::flatbuffers::Verifiable;
10043    v.visit_table(pos)?
10044     .finish();
10045    Ok(())
10046  }
10047}
10048pub struct LessEqualOptionsArgs {
10049}
10050impl<'a> Default for LessEqualOptionsArgs {
10051  #[inline]
10052  fn default() -> Self {
10053    LessEqualOptionsArgs {
10054    }
10055  }
10056}
10057
10058pub struct LessEqualOptionsBuilder<'a: 'b, 'b> {
10059  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10060  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10061}
10062impl<'a: 'b, 'b> LessEqualOptionsBuilder<'a, 'b> {
10063  #[inline]
10064  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LessEqualOptionsBuilder<'a, 'b> {
10065    let start = _fbb.start_table();
10066    LessEqualOptionsBuilder {
10067      fbb_: _fbb,
10068      start_: start,
10069    }
10070  }
10071  #[inline]
10072  pub fn finish(self) -> flatbuffers::WIPOffset<LessEqualOptions<'a>> {
10073    let o = self.fbb_.end_table(self.start_);
10074    flatbuffers::WIPOffset::new(o.value())
10075  }
10076}
10077
10078impl core::fmt::Debug for LessEqualOptions<'_> {
10079  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10080    let mut ds = f.debug_struct("LessEqualOptions");
10081      ds.finish()
10082  }
10083}
10084pub enum NegOptionsOffset {}
10085#[derive(Copy, Clone, PartialEq)]
10086
10087pub struct NegOptions<'a> {
10088  pub _tab: flatbuffers::Table<'a>,
10089}
10090
10091impl<'a> flatbuffers::Follow<'a> for NegOptions<'a> {
10092  type Inner = NegOptions<'a>;
10093  #[inline]
10094  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10095    Self { _tab: flatbuffers::Table::new(buf, loc) }
10096  }
10097}
10098
10099impl<'a> NegOptions<'a> {
10100
10101  #[inline]
10102  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10103    NegOptions { _tab: table }
10104  }
10105  #[allow(unused_mut)]
10106  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10107    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10108    _args: &'args NegOptionsArgs
10109  ) -> flatbuffers::WIPOffset<NegOptions<'bldr>> {
10110    let mut builder = NegOptionsBuilder::new(_fbb);
10111    builder.finish()
10112  }
10113
10114}
10115
10116impl flatbuffers::Verifiable for NegOptions<'_> {
10117  #[inline]
10118  fn run_verifier(
10119    v: &mut flatbuffers::Verifier, pos: usize
10120  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10121    use self::flatbuffers::Verifiable;
10122    v.visit_table(pos)?
10123     .finish();
10124    Ok(())
10125  }
10126}
10127pub struct NegOptionsArgs {
10128}
10129impl<'a> Default for NegOptionsArgs {
10130  #[inline]
10131  fn default() -> Self {
10132    NegOptionsArgs {
10133    }
10134  }
10135}
10136
10137pub struct NegOptionsBuilder<'a: 'b, 'b> {
10138  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10139  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10140}
10141impl<'a: 'b, 'b> NegOptionsBuilder<'a, 'b> {
10142  #[inline]
10143  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NegOptionsBuilder<'a, 'b> {
10144    let start = _fbb.start_table();
10145    NegOptionsBuilder {
10146      fbb_: _fbb,
10147      start_: start,
10148    }
10149  }
10150  #[inline]
10151  pub fn finish(self) -> flatbuffers::WIPOffset<NegOptions<'a>> {
10152    let o = self.fbb_.end_table(self.start_);
10153    flatbuffers::WIPOffset::new(o.value())
10154  }
10155}
10156
10157impl core::fmt::Debug for NegOptions<'_> {
10158  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10159    let mut ds = f.debug_struct("NegOptions");
10160      ds.finish()
10161  }
10162}
10163pub enum SelectOptionsOffset {}
10164#[derive(Copy, Clone, PartialEq)]
10165
10166pub struct SelectOptions<'a> {
10167  pub _tab: flatbuffers::Table<'a>,
10168}
10169
10170impl<'a> flatbuffers::Follow<'a> for SelectOptions<'a> {
10171  type Inner = SelectOptions<'a>;
10172  #[inline]
10173  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10174    Self { _tab: flatbuffers::Table::new(buf, loc) }
10175  }
10176}
10177
10178impl<'a> SelectOptions<'a> {
10179
10180  #[inline]
10181  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10182    SelectOptions { _tab: table }
10183  }
10184  #[allow(unused_mut)]
10185  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10186    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10187    _args: &'args SelectOptionsArgs
10188  ) -> flatbuffers::WIPOffset<SelectOptions<'bldr>> {
10189    let mut builder = SelectOptionsBuilder::new(_fbb);
10190    builder.finish()
10191  }
10192
10193}
10194
10195impl flatbuffers::Verifiable for SelectOptions<'_> {
10196  #[inline]
10197  fn run_verifier(
10198    v: &mut flatbuffers::Verifier, pos: usize
10199  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10200    use self::flatbuffers::Verifiable;
10201    v.visit_table(pos)?
10202     .finish();
10203    Ok(())
10204  }
10205}
10206pub struct SelectOptionsArgs {
10207}
10208impl<'a> Default for SelectOptionsArgs {
10209  #[inline]
10210  fn default() -> Self {
10211    SelectOptionsArgs {
10212    }
10213  }
10214}
10215
10216pub struct SelectOptionsBuilder<'a: 'b, 'b> {
10217  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10218  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10219}
10220impl<'a: 'b, 'b> SelectOptionsBuilder<'a, 'b> {
10221  #[inline]
10222  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SelectOptionsBuilder<'a, 'b> {
10223    let start = _fbb.start_table();
10224    SelectOptionsBuilder {
10225      fbb_: _fbb,
10226      start_: start,
10227    }
10228  }
10229  #[inline]
10230  pub fn finish(self) -> flatbuffers::WIPOffset<SelectOptions<'a>> {
10231    let o = self.fbb_.end_table(self.start_);
10232    flatbuffers::WIPOffset::new(o.value())
10233  }
10234}
10235
10236impl core::fmt::Debug for SelectOptions<'_> {
10237  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10238    let mut ds = f.debug_struct("SelectOptions");
10239      ds.finish()
10240  }
10241}
10242pub enum SliceOptionsOffset {}
10243#[derive(Copy, Clone, PartialEq)]
10244
10245pub struct SliceOptions<'a> {
10246  pub _tab: flatbuffers::Table<'a>,
10247}
10248
10249impl<'a> flatbuffers::Follow<'a> for SliceOptions<'a> {
10250  type Inner = SliceOptions<'a>;
10251  #[inline]
10252  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10253    Self { _tab: flatbuffers::Table::new(buf, loc) }
10254  }
10255}
10256
10257impl<'a> SliceOptions<'a> {
10258
10259  #[inline]
10260  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10261    SliceOptions { _tab: table }
10262  }
10263  #[allow(unused_mut)]
10264  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10265    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10266    _args: &'args SliceOptionsArgs
10267  ) -> flatbuffers::WIPOffset<SliceOptions<'bldr>> {
10268    let mut builder = SliceOptionsBuilder::new(_fbb);
10269    builder.finish()
10270  }
10271
10272}
10273
10274impl flatbuffers::Verifiable for SliceOptions<'_> {
10275  #[inline]
10276  fn run_verifier(
10277    v: &mut flatbuffers::Verifier, pos: usize
10278  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10279    use self::flatbuffers::Verifiable;
10280    v.visit_table(pos)?
10281     .finish();
10282    Ok(())
10283  }
10284}
10285pub struct SliceOptionsArgs {
10286}
10287impl<'a> Default for SliceOptionsArgs {
10288  #[inline]
10289  fn default() -> Self {
10290    SliceOptionsArgs {
10291    }
10292  }
10293}
10294
10295pub struct SliceOptionsBuilder<'a: 'b, 'b> {
10296  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10297  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10298}
10299impl<'a: 'b, 'b> SliceOptionsBuilder<'a, 'b> {
10300  #[inline]
10301  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SliceOptionsBuilder<'a, 'b> {
10302    let start = _fbb.start_table();
10303    SliceOptionsBuilder {
10304      fbb_: _fbb,
10305      start_: start,
10306    }
10307  }
10308  #[inline]
10309  pub fn finish(self) -> flatbuffers::WIPOffset<SliceOptions<'a>> {
10310    let o = self.fbb_.end_table(self.start_);
10311    flatbuffers::WIPOffset::new(o.value())
10312  }
10313}
10314
10315impl core::fmt::Debug for SliceOptions<'_> {
10316  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10317    let mut ds = f.debug_struct("SliceOptions");
10318      ds.finish()
10319  }
10320}
10321pub enum TransposeConvOptionsOffset {}
10322#[derive(Copy, Clone, PartialEq)]
10323
10324pub struct TransposeConvOptions<'a> {
10325  pub _tab: flatbuffers::Table<'a>,
10326}
10327
10328impl<'a> flatbuffers::Follow<'a> for TransposeConvOptions<'a> {
10329  type Inner = TransposeConvOptions<'a>;
10330  #[inline]
10331  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10332    Self { _tab: flatbuffers::Table::new(buf, loc) }
10333  }
10334}
10335
10336impl<'a> TransposeConvOptions<'a> {
10337  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
10338  pub const VT_STRIDE_W: flatbuffers::VOffsetT = 6;
10339  pub const VT_STRIDE_H: flatbuffers::VOffsetT = 8;
10340  pub const VT_FUSED_ACTIVATION_FUNCTION: flatbuffers::VOffsetT = 10;
10341
10342  #[inline]
10343  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10344    TransposeConvOptions { _tab: table }
10345  }
10346  #[allow(unused_mut)]
10347  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10348    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10349    args: &'args TransposeConvOptionsArgs
10350  ) -> flatbuffers::WIPOffset<TransposeConvOptions<'bldr>> {
10351    let mut builder = TransposeConvOptionsBuilder::new(_fbb);
10352    builder.add_stride_h(args.stride_h);
10353    builder.add_stride_w(args.stride_w);
10354    builder.add_fused_activation_function(args.fused_activation_function);
10355    builder.add_padding(args.padding);
10356    builder.finish()
10357  }
10358
10359
10360  #[inline]
10361  pub fn padding(&self) -> Padding {
10362    // Safety:
10363    // Created from valid Table for this object
10364    // which contains a valid value in this slot
10365    unsafe { self._tab.get::<Padding>(TransposeConvOptions::VT_PADDING, Some(Padding::SAME)).unwrap()}
10366  }
10367  #[inline]
10368  pub fn stride_w(&self) -> i32 {
10369    // Safety:
10370    // Created from valid Table for this object
10371    // which contains a valid value in this slot
10372    unsafe { self._tab.get::<i32>(TransposeConvOptions::VT_STRIDE_W, Some(0)).unwrap()}
10373  }
10374  #[inline]
10375  pub fn stride_h(&self) -> i32 {
10376    // Safety:
10377    // Created from valid Table for this object
10378    // which contains a valid value in this slot
10379    unsafe { self._tab.get::<i32>(TransposeConvOptions::VT_STRIDE_H, Some(0)).unwrap()}
10380  }
10381  #[inline]
10382  pub fn fused_activation_function(&self) -> ActivationFunctionType {
10383    // Safety:
10384    // Created from valid Table for this object
10385    // which contains a valid value in this slot
10386    unsafe { self._tab.get::<ActivationFunctionType>(TransposeConvOptions::VT_FUSED_ACTIVATION_FUNCTION, Some(ActivationFunctionType::NONE)).unwrap()}
10387  }
10388}
10389
10390impl flatbuffers::Verifiable for TransposeConvOptions<'_> {
10391  #[inline]
10392  fn run_verifier(
10393    v: &mut flatbuffers::Verifier, pos: usize
10394  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10395    use self::flatbuffers::Verifiable;
10396    v.visit_table(pos)?
10397     .visit_field::<Padding>("padding", Self::VT_PADDING, false)?
10398     .visit_field::<i32>("stride_w", Self::VT_STRIDE_W, false)?
10399     .visit_field::<i32>("stride_h", Self::VT_STRIDE_H, false)?
10400     .visit_field::<ActivationFunctionType>("fused_activation_function", Self::VT_FUSED_ACTIVATION_FUNCTION, false)?
10401     .finish();
10402    Ok(())
10403  }
10404}
10405pub struct TransposeConvOptionsArgs {
10406    pub padding: Padding,
10407    pub stride_w: i32,
10408    pub stride_h: i32,
10409    pub fused_activation_function: ActivationFunctionType,
10410}
10411impl<'a> Default for TransposeConvOptionsArgs {
10412  #[inline]
10413  fn default() -> Self {
10414    TransposeConvOptionsArgs {
10415      padding: Padding::SAME,
10416      stride_w: 0,
10417      stride_h: 0,
10418      fused_activation_function: ActivationFunctionType::NONE,
10419    }
10420  }
10421}
10422
10423pub struct TransposeConvOptionsBuilder<'a: 'b, 'b> {
10424  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10425  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10426}
10427impl<'a: 'b, 'b> TransposeConvOptionsBuilder<'a, 'b> {
10428  #[inline]
10429  pub fn add_padding(&mut self, padding: Padding) {
10430    self.fbb_.push_slot::<Padding>(TransposeConvOptions::VT_PADDING, padding, Padding::SAME);
10431  }
10432  #[inline]
10433  pub fn add_stride_w(&mut self, stride_w: i32) {
10434    self.fbb_.push_slot::<i32>(TransposeConvOptions::VT_STRIDE_W, stride_w, 0);
10435  }
10436  #[inline]
10437  pub fn add_stride_h(&mut self, stride_h: i32) {
10438    self.fbb_.push_slot::<i32>(TransposeConvOptions::VT_STRIDE_H, stride_h, 0);
10439  }
10440  #[inline]
10441  pub fn add_fused_activation_function(&mut self, fused_activation_function: ActivationFunctionType) {
10442    self.fbb_.push_slot::<ActivationFunctionType>(TransposeConvOptions::VT_FUSED_ACTIVATION_FUNCTION, fused_activation_function, ActivationFunctionType::NONE);
10443  }
10444  #[inline]
10445  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TransposeConvOptionsBuilder<'a, 'b> {
10446    let start = _fbb.start_table();
10447    TransposeConvOptionsBuilder {
10448      fbb_: _fbb,
10449      start_: start,
10450    }
10451  }
10452  #[inline]
10453  pub fn finish(self) -> flatbuffers::WIPOffset<TransposeConvOptions<'a>> {
10454    let o = self.fbb_.end_table(self.start_);
10455    flatbuffers::WIPOffset::new(o.value())
10456  }
10457}
10458
10459impl core::fmt::Debug for TransposeConvOptions<'_> {
10460  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10461    let mut ds = f.debug_struct("TransposeConvOptions");
10462      ds.field("padding", &self.padding());
10463      ds.field("stride_w", &self.stride_w());
10464      ds.field("stride_h", &self.stride_h());
10465      ds.field("fused_activation_function", &self.fused_activation_function());
10466      ds.finish()
10467  }
10468}
10469pub enum ExpandDimsOptionsOffset {}
10470#[derive(Copy, Clone, PartialEq)]
10471
10472pub struct ExpandDimsOptions<'a> {
10473  pub _tab: flatbuffers::Table<'a>,
10474}
10475
10476impl<'a> flatbuffers::Follow<'a> for ExpandDimsOptions<'a> {
10477  type Inner = ExpandDimsOptions<'a>;
10478  #[inline]
10479  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10480    Self { _tab: flatbuffers::Table::new(buf, loc) }
10481  }
10482}
10483
10484impl<'a> ExpandDimsOptions<'a> {
10485
10486  #[inline]
10487  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10488    ExpandDimsOptions { _tab: table }
10489  }
10490  #[allow(unused_mut)]
10491  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10492    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10493    _args: &'args ExpandDimsOptionsArgs
10494  ) -> flatbuffers::WIPOffset<ExpandDimsOptions<'bldr>> {
10495    let mut builder = ExpandDimsOptionsBuilder::new(_fbb);
10496    builder.finish()
10497  }
10498
10499}
10500
10501impl flatbuffers::Verifiable for ExpandDimsOptions<'_> {
10502  #[inline]
10503  fn run_verifier(
10504    v: &mut flatbuffers::Verifier, pos: usize
10505  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10506    use self::flatbuffers::Verifiable;
10507    v.visit_table(pos)?
10508     .finish();
10509    Ok(())
10510  }
10511}
10512pub struct ExpandDimsOptionsArgs {
10513}
10514impl<'a> Default for ExpandDimsOptionsArgs {
10515  #[inline]
10516  fn default() -> Self {
10517    ExpandDimsOptionsArgs {
10518    }
10519  }
10520}
10521
10522pub struct ExpandDimsOptionsBuilder<'a: 'b, 'b> {
10523  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10524  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10525}
10526impl<'a: 'b, 'b> ExpandDimsOptionsBuilder<'a, 'b> {
10527  #[inline]
10528  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ExpandDimsOptionsBuilder<'a, 'b> {
10529    let start = _fbb.start_table();
10530    ExpandDimsOptionsBuilder {
10531      fbb_: _fbb,
10532      start_: start,
10533    }
10534  }
10535  #[inline]
10536  pub fn finish(self) -> flatbuffers::WIPOffset<ExpandDimsOptions<'a>> {
10537    let o = self.fbb_.end_table(self.start_);
10538    flatbuffers::WIPOffset::new(o.value())
10539  }
10540}
10541
10542impl core::fmt::Debug for ExpandDimsOptions<'_> {
10543  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10544    let mut ds = f.debug_struct("ExpandDimsOptions");
10545      ds.finish()
10546  }
10547}
10548pub enum SparseToDenseOptionsOffset {}
10549#[derive(Copy, Clone, PartialEq)]
10550
10551pub struct SparseToDenseOptions<'a> {
10552  pub _tab: flatbuffers::Table<'a>,
10553}
10554
10555impl<'a> flatbuffers::Follow<'a> for SparseToDenseOptions<'a> {
10556  type Inner = SparseToDenseOptions<'a>;
10557  #[inline]
10558  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10559    Self { _tab: flatbuffers::Table::new(buf, loc) }
10560  }
10561}
10562
10563impl<'a> SparseToDenseOptions<'a> {
10564  pub const VT_VALIDATE_INDICES: flatbuffers::VOffsetT = 4;
10565
10566  #[inline]
10567  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10568    SparseToDenseOptions { _tab: table }
10569  }
10570  #[allow(unused_mut)]
10571  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10572    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10573    args: &'args SparseToDenseOptionsArgs
10574  ) -> flatbuffers::WIPOffset<SparseToDenseOptions<'bldr>> {
10575    let mut builder = SparseToDenseOptionsBuilder::new(_fbb);
10576    builder.add_validate_indices(args.validate_indices);
10577    builder.finish()
10578  }
10579
10580
10581  #[inline]
10582  pub fn validate_indices(&self) -> bool {
10583    // Safety:
10584    // Created from valid Table for this object
10585    // which contains a valid value in this slot
10586    unsafe { self._tab.get::<bool>(SparseToDenseOptions::VT_VALIDATE_INDICES, Some(false)).unwrap()}
10587  }
10588}
10589
10590impl flatbuffers::Verifiable for SparseToDenseOptions<'_> {
10591  #[inline]
10592  fn run_verifier(
10593    v: &mut flatbuffers::Verifier, pos: usize
10594  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10595    use self::flatbuffers::Verifiable;
10596    v.visit_table(pos)?
10597     .visit_field::<bool>("validate_indices", Self::VT_VALIDATE_INDICES, false)?
10598     .finish();
10599    Ok(())
10600  }
10601}
10602pub struct SparseToDenseOptionsArgs {
10603    pub validate_indices: bool,
10604}
10605impl<'a> Default for SparseToDenseOptionsArgs {
10606  #[inline]
10607  fn default() -> Self {
10608    SparseToDenseOptionsArgs {
10609      validate_indices: false,
10610    }
10611  }
10612}
10613
10614pub struct SparseToDenseOptionsBuilder<'a: 'b, 'b> {
10615  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10616  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10617}
10618impl<'a: 'b, 'b> SparseToDenseOptionsBuilder<'a, 'b> {
10619  #[inline]
10620  pub fn add_validate_indices(&mut self, validate_indices: bool) {
10621    self.fbb_.push_slot::<bool>(SparseToDenseOptions::VT_VALIDATE_INDICES, validate_indices, false);
10622  }
10623  #[inline]
10624  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SparseToDenseOptionsBuilder<'a, 'b> {
10625    let start = _fbb.start_table();
10626    SparseToDenseOptionsBuilder {
10627      fbb_: _fbb,
10628      start_: start,
10629    }
10630  }
10631  #[inline]
10632  pub fn finish(self) -> flatbuffers::WIPOffset<SparseToDenseOptions<'a>> {
10633    let o = self.fbb_.end_table(self.start_);
10634    flatbuffers::WIPOffset::new(o.value())
10635  }
10636}
10637
10638impl core::fmt::Debug for SparseToDenseOptions<'_> {
10639  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10640    let mut ds = f.debug_struct("SparseToDenseOptions");
10641      ds.field("validate_indices", &self.validate_indices());
10642      ds.finish()
10643  }
10644}
10645pub enum EqualOptionsOffset {}
10646#[derive(Copy, Clone, PartialEq)]
10647
10648pub struct EqualOptions<'a> {
10649  pub _tab: flatbuffers::Table<'a>,
10650}
10651
10652impl<'a> flatbuffers::Follow<'a> for EqualOptions<'a> {
10653  type Inner = EqualOptions<'a>;
10654  #[inline]
10655  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10656    Self { _tab: flatbuffers::Table::new(buf, loc) }
10657  }
10658}
10659
10660impl<'a> EqualOptions<'a> {
10661
10662  #[inline]
10663  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10664    EqualOptions { _tab: table }
10665  }
10666  #[allow(unused_mut)]
10667  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10668    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10669    _args: &'args EqualOptionsArgs
10670  ) -> flatbuffers::WIPOffset<EqualOptions<'bldr>> {
10671    let mut builder = EqualOptionsBuilder::new(_fbb);
10672    builder.finish()
10673  }
10674
10675}
10676
10677impl flatbuffers::Verifiable for EqualOptions<'_> {
10678  #[inline]
10679  fn run_verifier(
10680    v: &mut flatbuffers::Verifier, pos: usize
10681  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10682    use self::flatbuffers::Verifiable;
10683    v.visit_table(pos)?
10684     .finish();
10685    Ok(())
10686  }
10687}
10688pub struct EqualOptionsArgs {
10689}
10690impl<'a> Default for EqualOptionsArgs {
10691  #[inline]
10692  fn default() -> Self {
10693    EqualOptionsArgs {
10694    }
10695  }
10696}
10697
10698pub struct EqualOptionsBuilder<'a: 'b, 'b> {
10699  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10700  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10701}
10702impl<'a: 'b, 'b> EqualOptionsBuilder<'a, 'b> {
10703  #[inline]
10704  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> EqualOptionsBuilder<'a, 'b> {
10705    let start = _fbb.start_table();
10706    EqualOptionsBuilder {
10707      fbb_: _fbb,
10708      start_: start,
10709    }
10710  }
10711  #[inline]
10712  pub fn finish(self) -> flatbuffers::WIPOffset<EqualOptions<'a>> {
10713    let o = self.fbb_.end_table(self.start_);
10714    flatbuffers::WIPOffset::new(o.value())
10715  }
10716}
10717
10718impl core::fmt::Debug for EqualOptions<'_> {
10719  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10720    let mut ds = f.debug_struct("EqualOptions");
10721      ds.finish()
10722  }
10723}
10724pub enum NotEqualOptionsOffset {}
10725#[derive(Copy, Clone, PartialEq)]
10726
10727pub struct NotEqualOptions<'a> {
10728  pub _tab: flatbuffers::Table<'a>,
10729}
10730
10731impl<'a> flatbuffers::Follow<'a> for NotEqualOptions<'a> {
10732  type Inner = NotEqualOptions<'a>;
10733  #[inline]
10734  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10735    Self { _tab: flatbuffers::Table::new(buf, loc) }
10736  }
10737}
10738
10739impl<'a> NotEqualOptions<'a> {
10740
10741  #[inline]
10742  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10743    NotEqualOptions { _tab: table }
10744  }
10745  #[allow(unused_mut)]
10746  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10747    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10748    _args: &'args NotEqualOptionsArgs
10749  ) -> flatbuffers::WIPOffset<NotEqualOptions<'bldr>> {
10750    let mut builder = NotEqualOptionsBuilder::new(_fbb);
10751    builder.finish()
10752  }
10753
10754}
10755
10756impl flatbuffers::Verifiable for NotEqualOptions<'_> {
10757  #[inline]
10758  fn run_verifier(
10759    v: &mut flatbuffers::Verifier, pos: usize
10760  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10761    use self::flatbuffers::Verifiable;
10762    v.visit_table(pos)?
10763     .finish();
10764    Ok(())
10765  }
10766}
10767pub struct NotEqualOptionsArgs {
10768}
10769impl<'a> Default for NotEqualOptionsArgs {
10770  #[inline]
10771  fn default() -> Self {
10772    NotEqualOptionsArgs {
10773    }
10774  }
10775}
10776
10777pub struct NotEqualOptionsBuilder<'a: 'b, 'b> {
10778  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10779  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10780}
10781impl<'a: 'b, 'b> NotEqualOptionsBuilder<'a, 'b> {
10782  #[inline]
10783  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NotEqualOptionsBuilder<'a, 'b> {
10784    let start = _fbb.start_table();
10785    NotEqualOptionsBuilder {
10786      fbb_: _fbb,
10787      start_: start,
10788    }
10789  }
10790  #[inline]
10791  pub fn finish(self) -> flatbuffers::WIPOffset<NotEqualOptions<'a>> {
10792    let o = self.fbb_.end_table(self.start_);
10793    flatbuffers::WIPOffset::new(o.value())
10794  }
10795}
10796
10797impl core::fmt::Debug for NotEqualOptions<'_> {
10798  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10799    let mut ds = f.debug_struct("NotEqualOptions");
10800      ds.finish()
10801  }
10802}
10803pub enum ShapeOptionsOffset {}
10804#[derive(Copy, Clone, PartialEq)]
10805
10806pub struct ShapeOptions<'a> {
10807  pub _tab: flatbuffers::Table<'a>,
10808}
10809
10810impl<'a> flatbuffers::Follow<'a> for ShapeOptions<'a> {
10811  type Inner = ShapeOptions<'a>;
10812  #[inline]
10813  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10814    Self { _tab: flatbuffers::Table::new(buf, loc) }
10815  }
10816}
10817
10818impl<'a> ShapeOptions<'a> {
10819  pub const VT_OUT_TYPE: flatbuffers::VOffsetT = 4;
10820
10821  #[inline]
10822  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10823    ShapeOptions { _tab: table }
10824  }
10825  #[allow(unused_mut)]
10826  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10827    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10828    args: &'args ShapeOptionsArgs
10829  ) -> flatbuffers::WIPOffset<ShapeOptions<'bldr>> {
10830    let mut builder = ShapeOptionsBuilder::new(_fbb);
10831    builder.add_out_type(args.out_type);
10832    builder.finish()
10833  }
10834
10835
10836  #[inline]
10837  pub fn out_type(&self) -> TensorType {
10838    // Safety:
10839    // Created from valid Table for this object
10840    // which contains a valid value in this slot
10841    unsafe { self._tab.get::<TensorType>(ShapeOptions::VT_OUT_TYPE, Some(TensorType::FLOAT32)).unwrap()}
10842  }
10843}
10844
10845impl flatbuffers::Verifiable for ShapeOptions<'_> {
10846  #[inline]
10847  fn run_verifier(
10848    v: &mut flatbuffers::Verifier, pos: usize
10849  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10850    use self::flatbuffers::Verifiable;
10851    v.visit_table(pos)?
10852     .visit_field::<TensorType>("out_type", Self::VT_OUT_TYPE, false)?
10853     .finish();
10854    Ok(())
10855  }
10856}
10857pub struct ShapeOptionsArgs {
10858    pub out_type: TensorType,
10859}
10860impl<'a> Default for ShapeOptionsArgs {
10861  #[inline]
10862  fn default() -> Self {
10863    ShapeOptionsArgs {
10864      out_type: TensorType::FLOAT32,
10865    }
10866  }
10867}
10868
10869pub struct ShapeOptionsBuilder<'a: 'b, 'b> {
10870  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10871  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10872}
10873impl<'a: 'b, 'b> ShapeOptionsBuilder<'a, 'b> {
10874  #[inline]
10875  pub fn add_out_type(&mut self, out_type: TensorType) {
10876    self.fbb_.push_slot::<TensorType>(ShapeOptions::VT_OUT_TYPE, out_type, TensorType::FLOAT32);
10877  }
10878  #[inline]
10879  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ShapeOptionsBuilder<'a, 'b> {
10880    let start = _fbb.start_table();
10881    ShapeOptionsBuilder {
10882      fbb_: _fbb,
10883      start_: start,
10884    }
10885  }
10886  #[inline]
10887  pub fn finish(self) -> flatbuffers::WIPOffset<ShapeOptions<'a>> {
10888    let o = self.fbb_.end_table(self.start_);
10889    flatbuffers::WIPOffset::new(o.value())
10890  }
10891}
10892
10893impl core::fmt::Debug for ShapeOptions<'_> {
10894  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10895    let mut ds = f.debug_struct("ShapeOptions");
10896      ds.field("out_type", &self.out_type());
10897      ds.finish()
10898  }
10899}
10900pub enum RankOptionsOffset {}
10901#[derive(Copy, Clone, PartialEq)]
10902
10903pub struct RankOptions<'a> {
10904  pub _tab: flatbuffers::Table<'a>,
10905}
10906
10907impl<'a> flatbuffers::Follow<'a> for RankOptions<'a> {
10908  type Inner = RankOptions<'a>;
10909  #[inline]
10910  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10911    Self { _tab: flatbuffers::Table::new(buf, loc) }
10912  }
10913}
10914
10915impl<'a> RankOptions<'a> {
10916
10917  #[inline]
10918  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10919    RankOptions { _tab: table }
10920  }
10921  #[allow(unused_mut)]
10922  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
10923    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
10924    _args: &'args RankOptionsArgs
10925  ) -> flatbuffers::WIPOffset<RankOptions<'bldr>> {
10926    let mut builder = RankOptionsBuilder::new(_fbb);
10927    builder.finish()
10928  }
10929
10930}
10931
10932impl flatbuffers::Verifiable for RankOptions<'_> {
10933  #[inline]
10934  fn run_verifier(
10935    v: &mut flatbuffers::Verifier, pos: usize
10936  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10937    use self::flatbuffers::Verifiable;
10938    v.visit_table(pos)?
10939     .finish();
10940    Ok(())
10941  }
10942}
10943pub struct RankOptionsArgs {
10944}
10945impl<'a> Default for RankOptionsArgs {
10946  #[inline]
10947  fn default() -> Self {
10948    RankOptionsArgs {
10949    }
10950  }
10951}
10952
10953pub struct RankOptionsBuilder<'a: 'b, 'b> {
10954  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
10955  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10956}
10957impl<'a: 'b, 'b> RankOptionsBuilder<'a, 'b> {
10958  #[inline]
10959  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RankOptionsBuilder<'a, 'b> {
10960    let start = _fbb.start_table();
10961    RankOptionsBuilder {
10962      fbb_: _fbb,
10963      start_: start,
10964    }
10965  }
10966  #[inline]
10967  pub fn finish(self) -> flatbuffers::WIPOffset<RankOptions<'a>> {
10968    let o = self.fbb_.end_table(self.start_);
10969    flatbuffers::WIPOffset::new(o.value())
10970  }
10971}
10972
10973impl core::fmt::Debug for RankOptions<'_> {
10974  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10975    let mut ds = f.debug_struct("RankOptions");
10976      ds.finish()
10977  }
10978}
10979pub enum PowOptionsOffset {}
10980#[derive(Copy, Clone, PartialEq)]
10981
10982pub struct PowOptions<'a> {
10983  pub _tab: flatbuffers::Table<'a>,
10984}
10985
10986impl<'a> flatbuffers::Follow<'a> for PowOptions<'a> {
10987  type Inner = PowOptions<'a>;
10988  #[inline]
10989  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10990    Self { _tab: flatbuffers::Table::new(buf, loc) }
10991  }
10992}
10993
10994impl<'a> PowOptions<'a> {
10995
10996  #[inline]
10997  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10998    PowOptions { _tab: table }
10999  }
11000  #[allow(unused_mut)]
11001  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11002    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11003    _args: &'args PowOptionsArgs
11004  ) -> flatbuffers::WIPOffset<PowOptions<'bldr>> {
11005    let mut builder = PowOptionsBuilder::new(_fbb);
11006    builder.finish()
11007  }
11008
11009}
11010
11011impl flatbuffers::Verifiable for PowOptions<'_> {
11012  #[inline]
11013  fn run_verifier(
11014    v: &mut flatbuffers::Verifier, pos: usize
11015  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11016    use self::flatbuffers::Verifiable;
11017    v.visit_table(pos)?
11018     .finish();
11019    Ok(())
11020  }
11021}
11022pub struct PowOptionsArgs {
11023}
11024impl<'a> Default for PowOptionsArgs {
11025  #[inline]
11026  fn default() -> Self {
11027    PowOptionsArgs {
11028    }
11029  }
11030}
11031
11032pub struct PowOptionsBuilder<'a: 'b, 'b> {
11033  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11034  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11035}
11036impl<'a: 'b, 'b> PowOptionsBuilder<'a, 'b> {
11037  #[inline]
11038  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PowOptionsBuilder<'a, 'b> {
11039    let start = _fbb.start_table();
11040    PowOptionsBuilder {
11041      fbb_: _fbb,
11042      start_: start,
11043    }
11044  }
11045  #[inline]
11046  pub fn finish(self) -> flatbuffers::WIPOffset<PowOptions<'a>> {
11047    let o = self.fbb_.end_table(self.start_);
11048    flatbuffers::WIPOffset::new(o.value())
11049  }
11050}
11051
11052impl core::fmt::Debug for PowOptions<'_> {
11053  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11054    let mut ds = f.debug_struct("PowOptions");
11055      ds.finish()
11056  }
11057}
11058pub enum FakeQuantOptionsOffset {}
11059#[derive(Copy, Clone, PartialEq)]
11060
11061pub struct FakeQuantOptions<'a> {
11062  pub _tab: flatbuffers::Table<'a>,
11063}
11064
11065impl<'a> flatbuffers::Follow<'a> for FakeQuantOptions<'a> {
11066  type Inner = FakeQuantOptions<'a>;
11067  #[inline]
11068  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11069    Self { _tab: flatbuffers::Table::new(buf, loc) }
11070  }
11071}
11072
11073impl<'a> FakeQuantOptions<'a> {
11074  pub const VT_MIN: flatbuffers::VOffsetT = 4;
11075  pub const VT_MAX: flatbuffers::VOffsetT = 6;
11076  pub const VT_NUM_BITS: flatbuffers::VOffsetT = 8;
11077  pub const VT_NARROW_RANGE: flatbuffers::VOffsetT = 10;
11078
11079  #[inline]
11080  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11081    FakeQuantOptions { _tab: table }
11082  }
11083  #[allow(unused_mut)]
11084  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11085    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11086    args: &'args FakeQuantOptionsArgs
11087  ) -> flatbuffers::WIPOffset<FakeQuantOptions<'bldr>> {
11088    let mut builder = FakeQuantOptionsBuilder::new(_fbb);
11089    builder.add_num_bits(args.num_bits);
11090    builder.add_max(args.max);
11091    builder.add_min(args.min);
11092    builder.add_narrow_range(args.narrow_range);
11093    builder.finish()
11094  }
11095
11096
11097  #[inline]
11098  pub fn min(&self) -> f32 {
11099    // Safety:
11100    // Created from valid Table for this object
11101    // which contains a valid value in this slot
11102    unsafe { self._tab.get::<f32>(FakeQuantOptions::VT_MIN, Some(0.0)).unwrap()}
11103  }
11104  #[inline]
11105  pub fn max(&self) -> f32 {
11106    // Safety:
11107    // Created from valid Table for this object
11108    // which contains a valid value in this slot
11109    unsafe { self._tab.get::<f32>(FakeQuantOptions::VT_MAX, Some(0.0)).unwrap()}
11110  }
11111  #[inline]
11112  pub fn num_bits(&self) -> i32 {
11113    // Safety:
11114    // Created from valid Table for this object
11115    // which contains a valid value in this slot
11116    unsafe { self._tab.get::<i32>(FakeQuantOptions::VT_NUM_BITS, Some(0)).unwrap()}
11117  }
11118  #[inline]
11119  pub fn narrow_range(&self) -> bool {
11120    // Safety:
11121    // Created from valid Table for this object
11122    // which contains a valid value in this slot
11123    unsafe { self._tab.get::<bool>(FakeQuantOptions::VT_NARROW_RANGE, Some(false)).unwrap()}
11124  }
11125}
11126
11127impl flatbuffers::Verifiable for FakeQuantOptions<'_> {
11128  #[inline]
11129  fn run_verifier(
11130    v: &mut flatbuffers::Verifier, pos: usize
11131  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11132    use self::flatbuffers::Verifiable;
11133    v.visit_table(pos)?
11134     .visit_field::<f32>("min", Self::VT_MIN, false)?
11135     .visit_field::<f32>("max", Self::VT_MAX, false)?
11136     .visit_field::<i32>("num_bits", Self::VT_NUM_BITS, false)?
11137     .visit_field::<bool>("narrow_range", Self::VT_NARROW_RANGE, false)?
11138     .finish();
11139    Ok(())
11140  }
11141}
11142pub struct FakeQuantOptionsArgs {
11143    pub min: f32,
11144    pub max: f32,
11145    pub num_bits: i32,
11146    pub narrow_range: bool,
11147}
11148impl<'a> Default for FakeQuantOptionsArgs {
11149  #[inline]
11150  fn default() -> Self {
11151    FakeQuantOptionsArgs {
11152      min: 0.0,
11153      max: 0.0,
11154      num_bits: 0,
11155      narrow_range: false,
11156    }
11157  }
11158}
11159
11160pub struct FakeQuantOptionsBuilder<'a: 'b, 'b> {
11161  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11162  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11163}
11164impl<'a: 'b, 'b> FakeQuantOptionsBuilder<'a, 'b> {
11165  #[inline]
11166  pub fn add_min(&mut self, min: f32) {
11167    self.fbb_.push_slot::<f32>(FakeQuantOptions::VT_MIN, min, 0.0);
11168  }
11169  #[inline]
11170  pub fn add_max(&mut self, max: f32) {
11171    self.fbb_.push_slot::<f32>(FakeQuantOptions::VT_MAX, max, 0.0);
11172  }
11173  #[inline]
11174  pub fn add_num_bits(&mut self, num_bits: i32) {
11175    self.fbb_.push_slot::<i32>(FakeQuantOptions::VT_NUM_BITS, num_bits, 0);
11176  }
11177  #[inline]
11178  pub fn add_narrow_range(&mut self, narrow_range: bool) {
11179    self.fbb_.push_slot::<bool>(FakeQuantOptions::VT_NARROW_RANGE, narrow_range, false);
11180  }
11181  #[inline]
11182  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FakeQuantOptionsBuilder<'a, 'b> {
11183    let start = _fbb.start_table();
11184    FakeQuantOptionsBuilder {
11185      fbb_: _fbb,
11186      start_: start,
11187    }
11188  }
11189  #[inline]
11190  pub fn finish(self) -> flatbuffers::WIPOffset<FakeQuantOptions<'a>> {
11191    let o = self.fbb_.end_table(self.start_);
11192    flatbuffers::WIPOffset::new(o.value())
11193  }
11194}
11195
11196impl core::fmt::Debug for FakeQuantOptions<'_> {
11197  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11198    let mut ds = f.debug_struct("FakeQuantOptions");
11199      ds.field("min", &self.min());
11200      ds.field("max", &self.max());
11201      ds.field("num_bits", &self.num_bits());
11202      ds.field("narrow_range", &self.narrow_range());
11203      ds.finish()
11204  }
11205}
11206pub enum PackOptionsOffset {}
11207#[derive(Copy, Clone, PartialEq)]
11208
11209pub struct PackOptions<'a> {
11210  pub _tab: flatbuffers::Table<'a>,
11211}
11212
11213impl<'a> flatbuffers::Follow<'a> for PackOptions<'a> {
11214  type Inner = PackOptions<'a>;
11215  #[inline]
11216  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11217    Self { _tab: flatbuffers::Table::new(buf, loc) }
11218  }
11219}
11220
11221impl<'a> PackOptions<'a> {
11222  pub const VT_VALUES_COUNT: flatbuffers::VOffsetT = 4;
11223  pub const VT_AXIS: flatbuffers::VOffsetT = 6;
11224
11225  #[inline]
11226  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11227    PackOptions { _tab: table }
11228  }
11229  #[allow(unused_mut)]
11230  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11231    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11232    args: &'args PackOptionsArgs
11233  ) -> flatbuffers::WIPOffset<PackOptions<'bldr>> {
11234    let mut builder = PackOptionsBuilder::new(_fbb);
11235    builder.add_axis(args.axis);
11236    builder.add_values_count(args.values_count);
11237    builder.finish()
11238  }
11239
11240
11241  #[inline]
11242  pub fn values_count(&self) -> i32 {
11243    // Safety:
11244    // Created from valid Table for this object
11245    // which contains a valid value in this slot
11246    unsafe { self._tab.get::<i32>(PackOptions::VT_VALUES_COUNT, Some(0)).unwrap()}
11247  }
11248  #[inline]
11249  pub fn axis(&self) -> i32 {
11250    // Safety:
11251    // Created from valid Table for this object
11252    // which contains a valid value in this slot
11253    unsafe { self._tab.get::<i32>(PackOptions::VT_AXIS, Some(0)).unwrap()}
11254  }
11255}
11256
11257impl flatbuffers::Verifiable for PackOptions<'_> {
11258  #[inline]
11259  fn run_verifier(
11260    v: &mut flatbuffers::Verifier, pos: usize
11261  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11262    use self::flatbuffers::Verifiable;
11263    v.visit_table(pos)?
11264     .visit_field::<i32>("values_count", Self::VT_VALUES_COUNT, false)?
11265     .visit_field::<i32>("axis", Self::VT_AXIS, false)?
11266     .finish();
11267    Ok(())
11268  }
11269}
11270pub struct PackOptionsArgs {
11271    pub values_count: i32,
11272    pub axis: i32,
11273}
11274impl<'a> Default for PackOptionsArgs {
11275  #[inline]
11276  fn default() -> Self {
11277    PackOptionsArgs {
11278      values_count: 0,
11279      axis: 0,
11280    }
11281  }
11282}
11283
11284pub struct PackOptionsBuilder<'a: 'b, 'b> {
11285  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11286  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11287}
11288impl<'a: 'b, 'b> PackOptionsBuilder<'a, 'b> {
11289  #[inline]
11290  pub fn add_values_count(&mut self, values_count: i32) {
11291    self.fbb_.push_slot::<i32>(PackOptions::VT_VALUES_COUNT, values_count, 0);
11292  }
11293  #[inline]
11294  pub fn add_axis(&mut self, axis: i32) {
11295    self.fbb_.push_slot::<i32>(PackOptions::VT_AXIS, axis, 0);
11296  }
11297  #[inline]
11298  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> PackOptionsBuilder<'a, 'b> {
11299    let start = _fbb.start_table();
11300    PackOptionsBuilder {
11301      fbb_: _fbb,
11302      start_: start,
11303    }
11304  }
11305  #[inline]
11306  pub fn finish(self) -> flatbuffers::WIPOffset<PackOptions<'a>> {
11307    let o = self.fbb_.end_table(self.start_);
11308    flatbuffers::WIPOffset::new(o.value())
11309  }
11310}
11311
11312impl core::fmt::Debug for PackOptions<'_> {
11313  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11314    let mut ds = f.debug_struct("PackOptions");
11315      ds.field("values_count", &self.values_count());
11316      ds.field("axis", &self.axis());
11317      ds.finish()
11318  }
11319}
11320pub enum LogicalOrOptionsOffset {}
11321#[derive(Copy, Clone, PartialEq)]
11322
11323pub struct LogicalOrOptions<'a> {
11324  pub _tab: flatbuffers::Table<'a>,
11325}
11326
11327impl<'a> flatbuffers::Follow<'a> for LogicalOrOptions<'a> {
11328  type Inner = LogicalOrOptions<'a>;
11329  #[inline]
11330  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11331    Self { _tab: flatbuffers::Table::new(buf, loc) }
11332  }
11333}
11334
11335impl<'a> LogicalOrOptions<'a> {
11336
11337  #[inline]
11338  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11339    LogicalOrOptions { _tab: table }
11340  }
11341  #[allow(unused_mut)]
11342  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11343    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11344    _args: &'args LogicalOrOptionsArgs
11345  ) -> flatbuffers::WIPOffset<LogicalOrOptions<'bldr>> {
11346    let mut builder = LogicalOrOptionsBuilder::new(_fbb);
11347    builder.finish()
11348  }
11349
11350}
11351
11352impl flatbuffers::Verifiable for LogicalOrOptions<'_> {
11353  #[inline]
11354  fn run_verifier(
11355    v: &mut flatbuffers::Verifier, pos: usize
11356  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11357    use self::flatbuffers::Verifiable;
11358    v.visit_table(pos)?
11359     .finish();
11360    Ok(())
11361  }
11362}
11363pub struct LogicalOrOptionsArgs {
11364}
11365impl<'a> Default for LogicalOrOptionsArgs {
11366  #[inline]
11367  fn default() -> Self {
11368    LogicalOrOptionsArgs {
11369    }
11370  }
11371}
11372
11373pub struct LogicalOrOptionsBuilder<'a: 'b, 'b> {
11374  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11375  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11376}
11377impl<'a: 'b, 'b> LogicalOrOptionsBuilder<'a, 'b> {
11378  #[inline]
11379  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LogicalOrOptionsBuilder<'a, 'b> {
11380    let start = _fbb.start_table();
11381    LogicalOrOptionsBuilder {
11382      fbb_: _fbb,
11383      start_: start,
11384    }
11385  }
11386  #[inline]
11387  pub fn finish(self) -> flatbuffers::WIPOffset<LogicalOrOptions<'a>> {
11388    let o = self.fbb_.end_table(self.start_);
11389    flatbuffers::WIPOffset::new(o.value())
11390  }
11391}
11392
11393impl core::fmt::Debug for LogicalOrOptions<'_> {
11394  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11395    let mut ds = f.debug_struct("LogicalOrOptions");
11396      ds.finish()
11397  }
11398}
11399pub enum OneHotOptionsOffset {}
11400#[derive(Copy, Clone, PartialEq)]
11401
11402pub struct OneHotOptions<'a> {
11403  pub _tab: flatbuffers::Table<'a>,
11404}
11405
11406impl<'a> flatbuffers::Follow<'a> for OneHotOptions<'a> {
11407  type Inner = OneHotOptions<'a>;
11408  #[inline]
11409  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11410    Self { _tab: flatbuffers::Table::new(buf, loc) }
11411  }
11412}
11413
11414impl<'a> OneHotOptions<'a> {
11415  pub const VT_AXIS: flatbuffers::VOffsetT = 4;
11416
11417  #[inline]
11418  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11419    OneHotOptions { _tab: table }
11420  }
11421  #[allow(unused_mut)]
11422  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11423    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11424    args: &'args OneHotOptionsArgs
11425  ) -> flatbuffers::WIPOffset<OneHotOptions<'bldr>> {
11426    let mut builder = OneHotOptionsBuilder::new(_fbb);
11427    builder.add_axis(args.axis);
11428    builder.finish()
11429  }
11430
11431
11432  #[inline]
11433  pub fn axis(&self) -> i32 {
11434    // Safety:
11435    // Created from valid Table for this object
11436    // which contains a valid value in this slot
11437    unsafe { self._tab.get::<i32>(OneHotOptions::VT_AXIS, Some(0)).unwrap()}
11438  }
11439}
11440
11441impl flatbuffers::Verifiable for OneHotOptions<'_> {
11442  #[inline]
11443  fn run_verifier(
11444    v: &mut flatbuffers::Verifier, pos: usize
11445  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11446    use self::flatbuffers::Verifiable;
11447    v.visit_table(pos)?
11448     .visit_field::<i32>("axis", Self::VT_AXIS, false)?
11449     .finish();
11450    Ok(())
11451  }
11452}
11453pub struct OneHotOptionsArgs {
11454    pub axis: i32,
11455}
11456impl<'a> Default for OneHotOptionsArgs {
11457  #[inline]
11458  fn default() -> Self {
11459    OneHotOptionsArgs {
11460      axis: 0,
11461    }
11462  }
11463}
11464
11465pub struct OneHotOptionsBuilder<'a: 'b, 'b> {
11466  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11467  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11468}
11469impl<'a: 'b, 'b> OneHotOptionsBuilder<'a, 'b> {
11470  #[inline]
11471  pub fn add_axis(&mut self, axis: i32) {
11472    self.fbb_.push_slot::<i32>(OneHotOptions::VT_AXIS, axis, 0);
11473  }
11474  #[inline]
11475  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> OneHotOptionsBuilder<'a, 'b> {
11476    let start = _fbb.start_table();
11477    OneHotOptionsBuilder {
11478      fbb_: _fbb,
11479      start_: start,
11480    }
11481  }
11482  #[inline]
11483  pub fn finish(self) -> flatbuffers::WIPOffset<OneHotOptions<'a>> {
11484    let o = self.fbb_.end_table(self.start_);
11485    flatbuffers::WIPOffset::new(o.value())
11486  }
11487}
11488
11489impl core::fmt::Debug for OneHotOptions<'_> {
11490  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11491    let mut ds = f.debug_struct("OneHotOptions");
11492      ds.field("axis", &self.axis());
11493      ds.finish()
11494  }
11495}
11496pub enum AbsOptionsOffset {}
11497#[derive(Copy, Clone, PartialEq)]
11498
11499pub struct AbsOptions<'a> {
11500  pub _tab: flatbuffers::Table<'a>,
11501}
11502
11503impl<'a> flatbuffers::Follow<'a> for AbsOptions<'a> {
11504  type Inner = AbsOptions<'a>;
11505  #[inline]
11506  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11507    Self { _tab: flatbuffers::Table::new(buf, loc) }
11508  }
11509}
11510
11511impl<'a> AbsOptions<'a> {
11512
11513  #[inline]
11514  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11515    AbsOptions { _tab: table }
11516  }
11517  #[allow(unused_mut)]
11518  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11519    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11520    _args: &'args AbsOptionsArgs
11521  ) -> flatbuffers::WIPOffset<AbsOptions<'bldr>> {
11522    let mut builder = AbsOptionsBuilder::new(_fbb);
11523    builder.finish()
11524  }
11525
11526}
11527
11528impl flatbuffers::Verifiable for AbsOptions<'_> {
11529  #[inline]
11530  fn run_verifier(
11531    v: &mut flatbuffers::Verifier, pos: usize
11532  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11533    use self::flatbuffers::Verifiable;
11534    v.visit_table(pos)?
11535     .finish();
11536    Ok(())
11537  }
11538}
11539pub struct AbsOptionsArgs {
11540}
11541impl<'a> Default for AbsOptionsArgs {
11542  #[inline]
11543  fn default() -> Self {
11544    AbsOptionsArgs {
11545    }
11546  }
11547}
11548
11549pub struct AbsOptionsBuilder<'a: 'b, 'b> {
11550  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11551  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11552}
11553impl<'a: 'b, 'b> AbsOptionsBuilder<'a, 'b> {
11554  #[inline]
11555  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AbsOptionsBuilder<'a, 'b> {
11556    let start = _fbb.start_table();
11557    AbsOptionsBuilder {
11558      fbb_: _fbb,
11559      start_: start,
11560    }
11561  }
11562  #[inline]
11563  pub fn finish(self) -> flatbuffers::WIPOffset<AbsOptions<'a>> {
11564    let o = self.fbb_.end_table(self.start_);
11565    flatbuffers::WIPOffset::new(o.value())
11566  }
11567}
11568
11569impl core::fmt::Debug for AbsOptions<'_> {
11570  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11571    let mut ds = f.debug_struct("AbsOptions");
11572      ds.finish()
11573  }
11574}
11575pub enum HardSwishOptionsOffset {}
11576#[derive(Copy, Clone, PartialEq)]
11577
11578pub struct HardSwishOptions<'a> {
11579  pub _tab: flatbuffers::Table<'a>,
11580}
11581
11582impl<'a> flatbuffers::Follow<'a> for HardSwishOptions<'a> {
11583  type Inner = HardSwishOptions<'a>;
11584  #[inline]
11585  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11586    Self { _tab: flatbuffers::Table::new(buf, loc) }
11587  }
11588}
11589
11590impl<'a> HardSwishOptions<'a> {
11591
11592  #[inline]
11593  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11594    HardSwishOptions { _tab: table }
11595  }
11596  #[allow(unused_mut)]
11597  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11598    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11599    _args: &'args HardSwishOptionsArgs
11600  ) -> flatbuffers::WIPOffset<HardSwishOptions<'bldr>> {
11601    let mut builder = HardSwishOptionsBuilder::new(_fbb);
11602    builder.finish()
11603  }
11604
11605}
11606
11607impl flatbuffers::Verifiable for HardSwishOptions<'_> {
11608  #[inline]
11609  fn run_verifier(
11610    v: &mut flatbuffers::Verifier, pos: usize
11611  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11612    use self::flatbuffers::Verifiable;
11613    v.visit_table(pos)?
11614     .finish();
11615    Ok(())
11616  }
11617}
11618pub struct HardSwishOptionsArgs {
11619}
11620impl<'a> Default for HardSwishOptionsArgs {
11621  #[inline]
11622  fn default() -> Self {
11623    HardSwishOptionsArgs {
11624    }
11625  }
11626}
11627
11628pub struct HardSwishOptionsBuilder<'a: 'b, 'b> {
11629  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11630  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11631}
11632impl<'a: 'b, 'b> HardSwishOptionsBuilder<'a, 'b> {
11633  #[inline]
11634  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HardSwishOptionsBuilder<'a, 'b> {
11635    let start = _fbb.start_table();
11636    HardSwishOptionsBuilder {
11637      fbb_: _fbb,
11638      start_: start,
11639    }
11640  }
11641  #[inline]
11642  pub fn finish(self) -> flatbuffers::WIPOffset<HardSwishOptions<'a>> {
11643    let o = self.fbb_.end_table(self.start_);
11644    flatbuffers::WIPOffset::new(o.value())
11645  }
11646}
11647
11648impl core::fmt::Debug for HardSwishOptions<'_> {
11649  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11650    let mut ds = f.debug_struct("HardSwishOptions");
11651      ds.finish()
11652  }
11653}
11654pub enum LogicalAndOptionsOffset {}
11655#[derive(Copy, Clone, PartialEq)]
11656
11657pub struct LogicalAndOptions<'a> {
11658  pub _tab: flatbuffers::Table<'a>,
11659}
11660
11661impl<'a> flatbuffers::Follow<'a> for LogicalAndOptions<'a> {
11662  type Inner = LogicalAndOptions<'a>;
11663  #[inline]
11664  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11665    Self { _tab: flatbuffers::Table::new(buf, loc) }
11666  }
11667}
11668
11669impl<'a> LogicalAndOptions<'a> {
11670
11671  #[inline]
11672  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11673    LogicalAndOptions { _tab: table }
11674  }
11675  #[allow(unused_mut)]
11676  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11677    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11678    _args: &'args LogicalAndOptionsArgs
11679  ) -> flatbuffers::WIPOffset<LogicalAndOptions<'bldr>> {
11680    let mut builder = LogicalAndOptionsBuilder::new(_fbb);
11681    builder.finish()
11682  }
11683
11684}
11685
11686impl flatbuffers::Verifiable for LogicalAndOptions<'_> {
11687  #[inline]
11688  fn run_verifier(
11689    v: &mut flatbuffers::Verifier, pos: usize
11690  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11691    use self::flatbuffers::Verifiable;
11692    v.visit_table(pos)?
11693     .finish();
11694    Ok(())
11695  }
11696}
11697pub struct LogicalAndOptionsArgs {
11698}
11699impl<'a> Default for LogicalAndOptionsArgs {
11700  #[inline]
11701  fn default() -> Self {
11702    LogicalAndOptionsArgs {
11703    }
11704  }
11705}
11706
11707pub struct LogicalAndOptionsBuilder<'a: 'b, 'b> {
11708  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11709  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11710}
11711impl<'a: 'b, 'b> LogicalAndOptionsBuilder<'a, 'b> {
11712  #[inline]
11713  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LogicalAndOptionsBuilder<'a, 'b> {
11714    let start = _fbb.start_table();
11715    LogicalAndOptionsBuilder {
11716      fbb_: _fbb,
11717      start_: start,
11718    }
11719  }
11720  #[inline]
11721  pub fn finish(self) -> flatbuffers::WIPOffset<LogicalAndOptions<'a>> {
11722    let o = self.fbb_.end_table(self.start_);
11723    flatbuffers::WIPOffset::new(o.value())
11724  }
11725}
11726
11727impl core::fmt::Debug for LogicalAndOptions<'_> {
11728  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11729    let mut ds = f.debug_struct("LogicalAndOptions");
11730      ds.finish()
11731  }
11732}
11733pub enum LogicalNotOptionsOffset {}
11734#[derive(Copy, Clone, PartialEq)]
11735
11736pub struct LogicalNotOptions<'a> {
11737  pub _tab: flatbuffers::Table<'a>,
11738}
11739
11740impl<'a> flatbuffers::Follow<'a> for LogicalNotOptions<'a> {
11741  type Inner = LogicalNotOptions<'a>;
11742  #[inline]
11743  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11744    Self { _tab: flatbuffers::Table::new(buf, loc) }
11745  }
11746}
11747
11748impl<'a> LogicalNotOptions<'a> {
11749
11750  #[inline]
11751  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11752    LogicalNotOptions { _tab: table }
11753  }
11754  #[allow(unused_mut)]
11755  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11756    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11757    _args: &'args LogicalNotOptionsArgs
11758  ) -> flatbuffers::WIPOffset<LogicalNotOptions<'bldr>> {
11759    let mut builder = LogicalNotOptionsBuilder::new(_fbb);
11760    builder.finish()
11761  }
11762
11763}
11764
11765impl flatbuffers::Verifiable for LogicalNotOptions<'_> {
11766  #[inline]
11767  fn run_verifier(
11768    v: &mut flatbuffers::Verifier, pos: usize
11769  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11770    use self::flatbuffers::Verifiable;
11771    v.visit_table(pos)?
11772     .finish();
11773    Ok(())
11774  }
11775}
11776pub struct LogicalNotOptionsArgs {
11777}
11778impl<'a> Default for LogicalNotOptionsArgs {
11779  #[inline]
11780  fn default() -> Self {
11781    LogicalNotOptionsArgs {
11782    }
11783  }
11784}
11785
11786pub struct LogicalNotOptionsBuilder<'a: 'b, 'b> {
11787  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11788  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11789}
11790impl<'a: 'b, 'b> LogicalNotOptionsBuilder<'a, 'b> {
11791  #[inline]
11792  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LogicalNotOptionsBuilder<'a, 'b> {
11793    let start = _fbb.start_table();
11794    LogicalNotOptionsBuilder {
11795      fbb_: _fbb,
11796      start_: start,
11797    }
11798  }
11799  #[inline]
11800  pub fn finish(self) -> flatbuffers::WIPOffset<LogicalNotOptions<'a>> {
11801    let o = self.fbb_.end_table(self.start_);
11802    flatbuffers::WIPOffset::new(o.value())
11803  }
11804}
11805
11806impl core::fmt::Debug for LogicalNotOptions<'_> {
11807  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11808    let mut ds = f.debug_struct("LogicalNotOptions");
11809      ds.finish()
11810  }
11811}
11812pub enum UnpackOptionsOffset {}
11813#[derive(Copy, Clone, PartialEq)]
11814
11815pub struct UnpackOptions<'a> {
11816  pub _tab: flatbuffers::Table<'a>,
11817}
11818
11819impl<'a> flatbuffers::Follow<'a> for UnpackOptions<'a> {
11820  type Inner = UnpackOptions<'a>;
11821  #[inline]
11822  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11823    Self { _tab: flatbuffers::Table::new(buf, loc) }
11824  }
11825}
11826
11827impl<'a> UnpackOptions<'a> {
11828  pub const VT_NUM: flatbuffers::VOffsetT = 4;
11829  pub const VT_AXIS: flatbuffers::VOffsetT = 6;
11830
11831  #[inline]
11832  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11833    UnpackOptions { _tab: table }
11834  }
11835  #[allow(unused_mut)]
11836  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11837    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11838    args: &'args UnpackOptionsArgs
11839  ) -> flatbuffers::WIPOffset<UnpackOptions<'bldr>> {
11840    let mut builder = UnpackOptionsBuilder::new(_fbb);
11841    builder.add_axis(args.axis);
11842    builder.add_num(args.num);
11843    builder.finish()
11844  }
11845
11846
11847  #[inline]
11848  pub fn num(&self) -> i32 {
11849    // Safety:
11850    // Created from valid Table for this object
11851    // which contains a valid value in this slot
11852    unsafe { self._tab.get::<i32>(UnpackOptions::VT_NUM, Some(0)).unwrap()}
11853  }
11854  #[inline]
11855  pub fn axis(&self) -> i32 {
11856    // Safety:
11857    // Created from valid Table for this object
11858    // which contains a valid value in this slot
11859    unsafe { self._tab.get::<i32>(UnpackOptions::VT_AXIS, Some(0)).unwrap()}
11860  }
11861}
11862
11863impl flatbuffers::Verifiable for UnpackOptions<'_> {
11864  #[inline]
11865  fn run_verifier(
11866    v: &mut flatbuffers::Verifier, pos: usize
11867  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11868    use self::flatbuffers::Verifiable;
11869    v.visit_table(pos)?
11870     .visit_field::<i32>("num", Self::VT_NUM, false)?
11871     .visit_field::<i32>("axis", Self::VT_AXIS, false)?
11872     .finish();
11873    Ok(())
11874  }
11875}
11876pub struct UnpackOptionsArgs {
11877    pub num: i32,
11878    pub axis: i32,
11879}
11880impl<'a> Default for UnpackOptionsArgs {
11881  #[inline]
11882  fn default() -> Self {
11883    UnpackOptionsArgs {
11884      num: 0,
11885      axis: 0,
11886    }
11887  }
11888}
11889
11890pub struct UnpackOptionsBuilder<'a: 'b, 'b> {
11891  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11892  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11893}
11894impl<'a: 'b, 'b> UnpackOptionsBuilder<'a, 'b> {
11895  #[inline]
11896  pub fn add_num(&mut self, num: i32) {
11897    self.fbb_.push_slot::<i32>(UnpackOptions::VT_NUM, num, 0);
11898  }
11899  #[inline]
11900  pub fn add_axis(&mut self, axis: i32) {
11901    self.fbb_.push_slot::<i32>(UnpackOptions::VT_AXIS, axis, 0);
11902  }
11903  #[inline]
11904  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnpackOptionsBuilder<'a, 'b> {
11905    let start = _fbb.start_table();
11906    UnpackOptionsBuilder {
11907      fbb_: _fbb,
11908      start_: start,
11909    }
11910  }
11911  #[inline]
11912  pub fn finish(self) -> flatbuffers::WIPOffset<UnpackOptions<'a>> {
11913    let o = self.fbb_.end_table(self.start_);
11914    flatbuffers::WIPOffset::new(o.value())
11915  }
11916}
11917
11918impl core::fmt::Debug for UnpackOptions<'_> {
11919  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11920    let mut ds = f.debug_struct("UnpackOptions");
11921      ds.field("num", &self.num());
11922      ds.field("axis", &self.axis());
11923      ds.finish()
11924  }
11925}
11926pub enum FloorDivOptionsOffset {}
11927#[derive(Copy, Clone, PartialEq)]
11928
11929pub struct FloorDivOptions<'a> {
11930  pub _tab: flatbuffers::Table<'a>,
11931}
11932
11933impl<'a> flatbuffers::Follow<'a> for FloorDivOptions<'a> {
11934  type Inner = FloorDivOptions<'a>;
11935  #[inline]
11936  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11937    Self { _tab: flatbuffers::Table::new(buf, loc) }
11938  }
11939}
11940
11941impl<'a> FloorDivOptions<'a> {
11942
11943  #[inline]
11944  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11945    FloorDivOptions { _tab: table }
11946  }
11947  #[allow(unused_mut)]
11948  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
11949    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
11950    _args: &'args FloorDivOptionsArgs
11951  ) -> flatbuffers::WIPOffset<FloorDivOptions<'bldr>> {
11952    let mut builder = FloorDivOptionsBuilder::new(_fbb);
11953    builder.finish()
11954  }
11955
11956}
11957
11958impl flatbuffers::Verifiable for FloorDivOptions<'_> {
11959  #[inline]
11960  fn run_verifier(
11961    v: &mut flatbuffers::Verifier, pos: usize
11962  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11963    use self::flatbuffers::Verifiable;
11964    v.visit_table(pos)?
11965     .finish();
11966    Ok(())
11967  }
11968}
11969pub struct FloorDivOptionsArgs {
11970}
11971impl<'a> Default for FloorDivOptionsArgs {
11972  #[inline]
11973  fn default() -> Self {
11974    FloorDivOptionsArgs {
11975    }
11976  }
11977}
11978
11979pub struct FloorDivOptionsBuilder<'a: 'b, 'b> {
11980  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
11981  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11982}
11983impl<'a: 'b, 'b> FloorDivOptionsBuilder<'a, 'b> {
11984  #[inline]
11985  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FloorDivOptionsBuilder<'a, 'b> {
11986    let start = _fbb.start_table();
11987    FloorDivOptionsBuilder {
11988      fbb_: _fbb,
11989      start_: start,
11990    }
11991  }
11992  #[inline]
11993  pub fn finish(self) -> flatbuffers::WIPOffset<FloorDivOptions<'a>> {
11994    let o = self.fbb_.end_table(self.start_);
11995    flatbuffers::WIPOffset::new(o.value())
11996  }
11997}
11998
11999impl core::fmt::Debug for FloorDivOptions<'_> {
12000  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12001    let mut ds = f.debug_struct("FloorDivOptions");
12002      ds.finish()
12003  }
12004}
12005pub enum SquareOptionsOffset {}
12006#[derive(Copy, Clone, PartialEq)]
12007
12008pub struct SquareOptions<'a> {
12009  pub _tab: flatbuffers::Table<'a>,
12010}
12011
12012impl<'a> flatbuffers::Follow<'a> for SquareOptions<'a> {
12013  type Inner = SquareOptions<'a>;
12014  #[inline]
12015  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12016    Self { _tab: flatbuffers::Table::new(buf, loc) }
12017  }
12018}
12019
12020impl<'a> SquareOptions<'a> {
12021
12022  #[inline]
12023  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12024    SquareOptions { _tab: table }
12025  }
12026  #[allow(unused_mut)]
12027  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12028    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12029    _args: &'args SquareOptionsArgs
12030  ) -> flatbuffers::WIPOffset<SquareOptions<'bldr>> {
12031    let mut builder = SquareOptionsBuilder::new(_fbb);
12032    builder.finish()
12033  }
12034
12035}
12036
12037impl flatbuffers::Verifiable for SquareOptions<'_> {
12038  #[inline]
12039  fn run_verifier(
12040    v: &mut flatbuffers::Verifier, pos: usize
12041  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12042    use self::flatbuffers::Verifiable;
12043    v.visit_table(pos)?
12044     .finish();
12045    Ok(())
12046  }
12047}
12048pub struct SquareOptionsArgs {
12049}
12050impl<'a> Default for SquareOptionsArgs {
12051  #[inline]
12052  fn default() -> Self {
12053    SquareOptionsArgs {
12054    }
12055  }
12056}
12057
12058pub struct SquareOptionsBuilder<'a: 'b, 'b> {
12059  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12060  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12061}
12062impl<'a: 'b, 'b> SquareOptionsBuilder<'a, 'b> {
12063  #[inline]
12064  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SquareOptionsBuilder<'a, 'b> {
12065    let start = _fbb.start_table();
12066    SquareOptionsBuilder {
12067      fbb_: _fbb,
12068      start_: start,
12069    }
12070  }
12071  #[inline]
12072  pub fn finish(self) -> flatbuffers::WIPOffset<SquareOptions<'a>> {
12073    let o = self.fbb_.end_table(self.start_);
12074    flatbuffers::WIPOffset::new(o.value())
12075  }
12076}
12077
12078impl core::fmt::Debug for SquareOptions<'_> {
12079  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12080    let mut ds = f.debug_struct("SquareOptions");
12081      ds.finish()
12082  }
12083}
12084pub enum ZerosLikeOptionsOffset {}
12085#[derive(Copy, Clone, PartialEq)]
12086
12087pub struct ZerosLikeOptions<'a> {
12088  pub _tab: flatbuffers::Table<'a>,
12089}
12090
12091impl<'a> flatbuffers::Follow<'a> for ZerosLikeOptions<'a> {
12092  type Inner = ZerosLikeOptions<'a>;
12093  #[inline]
12094  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12095    Self { _tab: flatbuffers::Table::new(buf, loc) }
12096  }
12097}
12098
12099impl<'a> ZerosLikeOptions<'a> {
12100
12101  #[inline]
12102  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12103    ZerosLikeOptions { _tab: table }
12104  }
12105  #[allow(unused_mut)]
12106  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12107    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12108    _args: &'args ZerosLikeOptionsArgs
12109  ) -> flatbuffers::WIPOffset<ZerosLikeOptions<'bldr>> {
12110    let mut builder = ZerosLikeOptionsBuilder::new(_fbb);
12111    builder.finish()
12112  }
12113
12114}
12115
12116impl flatbuffers::Verifiable for ZerosLikeOptions<'_> {
12117  #[inline]
12118  fn run_verifier(
12119    v: &mut flatbuffers::Verifier, pos: usize
12120  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12121    use self::flatbuffers::Verifiable;
12122    v.visit_table(pos)?
12123     .finish();
12124    Ok(())
12125  }
12126}
12127pub struct ZerosLikeOptionsArgs {
12128}
12129impl<'a> Default for ZerosLikeOptionsArgs {
12130  #[inline]
12131  fn default() -> Self {
12132    ZerosLikeOptionsArgs {
12133    }
12134  }
12135}
12136
12137pub struct ZerosLikeOptionsBuilder<'a: 'b, 'b> {
12138  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12139  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12140}
12141impl<'a: 'b, 'b> ZerosLikeOptionsBuilder<'a, 'b> {
12142  #[inline]
12143  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ZerosLikeOptionsBuilder<'a, 'b> {
12144    let start = _fbb.start_table();
12145    ZerosLikeOptionsBuilder {
12146      fbb_: _fbb,
12147      start_: start,
12148    }
12149  }
12150  #[inline]
12151  pub fn finish(self) -> flatbuffers::WIPOffset<ZerosLikeOptions<'a>> {
12152    let o = self.fbb_.end_table(self.start_);
12153    flatbuffers::WIPOffset::new(o.value())
12154  }
12155}
12156
12157impl core::fmt::Debug for ZerosLikeOptions<'_> {
12158  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12159    let mut ds = f.debug_struct("ZerosLikeOptions");
12160      ds.finish()
12161  }
12162}
12163pub enum FillOptionsOffset {}
12164#[derive(Copy, Clone, PartialEq)]
12165
12166pub struct FillOptions<'a> {
12167  pub _tab: flatbuffers::Table<'a>,
12168}
12169
12170impl<'a> flatbuffers::Follow<'a> for FillOptions<'a> {
12171  type Inner = FillOptions<'a>;
12172  #[inline]
12173  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12174    Self { _tab: flatbuffers::Table::new(buf, loc) }
12175  }
12176}
12177
12178impl<'a> FillOptions<'a> {
12179
12180  #[inline]
12181  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12182    FillOptions { _tab: table }
12183  }
12184  #[allow(unused_mut)]
12185  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12186    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12187    _args: &'args FillOptionsArgs
12188  ) -> flatbuffers::WIPOffset<FillOptions<'bldr>> {
12189    let mut builder = FillOptionsBuilder::new(_fbb);
12190    builder.finish()
12191  }
12192
12193}
12194
12195impl flatbuffers::Verifiable for FillOptions<'_> {
12196  #[inline]
12197  fn run_verifier(
12198    v: &mut flatbuffers::Verifier, pos: usize
12199  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12200    use self::flatbuffers::Verifiable;
12201    v.visit_table(pos)?
12202     .finish();
12203    Ok(())
12204  }
12205}
12206pub struct FillOptionsArgs {
12207}
12208impl<'a> Default for FillOptionsArgs {
12209  #[inline]
12210  fn default() -> Self {
12211    FillOptionsArgs {
12212    }
12213  }
12214}
12215
12216pub struct FillOptionsBuilder<'a: 'b, 'b> {
12217  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12218  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12219}
12220impl<'a: 'b, 'b> FillOptionsBuilder<'a, 'b> {
12221  #[inline]
12222  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FillOptionsBuilder<'a, 'b> {
12223    let start = _fbb.start_table();
12224    FillOptionsBuilder {
12225      fbb_: _fbb,
12226      start_: start,
12227    }
12228  }
12229  #[inline]
12230  pub fn finish(self) -> flatbuffers::WIPOffset<FillOptions<'a>> {
12231    let o = self.fbb_.end_table(self.start_);
12232    flatbuffers::WIPOffset::new(o.value())
12233  }
12234}
12235
12236impl core::fmt::Debug for FillOptions<'_> {
12237  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12238    let mut ds = f.debug_struct("FillOptions");
12239      ds.finish()
12240  }
12241}
12242pub enum FloorModOptionsOffset {}
12243#[derive(Copy, Clone, PartialEq)]
12244
12245pub struct FloorModOptions<'a> {
12246  pub _tab: flatbuffers::Table<'a>,
12247}
12248
12249impl<'a> flatbuffers::Follow<'a> for FloorModOptions<'a> {
12250  type Inner = FloorModOptions<'a>;
12251  #[inline]
12252  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12253    Self { _tab: flatbuffers::Table::new(buf, loc) }
12254  }
12255}
12256
12257impl<'a> FloorModOptions<'a> {
12258
12259  #[inline]
12260  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12261    FloorModOptions { _tab: table }
12262  }
12263  #[allow(unused_mut)]
12264  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12265    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12266    _args: &'args FloorModOptionsArgs
12267  ) -> flatbuffers::WIPOffset<FloorModOptions<'bldr>> {
12268    let mut builder = FloorModOptionsBuilder::new(_fbb);
12269    builder.finish()
12270  }
12271
12272}
12273
12274impl flatbuffers::Verifiable for FloorModOptions<'_> {
12275  #[inline]
12276  fn run_verifier(
12277    v: &mut flatbuffers::Verifier, pos: usize
12278  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12279    use self::flatbuffers::Verifiable;
12280    v.visit_table(pos)?
12281     .finish();
12282    Ok(())
12283  }
12284}
12285pub struct FloorModOptionsArgs {
12286}
12287impl<'a> Default for FloorModOptionsArgs {
12288  #[inline]
12289  fn default() -> Self {
12290    FloorModOptionsArgs {
12291    }
12292  }
12293}
12294
12295pub struct FloorModOptionsBuilder<'a: 'b, 'b> {
12296  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12297  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12298}
12299impl<'a: 'b, 'b> FloorModOptionsBuilder<'a, 'b> {
12300  #[inline]
12301  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> FloorModOptionsBuilder<'a, 'b> {
12302    let start = _fbb.start_table();
12303    FloorModOptionsBuilder {
12304      fbb_: _fbb,
12305      start_: start,
12306    }
12307  }
12308  #[inline]
12309  pub fn finish(self) -> flatbuffers::WIPOffset<FloorModOptions<'a>> {
12310    let o = self.fbb_.end_table(self.start_);
12311    flatbuffers::WIPOffset::new(o.value())
12312  }
12313}
12314
12315impl core::fmt::Debug for FloorModOptions<'_> {
12316  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12317    let mut ds = f.debug_struct("FloorModOptions");
12318      ds.finish()
12319  }
12320}
12321pub enum RangeOptionsOffset {}
12322#[derive(Copy, Clone, PartialEq)]
12323
12324pub struct RangeOptions<'a> {
12325  pub _tab: flatbuffers::Table<'a>,
12326}
12327
12328impl<'a> flatbuffers::Follow<'a> for RangeOptions<'a> {
12329  type Inner = RangeOptions<'a>;
12330  #[inline]
12331  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12332    Self { _tab: flatbuffers::Table::new(buf, loc) }
12333  }
12334}
12335
12336impl<'a> RangeOptions<'a> {
12337
12338  #[inline]
12339  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12340    RangeOptions { _tab: table }
12341  }
12342  #[allow(unused_mut)]
12343  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12344    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12345    _args: &'args RangeOptionsArgs
12346  ) -> flatbuffers::WIPOffset<RangeOptions<'bldr>> {
12347    let mut builder = RangeOptionsBuilder::new(_fbb);
12348    builder.finish()
12349  }
12350
12351}
12352
12353impl flatbuffers::Verifiable for RangeOptions<'_> {
12354  #[inline]
12355  fn run_verifier(
12356    v: &mut flatbuffers::Verifier, pos: usize
12357  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12358    use self::flatbuffers::Verifiable;
12359    v.visit_table(pos)?
12360     .finish();
12361    Ok(())
12362  }
12363}
12364pub struct RangeOptionsArgs {
12365}
12366impl<'a> Default for RangeOptionsArgs {
12367  #[inline]
12368  fn default() -> Self {
12369    RangeOptionsArgs {
12370    }
12371  }
12372}
12373
12374pub struct RangeOptionsBuilder<'a: 'b, 'b> {
12375  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12376  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12377}
12378impl<'a: 'b, 'b> RangeOptionsBuilder<'a, 'b> {
12379  #[inline]
12380  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RangeOptionsBuilder<'a, 'b> {
12381    let start = _fbb.start_table();
12382    RangeOptionsBuilder {
12383      fbb_: _fbb,
12384      start_: start,
12385    }
12386  }
12387  #[inline]
12388  pub fn finish(self) -> flatbuffers::WIPOffset<RangeOptions<'a>> {
12389    let o = self.fbb_.end_table(self.start_);
12390    flatbuffers::WIPOffset::new(o.value())
12391  }
12392}
12393
12394impl core::fmt::Debug for RangeOptions<'_> {
12395  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12396    let mut ds = f.debug_struct("RangeOptions");
12397      ds.finish()
12398  }
12399}
12400pub enum LeakyReluOptionsOffset {}
12401#[derive(Copy, Clone, PartialEq)]
12402
12403pub struct LeakyReluOptions<'a> {
12404  pub _tab: flatbuffers::Table<'a>,
12405}
12406
12407impl<'a> flatbuffers::Follow<'a> for LeakyReluOptions<'a> {
12408  type Inner = LeakyReluOptions<'a>;
12409  #[inline]
12410  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12411    Self { _tab: flatbuffers::Table::new(buf, loc) }
12412  }
12413}
12414
12415impl<'a> LeakyReluOptions<'a> {
12416  pub const VT_ALPHA: flatbuffers::VOffsetT = 4;
12417
12418  #[inline]
12419  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12420    LeakyReluOptions { _tab: table }
12421  }
12422  #[allow(unused_mut)]
12423  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12424    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12425    args: &'args LeakyReluOptionsArgs
12426  ) -> flatbuffers::WIPOffset<LeakyReluOptions<'bldr>> {
12427    let mut builder = LeakyReluOptionsBuilder::new(_fbb);
12428    builder.add_alpha(args.alpha);
12429    builder.finish()
12430  }
12431
12432
12433  #[inline]
12434  pub fn alpha(&self) -> f32 {
12435    // Safety:
12436    // Created from valid Table for this object
12437    // which contains a valid value in this slot
12438    unsafe { self._tab.get::<f32>(LeakyReluOptions::VT_ALPHA, Some(0.0)).unwrap()}
12439  }
12440}
12441
12442impl flatbuffers::Verifiable for LeakyReluOptions<'_> {
12443  #[inline]
12444  fn run_verifier(
12445    v: &mut flatbuffers::Verifier, pos: usize
12446  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12447    use self::flatbuffers::Verifiable;
12448    v.visit_table(pos)?
12449     .visit_field::<f32>("alpha", Self::VT_ALPHA, false)?
12450     .finish();
12451    Ok(())
12452  }
12453}
12454pub struct LeakyReluOptionsArgs {
12455    pub alpha: f32,
12456}
12457impl<'a> Default for LeakyReluOptionsArgs {
12458  #[inline]
12459  fn default() -> Self {
12460    LeakyReluOptionsArgs {
12461      alpha: 0.0,
12462    }
12463  }
12464}
12465
12466pub struct LeakyReluOptionsBuilder<'a: 'b, 'b> {
12467  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12468  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12469}
12470impl<'a: 'b, 'b> LeakyReluOptionsBuilder<'a, 'b> {
12471  #[inline]
12472  pub fn add_alpha(&mut self, alpha: f32) {
12473    self.fbb_.push_slot::<f32>(LeakyReluOptions::VT_ALPHA, alpha, 0.0);
12474  }
12475  #[inline]
12476  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> LeakyReluOptionsBuilder<'a, 'b> {
12477    let start = _fbb.start_table();
12478    LeakyReluOptionsBuilder {
12479      fbb_: _fbb,
12480      start_: start,
12481    }
12482  }
12483  #[inline]
12484  pub fn finish(self) -> flatbuffers::WIPOffset<LeakyReluOptions<'a>> {
12485    let o = self.fbb_.end_table(self.start_);
12486    flatbuffers::WIPOffset::new(o.value())
12487  }
12488}
12489
12490impl core::fmt::Debug for LeakyReluOptions<'_> {
12491  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12492    let mut ds = f.debug_struct("LeakyReluOptions");
12493      ds.field("alpha", &self.alpha());
12494      ds.finish()
12495  }
12496}
12497pub enum SquaredDifferenceOptionsOffset {}
12498#[derive(Copy, Clone, PartialEq)]
12499
12500pub struct SquaredDifferenceOptions<'a> {
12501  pub _tab: flatbuffers::Table<'a>,
12502}
12503
12504impl<'a> flatbuffers::Follow<'a> for SquaredDifferenceOptions<'a> {
12505  type Inner = SquaredDifferenceOptions<'a>;
12506  #[inline]
12507  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12508    Self { _tab: flatbuffers::Table::new(buf, loc) }
12509  }
12510}
12511
12512impl<'a> SquaredDifferenceOptions<'a> {
12513
12514  #[inline]
12515  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12516    SquaredDifferenceOptions { _tab: table }
12517  }
12518  #[allow(unused_mut)]
12519  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12520    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12521    _args: &'args SquaredDifferenceOptionsArgs
12522  ) -> flatbuffers::WIPOffset<SquaredDifferenceOptions<'bldr>> {
12523    let mut builder = SquaredDifferenceOptionsBuilder::new(_fbb);
12524    builder.finish()
12525  }
12526
12527}
12528
12529impl flatbuffers::Verifiable for SquaredDifferenceOptions<'_> {
12530  #[inline]
12531  fn run_verifier(
12532    v: &mut flatbuffers::Verifier, pos: usize
12533  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12534    use self::flatbuffers::Verifiable;
12535    v.visit_table(pos)?
12536     .finish();
12537    Ok(())
12538  }
12539}
12540pub struct SquaredDifferenceOptionsArgs {
12541}
12542impl<'a> Default for SquaredDifferenceOptionsArgs {
12543  #[inline]
12544  fn default() -> Self {
12545    SquaredDifferenceOptionsArgs {
12546    }
12547  }
12548}
12549
12550pub struct SquaredDifferenceOptionsBuilder<'a: 'b, 'b> {
12551  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12552  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12553}
12554impl<'a: 'b, 'b> SquaredDifferenceOptionsBuilder<'a, 'b> {
12555  #[inline]
12556  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SquaredDifferenceOptionsBuilder<'a, 'b> {
12557    let start = _fbb.start_table();
12558    SquaredDifferenceOptionsBuilder {
12559      fbb_: _fbb,
12560      start_: start,
12561    }
12562  }
12563  #[inline]
12564  pub fn finish(self) -> flatbuffers::WIPOffset<SquaredDifferenceOptions<'a>> {
12565    let o = self.fbb_.end_table(self.start_);
12566    flatbuffers::WIPOffset::new(o.value())
12567  }
12568}
12569
12570impl core::fmt::Debug for SquaredDifferenceOptions<'_> {
12571  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12572    let mut ds = f.debug_struct("SquaredDifferenceOptions");
12573      ds.finish()
12574  }
12575}
12576pub enum MirrorPadOptionsOffset {}
12577#[derive(Copy, Clone, PartialEq)]
12578
12579pub struct MirrorPadOptions<'a> {
12580  pub _tab: flatbuffers::Table<'a>,
12581}
12582
12583impl<'a> flatbuffers::Follow<'a> for MirrorPadOptions<'a> {
12584  type Inner = MirrorPadOptions<'a>;
12585  #[inline]
12586  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12587    Self { _tab: flatbuffers::Table::new(buf, loc) }
12588  }
12589}
12590
12591impl<'a> MirrorPadOptions<'a> {
12592  pub const VT_MODE: flatbuffers::VOffsetT = 4;
12593
12594  #[inline]
12595  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12596    MirrorPadOptions { _tab: table }
12597  }
12598  #[allow(unused_mut)]
12599  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12600    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12601    args: &'args MirrorPadOptionsArgs
12602  ) -> flatbuffers::WIPOffset<MirrorPadOptions<'bldr>> {
12603    let mut builder = MirrorPadOptionsBuilder::new(_fbb);
12604    builder.add_mode(args.mode);
12605    builder.finish()
12606  }
12607
12608
12609  #[inline]
12610  pub fn mode(&self) -> MirrorPadMode {
12611    // Safety:
12612    // Created from valid Table for this object
12613    // which contains a valid value in this slot
12614    unsafe { self._tab.get::<MirrorPadMode>(MirrorPadOptions::VT_MODE, Some(MirrorPadMode::REFLECT)).unwrap()}
12615  }
12616}
12617
12618impl flatbuffers::Verifiable for MirrorPadOptions<'_> {
12619  #[inline]
12620  fn run_verifier(
12621    v: &mut flatbuffers::Verifier, pos: usize
12622  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12623    use self::flatbuffers::Verifiable;
12624    v.visit_table(pos)?
12625     .visit_field::<MirrorPadMode>("mode", Self::VT_MODE, false)?
12626     .finish();
12627    Ok(())
12628  }
12629}
12630pub struct MirrorPadOptionsArgs {
12631    pub mode: MirrorPadMode,
12632}
12633impl<'a> Default for MirrorPadOptionsArgs {
12634  #[inline]
12635  fn default() -> Self {
12636    MirrorPadOptionsArgs {
12637      mode: MirrorPadMode::REFLECT,
12638    }
12639  }
12640}
12641
12642pub struct MirrorPadOptionsBuilder<'a: 'b, 'b> {
12643  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12644  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12645}
12646impl<'a: 'b, 'b> MirrorPadOptionsBuilder<'a, 'b> {
12647  #[inline]
12648  pub fn add_mode(&mut self, mode: MirrorPadMode) {
12649    self.fbb_.push_slot::<MirrorPadMode>(MirrorPadOptions::VT_MODE, mode, MirrorPadMode::REFLECT);
12650  }
12651  #[inline]
12652  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MirrorPadOptionsBuilder<'a, 'b> {
12653    let start = _fbb.start_table();
12654    MirrorPadOptionsBuilder {
12655      fbb_: _fbb,
12656      start_: start,
12657    }
12658  }
12659  #[inline]
12660  pub fn finish(self) -> flatbuffers::WIPOffset<MirrorPadOptions<'a>> {
12661    let o = self.fbb_.end_table(self.start_);
12662    flatbuffers::WIPOffset::new(o.value())
12663  }
12664}
12665
12666impl core::fmt::Debug for MirrorPadOptions<'_> {
12667  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12668    let mut ds = f.debug_struct("MirrorPadOptions");
12669      ds.field("mode", &self.mode());
12670      ds.finish()
12671  }
12672}
12673pub enum UniqueOptionsOffset {}
12674#[derive(Copy, Clone, PartialEq)]
12675
12676pub struct UniqueOptions<'a> {
12677  pub _tab: flatbuffers::Table<'a>,
12678}
12679
12680impl<'a> flatbuffers::Follow<'a> for UniqueOptions<'a> {
12681  type Inner = UniqueOptions<'a>;
12682  #[inline]
12683  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12684    Self { _tab: flatbuffers::Table::new(buf, loc) }
12685  }
12686}
12687
12688impl<'a> UniqueOptions<'a> {
12689  pub const VT_IDX_OUT_TYPE: flatbuffers::VOffsetT = 4;
12690
12691  #[inline]
12692  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12693    UniqueOptions { _tab: table }
12694  }
12695  #[allow(unused_mut)]
12696  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12697    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12698    args: &'args UniqueOptionsArgs
12699  ) -> flatbuffers::WIPOffset<UniqueOptions<'bldr>> {
12700    let mut builder = UniqueOptionsBuilder::new(_fbb);
12701    builder.add_idx_out_type(args.idx_out_type);
12702    builder.finish()
12703  }
12704
12705
12706  #[inline]
12707  pub fn idx_out_type(&self) -> TensorType {
12708    // Safety:
12709    // Created from valid Table for this object
12710    // which contains a valid value in this slot
12711    unsafe { self._tab.get::<TensorType>(UniqueOptions::VT_IDX_OUT_TYPE, Some(TensorType::INT32)).unwrap()}
12712  }
12713}
12714
12715impl flatbuffers::Verifiable for UniqueOptions<'_> {
12716  #[inline]
12717  fn run_verifier(
12718    v: &mut flatbuffers::Verifier, pos: usize
12719  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12720    use self::flatbuffers::Verifiable;
12721    v.visit_table(pos)?
12722     .visit_field::<TensorType>("idx_out_type", Self::VT_IDX_OUT_TYPE, false)?
12723     .finish();
12724    Ok(())
12725  }
12726}
12727pub struct UniqueOptionsArgs {
12728    pub idx_out_type: TensorType,
12729}
12730impl<'a> Default for UniqueOptionsArgs {
12731  #[inline]
12732  fn default() -> Self {
12733    UniqueOptionsArgs {
12734      idx_out_type: TensorType::INT32,
12735    }
12736  }
12737}
12738
12739pub struct UniqueOptionsBuilder<'a: 'b, 'b> {
12740  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12741  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12742}
12743impl<'a: 'b, 'b> UniqueOptionsBuilder<'a, 'b> {
12744  #[inline]
12745  pub fn add_idx_out_type(&mut self, idx_out_type: TensorType) {
12746    self.fbb_.push_slot::<TensorType>(UniqueOptions::VT_IDX_OUT_TYPE, idx_out_type, TensorType::INT32);
12747  }
12748  #[inline]
12749  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UniqueOptionsBuilder<'a, 'b> {
12750    let start = _fbb.start_table();
12751    UniqueOptionsBuilder {
12752      fbb_: _fbb,
12753      start_: start,
12754    }
12755  }
12756  #[inline]
12757  pub fn finish(self) -> flatbuffers::WIPOffset<UniqueOptions<'a>> {
12758    let o = self.fbb_.end_table(self.start_);
12759    flatbuffers::WIPOffset::new(o.value())
12760  }
12761}
12762
12763impl core::fmt::Debug for UniqueOptions<'_> {
12764  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12765    let mut ds = f.debug_struct("UniqueOptions");
12766      ds.field("idx_out_type", &self.idx_out_type());
12767      ds.finish()
12768  }
12769}
12770pub enum ReverseV2OptionsOffset {}
12771#[derive(Copy, Clone, PartialEq)]
12772
12773pub struct ReverseV2Options<'a> {
12774  pub _tab: flatbuffers::Table<'a>,
12775}
12776
12777impl<'a> flatbuffers::Follow<'a> for ReverseV2Options<'a> {
12778  type Inner = ReverseV2Options<'a>;
12779  #[inline]
12780  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12781    Self { _tab: flatbuffers::Table::new(buf, loc) }
12782  }
12783}
12784
12785impl<'a> ReverseV2Options<'a> {
12786
12787  #[inline]
12788  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12789    ReverseV2Options { _tab: table }
12790  }
12791  #[allow(unused_mut)]
12792  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12793    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12794    _args: &'args ReverseV2OptionsArgs
12795  ) -> flatbuffers::WIPOffset<ReverseV2Options<'bldr>> {
12796    let mut builder = ReverseV2OptionsBuilder::new(_fbb);
12797    builder.finish()
12798  }
12799
12800}
12801
12802impl flatbuffers::Verifiable for ReverseV2Options<'_> {
12803  #[inline]
12804  fn run_verifier(
12805    v: &mut flatbuffers::Verifier, pos: usize
12806  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12807    use self::flatbuffers::Verifiable;
12808    v.visit_table(pos)?
12809     .finish();
12810    Ok(())
12811  }
12812}
12813pub struct ReverseV2OptionsArgs {
12814}
12815impl<'a> Default for ReverseV2OptionsArgs {
12816  #[inline]
12817  fn default() -> Self {
12818    ReverseV2OptionsArgs {
12819    }
12820  }
12821}
12822
12823pub struct ReverseV2OptionsBuilder<'a: 'b, 'b> {
12824  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12825  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12826}
12827impl<'a: 'b, 'b> ReverseV2OptionsBuilder<'a, 'b> {
12828  #[inline]
12829  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ReverseV2OptionsBuilder<'a, 'b> {
12830    let start = _fbb.start_table();
12831    ReverseV2OptionsBuilder {
12832      fbb_: _fbb,
12833      start_: start,
12834    }
12835  }
12836  #[inline]
12837  pub fn finish(self) -> flatbuffers::WIPOffset<ReverseV2Options<'a>> {
12838    let o = self.fbb_.end_table(self.start_);
12839    flatbuffers::WIPOffset::new(o.value())
12840  }
12841}
12842
12843impl core::fmt::Debug for ReverseV2Options<'_> {
12844  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12845    let mut ds = f.debug_struct("ReverseV2Options");
12846      ds.finish()
12847  }
12848}
12849pub enum AddNOptionsOffset {}
12850#[derive(Copy, Clone, PartialEq)]
12851
12852pub struct AddNOptions<'a> {
12853  pub _tab: flatbuffers::Table<'a>,
12854}
12855
12856impl<'a> flatbuffers::Follow<'a> for AddNOptions<'a> {
12857  type Inner = AddNOptions<'a>;
12858  #[inline]
12859  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12860    Self { _tab: flatbuffers::Table::new(buf, loc) }
12861  }
12862}
12863
12864impl<'a> AddNOptions<'a> {
12865
12866  #[inline]
12867  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12868    AddNOptions { _tab: table }
12869  }
12870  #[allow(unused_mut)]
12871  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12872    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12873    _args: &'args AddNOptionsArgs
12874  ) -> flatbuffers::WIPOffset<AddNOptions<'bldr>> {
12875    let mut builder = AddNOptionsBuilder::new(_fbb);
12876    builder.finish()
12877  }
12878
12879}
12880
12881impl flatbuffers::Verifiable for AddNOptions<'_> {
12882  #[inline]
12883  fn run_verifier(
12884    v: &mut flatbuffers::Verifier, pos: usize
12885  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12886    use self::flatbuffers::Verifiable;
12887    v.visit_table(pos)?
12888     .finish();
12889    Ok(())
12890  }
12891}
12892pub struct AddNOptionsArgs {
12893}
12894impl<'a> Default for AddNOptionsArgs {
12895  #[inline]
12896  fn default() -> Self {
12897    AddNOptionsArgs {
12898    }
12899  }
12900}
12901
12902pub struct AddNOptionsBuilder<'a: 'b, 'b> {
12903  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12904  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12905}
12906impl<'a: 'b, 'b> AddNOptionsBuilder<'a, 'b> {
12907  #[inline]
12908  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AddNOptionsBuilder<'a, 'b> {
12909    let start = _fbb.start_table();
12910    AddNOptionsBuilder {
12911      fbb_: _fbb,
12912      start_: start,
12913    }
12914  }
12915  #[inline]
12916  pub fn finish(self) -> flatbuffers::WIPOffset<AddNOptions<'a>> {
12917    let o = self.fbb_.end_table(self.start_);
12918    flatbuffers::WIPOffset::new(o.value())
12919  }
12920}
12921
12922impl core::fmt::Debug for AddNOptions<'_> {
12923  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12924    let mut ds = f.debug_struct("AddNOptions");
12925      ds.finish()
12926  }
12927}
12928pub enum GatherNdOptionsOffset {}
12929#[derive(Copy, Clone, PartialEq)]
12930
12931pub struct GatherNdOptions<'a> {
12932  pub _tab: flatbuffers::Table<'a>,
12933}
12934
12935impl<'a> flatbuffers::Follow<'a> for GatherNdOptions<'a> {
12936  type Inner = GatherNdOptions<'a>;
12937  #[inline]
12938  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12939    Self { _tab: flatbuffers::Table::new(buf, loc) }
12940  }
12941}
12942
12943impl<'a> GatherNdOptions<'a> {
12944
12945  #[inline]
12946  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12947    GatherNdOptions { _tab: table }
12948  }
12949  #[allow(unused_mut)]
12950  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
12951    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
12952    _args: &'args GatherNdOptionsArgs
12953  ) -> flatbuffers::WIPOffset<GatherNdOptions<'bldr>> {
12954    let mut builder = GatherNdOptionsBuilder::new(_fbb);
12955    builder.finish()
12956  }
12957
12958}
12959
12960impl flatbuffers::Verifiable for GatherNdOptions<'_> {
12961  #[inline]
12962  fn run_verifier(
12963    v: &mut flatbuffers::Verifier, pos: usize
12964  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12965    use self::flatbuffers::Verifiable;
12966    v.visit_table(pos)?
12967     .finish();
12968    Ok(())
12969  }
12970}
12971pub struct GatherNdOptionsArgs {
12972}
12973impl<'a> Default for GatherNdOptionsArgs {
12974  #[inline]
12975  fn default() -> Self {
12976    GatherNdOptionsArgs {
12977    }
12978  }
12979}
12980
12981pub struct GatherNdOptionsBuilder<'a: 'b, 'b> {
12982  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
12983  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12984}
12985impl<'a: 'b, 'b> GatherNdOptionsBuilder<'a, 'b> {
12986  #[inline]
12987  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GatherNdOptionsBuilder<'a, 'b> {
12988    let start = _fbb.start_table();
12989    GatherNdOptionsBuilder {
12990      fbb_: _fbb,
12991      start_: start,
12992    }
12993  }
12994  #[inline]
12995  pub fn finish(self) -> flatbuffers::WIPOffset<GatherNdOptions<'a>> {
12996    let o = self.fbb_.end_table(self.start_);
12997    flatbuffers::WIPOffset::new(o.value())
12998  }
12999}
13000
13001impl core::fmt::Debug for GatherNdOptions<'_> {
13002  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13003    let mut ds = f.debug_struct("GatherNdOptions");
13004      ds.finish()
13005  }
13006}
13007pub enum WhereOptionsOffset {}
13008#[derive(Copy, Clone, PartialEq)]
13009
13010pub struct WhereOptions<'a> {
13011  pub _tab: flatbuffers::Table<'a>,
13012}
13013
13014impl<'a> flatbuffers::Follow<'a> for WhereOptions<'a> {
13015  type Inner = WhereOptions<'a>;
13016  #[inline]
13017  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13018    Self { _tab: flatbuffers::Table::new(buf, loc) }
13019  }
13020}
13021
13022impl<'a> WhereOptions<'a> {
13023
13024  #[inline]
13025  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13026    WhereOptions { _tab: table }
13027  }
13028  #[allow(unused_mut)]
13029  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13030    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13031    _args: &'args WhereOptionsArgs
13032  ) -> flatbuffers::WIPOffset<WhereOptions<'bldr>> {
13033    let mut builder = WhereOptionsBuilder::new(_fbb);
13034    builder.finish()
13035  }
13036
13037}
13038
13039impl flatbuffers::Verifiable for WhereOptions<'_> {
13040  #[inline]
13041  fn run_verifier(
13042    v: &mut flatbuffers::Verifier, pos: usize
13043  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13044    use self::flatbuffers::Verifiable;
13045    v.visit_table(pos)?
13046     .finish();
13047    Ok(())
13048  }
13049}
13050pub struct WhereOptionsArgs {
13051}
13052impl<'a> Default for WhereOptionsArgs {
13053  #[inline]
13054  fn default() -> Self {
13055    WhereOptionsArgs {
13056    }
13057  }
13058}
13059
13060pub struct WhereOptionsBuilder<'a: 'b, 'b> {
13061  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13062  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13063}
13064impl<'a: 'b, 'b> WhereOptionsBuilder<'a, 'b> {
13065  #[inline]
13066  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> WhereOptionsBuilder<'a, 'b> {
13067    let start = _fbb.start_table();
13068    WhereOptionsBuilder {
13069      fbb_: _fbb,
13070      start_: start,
13071    }
13072  }
13073  #[inline]
13074  pub fn finish(self) -> flatbuffers::WIPOffset<WhereOptions<'a>> {
13075    let o = self.fbb_.end_table(self.start_);
13076    flatbuffers::WIPOffset::new(o.value())
13077  }
13078}
13079
13080impl core::fmt::Debug for WhereOptions<'_> {
13081  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13082    let mut ds = f.debug_struct("WhereOptions");
13083      ds.finish()
13084  }
13085}
13086pub enum ReverseSequenceOptionsOffset {}
13087#[derive(Copy, Clone, PartialEq)]
13088
13089pub struct ReverseSequenceOptions<'a> {
13090  pub _tab: flatbuffers::Table<'a>,
13091}
13092
13093impl<'a> flatbuffers::Follow<'a> for ReverseSequenceOptions<'a> {
13094  type Inner = ReverseSequenceOptions<'a>;
13095  #[inline]
13096  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13097    Self { _tab: flatbuffers::Table::new(buf, loc) }
13098  }
13099}
13100
13101impl<'a> ReverseSequenceOptions<'a> {
13102  pub const VT_SEQ_DIM: flatbuffers::VOffsetT = 4;
13103  pub const VT_BATCH_DIM: flatbuffers::VOffsetT = 6;
13104
13105  #[inline]
13106  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13107    ReverseSequenceOptions { _tab: table }
13108  }
13109  #[allow(unused_mut)]
13110  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13111    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13112    args: &'args ReverseSequenceOptionsArgs
13113  ) -> flatbuffers::WIPOffset<ReverseSequenceOptions<'bldr>> {
13114    let mut builder = ReverseSequenceOptionsBuilder::new(_fbb);
13115    builder.add_batch_dim(args.batch_dim);
13116    builder.add_seq_dim(args.seq_dim);
13117    builder.finish()
13118  }
13119
13120
13121  #[inline]
13122  pub fn seq_dim(&self) -> i32 {
13123    // Safety:
13124    // Created from valid Table for this object
13125    // which contains a valid value in this slot
13126    unsafe { self._tab.get::<i32>(ReverseSequenceOptions::VT_SEQ_DIM, Some(0)).unwrap()}
13127  }
13128  #[inline]
13129  pub fn batch_dim(&self) -> i32 {
13130    // Safety:
13131    // Created from valid Table for this object
13132    // which contains a valid value in this slot
13133    unsafe { self._tab.get::<i32>(ReverseSequenceOptions::VT_BATCH_DIM, Some(0)).unwrap()}
13134  }
13135}
13136
13137impl flatbuffers::Verifiable for ReverseSequenceOptions<'_> {
13138  #[inline]
13139  fn run_verifier(
13140    v: &mut flatbuffers::Verifier, pos: usize
13141  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13142    use self::flatbuffers::Verifiable;
13143    v.visit_table(pos)?
13144     .visit_field::<i32>("seq_dim", Self::VT_SEQ_DIM, false)?
13145     .visit_field::<i32>("batch_dim", Self::VT_BATCH_DIM, false)?
13146     .finish();
13147    Ok(())
13148  }
13149}
13150pub struct ReverseSequenceOptionsArgs {
13151    pub seq_dim: i32,
13152    pub batch_dim: i32,
13153}
13154impl<'a> Default for ReverseSequenceOptionsArgs {
13155  #[inline]
13156  fn default() -> Self {
13157    ReverseSequenceOptionsArgs {
13158      seq_dim: 0,
13159      batch_dim: 0,
13160    }
13161  }
13162}
13163
13164pub struct ReverseSequenceOptionsBuilder<'a: 'b, 'b> {
13165  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13166  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13167}
13168impl<'a: 'b, 'b> ReverseSequenceOptionsBuilder<'a, 'b> {
13169  #[inline]
13170  pub fn add_seq_dim(&mut self, seq_dim: i32) {
13171    self.fbb_.push_slot::<i32>(ReverseSequenceOptions::VT_SEQ_DIM, seq_dim, 0);
13172  }
13173  #[inline]
13174  pub fn add_batch_dim(&mut self, batch_dim: i32) {
13175    self.fbb_.push_slot::<i32>(ReverseSequenceOptions::VT_BATCH_DIM, batch_dim, 0);
13176  }
13177  #[inline]
13178  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ReverseSequenceOptionsBuilder<'a, 'b> {
13179    let start = _fbb.start_table();
13180    ReverseSequenceOptionsBuilder {
13181      fbb_: _fbb,
13182      start_: start,
13183    }
13184  }
13185  #[inline]
13186  pub fn finish(self) -> flatbuffers::WIPOffset<ReverseSequenceOptions<'a>> {
13187    let o = self.fbb_.end_table(self.start_);
13188    flatbuffers::WIPOffset::new(o.value())
13189  }
13190}
13191
13192impl core::fmt::Debug for ReverseSequenceOptions<'_> {
13193  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13194    let mut ds = f.debug_struct("ReverseSequenceOptions");
13195      ds.field("seq_dim", &self.seq_dim());
13196      ds.field("batch_dim", &self.batch_dim());
13197      ds.finish()
13198  }
13199}
13200pub enum MatrixDiagOptionsOffset {}
13201#[derive(Copy, Clone, PartialEq)]
13202
13203pub struct MatrixDiagOptions<'a> {
13204  pub _tab: flatbuffers::Table<'a>,
13205}
13206
13207impl<'a> flatbuffers::Follow<'a> for MatrixDiagOptions<'a> {
13208  type Inner = MatrixDiagOptions<'a>;
13209  #[inline]
13210  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13211    Self { _tab: flatbuffers::Table::new(buf, loc) }
13212  }
13213}
13214
13215impl<'a> MatrixDiagOptions<'a> {
13216
13217  #[inline]
13218  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13219    MatrixDiagOptions { _tab: table }
13220  }
13221  #[allow(unused_mut)]
13222  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13223    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13224    _args: &'args MatrixDiagOptionsArgs
13225  ) -> flatbuffers::WIPOffset<MatrixDiagOptions<'bldr>> {
13226    let mut builder = MatrixDiagOptionsBuilder::new(_fbb);
13227    builder.finish()
13228  }
13229
13230}
13231
13232impl flatbuffers::Verifiable for MatrixDiagOptions<'_> {
13233  #[inline]
13234  fn run_verifier(
13235    v: &mut flatbuffers::Verifier, pos: usize
13236  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13237    use self::flatbuffers::Verifiable;
13238    v.visit_table(pos)?
13239     .finish();
13240    Ok(())
13241  }
13242}
13243pub struct MatrixDiagOptionsArgs {
13244}
13245impl<'a> Default for MatrixDiagOptionsArgs {
13246  #[inline]
13247  fn default() -> Self {
13248    MatrixDiagOptionsArgs {
13249    }
13250  }
13251}
13252
13253pub struct MatrixDiagOptionsBuilder<'a: 'b, 'b> {
13254  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13255  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13256}
13257impl<'a: 'b, 'b> MatrixDiagOptionsBuilder<'a, 'b> {
13258  #[inline]
13259  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MatrixDiagOptionsBuilder<'a, 'b> {
13260    let start = _fbb.start_table();
13261    MatrixDiagOptionsBuilder {
13262      fbb_: _fbb,
13263      start_: start,
13264    }
13265  }
13266  #[inline]
13267  pub fn finish(self) -> flatbuffers::WIPOffset<MatrixDiagOptions<'a>> {
13268    let o = self.fbb_.end_table(self.start_);
13269    flatbuffers::WIPOffset::new(o.value())
13270  }
13271}
13272
13273impl core::fmt::Debug for MatrixDiagOptions<'_> {
13274  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13275    let mut ds = f.debug_struct("MatrixDiagOptions");
13276      ds.finish()
13277  }
13278}
13279pub enum QuantizeOptionsOffset {}
13280#[derive(Copy, Clone, PartialEq)]
13281
13282pub struct QuantizeOptions<'a> {
13283  pub _tab: flatbuffers::Table<'a>,
13284}
13285
13286impl<'a> flatbuffers::Follow<'a> for QuantizeOptions<'a> {
13287  type Inner = QuantizeOptions<'a>;
13288  #[inline]
13289  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13290    Self { _tab: flatbuffers::Table::new(buf, loc) }
13291  }
13292}
13293
13294impl<'a> QuantizeOptions<'a> {
13295
13296  #[inline]
13297  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13298    QuantizeOptions { _tab: table }
13299  }
13300  #[allow(unused_mut)]
13301  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13302    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13303    _args: &'args QuantizeOptionsArgs
13304  ) -> flatbuffers::WIPOffset<QuantizeOptions<'bldr>> {
13305    let mut builder = QuantizeOptionsBuilder::new(_fbb);
13306    builder.finish()
13307  }
13308
13309}
13310
13311impl flatbuffers::Verifiable for QuantizeOptions<'_> {
13312  #[inline]
13313  fn run_verifier(
13314    v: &mut flatbuffers::Verifier, pos: usize
13315  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13316    use self::flatbuffers::Verifiable;
13317    v.visit_table(pos)?
13318     .finish();
13319    Ok(())
13320  }
13321}
13322pub struct QuantizeOptionsArgs {
13323}
13324impl<'a> Default for QuantizeOptionsArgs {
13325  #[inline]
13326  fn default() -> Self {
13327    QuantizeOptionsArgs {
13328    }
13329  }
13330}
13331
13332pub struct QuantizeOptionsBuilder<'a: 'b, 'b> {
13333  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13334  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13335}
13336impl<'a: 'b, 'b> QuantizeOptionsBuilder<'a, 'b> {
13337  #[inline]
13338  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> QuantizeOptionsBuilder<'a, 'b> {
13339    let start = _fbb.start_table();
13340    QuantizeOptionsBuilder {
13341      fbb_: _fbb,
13342      start_: start,
13343    }
13344  }
13345  #[inline]
13346  pub fn finish(self) -> flatbuffers::WIPOffset<QuantizeOptions<'a>> {
13347    let o = self.fbb_.end_table(self.start_);
13348    flatbuffers::WIPOffset::new(o.value())
13349  }
13350}
13351
13352impl core::fmt::Debug for QuantizeOptions<'_> {
13353  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13354    let mut ds = f.debug_struct("QuantizeOptions");
13355      ds.finish()
13356  }
13357}
13358pub enum MatrixSetDiagOptionsOffset {}
13359#[derive(Copy, Clone, PartialEq)]
13360
13361pub struct MatrixSetDiagOptions<'a> {
13362  pub _tab: flatbuffers::Table<'a>,
13363}
13364
13365impl<'a> flatbuffers::Follow<'a> for MatrixSetDiagOptions<'a> {
13366  type Inner = MatrixSetDiagOptions<'a>;
13367  #[inline]
13368  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13369    Self { _tab: flatbuffers::Table::new(buf, loc) }
13370  }
13371}
13372
13373impl<'a> MatrixSetDiagOptions<'a> {
13374
13375  #[inline]
13376  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13377    MatrixSetDiagOptions { _tab: table }
13378  }
13379  #[allow(unused_mut)]
13380  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13381    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13382    _args: &'args MatrixSetDiagOptionsArgs
13383  ) -> flatbuffers::WIPOffset<MatrixSetDiagOptions<'bldr>> {
13384    let mut builder = MatrixSetDiagOptionsBuilder::new(_fbb);
13385    builder.finish()
13386  }
13387
13388}
13389
13390impl flatbuffers::Verifiable for MatrixSetDiagOptions<'_> {
13391  #[inline]
13392  fn run_verifier(
13393    v: &mut flatbuffers::Verifier, pos: usize
13394  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13395    use self::flatbuffers::Verifiable;
13396    v.visit_table(pos)?
13397     .finish();
13398    Ok(())
13399  }
13400}
13401pub struct MatrixSetDiagOptionsArgs {
13402}
13403impl<'a> Default for MatrixSetDiagOptionsArgs {
13404  #[inline]
13405  fn default() -> Self {
13406    MatrixSetDiagOptionsArgs {
13407    }
13408  }
13409}
13410
13411pub struct MatrixSetDiagOptionsBuilder<'a: 'b, 'b> {
13412  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13413  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13414}
13415impl<'a: 'b, 'b> MatrixSetDiagOptionsBuilder<'a, 'b> {
13416  #[inline]
13417  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MatrixSetDiagOptionsBuilder<'a, 'b> {
13418    let start = _fbb.start_table();
13419    MatrixSetDiagOptionsBuilder {
13420      fbb_: _fbb,
13421      start_: start,
13422    }
13423  }
13424  #[inline]
13425  pub fn finish(self) -> flatbuffers::WIPOffset<MatrixSetDiagOptions<'a>> {
13426    let o = self.fbb_.end_table(self.start_);
13427    flatbuffers::WIPOffset::new(o.value())
13428  }
13429}
13430
13431impl core::fmt::Debug for MatrixSetDiagOptions<'_> {
13432  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13433    let mut ds = f.debug_struct("MatrixSetDiagOptions");
13434      ds.finish()
13435  }
13436}
13437pub enum IfOptionsOffset {}
13438#[derive(Copy, Clone, PartialEq)]
13439
13440pub struct IfOptions<'a> {
13441  pub _tab: flatbuffers::Table<'a>,
13442}
13443
13444impl<'a> flatbuffers::Follow<'a> for IfOptions<'a> {
13445  type Inner = IfOptions<'a>;
13446  #[inline]
13447  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13448    Self { _tab: flatbuffers::Table::new(buf, loc) }
13449  }
13450}
13451
13452impl<'a> IfOptions<'a> {
13453  pub const VT_THEN_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 4;
13454  pub const VT_ELSE_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 6;
13455
13456  #[inline]
13457  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13458    IfOptions { _tab: table }
13459  }
13460  #[allow(unused_mut)]
13461  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13462    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13463    args: &'args IfOptionsArgs
13464  ) -> flatbuffers::WIPOffset<IfOptions<'bldr>> {
13465    let mut builder = IfOptionsBuilder::new(_fbb);
13466    builder.add_else_subgraph_index(args.else_subgraph_index);
13467    builder.add_then_subgraph_index(args.then_subgraph_index);
13468    builder.finish()
13469  }
13470
13471
13472  #[inline]
13473  pub fn then_subgraph_index(&self) -> i32 {
13474    // Safety:
13475    // Created from valid Table for this object
13476    // which contains a valid value in this slot
13477    unsafe { self._tab.get::<i32>(IfOptions::VT_THEN_SUBGRAPH_INDEX, Some(0)).unwrap()}
13478  }
13479  #[inline]
13480  pub fn else_subgraph_index(&self) -> i32 {
13481    // Safety:
13482    // Created from valid Table for this object
13483    // which contains a valid value in this slot
13484    unsafe { self._tab.get::<i32>(IfOptions::VT_ELSE_SUBGRAPH_INDEX, Some(0)).unwrap()}
13485  }
13486}
13487
13488impl flatbuffers::Verifiable for IfOptions<'_> {
13489  #[inline]
13490  fn run_verifier(
13491    v: &mut flatbuffers::Verifier, pos: usize
13492  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13493    use self::flatbuffers::Verifiable;
13494    v.visit_table(pos)?
13495     .visit_field::<i32>("then_subgraph_index", Self::VT_THEN_SUBGRAPH_INDEX, false)?
13496     .visit_field::<i32>("else_subgraph_index", Self::VT_ELSE_SUBGRAPH_INDEX, false)?
13497     .finish();
13498    Ok(())
13499  }
13500}
13501pub struct IfOptionsArgs {
13502    pub then_subgraph_index: i32,
13503    pub else_subgraph_index: i32,
13504}
13505impl<'a> Default for IfOptionsArgs {
13506  #[inline]
13507  fn default() -> Self {
13508    IfOptionsArgs {
13509      then_subgraph_index: 0,
13510      else_subgraph_index: 0,
13511    }
13512  }
13513}
13514
13515pub struct IfOptionsBuilder<'a: 'b, 'b> {
13516  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13517  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13518}
13519impl<'a: 'b, 'b> IfOptionsBuilder<'a, 'b> {
13520  #[inline]
13521  pub fn add_then_subgraph_index(&mut self, then_subgraph_index: i32) {
13522    self.fbb_.push_slot::<i32>(IfOptions::VT_THEN_SUBGRAPH_INDEX, then_subgraph_index, 0);
13523  }
13524  #[inline]
13525  pub fn add_else_subgraph_index(&mut self, else_subgraph_index: i32) {
13526    self.fbb_.push_slot::<i32>(IfOptions::VT_ELSE_SUBGRAPH_INDEX, else_subgraph_index, 0);
13527  }
13528  #[inline]
13529  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> IfOptionsBuilder<'a, 'b> {
13530    let start = _fbb.start_table();
13531    IfOptionsBuilder {
13532      fbb_: _fbb,
13533      start_: start,
13534    }
13535  }
13536  #[inline]
13537  pub fn finish(self) -> flatbuffers::WIPOffset<IfOptions<'a>> {
13538    let o = self.fbb_.end_table(self.start_);
13539    flatbuffers::WIPOffset::new(o.value())
13540  }
13541}
13542
13543impl core::fmt::Debug for IfOptions<'_> {
13544  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13545    let mut ds = f.debug_struct("IfOptions");
13546      ds.field("then_subgraph_index", &self.then_subgraph_index());
13547      ds.field("else_subgraph_index", &self.else_subgraph_index());
13548      ds.finish()
13549  }
13550}
13551pub enum CallOnceOptionsOffset {}
13552#[derive(Copy, Clone, PartialEq)]
13553
13554pub struct CallOnceOptions<'a> {
13555  pub _tab: flatbuffers::Table<'a>,
13556}
13557
13558impl<'a> flatbuffers::Follow<'a> for CallOnceOptions<'a> {
13559  type Inner = CallOnceOptions<'a>;
13560  #[inline]
13561  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13562    Self { _tab: flatbuffers::Table::new(buf, loc) }
13563  }
13564}
13565
13566impl<'a> CallOnceOptions<'a> {
13567  pub const VT_INIT_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 4;
13568
13569  #[inline]
13570  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13571    CallOnceOptions { _tab: table }
13572  }
13573  #[allow(unused_mut)]
13574  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13575    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13576    args: &'args CallOnceOptionsArgs
13577  ) -> flatbuffers::WIPOffset<CallOnceOptions<'bldr>> {
13578    let mut builder = CallOnceOptionsBuilder::new(_fbb);
13579    builder.add_init_subgraph_index(args.init_subgraph_index);
13580    builder.finish()
13581  }
13582
13583
13584  #[inline]
13585  pub fn init_subgraph_index(&self) -> i32 {
13586    // Safety:
13587    // Created from valid Table for this object
13588    // which contains a valid value in this slot
13589    unsafe { self._tab.get::<i32>(CallOnceOptions::VT_INIT_SUBGRAPH_INDEX, Some(0)).unwrap()}
13590  }
13591}
13592
13593impl flatbuffers::Verifiable for CallOnceOptions<'_> {
13594  #[inline]
13595  fn run_verifier(
13596    v: &mut flatbuffers::Verifier, pos: usize
13597  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13598    use self::flatbuffers::Verifiable;
13599    v.visit_table(pos)?
13600     .visit_field::<i32>("init_subgraph_index", Self::VT_INIT_SUBGRAPH_INDEX, false)?
13601     .finish();
13602    Ok(())
13603  }
13604}
13605pub struct CallOnceOptionsArgs {
13606    pub init_subgraph_index: i32,
13607}
13608impl<'a> Default for CallOnceOptionsArgs {
13609  #[inline]
13610  fn default() -> Self {
13611    CallOnceOptionsArgs {
13612      init_subgraph_index: 0,
13613    }
13614  }
13615}
13616
13617pub struct CallOnceOptionsBuilder<'a: 'b, 'b> {
13618  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13619  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13620}
13621impl<'a: 'b, 'b> CallOnceOptionsBuilder<'a, 'b> {
13622  #[inline]
13623  pub fn add_init_subgraph_index(&mut self, init_subgraph_index: i32) {
13624    self.fbb_.push_slot::<i32>(CallOnceOptions::VT_INIT_SUBGRAPH_INDEX, init_subgraph_index, 0);
13625  }
13626  #[inline]
13627  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CallOnceOptionsBuilder<'a, 'b> {
13628    let start = _fbb.start_table();
13629    CallOnceOptionsBuilder {
13630      fbb_: _fbb,
13631      start_: start,
13632    }
13633  }
13634  #[inline]
13635  pub fn finish(self) -> flatbuffers::WIPOffset<CallOnceOptions<'a>> {
13636    let o = self.fbb_.end_table(self.start_);
13637    flatbuffers::WIPOffset::new(o.value())
13638  }
13639}
13640
13641impl core::fmt::Debug for CallOnceOptions<'_> {
13642  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13643    let mut ds = f.debug_struct("CallOnceOptions");
13644      ds.field("init_subgraph_index", &self.init_subgraph_index());
13645      ds.finish()
13646  }
13647}
13648pub enum WhileOptionsOffset {}
13649#[derive(Copy, Clone, PartialEq)]
13650
13651pub struct WhileOptions<'a> {
13652  pub _tab: flatbuffers::Table<'a>,
13653}
13654
13655impl<'a> flatbuffers::Follow<'a> for WhileOptions<'a> {
13656  type Inner = WhileOptions<'a>;
13657  #[inline]
13658  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13659    Self { _tab: flatbuffers::Table::new(buf, loc) }
13660  }
13661}
13662
13663impl<'a> WhileOptions<'a> {
13664  pub const VT_COND_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 4;
13665  pub const VT_BODY_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 6;
13666
13667  #[inline]
13668  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13669    WhileOptions { _tab: table }
13670  }
13671  #[allow(unused_mut)]
13672  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13673    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13674    args: &'args WhileOptionsArgs
13675  ) -> flatbuffers::WIPOffset<WhileOptions<'bldr>> {
13676    let mut builder = WhileOptionsBuilder::new(_fbb);
13677    builder.add_body_subgraph_index(args.body_subgraph_index);
13678    builder.add_cond_subgraph_index(args.cond_subgraph_index);
13679    builder.finish()
13680  }
13681
13682
13683  #[inline]
13684  pub fn cond_subgraph_index(&self) -> i32 {
13685    // Safety:
13686    // Created from valid Table for this object
13687    // which contains a valid value in this slot
13688    unsafe { self._tab.get::<i32>(WhileOptions::VT_COND_SUBGRAPH_INDEX, Some(0)).unwrap()}
13689  }
13690  #[inline]
13691  pub fn body_subgraph_index(&self) -> i32 {
13692    // Safety:
13693    // Created from valid Table for this object
13694    // which contains a valid value in this slot
13695    unsafe { self._tab.get::<i32>(WhileOptions::VT_BODY_SUBGRAPH_INDEX, Some(0)).unwrap()}
13696  }
13697}
13698
13699impl flatbuffers::Verifiable for WhileOptions<'_> {
13700  #[inline]
13701  fn run_verifier(
13702    v: &mut flatbuffers::Verifier, pos: usize
13703  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13704    use self::flatbuffers::Verifiable;
13705    v.visit_table(pos)?
13706     .visit_field::<i32>("cond_subgraph_index", Self::VT_COND_SUBGRAPH_INDEX, false)?
13707     .visit_field::<i32>("body_subgraph_index", Self::VT_BODY_SUBGRAPH_INDEX, false)?
13708     .finish();
13709    Ok(())
13710  }
13711}
13712pub struct WhileOptionsArgs {
13713    pub cond_subgraph_index: i32,
13714    pub body_subgraph_index: i32,
13715}
13716impl<'a> Default for WhileOptionsArgs {
13717  #[inline]
13718  fn default() -> Self {
13719    WhileOptionsArgs {
13720      cond_subgraph_index: 0,
13721      body_subgraph_index: 0,
13722    }
13723  }
13724}
13725
13726pub struct WhileOptionsBuilder<'a: 'b, 'b> {
13727  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13728  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13729}
13730impl<'a: 'b, 'b> WhileOptionsBuilder<'a, 'b> {
13731  #[inline]
13732  pub fn add_cond_subgraph_index(&mut self, cond_subgraph_index: i32) {
13733    self.fbb_.push_slot::<i32>(WhileOptions::VT_COND_SUBGRAPH_INDEX, cond_subgraph_index, 0);
13734  }
13735  #[inline]
13736  pub fn add_body_subgraph_index(&mut self, body_subgraph_index: i32) {
13737    self.fbb_.push_slot::<i32>(WhileOptions::VT_BODY_SUBGRAPH_INDEX, body_subgraph_index, 0);
13738  }
13739  #[inline]
13740  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> WhileOptionsBuilder<'a, 'b> {
13741    let start = _fbb.start_table();
13742    WhileOptionsBuilder {
13743      fbb_: _fbb,
13744      start_: start,
13745    }
13746  }
13747  #[inline]
13748  pub fn finish(self) -> flatbuffers::WIPOffset<WhileOptions<'a>> {
13749    let o = self.fbb_.end_table(self.start_);
13750    flatbuffers::WIPOffset::new(o.value())
13751  }
13752}
13753
13754impl core::fmt::Debug for WhileOptions<'_> {
13755  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13756    let mut ds = f.debug_struct("WhileOptions");
13757      ds.field("cond_subgraph_index", &self.cond_subgraph_index());
13758      ds.field("body_subgraph_index", &self.body_subgraph_index());
13759      ds.finish()
13760  }
13761}
13762pub enum NonMaxSuppressionV4OptionsOffset {}
13763#[derive(Copy, Clone, PartialEq)]
13764
13765pub struct NonMaxSuppressionV4Options<'a> {
13766  pub _tab: flatbuffers::Table<'a>,
13767}
13768
13769impl<'a> flatbuffers::Follow<'a> for NonMaxSuppressionV4Options<'a> {
13770  type Inner = NonMaxSuppressionV4Options<'a>;
13771  #[inline]
13772  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13773    Self { _tab: flatbuffers::Table::new(buf, loc) }
13774  }
13775}
13776
13777impl<'a> NonMaxSuppressionV4Options<'a> {
13778
13779  #[inline]
13780  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13781    NonMaxSuppressionV4Options { _tab: table }
13782  }
13783  #[allow(unused_mut)]
13784  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13785    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13786    _args: &'args NonMaxSuppressionV4OptionsArgs
13787  ) -> flatbuffers::WIPOffset<NonMaxSuppressionV4Options<'bldr>> {
13788    let mut builder = NonMaxSuppressionV4OptionsBuilder::new(_fbb);
13789    builder.finish()
13790  }
13791
13792}
13793
13794impl flatbuffers::Verifiable for NonMaxSuppressionV4Options<'_> {
13795  #[inline]
13796  fn run_verifier(
13797    v: &mut flatbuffers::Verifier, pos: usize
13798  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13799    use self::flatbuffers::Verifiable;
13800    v.visit_table(pos)?
13801     .finish();
13802    Ok(())
13803  }
13804}
13805pub struct NonMaxSuppressionV4OptionsArgs {
13806}
13807impl<'a> Default for NonMaxSuppressionV4OptionsArgs {
13808  #[inline]
13809  fn default() -> Self {
13810    NonMaxSuppressionV4OptionsArgs {
13811    }
13812  }
13813}
13814
13815pub struct NonMaxSuppressionV4OptionsBuilder<'a: 'b, 'b> {
13816  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13817  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13818}
13819impl<'a: 'b, 'b> NonMaxSuppressionV4OptionsBuilder<'a, 'b> {
13820  #[inline]
13821  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NonMaxSuppressionV4OptionsBuilder<'a, 'b> {
13822    let start = _fbb.start_table();
13823    NonMaxSuppressionV4OptionsBuilder {
13824      fbb_: _fbb,
13825      start_: start,
13826    }
13827  }
13828  #[inline]
13829  pub fn finish(self) -> flatbuffers::WIPOffset<NonMaxSuppressionV4Options<'a>> {
13830    let o = self.fbb_.end_table(self.start_);
13831    flatbuffers::WIPOffset::new(o.value())
13832  }
13833}
13834
13835impl core::fmt::Debug for NonMaxSuppressionV4Options<'_> {
13836  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13837    let mut ds = f.debug_struct("NonMaxSuppressionV4Options");
13838      ds.finish()
13839  }
13840}
13841pub enum NonMaxSuppressionV5OptionsOffset {}
13842#[derive(Copy, Clone, PartialEq)]
13843
13844pub struct NonMaxSuppressionV5Options<'a> {
13845  pub _tab: flatbuffers::Table<'a>,
13846}
13847
13848impl<'a> flatbuffers::Follow<'a> for NonMaxSuppressionV5Options<'a> {
13849  type Inner = NonMaxSuppressionV5Options<'a>;
13850  #[inline]
13851  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13852    Self { _tab: flatbuffers::Table::new(buf, loc) }
13853  }
13854}
13855
13856impl<'a> NonMaxSuppressionV5Options<'a> {
13857
13858  #[inline]
13859  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13860    NonMaxSuppressionV5Options { _tab: table }
13861  }
13862  #[allow(unused_mut)]
13863  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13864    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13865    _args: &'args NonMaxSuppressionV5OptionsArgs
13866  ) -> flatbuffers::WIPOffset<NonMaxSuppressionV5Options<'bldr>> {
13867    let mut builder = NonMaxSuppressionV5OptionsBuilder::new(_fbb);
13868    builder.finish()
13869  }
13870
13871}
13872
13873impl flatbuffers::Verifiable for NonMaxSuppressionV5Options<'_> {
13874  #[inline]
13875  fn run_verifier(
13876    v: &mut flatbuffers::Verifier, pos: usize
13877  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13878    use self::flatbuffers::Verifiable;
13879    v.visit_table(pos)?
13880     .finish();
13881    Ok(())
13882  }
13883}
13884pub struct NonMaxSuppressionV5OptionsArgs {
13885}
13886impl<'a> Default for NonMaxSuppressionV5OptionsArgs {
13887  #[inline]
13888  fn default() -> Self {
13889    NonMaxSuppressionV5OptionsArgs {
13890    }
13891  }
13892}
13893
13894pub struct NonMaxSuppressionV5OptionsBuilder<'a: 'b, 'b> {
13895  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13896  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13897}
13898impl<'a: 'b, 'b> NonMaxSuppressionV5OptionsBuilder<'a, 'b> {
13899  #[inline]
13900  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> NonMaxSuppressionV5OptionsBuilder<'a, 'b> {
13901    let start = _fbb.start_table();
13902    NonMaxSuppressionV5OptionsBuilder {
13903      fbb_: _fbb,
13904      start_: start,
13905    }
13906  }
13907  #[inline]
13908  pub fn finish(self) -> flatbuffers::WIPOffset<NonMaxSuppressionV5Options<'a>> {
13909    let o = self.fbb_.end_table(self.start_);
13910    flatbuffers::WIPOffset::new(o.value())
13911  }
13912}
13913
13914impl core::fmt::Debug for NonMaxSuppressionV5Options<'_> {
13915  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13916    let mut ds = f.debug_struct("NonMaxSuppressionV5Options");
13917      ds.finish()
13918  }
13919}
13920pub enum ScatterNdOptionsOffset {}
13921#[derive(Copy, Clone, PartialEq)]
13922
13923pub struct ScatterNdOptions<'a> {
13924  pub _tab: flatbuffers::Table<'a>,
13925}
13926
13927impl<'a> flatbuffers::Follow<'a> for ScatterNdOptions<'a> {
13928  type Inner = ScatterNdOptions<'a>;
13929  #[inline]
13930  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13931    Self { _tab: flatbuffers::Table::new(buf, loc) }
13932  }
13933}
13934
13935impl<'a> ScatterNdOptions<'a> {
13936
13937  #[inline]
13938  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13939    ScatterNdOptions { _tab: table }
13940  }
13941  #[allow(unused_mut)]
13942  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
13943    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
13944    _args: &'args ScatterNdOptionsArgs
13945  ) -> flatbuffers::WIPOffset<ScatterNdOptions<'bldr>> {
13946    let mut builder = ScatterNdOptionsBuilder::new(_fbb);
13947    builder.finish()
13948  }
13949
13950}
13951
13952impl flatbuffers::Verifiable for ScatterNdOptions<'_> {
13953  #[inline]
13954  fn run_verifier(
13955    v: &mut flatbuffers::Verifier, pos: usize
13956  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13957    use self::flatbuffers::Verifiable;
13958    v.visit_table(pos)?
13959     .finish();
13960    Ok(())
13961  }
13962}
13963pub struct ScatterNdOptionsArgs {
13964}
13965impl<'a> Default for ScatterNdOptionsArgs {
13966  #[inline]
13967  fn default() -> Self {
13968    ScatterNdOptionsArgs {
13969    }
13970  }
13971}
13972
13973pub struct ScatterNdOptionsBuilder<'a: 'b, 'b> {
13974  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
13975  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13976}
13977impl<'a: 'b, 'b> ScatterNdOptionsBuilder<'a, 'b> {
13978  #[inline]
13979  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ScatterNdOptionsBuilder<'a, 'b> {
13980    let start = _fbb.start_table();
13981    ScatterNdOptionsBuilder {
13982      fbb_: _fbb,
13983      start_: start,
13984    }
13985  }
13986  #[inline]
13987  pub fn finish(self) -> flatbuffers::WIPOffset<ScatterNdOptions<'a>> {
13988    let o = self.fbb_.end_table(self.start_);
13989    flatbuffers::WIPOffset::new(o.value())
13990  }
13991}
13992
13993impl core::fmt::Debug for ScatterNdOptions<'_> {
13994  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13995    let mut ds = f.debug_struct("ScatterNdOptions");
13996      ds.finish()
13997  }
13998}
13999pub enum SelectV2OptionsOffset {}
14000#[derive(Copy, Clone, PartialEq)]
14001
14002pub struct SelectV2Options<'a> {
14003  pub _tab: flatbuffers::Table<'a>,
14004}
14005
14006impl<'a> flatbuffers::Follow<'a> for SelectV2Options<'a> {
14007  type Inner = SelectV2Options<'a>;
14008  #[inline]
14009  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14010    Self { _tab: flatbuffers::Table::new(buf, loc) }
14011  }
14012}
14013
14014impl<'a> SelectV2Options<'a> {
14015
14016  #[inline]
14017  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14018    SelectV2Options { _tab: table }
14019  }
14020  #[allow(unused_mut)]
14021  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14022    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14023    _args: &'args SelectV2OptionsArgs
14024  ) -> flatbuffers::WIPOffset<SelectV2Options<'bldr>> {
14025    let mut builder = SelectV2OptionsBuilder::new(_fbb);
14026    builder.finish()
14027  }
14028
14029}
14030
14031impl flatbuffers::Verifiable for SelectV2Options<'_> {
14032  #[inline]
14033  fn run_verifier(
14034    v: &mut flatbuffers::Verifier, pos: usize
14035  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14036    use self::flatbuffers::Verifiable;
14037    v.visit_table(pos)?
14038     .finish();
14039    Ok(())
14040  }
14041}
14042pub struct SelectV2OptionsArgs {
14043}
14044impl<'a> Default for SelectV2OptionsArgs {
14045  #[inline]
14046  fn default() -> Self {
14047    SelectV2OptionsArgs {
14048    }
14049  }
14050}
14051
14052pub struct SelectV2OptionsBuilder<'a: 'b, 'b> {
14053  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14054  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14055}
14056impl<'a: 'b, 'b> SelectV2OptionsBuilder<'a, 'b> {
14057  #[inline]
14058  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SelectV2OptionsBuilder<'a, 'b> {
14059    let start = _fbb.start_table();
14060    SelectV2OptionsBuilder {
14061      fbb_: _fbb,
14062      start_: start,
14063    }
14064  }
14065  #[inline]
14066  pub fn finish(self) -> flatbuffers::WIPOffset<SelectV2Options<'a>> {
14067    let o = self.fbb_.end_table(self.start_);
14068    flatbuffers::WIPOffset::new(o.value())
14069  }
14070}
14071
14072impl core::fmt::Debug for SelectV2Options<'_> {
14073  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14074    let mut ds = f.debug_struct("SelectV2Options");
14075      ds.finish()
14076  }
14077}
14078pub enum DensifyOptionsOffset {}
14079#[derive(Copy, Clone, PartialEq)]
14080
14081pub struct DensifyOptions<'a> {
14082  pub _tab: flatbuffers::Table<'a>,
14083}
14084
14085impl<'a> flatbuffers::Follow<'a> for DensifyOptions<'a> {
14086  type Inner = DensifyOptions<'a>;
14087  #[inline]
14088  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14089    Self { _tab: flatbuffers::Table::new(buf, loc) }
14090  }
14091}
14092
14093impl<'a> DensifyOptions<'a> {
14094
14095  #[inline]
14096  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14097    DensifyOptions { _tab: table }
14098  }
14099  #[allow(unused_mut)]
14100  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14101    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14102    _args: &'args DensifyOptionsArgs
14103  ) -> flatbuffers::WIPOffset<DensifyOptions<'bldr>> {
14104    let mut builder = DensifyOptionsBuilder::new(_fbb);
14105    builder.finish()
14106  }
14107
14108}
14109
14110impl flatbuffers::Verifiable for DensifyOptions<'_> {
14111  #[inline]
14112  fn run_verifier(
14113    v: &mut flatbuffers::Verifier, pos: usize
14114  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14115    use self::flatbuffers::Verifiable;
14116    v.visit_table(pos)?
14117     .finish();
14118    Ok(())
14119  }
14120}
14121pub struct DensifyOptionsArgs {
14122}
14123impl<'a> Default for DensifyOptionsArgs {
14124  #[inline]
14125  fn default() -> Self {
14126    DensifyOptionsArgs {
14127    }
14128  }
14129}
14130
14131pub struct DensifyOptionsBuilder<'a: 'b, 'b> {
14132  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14133  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14134}
14135impl<'a: 'b, 'b> DensifyOptionsBuilder<'a, 'b> {
14136  #[inline]
14137  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DensifyOptionsBuilder<'a, 'b> {
14138    let start = _fbb.start_table();
14139    DensifyOptionsBuilder {
14140      fbb_: _fbb,
14141      start_: start,
14142    }
14143  }
14144  #[inline]
14145  pub fn finish(self) -> flatbuffers::WIPOffset<DensifyOptions<'a>> {
14146    let o = self.fbb_.end_table(self.start_);
14147    flatbuffers::WIPOffset::new(o.value())
14148  }
14149}
14150
14151impl core::fmt::Debug for DensifyOptions<'_> {
14152  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14153    let mut ds = f.debug_struct("DensifyOptions");
14154      ds.finish()
14155  }
14156}
14157pub enum SegmentSumOptionsOffset {}
14158#[derive(Copy, Clone, PartialEq)]
14159
14160pub struct SegmentSumOptions<'a> {
14161  pub _tab: flatbuffers::Table<'a>,
14162}
14163
14164impl<'a> flatbuffers::Follow<'a> for SegmentSumOptions<'a> {
14165  type Inner = SegmentSumOptions<'a>;
14166  #[inline]
14167  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14168    Self { _tab: flatbuffers::Table::new(buf, loc) }
14169  }
14170}
14171
14172impl<'a> SegmentSumOptions<'a> {
14173
14174  #[inline]
14175  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14176    SegmentSumOptions { _tab: table }
14177  }
14178  #[allow(unused_mut)]
14179  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14180    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14181    _args: &'args SegmentSumOptionsArgs
14182  ) -> flatbuffers::WIPOffset<SegmentSumOptions<'bldr>> {
14183    let mut builder = SegmentSumOptionsBuilder::new(_fbb);
14184    builder.finish()
14185  }
14186
14187}
14188
14189impl flatbuffers::Verifiable for SegmentSumOptions<'_> {
14190  #[inline]
14191  fn run_verifier(
14192    v: &mut flatbuffers::Verifier, pos: usize
14193  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14194    use self::flatbuffers::Verifiable;
14195    v.visit_table(pos)?
14196     .finish();
14197    Ok(())
14198  }
14199}
14200pub struct SegmentSumOptionsArgs {
14201}
14202impl<'a> Default for SegmentSumOptionsArgs {
14203  #[inline]
14204  fn default() -> Self {
14205    SegmentSumOptionsArgs {
14206    }
14207  }
14208}
14209
14210pub struct SegmentSumOptionsBuilder<'a: 'b, 'b> {
14211  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14212  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14213}
14214impl<'a: 'b, 'b> SegmentSumOptionsBuilder<'a, 'b> {
14215  #[inline]
14216  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SegmentSumOptionsBuilder<'a, 'b> {
14217    let start = _fbb.start_table();
14218    SegmentSumOptionsBuilder {
14219      fbb_: _fbb,
14220      start_: start,
14221    }
14222  }
14223  #[inline]
14224  pub fn finish(self) -> flatbuffers::WIPOffset<SegmentSumOptions<'a>> {
14225    let o = self.fbb_.end_table(self.start_);
14226    flatbuffers::WIPOffset::new(o.value())
14227  }
14228}
14229
14230impl core::fmt::Debug for SegmentSumOptions<'_> {
14231  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14232    let mut ds = f.debug_struct("SegmentSumOptions");
14233      ds.finish()
14234  }
14235}
14236pub enum BatchMatMulOptionsOffset {}
14237#[derive(Copy, Clone, PartialEq)]
14238
14239pub struct BatchMatMulOptions<'a> {
14240  pub _tab: flatbuffers::Table<'a>,
14241}
14242
14243impl<'a> flatbuffers::Follow<'a> for BatchMatMulOptions<'a> {
14244  type Inner = BatchMatMulOptions<'a>;
14245  #[inline]
14246  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14247    Self { _tab: flatbuffers::Table::new(buf, loc) }
14248  }
14249}
14250
14251impl<'a> BatchMatMulOptions<'a> {
14252  pub const VT_ADJ_X: flatbuffers::VOffsetT = 4;
14253  pub const VT_ADJ_Y: flatbuffers::VOffsetT = 6;
14254  pub const VT_ASYMMETRIC_QUANTIZE_INPUTS: flatbuffers::VOffsetT = 8;
14255
14256  #[inline]
14257  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14258    BatchMatMulOptions { _tab: table }
14259  }
14260  #[allow(unused_mut)]
14261  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14262    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14263    args: &'args BatchMatMulOptionsArgs
14264  ) -> flatbuffers::WIPOffset<BatchMatMulOptions<'bldr>> {
14265    let mut builder = BatchMatMulOptionsBuilder::new(_fbb);
14266    builder.add_asymmetric_quantize_inputs(args.asymmetric_quantize_inputs);
14267    builder.add_adj_y(args.adj_y);
14268    builder.add_adj_x(args.adj_x);
14269    builder.finish()
14270  }
14271
14272
14273  #[inline]
14274  pub fn adj_x(&self) -> bool {
14275    // Safety:
14276    // Created from valid Table for this object
14277    // which contains a valid value in this slot
14278    unsafe { self._tab.get::<bool>(BatchMatMulOptions::VT_ADJ_X, Some(false)).unwrap()}
14279  }
14280  #[inline]
14281  pub fn adj_y(&self) -> bool {
14282    // Safety:
14283    // Created from valid Table for this object
14284    // which contains a valid value in this slot
14285    unsafe { self._tab.get::<bool>(BatchMatMulOptions::VT_ADJ_Y, Some(false)).unwrap()}
14286  }
14287  #[inline]
14288  pub fn asymmetric_quantize_inputs(&self) -> bool {
14289    // Safety:
14290    // Created from valid Table for this object
14291    // which contains a valid value in this slot
14292    unsafe { self._tab.get::<bool>(BatchMatMulOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, Some(false)).unwrap()}
14293  }
14294}
14295
14296impl flatbuffers::Verifiable for BatchMatMulOptions<'_> {
14297  #[inline]
14298  fn run_verifier(
14299    v: &mut flatbuffers::Verifier, pos: usize
14300  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14301    use self::flatbuffers::Verifiable;
14302    v.visit_table(pos)?
14303     .visit_field::<bool>("adj_x", Self::VT_ADJ_X, false)?
14304     .visit_field::<bool>("adj_y", Self::VT_ADJ_Y, false)?
14305     .visit_field::<bool>("asymmetric_quantize_inputs", Self::VT_ASYMMETRIC_QUANTIZE_INPUTS, false)?
14306     .finish();
14307    Ok(())
14308  }
14309}
14310pub struct BatchMatMulOptionsArgs {
14311    pub adj_x: bool,
14312    pub adj_y: bool,
14313    pub asymmetric_quantize_inputs: bool,
14314}
14315impl<'a> Default for BatchMatMulOptionsArgs {
14316  #[inline]
14317  fn default() -> Self {
14318    BatchMatMulOptionsArgs {
14319      adj_x: false,
14320      adj_y: false,
14321      asymmetric_quantize_inputs: false,
14322    }
14323  }
14324}
14325
14326pub struct BatchMatMulOptionsBuilder<'a: 'b, 'b> {
14327  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14328  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14329}
14330impl<'a: 'b, 'b> BatchMatMulOptionsBuilder<'a, 'b> {
14331  #[inline]
14332  pub fn add_adj_x(&mut self, adj_x: bool) {
14333    self.fbb_.push_slot::<bool>(BatchMatMulOptions::VT_ADJ_X, adj_x, false);
14334  }
14335  #[inline]
14336  pub fn add_adj_y(&mut self, adj_y: bool) {
14337    self.fbb_.push_slot::<bool>(BatchMatMulOptions::VT_ADJ_Y, adj_y, false);
14338  }
14339  #[inline]
14340  pub fn add_asymmetric_quantize_inputs(&mut self, asymmetric_quantize_inputs: bool) {
14341    self.fbb_.push_slot::<bool>(BatchMatMulOptions::VT_ASYMMETRIC_QUANTIZE_INPUTS, asymmetric_quantize_inputs, false);
14342  }
14343  #[inline]
14344  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BatchMatMulOptionsBuilder<'a, 'b> {
14345    let start = _fbb.start_table();
14346    BatchMatMulOptionsBuilder {
14347      fbb_: _fbb,
14348      start_: start,
14349    }
14350  }
14351  #[inline]
14352  pub fn finish(self) -> flatbuffers::WIPOffset<BatchMatMulOptions<'a>> {
14353    let o = self.fbb_.end_table(self.start_);
14354    flatbuffers::WIPOffset::new(o.value())
14355  }
14356}
14357
14358impl core::fmt::Debug for BatchMatMulOptions<'_> {
14359  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14360    let mut ds = f.debug_struct("BatchMatMulOptions");
14361      ds.field("adj_x", &self.adj_x());
14362      ds.field("adj_y", &self.adj_y());
14363      ds.field("asymmetric_quantize_inputs", &self.asymmetric_quantize_inputs());
14364      ds.finish()
14365  }
14366}
14367pub enum CumsumOptionsOffset {}
14368#[derive(Copy, Clone, PartialEq)]
14369
14370pub struct CumsumOptions<'a> {
14371  pub _tab: flatbuffers::Table<'a>,
14372}
14373
14374impl<'a> flatbuffers::Follow<'a> for CumsumOptions<'a> {
14375  type Inner = CumsumOptions<'a>;
14376  #[inline]
14377  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14378    Self { _tab: flatbuffers::Table::new(buf, loc) }
14379  }
14380}
14381
14382impl<'a> CumsumOptions<'a> {
14383  pub const VT_EXCLUSIVE: flatbuffers::VOffsetT = 4;
14384  pub const VT_REVERSE: flatbuffers::VOffsetT = 6;
14385
14386  #[inline]
14387  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14388    CumsumOptions { _tab: table }
14389  }
14390  #[allow(unused_mut)]
14391  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14392    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14393    args: &'args CumsumOptionsArgs
14394  ) -> flatbuffers::WIPOffset<CumsumOptions<'bldr>> {
14395    let mut builder = CumsumOptionsBuilder::new(_fbb);
14396    builder.add_reverse(args.reverse);
14397    builder.add_exclusive(args.exclusive);
14398    builder.finish()
14399  }
14400
14401
14402  #[inline]
14403  pub fn exclusive(&self) -> bool {
14404    // Safety:
14405    // Created from valid Table for this object
14406    // which contains a valid value in this slot
14407    unsafe { self._tab.get::<bool>(CumsumOptions::VT_EXCLUSIVE, Some(false)).unwrap()}
14408  }
14409  #[inline]
14410  pub fn reverse(&self) -> bool {
14411    // Safety:
14412    // Created from valid Table for this object
14413    // which contains a valid value in this slot
14414    unsafe { self._tab.get::<bool>(CumsumOptions::VT_REVERSE, Some(false)).unwrap()}
14415  }
14416}
14417
14418impl flatbuffers::Verifiable for CumsumOptions<'_> {
14419  #[inline]
14420  fn run_verifier(
14421    v: &mut flatbuffers::Verifier, pos: usize
14422  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14423    use self::flatbuffers::Verifiable;
14424    v.visit_table(pos)?
14425     .visit_field::<bool>("exclusive", Self::VT_EXCLUSIVE, false)?
14426     .visit_field::<bool>("reverse", Self::VT_REVERSE, false)?
14427     .finish();
14428    Ok(())
14429  }
14430}
14431pub struct CumsumOptionsArgs {
14432    pub exclusive: bool,
14433    pub reverse: bool,
14434}
14435impl<'a> Default for CumsumOptionsArgs {
14436  #[inline]
14437  fn default() -> Self {
14438    CumsumOptionsArgs {
14439      exclusive: false,
14440      reverse: false,
14441    }
14442  }
14443}
14444
14445pub struct CumsumOptionsBuilder<'a: 'b, 'b> {
14446  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14447  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14448}
14449impl<'a: 'b, 'b> CumsumOptionsBuilder<'a, 'b> {
14450  #[inline]
14451  pub fn add_exclusive(&mut self, exclusive: bool) {
14452    self.fbb_.push_slot::<bool>(CumsumOptions::VT_EXCLUSIVE, exclusive, false);
14453  }
14454  #[inline]
14455  pub fn add_reverse(&mut self, reverse: bool) {
14456    self.fbb_.push_slot::<bool>(CumsumOptions::VT_REVERSE, reverse, false);
14457  }
14458  #[inline]
14459  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> CumsumOptionsBuilder<'a, 'b> {
14460    let start = _fbb.start_table();
14461    CumsumOptionsBuilder {
14462      fbb_: _fbb,
14463      start_: start,
14464    }
14465  }
14466  #[inline]
14467  pub fn finish(self) -> flatbuffers::WIPOffset<CumsumOptions<'a>> {
14468    let o = self.fbb_.end_table(self.start_);
14469    flatbuffers::WIPOffset::new(o.value())
14470  }
14471}
14472
14473impl core::fmt::Debug for CumsumOptions<'_> {
14474  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14475    let mut ds = f.debug_struct("CumsumOptions");
14476      ds.field("exclusive", &self.exclusive());
14477      ds.field("reverse", &self.reverse());
14478      ds.finish()
14479  }
14480}
14481pub enum BroadcastToOptionsOffset {}
14482#[derive(Copy, Clone, PartialEq)]
14483
14484pub struct BroadcastToOptions<'a> {
14485  pub _tab: flatbuffers::Table<'a>,
14486}
14487
14488impl<'a> flatbuffers::Follow<'a> for BroadcastToOptions<'a> {
14489  type Inner = BroadcastToOptions<'a>;
14490  #[inline]
14491  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14492    Self { _tab: flatbuffers::Table::new(buf, loc) }
14493  }
14494}
14495
14496impl<'a> BroadcastToOptions<'a> {
14497
14498  #[inline]
14499  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14500    BroadcastToOptions { _tab: table }
14501  }
14502  #[allow(unused_mut)]
14503  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14504    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14505    _args: &'args BroadcastToOptionsArgs
14506  ) -> flatbuffers::WIPOffset<BroadcastToOptions<'bldr>> {
14507    let mut builder = BroadcastToOptionsBuilder::new(_fbb);
14508    builder.finish()
14509  }
14510
14511}
14512
14513impl flatbuffers::Verifiable for BroadcastToOptions<'_> {
14514  #[inline]
14515  fn run_verifier(
14516    v: &mut flatbuffers::Verifier, pos: usize
14517  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14518    use self::flatbuffers::Verifiable;
14519    v.visit_table(pos)?
14520     .finish();
14521    Ok(())
14522  }
14523}
14524pub struct BroadcastToOptionsArgs {
14525}
14526impl<'a> Default for BroadcastToOptionsArgs {
14527  #[inline]
14528  fn default() -> Self {
14529    BroadcastToOptionsArgs {
14530    }
14531  }
14532}
14533
14534pub struct BroadcastToOptionsBuilder<'a: 'b, 'b> {
14535  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14536  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14537}
14538impl<'a: 'b, 'b> BroadcastToOptionsBuilder<'a, 'b> {
14539  #[inline]
14540  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BroadcastToOptionsBuilder<'a, 'b> {
14541    let start = _fbb.start_table();
14542    BroadcastToOptionsBuilder {
14543      fbb_: _fbb,
14544      start_: start,
14545    }
14546  }
14547  #[inline]
14548  pub fn finish(self) -> flatbuffers::WIPOffset<BroadcastToOptions<'a>> {
14549    let o = self.fbb_.end_table(self.start_);
14550    flatbuffers::WIPOffset::new(o.value())
14551  }
14552}
14553
14554impl core::fmt::Debug for BroadcastToOptions<'_> {
14555  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14556    let mut ds = f.debug_struct("BroadcastToOptions");
14557      ds.finish()
14558  }
14559}
14560pub enum Rfft2dOptionsOffset {}
14561#[derive(Copy, Clone, PartialEq)]
14562
14563pub struct Rfft2dOptions<'a> {
14564  pub _tab: flatbuffers::Table<'a>,
14565}
14566
14567impl<'a> flatbuffers::Follow<'a> for Rfft2dOptions<'a> {
14568  type Inner = Rfft2dOptions<'a>;
14569  #[inline]
14570  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14571    Self { _tab: flatbuffers::Table::new(buf, loc) }
14572  }
14573}
14574
14575impl<'a> Rfft2dOptions<'a> {
14576
14577  #[inline]
14578  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14579    Rfft2dOptions { _tab: table }
14580  }
14581  #[allow(unused_mut)]
14582  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14583    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14584    _args: &'args Rfft2dOptionsArgs
14585  ) -> flatbuffers::WIPOffset<Rfft2dOptions<'bldr>> {
14586    let mut builder = Rfft2dOptionsBuilder::new(_fbb);
14587    builder.finish()
14588  }
14589
14590}
14591
14592impl flatbuffers::Verifiable for Rfft2dOptions<'_> {
14593  #[inline]
14594  fn run_verifier(
14595    v: &mut flatbuffers::Verifier, pos: usize
14596  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14597    use self::flatbuffers::Verifiable;
14598    v.visit_table(pos)?
14599     .finish();
14600    Ok(())
14601  }
14602}
14603pub struct Rfft2dOptionsArgs {
14604}
14605impl<'a> Default for Rfft2dOptionsArgs {
14606  #[inline]
14607  fn default() -> Self {
14608    Rfft2dOptionsArgs {
14609    }
14610  }
14611}
14612
14613pub struct Rfft2dOptionsBuilder<'a: 'b, 'b> {
14614  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14615  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14616}
14617impl<'a: 'b, 'b> Rfft2dOptionsBuilder<'a, 'b> {
14618  #[inline]
14619  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> Rfft2dOptionsBuilder<'a, 'b> {
14620    let start = _fbb.start_table();
14621    Rfft2dOptionsBuilder {
14622      fbb_: _fbb,
14623      start_: start,
14624    }
14625  }
14626  #[inline]
14627  pub fn finish(self) -> flatbuffers::WIPOffset<Rfft2dOptions<'a>> {
14628    let o = self.fbb_.end_table(self.start_);
14629    flatbuffers::WIPOffset::new(o.value())
14630  }
14631}
14632
14633impl core::fmt::Debug for Rfft2dOptions<'_> {
14634  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14635    let mut ds = f.debug_struct("Rfft2dOptions");
14636      ds.finish()
14637  }
14638}
14639pub enum HashtableOptionsOffset {}
14640#[derive(Copy, Clone, PartialEq)]
14641
14642pub struct HashtableOptions<'a> {
14643  pub _tab: flatbuffers::Table<'a>,
14644}
14645
14646impl<'a> flatbuffers::Follow<'a> for HashtableOptions<'a> {
14647  type Inner = HashtableOptions<'a>;
14648  #[inline]
14649  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14650    Self { _tab: flatbuffers::Table::new(buf, loc) }
14651  }
14652}
14653
14654impl<'a> HashtableOptions<'a> {
14655  pub const VT_TABLE_ID: flatbuffers::VOffsetT = 4;
14656  pub const VT_KEY_DTYPE: flatbuffers::VOffsetT = 6;
14657  pub const VT_VALUE_DTYPE: flatbuffers::VOffsetT = 8;
14658
14659  #[inline]
14660  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14661    HashtableOptions { _tab: table }
14662  }
14663  #[allow(unused_mut)]
14664  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14665    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14666    args: &'args HashtableOptionsArgs
14667  ) -> flatbuffers::WIPOffset<HashtableOptions<'bldr>> {
14668    let mut builder = HashtableOptionsBuilder::new(_fbb);
14669    builder.add_table_id(args.table_id);
14670    builder.add_value_dtype(args.value_dtype);
14671    builder.add_key_dtype(args.key_dtype);
14672    builder.finish()
14673  }
14674
14675
14676  #[inline]
14677  pub fn table_id(&self) -> i32 {
14678    // Safety:
14679    // Created from valid Table for this object
14680    // which contains a valid value in this slot
14681    unsafe { self._tab.get::<i32>(HashtableOptions::VT_TABLE_ID, Some(0)).unwrap()}
14682  }
14683  #[inline]
14684  pub fn key_dtype(&self) -> TensorType {
14685    // Safety:
14686    // Created from valid Table for this object
14687    // which contains a valid value in this slot
14688    unsafe { self._tab.get::<TensorType>(HashtableOptions::VT_KEY_DTYPE, Some(TensorType::FLOAT32)).unwrap()}
14689  }
14690  #[inline]
14691  pub fn value_dtype(&self) -> TensorType {
14692    // Safety:
14693    // Created from valid Table for this object
14694    // which contains a valid value in this slot
14695    unsafe { self._tab.get::<TensorType>(HashtableOptions::VT_VALUE_DTYPE, Some(TensorType::FLOAT32)).unwrap()}
14696  }
14697}
14698
14699impl flatbuffers::Verifiable for HashtableOptions<'_> {
14700  #[inline]
14701  fn run_verifier(
14702    v: &mut flatbuffers::Verifier, pos: usize
14703  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14704    use self::flatbuffers::Verifiable;
14705    v.visit_table(pos)?
14706     .visit_field::<i32>("table_id", Self::VT_TABLE_ID, false)?
14707     .visit_field::<TensorType>("key_dtype", Self::VT_KEY_DTYPE, false)?
14708     .visit_field::<TensorType>("value_dtype", Self::VT_VALUE_DTYPE, false)?
14709     .finish();
14710    Ok(())
14711  }
14712}
14713pub struct HashtableOptionsArgs {
14714    pub table_id: i32,
14715    pub key_dtype: TensorType,
14716    pub value_dtype: TensorType,
14717}
14718impl<'a> Default for HashtableOptionsArgs {
14719  #[inline]
14720  fn default() -> Self {
14721    HashtableOptionsArgs {
14722      table_id: 0,
14723      key_dtype: TensorType::FLOAT32,
14724      value_dtype: TensorType::FLOAT32,
14725    }
14726  }
14727}
14728
14729pub struct HashtableOptionsBuilder<'a: 'b, 'b> {
14730  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14731  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14732}
14733impl<'a: 'b, 'b> HashtableOptionsBuilder<'a, 'b> {
14734  #[inline]
14735  pub fn add_table_id(&mut self, table_id: i32) {
14736    self.fbb_.push_slot::<i32>(HashtableOptions::VT_TABLE_ID, table_id, 0);
14737  }
14738  #[inline]
14739  pub fn add_key_dtype(&mut self, key_dtype: TensorType) {
14740    self.fbb_.push_slot::<TensorType>(HashtableOptions::VT_KEY_DTYPE, key_dtype, TensorType::FLOAT32);
14741  }
14742  #[inline]
14743  pub fn add_value_dtype(&mut self, value_dtype: TensorType) {
14744    self.fbb_.push_slot::<TensorType>(HashtableOptions::VT_VALUE_DTYPE, value_dtype, TensorType::FLOAT32);
14745  }
14746  #[inline]
14747  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HashtableOptionsBuilder<'a, 'b> {
14748    let start = _fbb.start_table();
14749    HashtableOptionsBuilder {
14750      fbb_: _fbb,
14751      start_: start,
14752    }
14753  }
14754  #[inline]
14755  pub fn finish(self) -> flatbuffers::WIPOffset<HashtableOptions<'a>> {
14756    let o = self.fbb_.end_table(self.start_);
14757    flatbuffers::WIPOffset::new(o.value())
14758  }
14759}
14760
14761impl core::fmt::Debug for HashtableOptions<'_> {
14762  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14763    let mut ds = f.debug_struct("HashtableOptions");
14764      ds.field("table_id", &self.table_id());
14765      ds.field("key_dtype", &self.key_dtype());
14766      ds.field("value_dtype", &self.value_dtype());
14767      ds.finish()
14768  }
14769}
14770pub enum HashtableFindOptionsOffset {}
14771#[derive(Copy, Clone, PartialEq)]
14772
14773pub struct HashtableFindOptions<'a> {
14774  pub _tab: flatbuffers::Table<'a>,
14775}
14776
14777impl<'a> flatbuffers::Follow<'a> for HashtableFindOptions<'a> {
14778  type Inner = HashtableFindOptions<'a>;
14779  #[inline]
14780  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14781    Self { _tab: flatbuffers::Table::new(buf, loc) }
14782  }
14783}
14784
14785impl<'a> HashtableFindOptions<'a> {
14786
14787  #[inline]
14788  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14789    HashtableFindOptions { _tab: table }
14790  }
14791  #[allow(unused_mut)]
14792  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14793    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14794    _args: &'args HashtableFindOptionsArgs
14795  ) -> flatbuffers::WIPOffset<HashtableFindOptions<'bldr>> {
14796    let mut builder = HashtableFindOptionsBuilder::new(_fbb);
14797    builder.finish()
14798  }
14799
14800}
14801
14802impl flatbuffers::Verifiable for HashtableFindOptions<'_> {
14803  #[inline]
14804  fn run_verifier(
14805    v: &mut flatbuffers::Verifier, pos: usize
14806  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14807    use self::flatbuffers::Verifiable;
14808    v.visit_table(pos)?
14809     .finish();
14810    Ok(())
14811  }
14812}
14813pub struct HashtableFindOptionsArgs {
14814}
14815impl<'a> Default for HashtableFindOptionsArgs {
14816  #[inline]
14817  fn default() -> Self {
14818    HashtableFindOptionsArgs {
14819    }
14820  }
14821}
14822
14823pub struct HashtableFindOptionsBuilder<'a: 'b, 'b> {
14824  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14825  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14826}
14827impl<'a: 'b, 'b> HashtableFindOptionsBuilder<'a, 'b> {
14828  #[inline]
14829  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HashtableFindOptionsBuilder<'a, 'b> {
14830    let start = _fbb.start_table();
14831    HashtableFindOptionsBuilder {
14832      fbb_: _fbb,
14833      start_: start,
14834    }
14835  }
14836  #[inline]
14837  pub fn finish(self) -> flatbuffers::WIPOffset<HashtableFindOptions<'a>> {
14838    let o = self.fbb_.end_table(self.start_);
14839    flatbuffers::WIPOffset::new(o.value())
14840  }
14841}
14842
14843impl core::fmt::Debug for HashtableFindOptions<'_> {
14844  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14845    let mut ds = f.debug_struct("HashtableFindOptions");
14846      ds.finish()
14847  }
14848}
14849pub enum HashtableImportOptionsOffset {}
14850#[derive(Copy, Clone, PartialEq)]
14851
14852pub struct HashtableImportOptions<'a> {
14853  pub _tab: flatbuffers::Table<'a>,
14854}
14855
14856impl<'a> flatbuffers::Follow<'a> for HashtableImportOptions<'a> {
14857  type Inner = HashtableImportOptions<'a>;
14858  #[inline]
14859  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14860    Self { _tab: flatbuffers::Table::new(buf, loc) }
14861  }
14862}
14863
14864impl<'a> HashtableImportOptions<'a> {
14865
14866  #[inline]
14867  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14868    HashtableImportOptions { _tab: table }
14869  }
14870  #[allow(unused_mut)]
14871  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14872    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14873    _args: &'args HashtableImportOptionsArgs
14874  ) -> flatbuffers::WIPOffset<HashtableImportOptions<'bldr>> {
14875    let mut builder = HashtableImportOptionsBuilder::new(_fbb);
14876    builder.finish()
14877  }
14878
14879}
14880
14881impl flatbuffers::Verifiable for HashtableImportOptions<'_> {
14882  #[inline]
14883  fn run_verifier(
14884    v: &mut flatbuffers::Verifier, pos: usize
14885  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14886    use self::flatbuffers::Verifiable;
14887    v.visit_table(pos)?
14888     .finish();
14889    Ok(())
14890  }
14891}
14892pub struct HashtableImportOptionsArgs {
14893}
14894impl<'a> Default for HashtableImportOptionsArgs {
14895  #[inline]
14896  fn default() -> Self {
14897    HashtableImportOptionsArgs {
14898    }
14899  }
14900}
14901
14902pub struct HashtableImportOptionsBuilder<'a: 'b, 'b> {
14903  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14904  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14905}
14906impl<'a: 'b, 'b> HashtableImportOptionsBuilder<'a, 'b> {
14907  #[inline]
14908  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HashtableImportOptionsBuilder<'a, 'b> {
14909    let start = _fbb.start_table();
14910    HashtableImportOptionsBuilder {
14911      fbb_: _fbb,
14912      start_: start,
14913    }
14914  }
14915  #[inline]
14916  pub fn finish(self) -> flatbuffers::WIPOffset<HashtableImportOptions<'a>> {
14917    let o = self.fbb_.end_table(self.start_);
14918    flatbuffers::WIPOffset::new(o.value())
14919  }
14920}
14921
14922impl core::fmt::Debug for HashtableImportOptions<'_> {
14923  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14924    let mut ds = f.debug_struct("HashtableImportOptions");
14925      ds.finish()
14926  }
14927}
14928pub enum HashtableSizeOptionsOffset {}
14929#[derive(Copy, Clone, PartialEq)]
14930
14931pub struct HashtableSizeOptions<'a> {
14932  pub _tab: flatbuffers::Table<'a>,
14933}
14934
14935impl<'a> flatbuffers::Follow<'a> for HashtableSizeOptions<'a> {
14936  type Inner = HashtableSizeOptions<'a>;
14937  #[inline]
14938  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14939    Self { _tab: flatbuffers::Table::new(buf, loc) }
14940  }
14941}
14942
14943impl<'a> HashtableSizeOptions<'a> {
14944
14945  #[inline]
14946  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14947    HashtableSizeOptions { _tab: table }
14948  }
14949  #[allow(unused_mut)]
14950  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
14951    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
14952    _args: &'args HashtableSizeOptionsArgs
14953  ) -> flatbuffers::WIPOffset<HashtableSizeOptions<'bldr>> {
14954    let mut builder = HashtableSizeOptionsBuilder::new(_fbb);
14955    builder.finish()
14956  }
14957
14958}
14959
14960impl flatbuffers::Verifiable for HashtableSizeOptions<'_> {
14961  #[inline]
14962  fn run_verifier(
14963    v: &mut flatbuffers::Verifier, pos: usize
14964  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14965    use self::flatbuffers::Verifiable;
14966    v.visit_table(pos)?
14967     .finish();
14968    Ok(())
14969  }
14970}
14971pub struct HashtableSizeOptionsArgs {
14972}
14973impl<'a> Default for HashtableSizeOptionsArgs {
14974  #[inline]
14975  fn default() -> Self {
14976    HashtableSizeOptionsArgs {
14977    }
14978  }
14979}
14980
14981pub struct HashtableSizeOptionsBuilder<'a: 'b, 'b> {
14982  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
14983  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14984}
14985impl<'a: 'b, 'b> HashtableSizeOptionsBuilder<'a, 'b> {
14986  #[inline]
14987  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> HashtableSizeOptionsBuilder<'a, 'b> {
14988    let start = _fbb.start_table();
14989    HashtableSizeOptionsBuilder {
14990      fbb_: _fbb,
14991      start_: start,
14992    }
14993  }
14994  #[inline]
14995  pub fn finish(self) -> flatbuffers::WIPOffset<HashtableSizeOptions<'a>> {
14996    let o = self.fbb_.end_table(self.start_);
14997    flatbuffers::WIPOffset::new(o.value())
14998  }
14999}
15000
15001impl core::fmt::Debug for HashtableSizeOptions<'_> {
15002  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15003    let mut ds = f.debug_struct("HashtableSizeOptions");
15004      ds.finish()
15005  }
15006}
15007pub enum VarHandleOptionsOffset {}
15008#[derive(Copy, Clone, PartialEq)]
15009
15010pub struct VarHandleOptions<'a> {
15011  pub _tab: flatbuffers::Table<'a>,
15012}
15013
15014impl<'a> flatbuffers::Follow<'a> for VarHandleOptions<'a> {
15015  type Inner = VarHandleOptions<'a>;
15016  #[inline]
15017  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15018    Self { _tab: flatbuffers::Table::new(buf, loc) }
15019  }
15020}
15021
15022impl<'a> VarHandleOptions<'a> {
15023  pub const VT_CONTAINER: flatbuffers::VOffsetT = 4;
15024  pub const VT_SHARED_NAME: flatbuffers::VOffsetT = 6;
15025
15026  #[inline]
15027  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15028    VarHandleOptions { _tab: table }
15029  }
15030  #[allow(unused_mut)]
15031  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15032    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15033    args: &'args VarHandleOptionsArgs<'args>
15034  ) -> flatbuffers::WIPOffset<VarHandleOptions<'bldr>> {
15035    let mut builder = VarHandleOptionsBuilder::new(_fbb);
15036    if let Some(x) = args.shared_name { builder.add_shared_name(x); }
15037    if let Some(x) = args.container { builder.add_container(x); }
15038    builder.finish()
15039  }
15040
15041
15042  #[inline]
15043  pub fn container(&self) -> Option<&'a str> {
15044    // Safety:
15045    // Created from valid Table for this object
15046    // which contains a valid value in this slot
15047    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VarHandleOptions::VT_CONTAINER, None)}
15048  }
15049  #[inline]
15050  pub fn shared_name(&self) -> Option<&'a str> {
15051    // Safety:
15052    // Created from valid Table for this object
15053    // which contains a valid value in this slot
15054    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VarHandleOptions::VT_SHARED_NAME, None)}
15055  }
15056}
15057
15058impl flatbuffers::Verifiable for VarHandleOptions<'_> {
15059  #[inline]
15060  fn run_verifier(
15061    v: &mut flatbuffers::Verifier, pos: usize
15062  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15063    use self::flatbuffers::Verifiable;
15064    v.visit_table(pos)?
15065     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("container", Self::VT_CONTAINER, false)?
15066     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("shared_name", Self::VT_SHARED_NAME, false)?
15067     .finish();
15068    Ok(())
15069  }
15070}
15071pub struct VarHandleOptionsArgs<'a> {
15072    pub container: Option<flatbuffers::WIPOffset<&'a str>>,
15073    pub shared_name: Option<flatbuffers::WIPOffset<&'a str>>,
15074}
15075impl<'a> Default for VarHandleOptionsArgs<'a> {
15076  #[inline]
15077  fn default() -> Self {
15078    VarHandleOptionsArgs {
15079      container: None,
15080      shared_name: None,
15081    }
15082  }
15083}
15084
15085pub struct VarHandleOptionsBuilder<'a: 'b, 'b> {
15086  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15087  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15088}
15089impl<'a: 'b, 'b> VarHandleOptionsBuilder<'a, 'b> {
15090  #[inline]
15091  pub fn add_container(&mut self, container: flatbuffers::WIPOffset<&'b  str>) {
15092    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VarHandleOptions::VT_CONTAINER, container);
15093  }
15094  #[inline]
15095  pub fn add_shared_name(&mut self, shared_name: flatbuffers::WIPOffset<&'b  str>) {
15096    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VarHandleOptions::VT_SHARED_NAME, shared_name);
15097  }
15098  #[inline]
15099  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> VarHandleOptionsBuilder<'a, 'b> {
15100    let start = _fbb.start_table();
15101    VarHandleOptionsBuilder {
15102      fbb_: _fbb,
15103      start_: start,
15104    }
15105  }
15106  #[inline]
15107  pub fn finish(self) -> flatbuffers::WIPOffset<VarHandleOptions<'a>> {
15108    let o = self.fbb_.end_table(self.start_);
15109    flatbuffers::WIPOffset::new(o.value())
15110  }
15111}
15112
15113impl core::fmt::Debug for VarHandleOptions<'_> {
15114  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15115    let mut ds = f.debug_struct("VarHandleOptions");
15116      ds.field("container", &self.container());
15117      ds.field("shared_name", &self.shared_name());
15118      ds.finish()
15119  }
15120}
15121pub enum ReadVariableOptionsOffset {}
15122#[derive(Copy, Clone, PartialEq)]
15123
15124pub struct ReadVariableOptions<'a> {
15125  pub _tab: flatbuffers::Table<'a>,
15126}
15127
15128impl<'a> flatbuffers::Follow<'a> for ReadVariableOptions<'a> {
15129  type Inner = ReadVariableOptions<'a>;
15130  #[inline]
15131  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15132    Self { _tab: flatbuffers::Table::new(buf, loc) }
15133  }
15134}
15135
15136impl<'a> ReadVariableOptions<'a> {
15137
15138  #[inline]
15139  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15140    ReadVariableOptions { _tab: table }
15141  }
15142  #[allow(unused_mut)]
15143  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15144    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15145    _args: &'args ReadVariableOptionsArgs
15146  ) -> flatbuffers::WIPOffset<ReadVariableOptions<'bldr>> {
15147    let mut builder = ReadVariableOptionsBuilder::new(_fbb);
15148    builder.finish()
15149  }
15150
15151}
15152
15153impl flatbuffers::Verifiable for ReadVariableOptions<'_> {
15154  #[inline]
15155  fn run_verifier(
15156    v: &mut flatbuffers::Verifier, pos: usize
15157  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15158    use self::flatbuffers::Verifiable;
15159    v.visit_table(pos)?
15160     .finish();
15161    Ok(())
15162  }
15163}
15164pub struct ReadVariableOptionsArgs {
15165}
15166impl<'a> Default for ReadVariableOptionsArgs {
15167  #[inline]
15168  fn default() -> Self {
15169    ReadVariableOptionsArgs {
15170    }
15171  }
15172}
15173
15174pub struct ReadVariableOptionsBuilder<'a: 'b, 'b> {
15175  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15176  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15177}
15178impl<'a: 'b, 'b> ReadVariableOptionsBuilder<'a, 'b> {
15179  #[inline]
15180  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ReadVariableOptionsBuilder<'a, 'b> {
15181    let start = _fbb.start_table();
15182    ReadVariableOptionsBuilder {
15183      fbb_: _fbb,
15184      start_: start,
15185    }
15186  }
15187  #[inline]
15188  pub fn finish(self) -> flatbuffers::WIPOffset<ReadVariableOptions<'a>> {
15189    let o = self.fbb_.end_table(self.start_);
15190    flatbuffers::WIPOffset::new(o.value())
15191  }
15192}
15193
15194impl core::fmt::Debug for ReadVariableOptions<'_> {
15195  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15196    let mut ds = f.debug_struct("ReadVariableOptions");
15197      ds.finish()
15198  }
15199}
15200pub enum AssignVariableOptionsOffset {}
15201#[derive(Copy, Clone, PartialEq)]
15202
15203pub struct AssignVariableOptions<'a> {
15204  pub _tab: flatbuffers::Table<'a>,
15205}
15206
15207impl<'a> flatbuffers::Follow<'a> for AssignVariableOptions<'a> {
15208  type Inner = AssignVariableOptions<'a>;
15209  #[inline]
15210  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15211    Self { _tab: flatbuffers::Table::new(buf, loc) }
15212  }
15213}
15214
15215impl<'a> AssignVariableOptions<'a> {
15216
15217  #[inline]
15218  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15219    AssignVariableOptions { _tab: table }
15220  }
15221  #[allow(unused_mut)]
15222  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15223    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15224    _args: &'args AssignVariableOptionsArgs
15225  ) -> flatbuffers::WIPOffset<AssignVariableOptions<'bldr>> {
15226    let mut builder = AssignVariableOptionsBuilder::new(_fbb);
15227    builder.finish()
15228  }
15229
15230}
15231
15232impl flatbuffers::Verifiable for AssignVariableOptions<'_> {
15233  #[inline]
15234  fn run_verifier(
15235    v: &mut flatbuffers::Verifier, pos: usize
15236  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15237    use self::flatbuffers::Verifiable;
15238    v.visit_table(pos)?
15239     .finish();
15240    Ok(())
15241  }
15242}
15243pub struct AssignVariableOptionsArgs {
15244}
15245impl<'a> Default for AssignVariableOptionsArgs {
15246  #[inline]
15247  fn default() -> Self {
15248    AssignVariableOptionsArgs {
15249    }
15250  }
15251}
15252
15253pub struct AssignVariableOptionsBuilder<'a: 'b, 'b> {
15254  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15255  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15256}
15257impl<'a: 'b, 'b> AssignVariableOptionsBuilder<'a, 'b> {
15258  #[inline]
15259  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> AssignVariableOptionsBuilder<'a, 'b> {
15260    let start = _fbb.start_table();
15261    AssignVariableOptionsBuilder {
15262      fbb_: _fbb,
15263      start_: start,
15264    }
15265  }
15266  #[inline]
15267  pub fn finish(self) -> flatbuffers::WIPOffset<AssignVariableOptions<'a>> {
15268    let o = self.fbb_.end_table(self.start_);
15269    flatbuffers::WIPOffset::new(o.value())
15270  }
15271}
15272
15273impl core::fmt::Debug for AssignVariableOptions<'_> {
15274  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15275    let mut ds = f.debug_struct("AssignVariableOptions");
15276      ds.finish()
15277  }
15278}
15279pub enum RandomOptionsOffset {}
15280#[derive(Copy, Clone, PartialEq)]
15281
15282pub struct RandomOptions<'a> {
15283  pub _tab: flatbuffers::Table<'a>,
15284}
15285
15286impl<'a> flatbuffers::Follow<'a> for RandomOptions<'a> {
15287  type Inner = RandomOptions<'a>;
15288  #[inline]
15289  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15290    Self { _tab: flatbuffers::Table::new(buf, loc) }
15291  }
15292}
15293
15294impl<'a> RandomOptions<'a> {
15295  pub const VT_SEED: flatbuffers::VOffsetT = 4;
15296  pub const VT_SEED2: flatbuffers::VOffsetT = 6;
15297
15298  #[inline]
15299  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15300    RandomOptions { _tab: table }
15301  }
15302  #[allow(unused_mut)]
15303  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15304    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15305    args: &'args RandomOptionsArgs
15306  ) -> flatbuffers::WIPOffset<RandomOptions<'bldr>> {
15307    let mut builder = RandomOptionsBuilder::new(_fbb);
15308    builder.add_seed2(args.seed2);
15309    builder.add_seed(args.seed);
15310    builder.finish()
15311  }
15312
15313
15314  #[inline]
15315  pub fn seed(&self) -> i64 {
15316    // Safety:
15317    // Created from valid Table for this object
15318    // which contains a valid value in this slot
15319    unsafe { self._tab.get::<i64>(RandomOptions::VT_SEED, Some(0)).unwrap()}
15320  }
15321  #[inline]
15322  pub fn seed2(&self) -> i64 {
15323    // Safety:
15324    // Created from valid Table for this object
15325    // which contains a valid value in this slot
15326    unsafe { self._tab.get::<i64>(RandomOptions::VT_SEED2, Some(0)).unwrap()}
15327  }
15328}
15329
15330impl flatbuffers::Verifiable for RandomOptions<'_> {
15331  #[inline]
15332  fn run_verifier(
15333    v: &mut flatbuffers::Verifier, pos: usize
15334  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15335    use self::flatbuffers::Verifiable;
15336    v.visit_table(pos)?
15337     .visit_field::<i64>("seed", Self::VT_SEED, false)?
15338     .visit_field::<i64>("seed2", Self::VT_SEED2, false)?
15339     .finish();
15340    Ok(())
15341  }
15342}
15343pub struct RandomOptionsArgs {
15344    pub seed: i64,
15345    pub seed2: i64,
15346}
15347impl<'a> Default for RandomOptionsArgs {
15348  #[inline]
15349  fn default() -> Self {
15350    RandomOptionsArgs {
15351      seed: 0,
15352      seed2: 0,
15353    }
15354  }
15355}
15356
15357pub struct RandomOptionsBuilder<'a: 'b, 'b> {
15358  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15359  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15360}
15361impl<'a: 'b, 'b> RandomOptionsBuilder<'a, 'b> {
15362  #[inline]
15363  pub fn add_seed(&mut self, seed: i64) {
15364    self.fbb_.push_slot::<i64>(RandomOptions::VT_SEED, seed, 0);
15365  }
15366  #[inline]
15367  pub fn add_seed2(&mut self, seed2: i64) {
15368    self.fbb_.push_slot::<i64>(RandomOptions::VT_SEED2, seed2, 0);
15369  }
15370  #[inline]
15371  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RandomOptionsBuilder<'a, 'b> {
15372    let start = _fbb.start_table();
15373    RandomOptionsBuilder {
15374      fbb_: _fbb,
15375      start_: start,
15376    }
15377  }
15378  #[inline]
15379  pub fn finish(self) -> flatbuffers::WIPOffset<RandomOptions<'a>> {
15380    let o = self.fbb_.end_table(self.start_);
15381    flatbuffers::WIPOffset::new(o.value())
15382  }
15383}
15384
15385impl core::fmt::Debug for RandomOptions<'_> {
15386  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15387    let mut ds = f.debug_struct("RandomOptions");
15388      ds.field("seed", &self.seed());
15389      ds.field("seed2", &self.seed2());
15390      ds.finish()
15391  }
15392}
15393pub enum BucketizeOptionsOffset {}
15394#[derive(Copy, Clone, PartialEq)]
15395
15396pub struct BucketizeOptions<'a> {
15397  pub _tab: flatbuffers::Table<'a>,
15398}
15399
15400impl<'a> flatbuffers::Follow<'a> for BucketizeOptions<'a> {
15401  type Inner = BucketizeOptions<'a>;
15402  #[inline]
15403  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15404    Self { _tab: flatbuffers::Table::new(buf, loc) }
15405  }
15406}
15407
15408impl<'a> BucketizeOptions<'a> {
15409  pub const VT_BOUNDARIES: flatbuffers::VOffsetT = 4;
15410
15411  #[inline]
15412  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15413    BucketizeOptions { _tab: table }
15414  }
15415  #[allow(unused_mut)]
15416  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15417    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15418    args: &'args BucketizeOptionsArgs<'args>
15419  ) -> flatbuffers::WIPOffset<BucketizeOptions<'bldr>> {
15420    let mut builder = BucketizeOptionsBuilder::new(_fbb);
15421    if let Some(x) = args.boundaries { builder.add_boundaries(x); }
15422    builder.finish()
15423  }
15424
15425
15426  #[inline]
15427  pub fn boundaries(&self) -> Option<flatbuffers::Vector<'a, f32>> {
15428    // Safety:
15429    // Created from valid Table for this object
15430    // which contains a valid value in this slot
15431    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f32>>>(BucketizeOptions::VT_BOUNDARIES, None)}
15432  }
15433}
15434
15435impl flatbuffers::Verifiable for BucketizeOptions<'_> {
15436  #[inline]
15437  fn run_verifier(
15438    v: &mut flatbuffers::Verifier, pos: usize
15439  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15440    use self::flatbuffers::Verifiable;
15441    v.visit_table(pos)?
15442     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f32>>>("boundaries", Self::VT_BOUNDARIES, false)?
15443     .finish();
15444    Ok(())
15445  }
15446}
15447pub struct BucketizeOptionsArgs<'a> {
15448    pub boundaries: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f32>>>,
15449}
15450impl<'a> Default for BucketizeOptionsArgs<'a> {
15451  #[inline]
15452  fn default() -> Self {
15453    BucketizeOptionsArgs {
15454      boundaries: None,
15455    }
15456  }
15457}
15458
15459pub struct BucketizeOptionsBuilder<'a: 'b, 'b> {
15460  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15461  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15462}
15463impl<'a: 'b, 'b> BucketizeOptionsBuilder<'a, 'b> {
15464  #[inline]
15465  pub fn add_boundaries(&mut self, boundaries: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f32>>) {
15466    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(BucketizeOptions::VT_BOUNDARIES, boundaries);
15467  }
15468  #[inline]
15469  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BucketizeOptionsBuilder<'a, 'b> {
15470    let start = _fbb.start_table();
15471    BucketizeOptionsBuilder {
15472      fbb_: _fbb,
15473      start_: start,
15474    }
15475  }
15476  #[inline]
15477  pub fn finish(self) -> flatbuffers::WIPOffset<BucketizeOptions<'a>> {
15478    let o = self.fbb_.end_table(self.start_);
15479    flatbuffers::WIPOffset::new(o.value())
15480  }
15481}
15482
15483impl core::fmt::Debug for BucketizeOptions<'_> {
15484  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15485    let mut ds = f.debug_struct("BucketizeOptions");
15486      ds.field("boundaries", &self.boundaries());
15487      ds.finish()
15488  }
15489}
15490pub enum GeluOptionsOffset {}
15491#[derive(Copy, Clone, PartialEq)]
15492
15493pub struct GeluOptions<'a> {
15494  pub _tab: flatbuffers::Table<'a>,
15495}
15496
15497impl<'a> flatbuffers::Follow<'a> for GeluOptions<'a> {
15498  type Inner = GeluOptions<'a>;
15499  #[inline]
15500  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15501    Self { _tab: flatbuffers::Table::new(buf, loc) }
15502  }
15503}
15504
15505impl<'a> GeluOptions<'a> {
15506  pub const VT_APPROXIMATE: flatbuffers::VOffsetT = 4;
15507
15508  #[inline]
15509  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15510    GeluOptions { _tab: table }
15511  }
15512  #[allow(unused_mut)]
15513  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15514    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15515    args: &'args GeluOptionsArgs
15516  ) -> flatbuffers::WIPOffset<GeluOptions<'bldr>> {
15517    let mut builder = GeluOptionsBuilder::new(_fbb);
15518    builder.add_approximate(args.approximate);
15519    builder.finish()
15520  }
15521
15522
15523  #[inline]
15524  pub fn approximate(&self) -> bool {
15525    // Safety:
15526    // Created from valid Table for this object
15527    // which contains a valid value in this slot
15528    unsafe { self._tab.get::<bool>(GeluOptions::VT_APPROXIMATE, Some(false)).unwrap()}
15529  }
15530}
15531
15532impl flatbuffers::Verifiable for GeluOptions<'_> {
15533  #[inline]
15534  fn run_verifier(
15535    v: &mut flatbuffers::Verifier, pos: usize
15536  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15537    use self::flatbuffers::Verifiable;
15538    v.visit_table(pos)?
15539     .visit_field::<bool>("approximate", Self::VT_APPROXIMATE, false)?
15540     .finish();
15541    Ok(())
15542  }
15543}
15544pub struct GeluOptionsArgs {
15545    pub approximate: bool,
15546}
15547impl<'a> Default for GeluOptionsArgs {
15548  #[inline]
15549  fn default() -> Self {
15550    GeluOptionsArgs {
15551      approximate: false,
15552    }
15553  }
15554}
15555
15556pub struct GeluOptionsBuilder<'a: 'b, 'b> {
15557  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15558  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15559}
15560impl<'a: 'b, 'b> GeluOptionsBuilder<'a, 'b> {
15561  #[inline]
15562  pub fn add_approximate(&mut self, approximate: bool) {
15563    self.fbb_.push_slot::<bool>(GeluOptions::VT_APPROXIMATE, approximate, false);
15564  }
15565  #[inline]
15566  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> GeluOptionsBuilder<'a, 'b> {
15567    let start = _fbb.start_table();
15568    GeluOptionsBuilder {
15569      fbb_: _fbb,
15570      start_: start,
15571    }
15572  }
15573  #[inline]
15574  pub fn finish(self) -> flatbuffers::WIPOffset<GeluOptions<'a>> {
15575    let o = self.fbb_.end_table(self.start_);
15576    flatbuffers::WIPOffset::new(o.value())
15577  }
15578}
15579
15580impl core::fmt::Debug for GeluOptions<'_> {
15581  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15582    let mut ds = f.debug_struct("GeluOptions");
15583      ds.field("approximate", &self.approximate());
15584      ds.finish()
15585  }
15586}
15587pub enum DynamicUpdateSliceOptionsOffset {}
15588#[derive(Copy, Clone, PartialEq)]
15589
15590pub struct DynamicUpdateSliceOptions<'a> {
15591  pub _tab: flatbuffers::Table<'a>,
15592}
15593
15594impl<'a> flatbuffers::Follow<'a> for DynamicUpdateSliceOptions<'a> {
15595  type Inner = DynamicUpdateSliceOptions<'a>;
15596  #[inline]
15597  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15598    Self { _tab: flatbuffers::Table::new(buf, loc) }
15599  }
15600}
15601
15602impl<'a> DynamicUpdateSliceOptions<'a> {
15603
15604  #[inline]
15605  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15606    DynamicUpdateSliceOptions { _tab: table }
15607  }
15608  #[allow(unused_mut)]
15609  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15610    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15611    _args: &'args DynamicUpdateSliceOptionsArgs
15612  ) -> flatbuffers::WIPOffset<DynamicUpdateSliceOptions<'bldr>> {
15613    let mut builder = DynamicUpdateSliceOptionsBuilder::new(_fbb);
15614    builder.finish()
15615  }
15616
15617}
15618
15619impl flatbuffers::Verifiable for DynamicUpdateSliceOptions<'_> {
15620  #[inline]
15621  fn run_verifier(
15622    v: &mut flatbuffers::Verifier, pos: usize
15623  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15624    use self::flatbuffers::Verifiable;
15625    v.visit_table(pos)?
15626     .finish();
15627    Ok(())
15628  }
15629}
15630pub struct DynamicUpdateSliceOptionsArgs {
15631}
15632impl<'a> Default for DynamicUpdateSliceOptionsArgs {
15633  #[inline]
15634  fn default() -> Self {
15635    DynamicUpdateSliceOptionsArgs {
15636    }
15637  }
15638}
15639
15640pub struct DynamicUpdateSliceOptionsBuilder<'a: 'b, 'b> {
15641  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15642  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15643}
15644impl<'a: 'b, 'b> DynamicUpdateSliceOptionsBuilder<'a, 'b> {
15645  #[inline]
15646  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> DynamicUpdateSliceOptionsBuilder<'a, 'b> {
15647    let start = _fbb.start_table();
15648    DynamicUpdateSliceOptionsBuilder {
15649      fbb_: _fbb,
15650      start_: start,
15651    }
15652  }
15653  #[inline]
15654  pub fn finish(self) -> flatbuffers::WIPOffset<DynamicUpdateSliceOptions<'a>> {
15655    let o = self.fbb_.end_table(self.start_);
15656    flatbuffers::WIPOffset::new(o.value())
15657  }
15658}
15659
15660impl core::fmt::Debug for DynamicUpdateSliceOptions<'_> {
15661  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15662    let mut ds = f.debug_struct("DynamicUpdateSliceOptions");
15663      ds.finish()
15664  }
15665}
15666pub enum UnsortedSegmentProdOptionsOffset {}
15667#[derive(Copy, Clone, PartialEq)]
15668
15669pub struct UnsortedSegmentProdOptions<'a> {
15670  pub _tab: flatbuffers::Table<'a>,
15671}
15672
15673impl<'a> flatbuffers::Follow<'a> for UnsortedSegmentProdOptions<'a> {
15674  type Inner = UnsortedSegmentProdOptions<'a>;
15675  #[inline]
15676  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15677    Self { _tab: flatbuffers::Table::new(buf, loc) }
15678  }
15679}
15680
15681impl<'a> UnsortedSegmentProdOptions<'a> {
15682
15683  #[inline]
15684  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15685    UnsortedSegmentProdOptions { _tab: table }
15686  }
15687  #[allow(unused_mut)]
15688  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15689    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15690    _args: &'args UnsortedSegmentProdOptionsArgs
15691  ) -> flatbuffers::WIPOffset<UnsortedSegmentProdOptions<'bldr>> {
15692    let mut builder = UnsortedSegmentProdOptionsBuilder::new(_fbb);
15693    builder.finish()
15694  }
15695
15696}
15697
15698impl flatbuffers::Verifiable for UnsortedSegmentProdOptions<'_> {
15699  #[inline]
15700  fn run_verifier(
15701    v: &mut flatbuffers::Verifier, pos: usize
15702  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15703    use self::flatbuffers::Verifiable;
15704    v.visit_table(pos)?
15705     .finish();
15706    Ok(())
15707  }
15708}
15709pub struct UnsortedSegmentProdOptionsArgs {
15710}
15711impl<'a> Default for UnsortedSegmentProdOptionsArgs {
15712  #[inline]
15713  fn default() -> Self {
15714    UnsortedSegmentProdOptionsArgs {
15715    }
15716  }
15717}
15718
15719pub struct UnsortedSegmentProdOptionsBuilder<'a: 'b, 'b> {
15720  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15721  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15722}
15723impl<'a: 'b, 'b> UnsortedSegmentProdOptionsBuilder<'a, 'b> {
15724  #[inline]
15725  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnsortedSegmentProdOptionsBuilder<'a, 'b> {
15726    let start = _fbb.start_table();
15727    UnsortedSegmentProdOptionsBuilder {
15728      fbb_: _fbb,
15729      start_: start,
15730    }
15731  }
15732  #[inline]
15733  pub fn finish(self) -> flatbuffers::WIPOffset<UnsortedSegmentProdOptions<'a>> {
15734    let o = self.fbb_.end_table(self.start_);
15735    flatbuffers::WIPOffset::new(o.value())
15736  }
15737}
15738
15739impl core::fmt::Debug for UnsortedSegmentProdOptions<'_> {
15740  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15741    let mut ds = f.debug_struct("UnsortedSegmentProdOptions");
15742      ds.finish()
15743  }
15744}
15745pub enum UnsortedSegmentMaxOptionsOffset {}
15746#[derive(Copy, Clone, PartialEq)]
15747
15748pub struct UnsortedSegmentMaxOptions<'a> {
15749  pub _tab: flatbuffers::Table<'a>,
15750}
15751
15752impl<'a> flatbuffers::Follow<'a> for UnsortedSegmentMaxOptions<'a> {
15753  type Inner = UnsortedSegmentMaxOptions<'a>;
15754  #[inline]
15755  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15756    Self { _tab: flatbuffers::Table::new(buf, loc) }
15757  }
15758}
15759
15760impl<'a> UnsortedSegmentMaxOptions<'a> {
15761
15762  #[inline]
15763  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15764    UnsortedSegmentMaxOptions { _tab: table }
15765  }
15766  #[allow(unused_mut)]
15767  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15768    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15769    _args: &'args UnsortedSegmentMaxOptionsArgs
15770  ) -> flatbuffers::WIPOffset<UnsortedSegmentMaxOptions<'bldr>> {
15771    let mut builder = UnsortedSegmentMaxOptionsBuilder::new(_fbb);
15772    builder.finish()
15773  }
15774
15775}
15776
15777impl flatbuffers::Verifiable for UnsortedSegmentMaxOptions<'_> {
15778  #[inline]
15779  fn run_verifier(
15780    v: &mut flatbuffers::Verifier, pos: usize
15781  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15782    use self::flatbuffers::Verifiable;
15783    v.visit_table(pos)?
15784     .finish();
15785    Ok(())
15786  }
15787}
15788pub struct UnsortedSegmentMaxOptionsArgs {
15789}
15790impl<'a> Default for UnsortedSegmentMaxOptionsArgs {
15791  #[inline]
15792  fn default() -> Self {
15793    UnsortedSegmentMaxOptionsArgs {
15794    }
15795  }
15796}
15797
15798pub struct UnsortedSegmentMaxOptionsBuilder<'a: 'b, 'b> {
15799  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15800  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15801}
15802impl<'a: 'b, 'b> UnsortedSegmentMaxOptionsBuilder<'a, 'b> {
15803  #[inline]
15804  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnsortedSegmentMaxOptionsBuilder<'a, 'b> {
15805    let start = _fbb.start_table();
15806    UnsortedSegmentMaxOptionsBuilder {
15807      fbb_: _fbb,
15808      start_: start,
15809    }
15810  }
15811  #[inline]
15812  pub fn finish(self) -> flatbuffers::WIPOffset<UnsortedSegmentMaxOptions<'a>> {
15813    let o = self.fbb_.end_table(self.start_);
15814    flatbuffers::WIPOffset::new(o.value())
15815  }
15816}
15817
15818impl core::fmt::Debug for UnsortedSegmentMaxOptions<'_> {
15819  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15820    let mut ds = f.debug_struct("UnsortedSegmentMaxOptions");
15821      ds.finish()
15822  }
15823}
15824pub enum UnsortedSegmentSumOptionsOffset {}
15825#[derive(Copy, Clone, PartialEq)]
15826
15827pub struct UnsortedSegmentSumOptions<'a> {
15828  pub _tab: flatbuffers::Table<'a>,
15829}
15830
15831impl<'a> flatbuffers::Follow<'a> for UnsortedSegmentSumOptions<'a> {
15832  type Inner = UnsortedSegmentSumOptions<'a>;
15833  #[inline]
15834  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15835    Self { _tab: flatbuffers::Table::new(buf, loc) }
15836  }
15837}
15838
15839impl<'a> UnsortedSegmentSumOptions<'a> {
15840
15841  #[inline]
15842  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15843    UnsortedSegmentSumOptions { _tab: table }
15844  }
15845  #[allow(unused_mut)]
15846  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15847    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15848    _args: &'args UnsortedSegmentSumOptionsArgs
15849  ) -> flatbuffers::WIPOffset<UnsortedSegmentSumOptions<'bldr>> {
15850    let mut builder = UnsortedSegmentSumOptionsBuilder::new(_fbb);
15851    builder.finish()
15852  }
15853
15854}
15855
15856impl flatbuffers::Verifiable for UnsortedSegmentSumOptions<'_> {
15857  #[inline]
15858  fn run_verifier(
15859    v: &mut flatbuffers::Verifier, pos: usize
15860  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15861    use self::flatbuffers::Verifiable;
15862    v.visit_table(pos)?
15863     .finish();
15864    Ok(())
15865  }
15866}
15867pub struct UnsortedSegmentSumOptionsArgs {
15868}
15869impl<'a> Default for UnsortedSegmentSumOptionsArgs {
15870  #[inline]
15871  fn default() -> Self {
15872    UnsortedSegmentSumOptionsArgs {
15873    }
15874  }
15875}
15876
15877pub struct UnsortedSegmentSumOptionsBuilder<'a: 'b, 'b> {
15878  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15879  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15880}
15881impl<'a: 'b, 'b> UnsortedSegmentSumOptionsBuilder<'a, 'b> {
15882  #[inline]
15883  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnsortedSegmentSumOptionsBuilder<'a, 'b> {
15884    let start = _fbb.start_table();
15885    UnsortedSegmentSumOptionsBuilder {
15886      fbb_: _fbb,
15887      start_: start,
15888    }
15889  }
15890  #[inline]
15891  pub fn finish(self) -> flatbuffers::WIPOffset<UnsortedSegmentSumOptions<'a>> {
15892    let o = self.fbb_.end_table(self.start_);
15893    flatbuffers::WIPOffset::new(o.value())
15894  }
15895}
15896
15897impl core::fmt::Debug for UnsortedSegmentSumOptions<'_> {
15898  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15899    let mut ds = f.debug_struct("UnsortedSegmentSumOptions");
15900      ds.finish()
15901  }
15902}
15903pub enum ATan2OptionsOffset {}
15904#[derive(Copy, Clone, PartialEq)]
15905
15906pub struct ATan2Options<'a> {
15907  pub _tab: flatbuffers::Table<'a>,
15908}
15909
15910impl<'a> flatbuffers::Follow<'a> for ATan2Options<'a> {
15911  type Inner = ATan2Options<'a>;
15912  #[inline]
15913  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15914    Self { _tab: flatbuffers::Table::new(buf, loc) }
15915  }
15916}
15917
15918impl<'a> ATan2Options<'a> {
15919
15920  #[inline]
15921  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15922    ATan2Options { _tab: table }
15923  }
15924  #[allow(unused_mut)]
15925  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
15926    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
15927    _args: &'args ATan2OptionsArgs
15928  ) -> flatbuffers::WIPOffset<ATan2Options<'bldr>> {
15929    let mut builder = ATan2OptionsBuilder::new(_fbb);
15930    builder.finish()
15931  }
15932
15933}
15934
15935impl flatbuffers::Verifiable for ATan2Options<'_> {
15936  #[inline]
15937  fn run_verifier(
15938    v: &mut flatbuffers::Verifier, pos: usize
15939  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15940    use self::flatbuffers::Verifiable;
15941    v.visit_table(pos)?
15942     .finish();
15943    Ok(())
15944  }
15945}
15946pub struct ATan2OptionsArgs {
15947}
15948impl<'a> Default for ATan2OptionsArgs {
15949  #[inline]
15950  fn default() -> Self {
15951    ATan2OptionsArgs {
15952    }
15953  }
15954}
15955
15956pub struct ATan2OptionsBuilder<'a: 'b, 'b> {
15957  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
15958  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15959}
15960impl<'a: 'b, 'b> ATan2OptionsBuilder<'a, 'b> {
15961  #[inline]
15962  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ATan2OptionsBuilder<'a, 'b> {
15963    let start = _fbb.start_table();
15964    ATan2OptionsBuilder {
15965      fbb_: _fbb,
15966      start_: start,
15967    }
15968  }
15969  #[inline]
15970  pub fn finish(self) -> flatbuffers::WIPOffset<ATan2Options<'a>> {
15971    let o = self.fbb_.end_table(self.start_);
15972    flatbuffers::WIPOffset::new(o.value())
15973  }
15974}
15975
15976impl core::fmt::Debug for ATan2Options<'_> {
15977  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15978    let mut ds = f.debug_struct("ATan2Options");
15979      ds.finish()
15980  }
15981}
15982pub enum UnsortedSegmentMinOptionsOffset {}
15983#[derive(Copy, Clone, PartialEq)]
15984
15985pub struct UnsortedSegmentMinOptions<'a> {
15986  pub _tab: flatbuffers::Table<'a>,
15987}
15988
15989impl<'a> flatbuffers::Follow<'a> for UnsortedSegmentMinOptions<'a> {
15990  type Inner = UnsortedSegmentMinOptions<'a>;
15991  #[inline]
15992  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15993    Self { _tab: flatbuffers::Table::new(buf, loc) }
15994  }
15995}
15996
15997impl<'a> UnsortedSegmentMinOptions<'a> {
15998
15999  #[inline]
16000  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16001    UnsortedSegmentMinOptions { _tab: table }
16002  }
16003  #[allow(unused_mut)]
16004  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16005    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16006    _args: &'args UnsortedSegmentMinOptionsArgs
16007  ) -> flatbuffers::WIPOffset<UnsortedSegmentMinOptions<'bldr>> {
16008    let mut builder = UnsortedSegmentMinOptionsBuilder::new(_fbb);
16009    builder.finish()
16010  }
16011
16012}
16013
16014impl flatbuffers::Verifiable for UnsortedSegmentMinOptions<'_> {
16015  #[inline]
16016  fn run_verifier(
16017    v: &mut flatbuffers::Verifier, pos: usize
16018  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16019    use self::flatbuffers::Verifiable;
16020    v.visit_table(pos)?
16021     .finish();
16022    Ok(())
16023  }
16024}
16025pub struct UnsortedSegmentMinOptionsArgs {
16026}
16027impl<'a> Default for UnsortedSegmentMinOptionsArgs {
16028  #[inline]
16029  fn default() -> Self {
16030    UnsortedSegmentMinOptionsArgs {
16031    }
16032  }
16033}
16034
16035pub struct UnsortedSegmentMinOptionsBuilder<'a: 'b, 'b> {
16036  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16037  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16038}
16039impl<'a: 'b, 'b> UnsortedSegmentMinOptionsBuilder<'a, 'b> {
16040  #[inline]
16041  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> UnsortedSegmentMinOptionsBuilder<'a, 'b> {
16042    let start = _fbb.start_table();
16043    UnsortedSegmentMinOptionsBuilder {
16044      fbb_: _fbb,
16045      start_: start,
16046    }
16047  }
16048  #[inline]
16049  pub fn finish(self) -> flatbuffers::WIPOffset<UnsortedSegmentMinOptions<'a>> {
16050    let o = self.fbb_.end_table(self.start_);
16051    flatbuffers::WIPOffset::new(o.value())
16052  }
16053}
16054
16055impl core::fmt::Debug for UnsortedSegmentMinOptions<'_> {
16056  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16057    let mut ds = f.debug_struct("UnsortedSegmentMinOptions");
16058      ds.finish()
16059  }
16060}
16061pub enum SignOptionsOffset {}
16062#[derive(Copy, Clone, PartialEq)]
16063
16064pub struct SignOptions<'a> {
16065  pub _tab: flatbuffers::Table<'a>,
16066}
16067
16068impl<'a> flatbuffers::Follow<'a> for SignOptions<'a> {
16069  type Inner = SignOptions<'a>;
16070  #[inline]
16071  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16072    Self { _tab: flatbuffers::Table::new(buf, loc) }
16073  }
16074}
16075
16076impl<'a> SignOptions<'a> {
16077
16078  #[inline]
16079  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16080    SignOptions { _tab: table }
16081  }
16082  #[allow(unused_mut)]
16083  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16084    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16085    _args: &'args SignOptionsArgs
16086  ) -> flatbuffers::WIPOffset<SignOptions<'bldr>> {
16087    let mut builder = SignOptionsBuilder::new(_fbb);
16088    builder.finish()
16089  }
16090
16091}
16092
16093impl flatbuffers::Verifiable for SignOptions<'_> {
16094  #[inline]
16095  fn run_verifier(
16096    v: &mut flatbuffers::Verifier, pos: usize
16097  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16098    use self::flatbuffers::Verifiable;
16099    v.visit_table(pos)?
16100     .finish();
16101    Ok(())
16102  }
16103}
16104pub struct SignOptionsArgs {
16105}
16106impl<'a> Default for SignOptionsArgs {
16107  #[inline]
16108  fn default() -> Self {
16109    SignOptionsArgs {
16110    }
16111  }
16112}
16113
16114pub struct SignOptionsBuilder<'a: 'b, 'b> {
16115  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16116  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16117}
16118impl<'a: 'b, 'b> SignOptionsBuilder<'a, 'b> {
16119  #[inline]
16120  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SignOptionsBuilder<'a, 'b> {
16121    let start = _fbb.start_table();
16122    SignOptionsBuilder {
16123      fbb_: _fbb,
16124      start_: start,
16125    }
16126  }
16127  #[inline]
16128  pub fn finish(self) -> flatbuffers::WIPOffset<SignOptions<'a>> {
16129    let o = self.fbb_.end_table(self.start_);
16130    flatbuffers::WIPOffset::new(o.value())
16131  }
16132}
16133
16134impl core::fmt::Debug for SignOptions<'_> {
16135  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16136    let mut ds = f.debug_struct("SignOptions");
16137      ds.finish()
16138  }
16139}
16140pub enum BitcastOptionsOffset {}
16141#[derive(Copy, Clone, PartialEq)]
16142
16143pub struct BitcastOptions<'a> {
16144  pub _tab: flatbuffers::Table<'a>,
16145}
16146
16147impl<'a> flatbuffers::Follow<'a> for BitcastOptions<'a> {
16148  type Inner = BitcastOptions<'a>;
16149  #[inline]
16150  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16151    Self { _tab: flatbuffers::Table::new(buf, loc) }
16152  }
16153}
16154
16155impl<'a> BitcastOptions<'a> {
16156
16157  #[inline]
16158  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16159    BitcastOptions { _tab: table }
16160  }
16161  #[allow(unused_mut)]
16162  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16163    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16164    _args: &'args BitcastOptionsArgs
16165  ) -> flatbuffers::WIPOffset<BitcastOptions<'bldr>> {
16166    let mut builder = BitcastOptionsBuilder::new(_fbb);
16167    builder.finish()
16168  }
16169
16170}
16171
16172impl flatbuffers::Verifiable for BitcastOptions<'_> {
16173  #[inline]
16174  fn run_verifier(
16175    v: &mut flatbuffers::Verifier, pos: usize
16176  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16177    use self::flatbuffers::Verifiable;
16178    v.visit_table(pos)?
16179     .finish();
16180    Ok(())
16181  }
16182}
16183pub struct BitcastOptionsArgs {
16184}
16185impl<'a> Default for BitcastOptionsArgs {
16186  #[inline]
16187  fn default() -> Self {
16188    BitcastOptionsArgs {
16189    }
16190  }
16191}
16192
16193pub struct BitcastOptionsBuilder<'a: 'b, 'b> {
16194  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16195  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16196}
16197impl<'a: 'b, 'b> BitcastOptionsBuilder<'a, 'b> {
16198  #[inline]
16199  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BitcastOptionsBuilder<'a, 'b> {
16200    let start = _fbb.start_table();
16201    BitcastOptionsBuilder {
16202      fbb_: _fbb,
16203      start_: start,
16204    }
16205  }
16206  #[inline]
16207  pub fn finish(self) -> flatbuffers::WIPOffset<BitcastOptions<'a>> {
16208    let o = self.fbb_.end_table(self.start_);
16209    flatbuffers::WIPOffset::new(o.value())
16210  }
16211}
16212
16213impl core::fmt::Debug for BitcastOptions<'_> {
16214  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16215    let mut ds = f.debug_struct("BitcastOptions");
16216      ds.finish()
16217  }
16218}
16219pub enum BitwiseXorOptionsOffset {}
16220#[derive(Copy, Clone, PartialEq)]
16221
16222pub struct BitwiseXorOptions<'a> {
16223  pub _tab: flatbuffers::Table<'a>,
16224}
16225
16226impl<'a> flatbuffers::Follow<'a> for BitwiseXorOptions<'a> {
16227  type Inner = BitwiseXorOptions<'a>;
16228  #[inline]
16229  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16230    Self { _tab: flatbuffers::Table::new(buf, loc) }
16231  }
16232}
16233
16234impl<'a> BitwiseXorOptions<'a> {
16235
16236  #[inline]
16237  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16238    BitwiseXorOptions { _tab: table }
16239  }
16240  #[allow(unused_mut)]
16241  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16242    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16243    _args: &'args BitwiseXorOptionsArgs
16244  ) -> flatbuffers::WIPOffset<BitwiseXorOptions<'bldr>> {
16245    let mut builder = BitwiseXorOptionsBuilder::new(_fbb);
16246    builder.finish()
16247  }
16248
16249}
16250
16251impl flatbuffers::Verifiable for BitwiseXorOptions<'_> {
16252  #[inline]
16253  fn run_verifier(
16254    v: &mut flatbuffers::Verifier, pos: usize
16255  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16256    use self::flatbuffers::Verifiable;
16257    v.visit_table(pos)?
16258     .finish();
16259    Ok(())
16260  }
16261}
16262pub struct BitwiseXorOptionsArgs {
16263}
16264impl<'a> Default for BitwiseXorOptionsArgs {
16265  #[inline]
16266  fn default() -> Self {
16267    BitwiseXorOptionsArgs {
16268    }
16269  }
16270}
16271
16272pub struct BitwiseXorOptionsBuilder<'a: 'b, 'b> {
16273  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16274  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16275}
16276impl<'a: 'b, 'b> BitwiseXorOptionsBuilder<'a, 'b> {
16277  #[inline]
16278  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BitwiseXorOptionsBuilder<'a, 'b> {
16279    let start = _fbb.start_table();
16280    BitwiseXorOptionsBuilder {
16281      fbb_: _fbb,
16282      start_: start,
16283    }
16284  }
16285  #[inline]
16286  pub fn finish(self) -> flatbuffers::WIPOffset<BitwiseXorOptions<'a>> {
16287    let o = self.fbb_.end_table(self.start_);
16288    flatbuffers::WIPOffset::new(o.value())
16289  }
16290}
16291
16292impl core::fmt::Debug for BitwiseXorOptions<'_> {
16293  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16294    let mut ds = f.debug_struct("BitwiseXorOptions");
16295      ds.finish()
16296  }
16297}
16298pub enum RightShiftOptionsOffset {}
16299#[derive(Copy, Clone, PartialEq)]
16300
16301pub struct RightShiftOptions<'a> {
16302  pub _tab: flatbuffers::Table<'a>,
16303}
16304
16305impl<'a> flatbuffers::Follow<'a> for RightShiftOptions<'a> {
16306  type Inner = RightShiftOptions<'a>;
16307  #[inline]
16308  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16309    Self { _tab: flatbuffers::Table::new(buf, loc) }
16310  }
16311}
16312
16313impl<'a> RightShiftOptions<'a> {
16314
16315  #[inline]
16316  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16317    RightShiftOptions { _tab: table }
16318  }
16319  #[allow(unused_mut)]
16320  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16321    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16322    _args: &'args RightShiftOptionsArgs
16323  ) -> flatbuffers::WIPOffset<RightShiftOptions<'bldr>> {
16324    let mut builder = RightShiftOptionsBuilder::new(_fbb);
16325    builder.finish()
16326  }
16327
16328}
16329
16330impl flatbuffers::Verifiable for RightShiftOptions<'_> {
16331  #[inline]
16332  fn run_verifier(
16333    v: &mut flatbuffers::Verifier, pos: usize
16334  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16335    use self::flatbuffers::Verifiable;
16336    v.visit_table(pos)?
16337     .finish();
16338    Ok(())
16339  }
16340}
16341pub struct RightShiftOptionsArgs {
16342}
16343impl<'a> Default for RightShiftOptionsArgs {
16344  #[inline]
16345  fn default() -> Self {
16346    RightShiftOptionsArgs {
16347    }
16348  }
16349}
16350
16351pub struct RightShiftOptionsBuilder<'a: 'b, 'b> {
16352  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16353  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16354}
16355impl<'a: 'b, 'b> RightShiftOptionsBuilder<'a, 'b> {
16356  #[inline]
16357  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> RightShiftOptionsBuilder<'a, 'b> {
16358    let start = _fbb.start_table();
16359    RightShiftOptionsBuilder {
16360      fbb_: _fbb,
16361      start_: start,
16362    }
16363  }
16364  #[inline]
16365  pub fn finish(self) -> flatbuffers::WIPOffset<RightShiftOptions<'a>> {
16366    let o = self.fbb_.end_table(self.start_);
16367    flatbuffers::WIPOffset::new(o.value())
16368  }
16369}
16370
16371impl core::fmt::Debug for RightShiftOptions<'_> {
16372  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16373    let mut ds = f.debug_struct("RightShiftOptions");
16374      ds.finish()
16375  }
16376}
16377pub enum OperatorCodeOffset {}
16378#[derive(Copy, Clone, PartialEq)]
16379
16380pub struct OperatorCode<'a> {
16381  pub _tab: flatbuffers::Table<'a>,
16382}
16383
16384impl<'a> flatbuffers::Follow<'a> for OperatorCode<'a> {
16385  type Inner = OperatorCode<'a>;
16386  #[inline]
16387  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16388    Self { _tab: flatbuffers::Table::new(buf, loc) }
16389  }
16390}
16391
16392impl<'a> OperatorCode<'a> {
16393  pub const VT_DEPRECATED_BUILTIN_CODE: flatbuffers::VOffsetT = 4;
16394  pub const VT_CUSTOM_CODE: flatbuffers::VOffsetT = 6;
16395  pub const VT_VERSION: flatbuffers::VOffsetT = 8;
16396  pub const VT_BUILTIN_CODE: flatbuffers::VOffsetT = 10;
16397
16398  #[inline]
16399  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16400    OperatorCode { _tab: table }
16401  }
16402  #[allow(unused_mut)]
16403  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16404    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16405    args: &'args OperatorCodeArgs<'args>
16406  ) -> flatbuffers::WIPOffset<OperatorCode<'bldr>> {
16407    let mut builder = OperatorCodeBuilder::new(_fbb);
16408    builder.add_builtin_code(args.builtin_code);
16409    builder.add_version(args.version);
16410    if let Some(x) = args.custom_code { builder.add_custom_code(x); }
16411    builder.add_deprecated_builtin_code(args.deprecated_builtin_code);
16412    builder.finish()
16413  }
16414
16415
16416  #[inline]
16417  pub fn deprecated_builtin_code(&self) -> i8 {
16418    // Safety:
16419    // Created from valid Table for this object
16420    // which contains a valid value in this slot
16421    unsafe { self._tab.get::<i8>(OperatorCode::VT_DEPRECATED_BUILTIN_CODE, Some(0)).unwrap()}
16422  }
16423  #[inline]
16424  pub fn custom_code(&self) -> Option<&'a str> {
16425    // Safety:
16426    // Created from valid Table for this object
16427    // which contains a valid value in this slot
16428    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(OperatorCode::VT_CUSTOM_CODE, None)}
16429  }
16430  #[inline]
16431  pub fn version(&self) -> i32 {
16432    // Safety:
16433    // Created from valid Table for this object
16434    // which contains a valid value in this slot
16435    unsafe { self._tab.get::<i32>(OperatorCode::VT_VERSION, Some(1)).unwrap()}
16436  }
16437  #[inline]
16438  pub fn builtin_code(&self) -> BuiltinOperator {
16439    // Safety:
16440    // Created from valid Table for this object
16441    // which contains a valid value in this slot
16442    unsafe { self._tab.get::<BuiltinOperator>(OperatorCode::VT_BUILTIN_CODE, Some(BuiltinOperator::ADD)).unwrap()}
16443  }
16444}
16445
16446impl flatbuffers::Verifiable for OperatorCode<'_> {
16447  #[inline]
16448  fn run_verifier(
16449    v: &mut flatbuffers::Verifier, pos: usize
16450  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16451    use self::flatbuffers::Verifiable;
16452    v.visit_table(pos)?
16453     .visit_field::<i8>("deprecated_builtin_code", Self::VT_DEPRECATED_BUILTIN_CODE, false)?
16454     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("custom_code", Self::VT_CUSTOM_CODE, false)?
16455     .visit_field::<i32>("version", Self::VT_VERSION, false)?
16456     .visit_field::<BuiltinOperator>("builtin_code", Self::VT_BUILTIN_CODE, false)?
16457     .finish();
16458    Ok(())
16459  }
16460}
16461pub struct OperatorCodeArgs<'a> {
16462    pub deprecated_builtin_code: i8,
16463    pub custom_code: Option<flatbuffers::WIPOffset<&'a str>>,
16464    pub version: i32,
16465    pub builtin_code: BuiltinOperator,
16466}
16467impl<'a> Default for OperatorCodeArgs<'a> {
16468  #[inline]
16469  fn default() -> Self {
16470    OperatorCodeArgs {
16471      deprecated_builtin_code: 0,
16472      custom_code: None,
16473      version: 1,
16474      builtin_code: BuiltinOperator::ADD,
16475    }
16476  }
16477}
16478
16479pub struct OperatorCodeBuilder<'a: 'b, 'b> {
16480  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
16481  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16482}
16483impl<'a: 'b, 'b> OperatorCodeBuilder<'a, 'b> {
16484  #[inline]
16485  pub fn add_deprecated_builtin_code(&mut self, deprecated_builtin_code: i8) {
16486    self.fbb_.push_slot::<i8>(OperatorCode::VT_DEPRECATED_BUILTIN_CODE, deprecated_builtin_code, 0);
16487  }
16488  #[inline]
16489  pub fn add_custom_code(&mut self, custom_code: flatbuffers::WIPOffset<&'b  str>) {
16490    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(OperatorCode::VT_CUSTOM_CODE, custom_code);
16491  }
16492  #[inline]
16493  pub fn add_version(&mut self, version: i32) {
16494    self.fbb_.push_slot::<i32>(OperatorCode::VT_VERSION, version, 1);
16495  }
16496  #[inline]
16497  pub fn add_builtin_code(&mut self, builtin_code: BuiltinOperator) {
16498    self.fbb_.push_slot::<BuiltinOperator>(OperatorCode::VT_BUILTIN_CODE, builtin_code, BuiltinOperator::ADD);
16499  }
16500  #[inline]
16501  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> OperatorCodeBuilder<'a, 'b> {
16502    let start = _fbb.start_table();
16503    OperatorCodeBuilder {
16504      fbb_: _fbb,
16505      start_: start,
16506    }
16507  }
16508  #[inline]
16509  pub fn finish(self) -> flatbuffers::WIPOffset<OperatorCode<'a>> {
16510    let o = self.fbb_.end_table(self.start_);
16511    flatbuffers::WIPOffset::new(o.value())
16512  }
16513}
16514
16515impl core::fmt::Debug for OperatorCode<'_> {
16516  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16517    let mut ds = f.debug_struct("OperatorCode");
16518      ds.field("deprecated_builtin_code", &self.deprecated_builtin_code());
16519      ds.field("custom_code", &self.custom_code());
16520      ds.field("version", &self.version());
16521      ds.field("builtin_code", &self.builtin_code());
16522      ds.finish()
16523  }
16524}
16525pub enum OperatorOffset {}
16526#[derive(Copy, Clone, PartialEq)]
16527
16528pub struct Operator<'a> {
16529  pub _tab: flatbuffers::Table<'a>,
16530}
16531
16532impl<'a> flatbuffers::Follow<'a> for Operator<'a> {
16533  type Inner = Operator<'a>;
16534  #[inline]
16535  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16536    Self { _tab: flatbuffers::Table::new(buf, loc) }
16537  }
16538}
16539
16540impl<'a> Operator<'a> {
16541  pub const VT_OPCODE_INDEX: flatbuffers::VOffsetT = 4;
16542  pub const VT_INPUTS: flatbuffers::VOffsetT = 6;
16543  pub const VT_OUTPUTS: flatbuffers::VOffsetT = 8;
16544  pub const VT_BUILTIN_OPTIONS_TYPE: flatbuffers::VOffsetT = 10;
16545  pub const VT_BUILTIN_OPTIONS: flatbuffers::VOffsetT = 12;
16546  pub const VT_CUSTOM_OPTIONS: flatbuffers::VOffsetT = 14;
16547  pub const VT_CUSTOM_OPTIONS_FORMAT: flatbuffers::VOffsetT = 16;
16548  pub const VT_MUTATING_VARIABLE_INPUTS: flatbuffers::VOffsetT = 18;
16549  pub const VT_INTERMEDIATES: flatbuffers::VOffsetT = 20;
16550
16551  #[inline]
16552  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16553    Operator { _tab: table }
16554  }
16555  #[allow(unused_mut)]
16556  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
16557    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
16558    args: &'args OperatorArgs<'args>
16559  ) -> flatbuffers::WIPOffset<Operator<'bldr>> {
16560    let mut builder = OperatorBuilder::new(_fbb);
16561    if let Some(x) = args.intermediates { builder.add_intermediates(x); }
16562    if let Some(x) = args.mutating_variable_inputs { builder.add_mutating_variable_inputs(x); }
16563    if let Some(x) = args.custom_options { builder.add_custom_options(x); }
16564    if let Some(x) = args.builtin_options { builder.add_builtin_options(x); }
16565    if let Some(x) = args.outputs { builder.add_outputs(x); }
16566    if let Some(x) = args.inputs { builder.add_inputs(x); }
16567    builder.add_opcode_index(args.opcode_index);
16568    builder.add_custom_options_format(args.custom_options_format);
16569    builder.add_builtin_options_type(args.builtin_options_type);
16570    builder.finish()
16571  }
16572
16573
16574  #[inline]
16575  pub fn opcode_index(&self) -> u32 {
16576    // Safety:
16577    // Created from valid Table for this object
16578    // which contains a valid value in this slot
16579    unsafe { self._tab.get::<u32>(Operator::VT_OPCODE_INDEX, Some(0)).unwrap()}
16580  }
16581  #[inline]
16582  pub fn inputs(&self) -> Option<flatbuffers::Vector<'a, i32>> {
16583    // Safety:
16584    // Created from valid Table for this object
16585    // which contains a valid value in this slot
16586    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Operator::VT_INPUTS, None)}
16587  }
16588  #[inline]
16589  pub fn outputs(&self) -> Option<flatbuffers::Vector<'a, i32>> {
16590    // Safety:
16591    // Created from valid Table for this object
16592    // which contains a valid value in this slot
16593    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Operator::VT_OUTPUTS, None)}
16594  }
16595  #[inline]
16596  pub fn builtin_options_type(&self) -> BuiltinOptions {
16597    // Safety:
16598    // Created from valid Table for this object
16599    // which contains a valid value in this slot
16600    unsafe { self._tab.get::<BuiltinOptions>(Operator::VT_BUILTIN_OPTIONS_TYPE, Some(BuiltinOptions::NONE)).unwrap()}
16601  }
16602  #[inline]
16603  pub fn builtin_options(&self) -> Option<flatbuffers::Table<'a>> {
16604    // Safety:
16605    // Created from valid Table for this object
16606    // which contains a valid value in this slot
16607    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(Operator::VT_BUILTIN_OPTIONS, None)}
16608  }
16609  #[inline]
16610  pub fn custom_options(&self) -> Option<flatbuffers::Vector<'a, u8>> {
16611    // Safety:
16612    // Created from valid Table for this object
16613    // which contains a valid value in this slot
16614    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(Operator::VT_CUSTOM_OPTIONS, None)}
16615  }
16616  #[inline]
16617  pub fn custom_options_format(&self) -> CustomOptionsFormat {
16618    // Safety:
16619    // Created from valid Table for this object
16620    // which contains a valid value in this slot
16621    unsafe { self._tab.get::<CustomOptionsFormat>(Operator::VT_CUSTOM_OPTIONS_FORMAT, Some(CustomOptionsFormat::FLEXBUFFERS)).unwrap()}
16622  }
16623  #[inline]
16624  pub fn mutating_variable_inputs(&self) -> Option<flatbuffers::Vector<'a, bool>> {
16625    // Safety:
16626    // Created from valid Table for this object
16627    // which contains a valid value in this slot
16628    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, bool>>>(Operator::VT_MUTATING_VARIABLE_INPUTS, None)}
16629  }
16630  #[inline]
16631  pub fn intermediates(&self) -> Option<flatbuffers::Vector<'a, i32>> {
16632    // Safety:
16633    // Created from valid Table for this object
16634    // which contains a valid value in this slot
16635    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Operator::VT_INTERMEDIATES, None)}
16636  }
16637  #[inline]
16638  #[allow(non_snake_case)]
16639  pub fn builtin_options_as_conv_2_doptions(&self) -> Option<Conv2DOptions<'a>> {
16640    if self.builtin_options_type() == BuiltinOptions::Conv2DOptions {
16641      self.builtin_options().map(|t| {
16642       // Safety:
16643       // Created from a valid Table for this object
16644       // Which contains a valid union in this slot
16645       unsafe { Conv2DOptions::init_from_table(t) }
16646     })
16647    } else {
16648      None
16649    }
16650  }
16651
16652  #[inline]
16653  #[allow(non_snake_case)]
16654  pub fn builtin_options_as_depthwise_conv_2_doptions(&self) -> Option<DepthwiseConv2DOptions<'a>> {
16655    if self.builtin_options_type() == BuiltinOptions::DepthwiseConv2DOptions {
16656      self.builtin_options().map(|t| {
16657       // Safety:
16658       // Created from a valid Table for this object
16659       // Which contains a valid union in this slot
16660       unsafe { DepthwiseConv2DOptions::init_from_table(t) }
16661     })
16662    } else {
16663      None
16664    }
16665  }
16666
16667  #[inline]
16668  #[allow(non_snake_case)]
16669  pub fn builtin_options_as_concat_embeddings_options(&self) -> Option<ConcatEmbeddingsOptions<'a>> {
16670    if self.builtin_options_type() == BuiltinOptions::ConcatEmbeddingsOptions {
16671      self.builtin_options().map(|t| {
16672       // Safety:
16673       // Created from a valid Table for this object
16674       // Which contains a valid union in this slot
16675       unsafe { ConcatEmbeddingsOptions::init_from_table(t) }
16676     })
16677    } else {
16678      None
16679    }
16680  }
16681
16682  #[inline]
16683  #[allow(non_snake_case)]
16684  pub fn builtin_options_as_lshprojection_options(&self) -> Option<LSHProjectionOptions<'a>> {
16685    if self.builtin_options_type() == BuiltinOptions::LSHProjectionOptions {
16686      self.builtin_options().map(|t| {
16687       // Safety:
16688       // Created from a valid Table for this object
16689       // Which contains a valid union in this slot
16690       unsafe { LSHProjectionOptions::init_from_table(t) }
16691     })
16692    } else {
16693      None
16694    }
16695  }
16696
16697  #[inline]
16698  #[allow(non_snake_case)]
16699  pub fn builtin_options_as_pool_2_doptions(&self) -> Option<Pool2DOptions<'a>> {
16700    if self.builtin_options_type() == BuiltinOptions::Pool2DOptions {
16701      self.builtin_options().map(|t| {
16702       // Safety:
16703       // Created from a valid Table for this object
16704       // Which contains a valid union in this slot
16705       unsafe { Pool2DOptions::init_from_table(t) }
16706     })
16707    } else {
16708      None
16709    }
16710  }
16711
16712  #[inline]
16713  #[allow(non_snake_case)]
16714  pub fn builtin_options_as_svdfoptions(&self) -> Option<SVDFOptions<'a>> {
16715    if self.builtin_options_type() == BuiltinOptions::SVDFOptions {
16716      self.builtin_options().map(|t| {
16717       // Safety:
16718       // Created from a valid Table for this object
16719       // Which contains a valid union in this slot
16720       unsafe { SVDFOptions::init_from_table(t) }
16721     })
16722    } else {
16723      None
16724    }
16725  }
16726
16727  #[inline]
16728  #[allow(non_snake_case)]
16729  pub fn builtin_options_as_rnnoptions(&self) -> Option<RNNOptions<'a>> {
16730    if self.builtin_options_type() == BuiltinOptions::RNNOptions {
16731      self.builtin_options().map(|t| {
16732       // Safety:
16733       // Created from a valid Table for this object
16734       // Which contains a valid union in this slot
16735       unsafe { RNNOptions::init_from_table(t) }
16736     })
16737    } else {
16738      None
16739    }
16740  }
16741
16742  #[inline]
16743  #[allow(non_snake_case)]
16744  pub fn builtin_options_as_fully_connected_options(&self) -> Option<FullyConnectedOptions<'a>> {
16745    if self.builtin_options_type() == BuiltinOptions::FullyConnectedOptions {
16746      self.builtin_options().map(|t| {
16747       // Safety:
16748       // Created from a valid Table for this object
16749       // Which contains a valid union in this slot
16750       unsafe { FullyConnectedOptions::init_from_table(t) }
16751     })
16752    } else {
16753      None
16754    }
16755  }
16756
16757  #[inline]
16758  #[allow(non_snake_case)]
16759  pub fn builtin_options_as_softmax_options(&self) -> Option<SoftmaxOptions<'a>> {
16760    if self.builtin_options_type() == BuiltinOptions::SoftmaxOptions {
16761      self.builtin_options().map(|t| {
16762       // Safety:
16763       // Created from a valid Table for this object
16764       // Which contains a valid union in this slot
16765       unsafe { SoftmaxOptions::init_from_table(t) }
16766     })
16767    } else {
16768      None
16769    }
16770  }
16771
16772  #[inline]
16773  #[allow(non_snake_case)]
16774  pub fn builtin_options_as_concatenation_options(&self) -> Option<ConcatenationOptions<'a>> {
16775    if self.builtin_options_type() == BuiltinOptions::ConcatenationOptions {
16776      self.builtin_options().map(|t| {
16777       // Safety:
16778       // Created from a valid Table for this object
16779       // Which contains a valid union in this slot
16780       unsafe { ConcatenationOptions::init_from_table(t) }
16781     })
16782    } else {
16783      None
16784    }
16785  }
16786
16787  #[inline]
16788  #[allow(non_snake_case)]
16789  pub fn builtin_options_as_add_options(&self) -> Option<AddOptions<'a>> {
16790    if self.builtin_options_type() == BuiltinOptions::AddOptions {
16791      self.builtin_options().map(|t| {
16792       // Safety:
16793       // Created from a valid Table for this object
16794       // Which contains a valid union in this slot
16795       unsafe { AddOptions::init_from_table(t) }
16796     })
16797    } else {
16798      None
16799    }
16800  }
16801
16802  #[inline]
16803  #[allow(non_snake_case)]
16804  pub fn builtin_options_as_l2_norm_options(&self) -> Option<L2NormOptions<'a>> {
16805    if self.builtin_options_type() == BuiltinOptions::L2NormOptions {
16806      self.builtin_options().map(|t| {
16807       // Safety:
16808       // Created from a valid Table for this object
16809       // Which contains a valid union in this slot
16810       unsafe { L2NormOptions::init_from_table(t) }
16811     })
16812    } else {
16813      None
16814    }
16815  }
16816
16817  #[inline]
16818  #[allow(non_snake_case)]
16819  pub fn builtin_options_as_local_response_normalization_options(&self) -> Option<LocalResponseNormalizationOptions<'a>> {
16820    if self.builtin_options_type() == BuiltinOptions::LocalResponseNormalizationOptions {
16821      self.builtin_options().map(|t| {
16822       // Safety:
16823       // Created from a valid Table for this object
16824       // Which contains a valid union in this slot
16825       unsafe { LocalResponseNormalizationOptions::init_from_table(t) }
16826     })
16827    } else {
16828      None
16829    }
16830  }
16831
16832  #[inline]
16833  #[allow(non_snake_case)]
16834  pub fn builtin_options_as_lstmoptions(&self) -> Option<LSTMOptions<'a>> {
16835    if self.builtin_options_type() == BuiltinOptions::LSTMOptions {
16836      self.builtin_options().map(|t| {
16837       // Safety:
16838       // Created from a valid Table for this object
16839       // Which contains a valid union in this slot
16840       unsafe { LSTMOptions::init_from_table(t) }
16841     })
16842    } else {
16843      None
16844    }
16845  }
16846
16847  #[inline]
16848  #[allow(non_snake_case)]
16849  pub fn builtin_options_as_resize_bilinear_options(&self) -> Option<ResizeBilinearOptions<'a>> {
16850    if self.builtin_options_type() == BuiltinOptions::ResizeBilinearOptions {
16851      self.builtin_options().map(|t| {
16852       // Safety:
16853       // Created from a valid Table for this object
16854       // Which contains a valid union in this slot
16855       unsafe { ResizeBilinearOptions::init_from_table(t) }
16856     })
16857    } else {
16858      None
16859    }
16860  }
16861
16862  #[inline]
16863  #[allow(non_snake_case)]
16864  pub fn builtin_options_as_call_options(&self) -> Option<CallOptions<'a>> {
16865    if self.builtin_options_type() == BuiltinOptions::CallOptions {
16866      self.builtin_options().map(|t| {
16867       // Safety:
16868       // Created from a valid Table for this object
16869       // Which contains a valid union in this slot
16870       unsafe { CallOptions::init_from_table(t) }
16871     })
16872    } else {
16873      None
16874    }
16875  }
16876
16877  #[inline]
16878  #[allow(non_snake_case)]
16879  pub fn builtin_options_as_reshape_options(&self) -> Option<ReshapeOptions<'a>> {
16880    if self.builtin_options_type() == BuiltinOptions::ReshapeOptions {
16881      self.builtin_options().map(|t| {
16882       // Safety:
16883       // Created from a valid Table for this object
16884       // Which contains a valid union in this slot
16885       unsafe { ReshapeOptions::init_from_table(t) }
16886     })
16887    } else {
16888      None
16889    }
16890  }
16891
16892  #[inline]
16893  #[allow(non_snake_case)]
16894  pub fn builtin_options_as_skip_gram_options(&self) -> Option<SkipGramOptions<'a>> {
16895    if self.builtin_options_type() == BuiltinOptions::SkipGramOptions {
16896      self.builtin_options().map(|t| {
16897       // Safety:
16898       // Created from a valid Table for this object
16899       // Which contains a valid union in this slot
16900       unsafe { SkipGramOptions::init_from_table(t) }
16901     })
16902    } else {
16903      None
16904    }
16905  }
16906
16907  #[inline]
16908  #[allow(non_snake_case)]
16909  pub fn builtin_options_as_space_to_depth_options(&self) -> Option<SpaceToDepthOptions<'a>> {
16910    if self.builtin_options_type() == BuiltinOptions::SpaceToDepthOptions {
16911      self.builtin_options().map(|t| {
16912       // Safety:
16913       // Created from a valid Table for this object
16914       // Which contains a valid union in this slot
16915       unsafe { SpaceToDepthOptions::init_from_table(t) }
16916     })
16917    } else {
16918      None
16919    }
16920  }
16921
16922  #[inline]
16923  #[allow(non_snake_case)]
16924  pub fn builtin_options_as_embedding_lookup_sparse_options(&self) -> Option<EmbeddingLookupSparseOptions<'a>> {
16925    if self.builtin_options_type() == BuiltinOptions::EmbeddingLookupSparseOptions {
16926      self.builtin_options().map(|t| {
16927       // Safety:
16928       // Created from a valid Table for this object
16929       // Which contains a valid union in this slot
16930       unsafe { EmbeddingLookupSparseOptions::init_from_table(t) }
16931     })
16932    } else {
16933      None
16934    }
16935  }
16936
16937  #[inline]
16938  #[allow(non_snake_case)]
16939  pub fn builtin_options_as_mul_options(&self) -> Option<MulOptions<'a>> {
16940    if self.builtin_options_type() == BuiltinOptions::MulOptions {
16941      self.builtin_options().map(|t| {
16942       // Safety:
16943       // Created from a valid Table for this object
16944       // Which contains a valid union in this slot
16945       unsafe { MulOptions::init_from_table(t) }
16946     })
16947    } else {
16948      None
16949    }
16950  }
16951
16952  #[inline]
16953  #[allow(non_snake_case)]
16954  pub fn builtin_options_as_pad_options(&self) -> Option<PadOptions<'a>> {
16955    if self.builtin_options_type() == BuiltinOptions::PadOptions {
16956      self.builtin_options().map(|t| {
16957       // Safety:
16958       // Created from a valid Table for this object
16959       // Which contains a valid union in this slot
16960       unsafe { PadOptions::init_from_table(t) }
16961     })
16962    } else {
16963      None
16964    }
16965  }
16966
16967  #[inline]
16968  #[allow(non_snake_case)]
16969  pub fn builtin_options_as_gather_options(&self) -> Option<GatherOptions<'a>> {
16970    if self.builtin_options_type() == BuiltinOptions::GatherOptions {
16971      self.builtin_options().map(|t| {
16972       // Safety:
16973       // Created from a valid Table for this object
16974       // Which contains a valid union in this slot
16975       unsafe { GatherOptions::init_from_table(t) }
16976     })
16977    } else {
16978      None
16979    }
16980  }
16981
16982  #[inline]
16983  #[allow(non_snake_case)]
16984  pub fn builtin_options_as_batch_to_space_ndoptions(&self) -> Option<BatchToSpaceNDOptions<'a>> {
16985    if self.builtin_options_type() == BuiltinOptions::BatchToSpaceNDOptions {
16986      self.builtin_options().map(|t| {
16987       // Safety:
16988       // Created from a valid Table for this object
16989       // Which contains a valid union in this slot
16990       unsafe { BatchToSpaceNDOptions::init_from_table(t) }
16991     })
16992    } else {
16993      None
16994    }
16995  }
16996
16997  #[inline]
16998  #[allow(non_snake_case)]
16999  pub fn builtin_options_as_space_to_batch_ndoptions(&self) -> Option<SpaceToBatchNDOptions<'a>> {
17000    if self.builtin_options_type() == BuiltinOptions::SpaceToBatchNDOptions {
17001      self.builtin_options().map(|t| {
17002       // Safety:
17003       // Created from a valid Table for this object
17004       // Which contains a valid union in this slot
17005       unsafe { SpaceToBatchNDOptions::init_from_table(t) }
17006     })
17007    } else {
17008      None
17009    }
17010  }
17011
17012  #[inline]
17013  #[allow(non_snake_case)]
17014  pub fn builtin_options_as_transpose_options(&self) -> Option<TransposeOptions<'a>> {
17015    if self.builtin_options_type() == BuiltinOptions::TransposeOptions {
17016      self.builtin_options().map(|t| {
17017       // Safety:
17018       // Created from a valid Table for this object
17019       // Which contains a valid union in this slot
17020       unsafe { TransposeOptions::init_from_table(t) }
17021     })
17022    } else {
17023      None
17024    }
17025  }
17026
17027  #[inline]
17028  #[allow(non_snake_case)]
17029  pub fn builtin_options_as_reducer_options(&self) -> Option<ReducerOptions<'a>> {
17030    if self.builtin_options_type() == BuiltinOptions::ReducerOptions {
17031      self.builtin_options().map(|t| {
17032       // Safety:
17033       // Created from a valid Table for this object
17034       // Which contains a valid union in this slot
17035       unsafe { ReducerOptions::init_from_table(t) }
17036     })
17037    } else {
17038      None
17039    }
17040  }
17041
17042  #[inline]
17043  #[allow(non_snake_case)]
17044  pub fn builtin_options_as_sub_options(&self) -> Option<SubOptions<'a>> {
17045    if self.builtin_options_type() == BuiltinOptions::SubOptions {
17046      self.builtin_options().map(|t| {
17047       // Safety:
17048       // Created from a valid Table for this object
17049       // Which contains a valid union in this slot
17050       unsafe { SubOptions::init_from_table(t) }
17051     })
17052    } else {
17053      None
17054    }
17055  }
17056
17057  #[inline]
17058  #[allow(non_snake_case)]
17059  pub fn builtin_options_as_div_options(&self) -> Option<DivOptions<'a>> {
17060    if self.builtin_options_type() == BuiltinOptions::DivOptions {
17061      self.builtin_options().map(|t| {
17062       // Safety:
17063       // Created from a valid Table for this object
17064       // Which contains a valid union in this slot
17065       unsafe { DivOptions::init_from_table(t) }
17066     })
17067    } else {
17068      None
17069    }
17070  }
17071
17072  #[inline]
17073  #[allow(non_snake_case)]
17074  pub fn builtin_options_as_squeeze_options(&self) -> Option<SqueezeOptions<'a>> {
17075    if self.builtin_options_type() == BuiltinOptions::SqueezeOptions {
17076      self.builtin_options().map(|t| {
17077       // Safety:
17078       // Created from a valid Table for this object
17079       // Which contains a valid union in this slot
17080       unsafe { SqueezeOptions::init_from_table(t) }
17081     })
17082    } else {
17083      None
17084    }
17085  }
17086
17087  #[inline]
17088  #[allow(non_snake_case)]
17089  pub fn builtin_options_as_sequence_rnnoptions(&self) -> Option<SequenceRNNOptions<'a>> {
17090    if self.builtin_options_type() == BuiltinOptions::SequenceRNNOptions {
17091      self.builtin_options().map(|t| {
17092       // Safety:
17093       // Created from a valid Table for this object
17094       // Which contains a valid union in this slot
17095       unsafe { SequenceRNNOptions::init_from_table(t) }
17096     })
17097    } else {
17098      None
17099    }
17100  }
17101
17102  #[inline]
17103  #[allow(non_snake_case)]
17104  pub fn builtin_options_as_strided_slice_options(&self) -> Option<StridedSliceOptions<'a>> {
17105    if self.builtin_options_type() == BuiltinOptions::StridedSliceOptions {
17106      self.builtin_options().map(|t| {
17107       // Safety:
17108       // Created from a valid Table for this object
17109       // Which contains a valid union in this slot
17110       unsafe { StridedSliceOptions::init_from_table(t) }
17111     })
17112    } else {
17113      None
17114    }
17115  }
17116
17117  #[inline]
17118  #[allow(non_snake_case)]
17119  pub fn builtin_options_as_exp_options(&self) -> Option<ExpOptions<'a>> {
17120    if self.builtin_options_type() == BuiltinOptions::ExpOptions {
17121      self.builtin_options().map(|t| {
17122       // Safety:
17123       // Created from a valid Table for this object
17124       // Which contains a valid union in this slot
17125       unsafe { ExpOptions::init_from_table(t) }
17126     })
17127    } else {
17128      None
17129    }
17130  }
17131
17132  #[inline]
17133  #[allow(non_snake_case)]
17134  pub fn builtin_options_as_top_kv2_options(&self) -> Option<TopKV2Options<'a>> {
17135    if self.builtin_options_type() == BuiltinOptions::TopKV2Options {
17136      self.builtin_options().map(|t| {
17137       // Safety:
17138       // Created from a valid Table for this object
17139       // Which contains a valid union in this slot
17140       unsafe { TopKV2Options::init_from_table(t) }
17141     })
17142    } else {
17143      None
17144    }
17145  }
17146
17147  #[inline]
17148  #[allow(non_snake_case)]
17149  pub fn builtin_options_as_split_options(&self) -> Option<SplitOptions<'a>> {
17150    if self.builtin_options_type() == BuiltinOptions::SplitOptions {
17151      self.builtin_options().map(|t| {
17152       // Safety:
17153       // Created from a valid Table for this object
17154       // Which contains a valid union in this slot
17155       unsafe { SplitOptions::init_from_table(t) }
17156     })
17157    } else {
17158      None
17159    }
17160  }
17161
17162  #[inline]
17163  #[allow(non_snake_case)]
17164  pub fn builtin_options_as_log_softmax_options(&self) -> Option<LogSoftmaxOptions<'a>> {
17165    if self.builtin_options_type() == BuiltinOptions::LogSoftmaxOptions {
17166      self.builtin_options().map(|t| {
17167       // Safety:
17168       // Created from a valid Table for this object
17169       // Which contains a valid union in this slot
17170       unsafe { LogSoftmaxOptions::init_from_table(t) }
17171     })
17172    } else {
17173      None
17174    }
17175  }
17176
17177  #[inline]
17178  #[allow(non_snake_case)]
17179  pub fn builtin_options_as_cast_options(&self) -> Option<CastOptions<'a>> {
17180    if self.builtin_options_type() == BuiltinOptions::CastOptions {
17181      self.builtin_options().map(|t| {
17182       // Safety:
17183       // Created from a valid Table for this object
17184       // Which contains a valid union in this slot
17185       unsafe { CastOptions::init_from_table(t) }
17186     })
17187    } else {
17188      None
17189    }
17190  }
17191
17192  #[inline]
17193  #[allow(non_snake_case)]
17194  pub fn builtin_options_as_dequantize_options(&self) -> Option<DequantizeOptions<'a>> {
17195    if self.builtin_options_type() == BuiltinOptions::DequantizeOptions {
17196      self.builtin_options().map(|t| {
17197       // Safety:
17198       // Created from a valid Table for this object
17199       // Which contains a valid union in this slot
17200       unsafe { DequantizeOptions::init_from_table(t) }
17201     })
17202    } else {
17203      None
17204    }
17205  }
17206
17207  #[inline]
17208  #[allow(non_snake_case)]
17209  pub fn builtin_options_as_maximum_minimum_options(&self) -> Option<MaximumMinimumOptions<'a>> {
17210    if self.builtin_options_type() == BuiltinOptions::MaximumMinimumOptions {
17211      self.builtin_options().map(|t| {
17212       // Safety:
17213       // Created from a valid Table for this object
17214       // Which contains a valid union in this slot
17215       unsafe { MaximumMinimumOptions::init_from_table(t) }
17216     })
17217    } else {
17218      None
17219    }
17220  }
17221
17222  #[inline]
17223  #[allow(non_snake_case)]
17224  pub fn builtin_options_as_arg_max_options(&self) -> Option<ArgMaxOptions<'a>> {
17225    if self.builtin_options_type() == BuiltinOptions::ArgMaxOptions {
17226      self.builtin_options().map(|t| {
17227       // Safety:
17228       // Created from a valid Table for this object
17229       // Which contains a valid union in this slot
17230       unsafe { ArgMaxOptions::init_from_table(t) }
17231     })
17232    } else {
17233      None
17234    }
17235  }
17236
17237  #[inline]
17238  #[allow(non_snake_case)]
17239  pub fn builtin_options_as_less_options(&self) -> Option<LessOptions<'a>> {
17240    if self.builtin_options_type() == BuiltinOptions::LessOptions {
17241      self.builtin_options().map(|t| {
17242       // Safety:
17243       // Created from a valid Table for this object
17244       // Which contains a valid union in this slot
17245       unsafe { LessOptions::init_from_table(t) }
17246     })
17247    } else {
17248      None
17249    }
17250  }
17251
17252  #[inline]
17253  #[allow(non_snake_case)]
17254  pub fn builtin_options_as_neg_options(&self) -> Option<NegOptions<'a>> {
17255    if self.builtin_options_type() == BuiltinOptions::NegOptions {
17256      self.builtin_options().map(|t| {
17257       // Safety:
17258       // Created from a valid Table for this object
17259       // Which contains a valid union in this slot
17260       unsafe { NegOptions::init_from_table(t) }
17261     })
17262    } else {
17263      None
17264    }
17265  }
17266
17267  #[inline]
17268  #[allow(non_snake_case)]
17269  pub fn builtin_options_as_pad_v2_options(&self) -> Option<PadV2Options<'a>> {
17270    if self.builtin_options_type() == BuiltinOptions::PadV2Options {
17271      self.builtin_options().map(|t| {
17272       // Safety:
17273       // Created from a valid Table for this object
17274       // Which contains a valid union in this slot
17275       unsafe { PadV2Options::init_from_table(t) }
17276     })
17277    } else {
17278      None
17279    }
17280  }
17281
17282  #[inline]
17283  #[allow(non_snake_case)]
17284  pub fn builtin_options_as_greater_options(&self) -> Option<GreaterOptions<'a>> {
17285    if self.builtin_options_type() == BuiltinOptions::GreaterOptions {
17286      self.builtin_options().map(|t| {
17287       // Safety:
17288       // Created from a valid Table for this object
17289       // Which contains a valid union in this slot
17290       unsafe { GreaterOptions::init_from_table(t) }
17291     })
17292    } else {
17293      None
17294    }
17295  }
17296
17297  #[inline]
17298  #[allow(non_snake_case)]
17299  pub fn builtin_options_as_greater_equal_options(&self) -> Option<GreaterEqualOptions<'a>> {
17300    if self.builtin_options_type() == BuiltinOptions::GreaterEqualOptions {
17301      self.builtin_options().map(|t| {
17302       // Safety:
17303       // Created from a valid Table for this object
17304       // Which contains a valid union in this slot
17305       unsafe { GreaterEqualOptions::init_from_table(t) }
17306     })
17307    } else {
17308      None
17309    }
17310  }
17311
17312  #[inline]
17313  #[allow(non_snake_case)]
17314  pub fn builtin_options_as_less_equal_options(&self) -> Option<LessEqualOptions<'a>> {
17315    if self.builtin_options_type() == BuiltinOptions::LessEqualOptions {
17316      self.builtin_options().map(|t| {
17317       // Safety:
17318       // Created from a valid Table for this object
17319       // Which contains a valid union in this slot
17320       unsafe { LessEqualOptions::init_from_table(t) }
17321     })
17322    } else {
17323      None
17324    }
17325  }
17326
17327  #[inline]
17328  #[allow(non_snake_case)]
17329  pub fn builtin_options_as_select_options(&self) -> Option<SelectOptions<'a>> {
17330    if self.builtin_options_type() == BuiltinOptions::SelectOptions {
17331      self.builtin_options().map(|t| {
17332       // Safety:
17333       // Created from a valid Table for this object
17334       // Which contains a valid union in this slot
17335       unsafe { SelectOptions::init_from_table(t) }
17336     })
17337    } else {
17338      None
17339    }
17340  }
17341
17342  #[inline]
17343  #[allow(non_snake_case)]
17344  pub fn builtin_options_as_slice_options(&self) -> Option<SliceOptions<'a>> {
17345    if self.builtin_options_type() == BuiltinOptions::SliceOptions {
17346      self.builtin_options().map(|t| {
17347       // Safety:
17348       // Created from a valid Table for this object
17349       // Which contains a valid union in this slot
17350       unsafe { SliceOptions::init_from_table(t) }
17351     })
17352    } else {
17353      None
17354    }
17355  }
17356
17357  #[inline]
17358  #[allow(non_snake_case)]
17359  pub fn builtin_options_as_transpose_conv_options(&self) -> Option<TransposeConvOptions<'a>> {
17360    if self.builtin_options_type() == BuiltinOptions::TransposeConvOptions {
17361      self.builtin_options().map(|t| {
17362       // Safety:
17363       // Created from a valid Table for this object
17364       // Which contains a valid union in this slot
17365       unsafe { TransposeConvOptions::init_from_table(t) }
17366     })
17367    } else {
17368      None
17369    }
17370  }
17371
17372  #[inline]
17373  #[allow(non_snake_case)]
17374  pub fn builtin_options_as_sparse_to_dense_options(&self) -> Option<SparseToDenseOptions<'a>> {
17375    if self.builtin_options_type() == BuiltinOptions::SparseToDenseOptions {
17376      self.builtin_options().map(|t| {
17377       // Safety:
17378       // Created from a valid Table for this object
17379       // Which contains a valid union in this slot
17380       unsafe { SparseToDenseOptions::init_from_table(t) }
17381     })
17382    } else {
17383      None
17384    }
17385  }
17386
17387  #[inline]
17388  #[allow(non_snake_case)]
17389  pub fn builtin_options_as_tile_options(&self) -> Option<TileOptions<'a>> {
17390    if self.builtin_options_type() == BuiltinOptions::TileOptions {
17391      self.builtin_options().map(|t| {
17392       // Safety:
17393       // Created from a valid Table for this object
17394       // Which contains a valid union in this slot
17395       unsafe { TileOptions::init_from_table(t) }
17396     })
17397    } else {
17398      None
17399    }
17400  }
17401
17402  #[inline]
17403  #[allow(non_snake_case)]
17404  pub fn builtin_options_as_expand_dims_options(&self) -> Option<ExpandDimsOptions<'a>> {
17405    if self.builtin_options_type() == BuiltinOptions::ExpandDimsOptions {
17406      self.builtin_options().map(|t| {
17407       // Safety:
17408       // Created from a valid Table for this object
17409       // Which contains a valid union in this slot
17410       unsafe { ExpandDimsOptions::init_from_table(t) }
17411     })
17412    } else {
17413      None
17414    }
17415  }
17416
17417  #[inline]
17418  #[allow(non_snake_case)]
17419  pub fn builtin_options_as_equal_options(&self) -> Option<EqualOptions<'a>> {
17420    if self.builtin_options_type() == BuiltinOptions::EqualOptions {
17421      self.builtin_options().map(|t| {
17422       // Safety:
17423       // Created from a valid Table for this object
17424       // Which contains a valid union in this slot
17425       unsafe { EqualOptions::init_from_table(t) }
17426     })
17427    } else {
17428      None
17429    }
17430  }
17431
17432  #[inline]
17433  #[allow(non_snake_case)]
17434  pub fn builtin_options_as_not_equal_options(&self) -> Option<NotEqualOptions<'a>> {
17435    if self.builtin_options_type() == BuiltinOptions::NotEqualOptions {
17436      self.builtin_options().map(|t| {
17437       // Safety:
17438       // Created from a valid Table for this object
17439       // Which contains a valid union in this slot
17440       unsafe { NotEqualOptions::init_from_table(t) }
17441     })
17442    } else {
17443      None
17444    }
17445  }
17446
17447  #[inline]
17448  #[allow(non_snake_case)]
17449  pub fn builtin_options_as_shape_options(&self) -> Option<ShapeOptions<'a>> {
17450    if self.builtin_options_type() == BuiltinOptions::ShapeOptions {
17451      self.builtin_options().map(|t| {
17452       // Safety:
17453       // Created from a valid Table for this object
17454       // Which contains a valid union in this slot
17455       unsafe { ShapeOptions::init_from_table(t) }
17456     })
17457    } else {
17458      None
17459    }
17460  }
17461
17462  #[inline]
17463  #[allow(non_snake_case)]
17464  pub fn builtin_options_as_pow_options(&self) -> Option<PowOptions<'a>> {
17465    if self.builtin_options_type() == BuiltinOptions::PowOptions {
17466      self.builtin_options().map(|t| {
17467       // Safety:
17468       // Created from a valid Table for this object
17469       // Which contains a valid union in this slot
17470       unsafe { PowOptions::init_from_table(t) }
17471     })
17472    } else {
17473      None
17474    }
17475  }
17476
17477  #[inline]
17478  #[allow(non_snake_case)]
17479  pub fn builtin_options_as_arg_min_options(&self) -> Option<ArgMinOptions<'a>> {
17480    if self.builtin_options_type() == BuiltinOptions::ArgMinOptions {
17481      self.builtin_options().map(|t| {
17482       // Safety:
17483       // Created from a valid Table for this object
17484       // Which contains a valid union in this slot
17485       unsafe { ArgMinOptions::init_from_table(t) }
17486     })
17487    } else {
17488      None
17489    }
17490  }
17491
17492  #[inline]
17493  #[allow(non_snake_case)]
17494  pub fn builtin_options_as_fake_quant_options(&self) -> Option<FakeQuantOptions<'a>> {
17495    if self.builtin_options_type() == BuiltinOptions::FakeQuantOptions {
17496      self.builtin_options().map(|t| {
17497       // Safety:
17498       // Created from a valid Table for this object
17499       // Which contains a valid union in this slot
17500       unsafe { FakeQuantOptions::init_from_table(t) }
17501     })
17502    } else {
17503      None
17504    }
17505  }
17506
17507  #[inline]
17508  #[allow(non_snake_case)]
17509  pub fn builtin_options_as_pack_options(&self) -> Option<PackOptions<'a>> {
17510    if self.builtin_options_type() == BuiltinOptions::PackOptions {
17511      self.builtin_options().map(|t| {
17512       // Safety:
17513       // Created from a valid Table for this object
17514       // Which contains a valid union in this slot
17515       unsafe { PackOptions::init_from_table(t) }
17516     })
17517    } else {
17518      None
17519    }
17520  }
17521
17522  #[inline]
17523  #[allow(non_snake_case)]
17524  pub fn builtin_options_as_logical_or_options(&self) -> Option<LogicalOrOptions<'a>> {
17525    if self.builtin_options_type() == BuiltinOptions::LogicalOrOptions {
17526      self.builtin_options().map(|t| {
17527       // Safety:
17528       // Created from a valid Table for this object
17529       // Which contains a valid union in this slot
17530       unsafe { LogicalOrOptions::init_from_table(t) }
17531     })
17532    } else {
17533      None
17534    }
17535  }
17536
17537  #[inline]
17538  #[allow(non_snake_case)]
17539  pub fn builtin_options_as_one_hot_options(&self) -> Option<OneHotOptions<'a>> {
17540    if self.builtin_options_type() == BuiltinOptions::OneHotOptions {
17541      self.builtin_options().map(|t| {
17542       // Safety:
17543       // Created from a valid Table for this object
17544       // Which contains a valid union in this slot
17545       unsafe { OneHotOptions::init_from_table(t) }
17546     })
17547    } else {
17548      None
17549    }
17550  }
17551
17552  #[inline]
17553  #[allow(non_snake_case)]
17554  pub fn builtin_options_as_logical_and_options(&self) -> Option<LogicalAndOptions<'a>> {
17555    if self.builtin_options_type() == BuiltinOptions::LogicalAndOptions {
17556      self.builtin_options().map(|t| {
17557       // Safety:
17558       // Created from a valid Table for this object
17559       // Which contains a valid union in this slot
17560       unsafe { LogicalAndOptions::init_from_table(t) }
17561     })
17562    } else {
17563      None
17564    }
17565  }
17566
17567  #[inline]
17568  #[allow(non_snake_case)]
17569  pub fn builtin_options_as_logical_not_options(&self) -> Option<LogicalNotOptions<'a>> {
17570    if self.builtin_options_type() == BuiltinOptions::LogicalNotOptions {
17571      self.builtin_options().map(|t| {
17572       // Safety:
17573       // Created from a valid Table for this object
17574       // Which contains a valid union in this slot
17575       unsafe { LogicalNotOptions::init_from_table(t) }
17576     })
17577    } else {
17578      None
17579    }
17580  }
17581
17582  #[inline]
17583  #[allow(non_snake_case)]
17584  pub fn builtin_options_as_unpack_options(&self) -> Option<UnpackOptions<'a>> {
17585    if self.builtin_options_type() == BuiltinOptions::UnpackOptions {
17586      self.builtin_options().map(|t| {
17587       // Safety:
17588       // Created from a valid Table for this object
17589       // Which contains a valid union in this slot
17590       unsafe { UnpackOptions::init_from_table(t) }
17591     })
17592    } else {
17593      None
17594    }
17595  }
17596
17597  #[inline]
17598  #[allow(non_snake_case)]
17599  pub fn builtin_options_as_floor_div_options(&self) -> Option<FloorDivOptions<'a>> {
17600    if self.builtin_options_type() == BuiltinOptions::FloorDivOptions {
17601      self.builtin_options().map(|t| {
17602       // Safety:
17603       // Created from a valid Table for this object
17604       // Which contains a valid union in this slot
17605       unsafe { FloorDivOptions::init_from_table(t) }
17606     })
17607    } else {
17608      None
17609    }
17610  }
17611
17612  #[inline]
17613  #[allow(non_snake_case)]
17614  pub fn builtin_options_as_square_options(&self) -> Option<SquareOptions<'a>> {
17615    if self.builtin_options_type() == BuiltinOptions::SquareOptions {
17616      self.builtin_options().map(|t| {
17617       // Safety:
17618       // Created from a valid Table for this object
17619       // Which contains a valid union in this slot
17620       unsafe { SquareOptions::init_from_table(t) }
17621     })
17622    } else {
17623      None
17624    }
17625  }
17626
17627  #[inline]
17628  #[allow(non_snake_case)]
17629  pub fn builtin_options_as_zeros_like_options(&self) -> Option<ZerosLikeOptions<'a>> {
17630    if self.builtin_options_type() == BuiltinOptions::ZerosLikeOptions {
17631      self.builtin_options().map(|t| {
17632       // Safety:
17633       // Created from a valid Table for this object
17634       // Which contains a valid union in this slot
17635       unsafe { ZerosLikeOptions::init_from_table(t) }
17636     })
17637    } else {
17638      None
17639    }
17640  }
17641
17642  #[inline]
17643  #[allow(non_snake_case)]
17644  pub fn builtin_options_as_fill_options(&self) -> Option<FillOptions<'a>> {
17645    if self.builtin_options_type() == BuiltinOptions::FillOptions {
17646      self.builtin_options().map(|t| {
17647       // Safety:
17648       // Created from a valid Table for this object
17649       // Which contains a valid union in this slot
17650       unsafe { FillOptions::init_from_table(t) }
17651     })
17652    } else {
17653      None
17654    }
17655  }
17656
17657  #[inline]
17658  #[allow(non_snake_case)]
17659  pub fn builtin_options_as_bidirectional_sequence_lstmoptions(&self) -> Option<BidirectionalSequenceLSTMOptions<'a>> {
17660    if self.builtin_options_type() == BuiltinOptions::BidirectionalSequenceLSTMOptions {
17661      self.builtin_options().map(|t| {
17662       // Safety:
17663       // Created from a valid Table for this object
17664       // Which contains a valid union in this slot
17665       unsafe { BidirectionalSequenceLSTMOptions::init_from_table(t) }
17666     })
17667    } else {
17668      None
17669    }
17670  }
17671
17672  #[inline]
17673  #[allow(non_snake_case)]
17674  pub fn builtin_options_as_bidirectional_sequence_rnnoptions(&self) -> Option<BidirectionalSequenceRNNOptions<'a>> {
17675    if self.builtin_options_type() == BuiltinOptions::BidirectionalSequenceRNNOptions {
17676      self.builtin_options().map(|t| {
17677       // Safety:
17678       // Created from a valid Table for this object
17679       // Which contains a valid union in this slot
17680       unsafe { BidirectionalSequenceRNNOptions::init_from_table(t) }
17681     })
17682    } else {
17683      None
17684    }
17685  }
17686
17687  #[inline]
17688  #[allow(non_snake_case)]
17689  pub fn builtin_options_as_unidirectional_sequence_lstmoptions(&self) -> Option<UnidirectionalSequenceLSTMOptions<'a>> {
17690    if self.builtin_options_type() == BuiltinOptions::UnidirectionalSequenceLSTMOptions {
17691      self.builtin_options().map(|t| {
17692       // Safety:
17693       // Created from a valid Table for this object
17694       // Which contains a valid union in this slot
17695       unsafe { UnidirectionalSequenceLSTMOptions::init_from_table(t) }
17696     })
17697    } else {
17698      None
17699    }
17700  }
17701
17702  #[inline]
17703  #[allow(non_snake_case)]
17704  pub fn builtin_options_as_floor_mod_options(&self) -> Option<FloorModOptions<'a>> {
17705    if self.builtin_options_type() == BuiltinOptions::FloorModOptions {
17706      self.builtin_options().map(|t| {
17707       // Safety:
17708       // Created from a valid Table for this object
17709       // Which contains a valid union in this slot
17710       unsafe { FloorModOptions::init_from_table(t) }
17711     })
17712    } else {
17713      None
17714    }
17715  }
17716
17717  #[inline]
17718  #[allow(non_snake_case)]
17719  pub fn builtin_options_as_range_options(&self) -> Option<RangeOptions<'a>> {
17720    if self.builtin_options_type() == BuiltinOptions::RangeOptions {
17721      self.builtin_options().map(|t| {
17722       // Safety:
17723       // Created from a valid Table for this object
17724       // Which contains a valid union in this slot
17725       unsafe { RangeOptions::init_from_table(t) }
17726     })
17727    } else {
17728      None
17729    }
17730  }
17731
17732  #[inline]
17733  #[allow(non_snake_case)]
17734  pub fn builtin_options_as_resize_nearest_neighbor_options(&self) -> Option<ResizeNearestNeighborOptions<'a>> {
17735    if self.builtin_options_type() == BuiltinOptions::ResizeNearestNeighborOptions {
17736      self.builtin_options().map(|t| {
17737       // Safety:
17738       // Created from a valid Table for this object
17739       // Which contains a valid union in this slot
17740       unsafe { ResizeNearestNeighborOptions::init_from_table(t) }
17741     })
17742    } else {
17743      None
17744    }
17745  }
17746
17747  #[inline]
17748  #[allow(non_snake_case)]
17749  pub fn builtin_options_as_leaky_relu_options(&self) -> Option<LeakyReluOptions<'a>> {
17750    if self.builtin_options_type() == BuiltinOptions::LeakyReluOptions {
17751      self.builtin_options().map(|t| {
17752       // Safety:
17753       // Created from a valid Table for this object
17754       // Which contains a valid union in this slot
17755       unsafe { LeakyReluOptions::init_from_table(t) }
17756     })
17757    } else {
17758      None
17759    }
17760  }
17761
17762  #[inline]
17763  #[allow(non_snake_case)]
17764  pub fn builtin_options_as_squared_difference_options(&self) -> Option<SquaredDifferenceOptions<'a>> {
17765    if self.builtin_options_type() == BuiltinOptions::SquaredDifferenceOptions {
17766      self.builtin_options().map(|t| {
17767       // Safety:
17768       // Created from a valid Table for this object
17769       // Which contains a valid union in this slot
17770       unsafe { SquaredDifferenceOptions::init_from_table(t) }
17771     })
17772    } else {
17773      None
17774    }
17775  }
17776
17777  #[inline]
17778  #[allow(non_snake_case)]
17779  pub fn builtin_options_as_mirror_pad_options(&self) -> Option<MirrorPadOptions<'a>> {
17780    if self.builtin_options_type() == BuiltinOptions::MirrorPadOptions {
17781      self.builtin_options().map(|t| {
17782       // Safety:
17783       // Created from a valid Table for this object
17784       // Which contains a valid union in this slot
17785       unsafe { MirrorPadOptions::init_from_table(t) }
17786     })
17787    } else {
17788      None
17789    }
17790  }
17791
17792  #[inline]
17793  #[allow(non_snake_case)]
17794  pub fn builtin_options_as_abs_options(&self) -> Option<AbsOptions<'a>> {
17795    if self.builtin_options_type() == BuiltinOptions::AbsOptions {
17796      self.builtin_options().map(|t| {
17797       // Safety:
17798       // Created from a valid Table for this object
17799       // Which contains a valid union in this slot
17800       unsafe { AbsOptions::init_from_table(t) }
17801     })
17802    } else {
17803      None
17804    }
17805  }
17806
17807  #[inline]
17808  #[allow(non_snake_case)]
17809  pub fn builtin_options_as_split_voptions(&self) -> Option<SplitVOptions<'a>> {
17810    if self.builtin_options_type() == BuiltinOptions::SplitVOptions {
17811      self.builtin_options().map(|t| {
17812       // Safety:
17813       // Created from a valid Table for this object
17814       // Which contains a valid union in this slot
17815       unsafe { SplitVOptions::init_from_table(t) }
17816     })
17817    } else {
17818      None
17819    }
17820  }
17821
17822  #[inline]
17823  #[allow(non_snake_case)]
17824  pub fn builtin_options_as_unique_options(&self) -> Option<UniqueOptions<'a>> {
17825    if self.builtin_options_type() == BuiltinOptions::UniqueOptions {
17826      self.builtin_options().map(|t| {
17827       // Safety:
17828       // Created from a valid Table for this object
17829       // Which contains a valid union in this slot
17830       unsafe { UniqueOptions::init_from_table(t) }
17831     })
17832    } else {
17833      None
17834    }
17835  }
17836
17837  #[inline]
17838  #[allow(non_snake_case)]
17839  pub fn builtin_options_as_reverse_v2_options(&self) -> Option<ReverseV2Options<'a>> {
17840    if self.builtin_options_type() == BuiltinOptions::ReverseV2Options {
17841      self.builtin_options().map(|t| {
17842       // Safety:
17843       // Created from a valid Table for this object
17844       // Which contains a valid union in this slot
17845       unsafe { ReverseV2Options::init_from_table(t) }
17846     })
17847    } else {
17848      None
17849    }
17850  }
17851
17852  #[inline]
17853  #[allow(non_snake_case)]
17854  pub fn builtin_options_as_add_noptions(&self) -> Option<AddNOptions<'a>> {
17855    if self.builtin_options_type() == BuiltinOptions::AddNOptions {
17856      self.builtin_options().map(|t| {
17857       // Safety:
17858       // Created from a valid Table for this object
17859       // Which contains a valid union in this slot
17860       unsafe { AddNOptions::init_from_table(t) }
17861     })
17862    } else {
17863      None
17864    }
17865  }
17866
17867  #[inline]
17868  #[allow(non_snake_case)]
17869  pub fn builtin_options_as_gather_nd_options(&self) -> Option<GatherNdOptions<'a>> {
17870    if self.builtin_options_type() == BuiltinOptions::GatherNdOptions {
17871      self.builtin_options().map(|t| {
17872       // Safety:
17873       // Created from a valid Table for this object
17874       // Which contains a valid union in this slot
17875       unsafe { GatherNdOptions::init_from_table(t) }
17876     })
17877    } else {
17878      None
17879    }
17880  }
17881
17882  #[inline]
17883  #[allow(non_snake_case)]
17884  pub fn builtin_options_as_cos_options(&self) -> Option<CosOptions<'a>> {
17885    if self.builtin_options_type() == BuiltinOptions::CosOptions {
17886      self.builtin_options().map(|t| {
17887       // Safety:
17888       // Created from a valid Table for this object
17889       // Which contains a valid union in this slot
17890       unsafe { CosOptions::init_from_table(t) }
17891     })
17892    } else {
17893      None
17894    }
17895  }
17896
17897  #[inline]
17898  #[allow(non_snake_case)]
17899  pub fn builtin_options_as_where_options(&self) -> Option<WhereOptions<'a>> {
17900    if self.builtin_options_type() == BuiltinOptions::WhereOptions {
17901      self.builtin_options().map(|t| {
17902       // Safety:
17903       // Created from a valid Table for this object
17904       // Which contains a valid union in this slot
17905       unsafe { WhereOptions::init_from_table(t) }
17906     })
17907    } else {
17908      None
17909    }
17910  }
17911
17912  #[inline]
17913  #[allow(non_snake_case)]
17914  pub fn builtin_options_as_rank_options(&self) -> Option<RankOptions<'a>> {
17915    if self.builtin_options_type() == BuiltinOptions::RankOptions {
17916      self.builtin_options().map(|t| {
17917       // Safety:
17918       // Created from a valid Table for this object
17919       // Which contains a valid union in this slot
17920       unsafe { RankOptions::init_from_table(t) }
17921     })
17922    } else {
17923      None
17924    }
17925  }
17926
17927  #[inline]
17928  #[allow(non_snake_case)]
17929  pub fn builtin_options_as_reverse_sequence_options(&self) -> Option<ReverseSequenceOptions<'a>> {
17930    if self.builtin_options_type() == BuiltinOptions::ReverseSequenceOptions {
17931      self.builtin_options().map(|t| {
17932       // Safety:
17933       // Created from a valid Table for this object
17934       // Which contains a valid union in this slot
17935       unsafe { ReverseSequenceOptions::init_from_table(t) }
17936     })
17937    } else {
17938      None
17939    }
17940  }
17941
17942  #[inline]
17943  #[allow(non_snake_case)]
17944  pub fn builtin_options_as_matrix_diag_options(&self) -> Option<MatrixDiagOptions<'a>> {
17945    if self.builtin_options_type() == BuiltinOptions::MatrixDiagOptions {
17946      self.builtin_options().map(|t| {
17947       // Safety:
17948       // Created from a valid Table for this object
17949       // Which contains a valid union in this slot
17950       unsafe { MatrixDiagOptions::init_from_table(t) }
17951     })
17952    } else {
17953      None
17954    }
17955  }
17956
17957  #[inline]
17958  #[allow(non_snake_case)]
17959  pub fn builtin_options_as_quantize_options(&self) -> Option<QuantizeOptions<'a>> {
17960    if self.builtin_options_type() == BuiltinOptions::QuantizeOptions {
17961      self.builtin_options().map(|t| {
17962       // Safety:
17963       // Created from a valid Table for this object
17964       // Which contains a valid union in this slot
17965       unsafe { QuantizeOptions::init_from_table(t) }
17966     })
17967    } else {
17968      None
17969    }
17970  }
17971
17972  #[inline]
17973  #[allow(non_snake_case)]
17974  pub fn builtin_options_as_matrix_set_diag_options(&self) -> Option<MatrixSetDiagOptions<'a>> {
17975    if self.builtin_options_type() == BuiltinOptions::MatrixSetDiagOptions {
17976      self.builtin_options().map(|t| {
17977       // Safety:
17978       // Created from a valid Table for this object
17979       // Which contains a valid union in this slot
17980       unsafe { MatrixSetDiagOptions::init_from_table(t) }
17981     })
17982    } else {
17983      None
17984    }
17985  }
17986
17987  #[inline]
17988  #[allow(non_snake_case)]
17989  pub fn builtin_options_as_hard_swish_options(&self) -> Option<HardSwishOptions<'a>> {
17990    if self.builtin_options_type() == BuiltinOptions::HardSwishOptions {
17991      self.builtin_options().map(|t| {
17992       // Safety:
17993       // Created from a valid Table for this object
17994       // Which contains a valid union in this slot
17995       unsafe { HardSwishOptions::init_from_table(t) }
17996     })
17997    } else {
17998      None
17999    }
18000  }
18001
18002  #[inline]
18003  #[allow(non_snake_case)]
18004  pub fn builtin_options_as_if_options(&self) -> Option<IfOptions<'a>> {
18005    if self.builtin_options_type() == BuiltinOptions::IfOptions {
18006      self.builtin_options().map(|t| {
18007       // Safety:
18008       // Created from a valid Table for this object
18009       // Which contains a valid union in this slot
18010       unsafe { IfOptions::init_from_table(t) }
18011     })
18012    } else {
18013      None
18014    }
18015  }
18016
18017  #[inline]
18018  #[allow(non_snake_case)]
18019  pub fn builtin_options_as_while_options(&self) -> Option<WhileOptions<'a>> {
18020    if self.builtin_options_type() == BuiltinOptions::WhileOptions {
18021      self.builtin_options().map(|t| {
18022       // Safety:
18023       // Created from a valid Table for this object
18024       // Which contains a valid union in this slot
18025       unsafe { WhileOptions::init_from_table(t) }
18026     })
18027    } else {
18028      None
18029    }
18030  }
18031
18032  #[inline]
18033  #[allow(non_snake_case)]
18034  pub fn builtin_options_as_depth_to_space_options(&self) -> Option<DepthToSpaceOptions<'a>> {
18035    if self.builtin_options_type() == BuiltinOptions::DepthToSpaceOptions {
18036      self.builtin_options().map(|t| {
18037       // Safety:
18038       // Created from a valid Table for this object
18039       // Which contains a valid union in this slot
18040       unsafe { DepthToSpaceOptions::init_from_table(t) }
18041     })
18042    } else {
18043      None
18044    }
18045  }
18046
18047  #[inline]
18048  #[allow(non_snake_case)]
18049  pub fn builtin_options_as_non_max_suppression_v4_options(&self) -> Option<NonMaxSuppressionV4Options<'a>> {
18050    if self.builtin_options_type() == BuiltinOptions::NonMaxSuppressionV4Options {
18051      self.builtin_options().map(|t| {
18052       // Safety:
18053       // Created from a valid Table for this object
18054       // Which contains a valid union in this slot
18055       unsafe { NonMaxSuppressionV4Options::init_from_table(t) }
18056     })
18057    } else {
18058      None
18059    }
18060  }
18061
18062  #[inline]
18063  #[allow(non_snake_case)]
18064  pub fn builtin_options_as_non_max_suppression_v5_options(&self) -> Option<NonMaxSuppressionV5Options<'a>> {
18065    if self.builtin_options_type() == BuiltinOptions::NonMaxSuppressionV5Options {
18066      self.builtin_options().map(|t| {
18067       // Safety:
18068       // Created from a valid Table for this object
18069       // Which contains a valid union in this slot
18070       unsafe { NonMaxSuppressionV5Options::init_from_table(t) }
18071     })
18072    } else {
18073      None
18074    }
18075  }
18076
18077  #[inline]
18078  #[allow(non_snake_case)]
18079  pub fn builtin_options_as_scatter_nd_options(&self) -> Option<ScatterNdOptions<'a>> {
18080    if self.builtin_options_type() == BuiltinOptions::ScatterNdOptions {
18081      self.builtin_options().map(|t| {
18082       // Safety:
18083       // Created from a valid Table for this object
18084       // Which contains a valid union in this slot
18085       unsafe { ScatterNdOptions::init_from_table(t) }
18086     })
18087    } else {
18088      None
18089    }
18090  }
18091
18092  #[inline]
18093  #[allow(non_snake_case)]
18094  pub fn builtin_options_as_select_v2_options(&self) -> Option<SelectV2Options<'a>> {
18095    if self.builtin_options_type() == BuiltinOptions::SelectV2Options {
18096      self.builtin_options().map(|t| {
18097       // Safety:
18098       // Created from a valid Table for this object
18099       // Which contains a valid union in this slot
18100       unsafe { SelectV2Options::init_from_table(t) }
18101     })
18102    } else {
18103      None
18104    }
18105  }
18106
18107  #[inline]
18108  #[allow(non_snake_case)]
18109  pub fn builtin_options_as_densify_options(&self) -> Option<DensifyOptions<'a>> {
18110    if self.builtin_options_type() == BuiltinOptions::DensifyOptions {
18111      self.builtin_options().map(|t| {
18112       // Safety:
18113       // Created from a valid Table for this object
18114       // Which contains a valid union in this slot
18115       unsafe { DensifyOptions::init_from_table(t) }
18116     })
18117    } else {
18118      None
18119    }
18120  }
18121
18122  #[inline]
18123  #[allow(non_snake_case)]
18124  pub fn builtin_options_as_segment_sum_options(&self) -> Option<SegmentSumOptions<'a>> {
18125    if self.builtin_options_type() == BuiltinOptions::SegmentSumOptions {
18126      self.builtin_options().map(|t| {
18127       // Safety:
18128       // Created from a valid Table for this object
18129       // Which contains a valid union in this slot
18130       unsafe { SegmentSumOptions::init_from_table(t) }
18131     })
18132    } else {
18133      None
18134    }
18135  }
18136
18137  #[inline]
18138  #[allow(non_snake_case)]
18139  pub fn builtin_options_as_batch_mat_mul_options(&self) -> Option<BatchMatMulOptions<'a>> {
18140    if self.builtin_options_type() == BuiltinOptions::BatchMatMulOptions {
18141      self.builtin_options().map(|t| {
18142       // Safety:
18143       // Created from a valid Table for this object
18144       // Which contains a valid union in this slot
18145       unsafe { BatchMatMulOptions::init_from_table(t) }
18146     })
18147    } else {
18148      None
18149    }
18150  }
18151
18152  #[inline]
18153  #[allow(non_snake_case)]
18154  pub fn builtin_options_as_cumsum_options(&self) -> Option<CumsumOptions<'a>> {
18155    if self.builtin_options_type() == BuiltinOptions::CumsumOptions {
18156      self.builtin_options().map(|t| {
18157       // Safety:
18158       // Created from a valid Table for this object
18159       // Which contains a valid union in this slot
18160       unsafe { CumsumOptions::init_from_table(t) }
18161     })
18162    } else {
18163      None
18164    }
18165  }
18166
18167  #[inline]
18168  #[allow(non_snake_case)]
18169  pub fn builtin_options_as_call_once_options(&self) -> Option<CallOnceOptions<'a>> {
18170    if self.builtin_options_type() == BuiltinOptions::CallOnceOptions {
18171      self.builtin_options().map(|t| {
18172       // Safety:
18173       // Created from a valid Table for this object
18174       // Which contains a valid union in this slot
18175       unsafe { CallOnceOptions::init_from_table(t) }
18176     })
18177    } else {
18178      None
18179    }
18180  }
18181
18182  #[inline]
18183  #[allow(non_snake_case)]
18184  pub fn builtin_options_as_broadcast_to_options(&self) -> Option<BroadcastToOptions<'a>> {
18185    if self.builtin_options_type() == BuiltinOptions::BroadcastToOptions {
18186      self.builtin_options().map(|t| {
18187       // Safety:
18188       // Created from a valid Table for this object
18189       // Which contains a valid union in this slot
18190       unsafe { BroadcastToOptions::init_from_table(t) }
18191     })
18192    } else {
18193      None
18194    }
18195  }
18196
18197  #[inline]
18198  #[allow(non_snake_case)]
18199  pub fn builtin_options_as_rfft_2d_options(&self) -> Option<Rfft2dOptions<'a>> {
18200    if self.builtin_options_type() == BuiltinOptions::Rfft2dOptions {
18201      self.builtin_options().map(|t| {
18202       // Safety:
18203       // Created from a valid Table for this object
18204       // Which contains a valid union in this slot
18205       unsafe { Rfft2dOptions::init_from_table(t) }
18206     })
18207    } else {
18208      None
18209    }
18210  }
18211
18212  #[inline]
18213  #[allow(non_snake_case)]
18214  pub fn builtin_options_as_conv_3_doptions(&self) -> Option<Conv3DOptions<'a>> {
18215    if self.builtin_options_type() == BuiltinOptions::Conv3DOptions {
18216      self.builtin_options().map(|t| {
18217       // Safety:
18218       // Created from a valid Table for this object
18219       // Which contains a valid union in this slot
18220       unsafe { Conv3DOptions::init_from_table(t) }
18221     })
18222    } else {
18223      None
18224    }
18225  }
18226
18227  #[inline]
18228  #[allow(non_snake_case)]
18229  pub fn builtin_options_as_hashtable_options(&self) -> Option<HashtableOptions<'a>> {
18230    if self.builtin_options_type() == BuiltinOptions::HashtableOptions {
18231      self.builtin_options().map(|t| {
18232       // Safety:
18233       // Created from a valid Table for this object
18234       // Which contains a valid union in this slot
18235       unsafe { HashtableOptions::init_from_table(t) }
18236     })
18237    } else {
18238      None
18239    }
18240  }
18241
18242  #[inline]
18243  #[allow(non_snake_case)]
18244  pub fn builtin_options_as_hashtable_find_options(&self) -> Option<HashtableFindOptions<'a>> {
18245    if self.builtin_options_type() == BuiltinOptions::HashtableFindOptions {
18246      self.builtin_options().map(|t| {
18247       // Safety:
18248       // Created from a valid Table for this object
18249       // Which contains a valid union in this slot
18250       unsafe { HashtableFindOptions::init_from_table(t) }
18251     })
18252    } else {
18253      None
18254    }
18255  }
18256
18257  #[inline]
18258  #[allow(non_snake_case)]
18259  pub fn builtin_options_as_hashtable_import_options(&self) -> Option<HashtableImportOptions<'a>> {
18260    if self.builtin_options_type() == BuiltinOptions::HashtableImportOptions {
18261      self.builtin_options().map(|t| {
18262       // Safety:
18263       // Created from a valid Table for this object
18264       // Which contains a valid union in this slot
18265       unsafe { HashtableImportOptions::init_from_table(t) }
18266     })
18267    } else {
18268      None
18269    }
18270  }
18271
18272  #[inline]
18273  #[allow(non_snake_case)]
18274  pub fn builtin_options_as_hashtable_size_options(&self) -> Option<HashtableSizeOptions<'a>> {
18275    if self.builtin_options_type() == BuiltinOptions::HashtableSizeOptions {
18276      self.builtin_options().map(|t| {
18277       // Safety:
18278       // Created from a valid Table for this object
18279       // Which contains a valid union in this slot
18280       unsafe { HashtableSizeOptions::init_from_table(t) }
18281     })
18282    } else {
18283      None
18284    }
18285  }
18286
18287  #[inline]
18288  #[allow(non_snake_case)]
18289  pub fn builtin_options_as_var_handle_options(&self) -> Option<VarHandleOptions<'a>> {
18290    if self.builtin_options_type() == BuiltinOptions::VarHandleOptions {
18291      self.builtin_options().map(|t| {
18292       // Safety:
18293       // Created from a valid Table for this object
18294       // Which contains a valid union in this slot
18295       unsafe { VarHandleOptions::init_from_table(t) }
18296     })
18297    } else {
18298      None
18299    }
18300  }
18301
18302  #[inline]
18303  #[allow(non_snake_case)]
18304  pub fn builtin_options_as_read_variable_options(&self) -> Option<ReadVariableOptions<'a>> {
18305    if self.builtin_options_type() == BuiltinOptions::ReadVariableOptions {
18306      self.builtin_options().map(|t| {
18307       // Safety:
18308       // Created from a valid Table for this object
18309       // Which contains a valid union in this slot
18310       unsafe { ReadVariableOptions::init_from_table(t) }
18311     })
18312    } else {
18313      None
18314    }
18315  }
18316
18317  #[inline]
18318  #[allow(non_snake_case)]
18319  pub fn builtin_options_as_assign_variable_options(&self) -> Option<AssignVariableOptions<'a>> {
18320    if self.builtin_options_type() == BuiltinOptions::AssignVariableOptions {
18321      self.builtin_options().map(|t| {
18322       // Safety:
18323       // Created from a valid Table for this object
18324       // Which contains a valid union in this slot
18325       unsafe { AssignVariableOptions::init_from_table(t) }
18326     })
18327    } else {
18328      None
18329    }
18330  }
18331
18332  #[inline]
18333  #[allow(non_snake_case)]
18334  pub fn builtin_options_as_random_options(&self) -> Option<RandomOptions<'a>> {
18335    if self.builtin_options_type() == BuiltinOptions::RandomOptions {
18336      self.builtin_options().map(|t| {
18337       // Safety:
18338       // Created from a valid Table for this object
18339       // Which contains a valid union in this slot
18340       unsafe { RandomOptions::init_from_table(t) }
18341     })
18342    } else {
18343      None
18344    }
18345  }
18346
18347  #[inline]
18348  #[allow(non_snake_case)]
18349  pub fn builtin_options_as_bucketize_options(&self) -> Option<BucketizeOptions<'a>> {
18350    if self.builtin_options_type() == BuiltinOptions::BucketizeOptions {
18351      self.builtin_options().map(|t| {
18352       // Safety:
18353       // Created from a valid Table for this object
18354       // Which contains a valid union in this slot
18355       unsafe { BucketizeOptions::init_from_table(t) }
18356     })
18357    } else {
18358      None
18359    }
18360  }
18361
18362  #[inline]
18363  #[allow(non_snake_case)]
18364  pub fn builtin_options_as_gelu_options(&self) -> Option<GeluOptions<'a>> {
18365    if self.builtin_options_type() == BuiltinOptions::GeluOptions {
18366      self.builtin_options().map(|t| {
18367       // Safety:
18368       // Created from a valid Table for this object
18369       // Which contains a valid union in this slot
18370       unsafe { GeluOptions::init_from_table(t) }
18371     })
18372    } else {
18373      None
18374    }
18375  }
18376
18377  #[inline]
18378  #[allow(non_snake_case)]
18379  pub fn builtin_options_as_dynamic_update_slice_options(&self) -> Option<DynamicUpdateSliceOptions<'a>> {
18380    if self.builtin_options_type() == BuiltinOptions::DynamicUpdateSliceOptions {
18381      self.builtin_options().map(|t| {
18382       // Safety:
18383       // Created from a valid Table for this object
18384       // Which contains a valid union in this slot
18385       unsafe { DynamicUpdateSliceOptions::init_from_table(t) }
18386     })
18387    } else {
18388      None
18389    }
18390  }
18391
18392  #[inline]
18393  #[allow(non_snake_case)]
18394  pub fn builtin_options_as_unsorted_segment_prod_options(&self) -> Option<UnsortedSegmentProdOptions<'a>> {
18395    if self.builtin_options_type() == BuiltinOptions::UnsortedSegmentProdOptions {
18396      self.builtin_options().map(|t| {
18397       // Safety:
18398       // Created from a valid Table for this object
18399       // Which contains a valid union in this slot
18400       unsafe { UnsortedSegmentProdOptions::init_from_table(t) }
18401     })
18402    } else {
18403      None
18404    }
18405  }
18406
18407  #[inline]
18408  #[allow(non_snake_case)]
18409  pub fn builtin_options_as_unsorted_segment_max_options(&self) -> Option<UnsortedSegmentMaxOptions<'a>> {
18410    if self.builtin_options_type() == BuiltinOptions::UnsortedSegmentMaxOptions {
18411      self.builtin_options().map(|t| {
18412       // Safety:
18413       // Created from a valid Table for this object
18414       // Which contains a valid union in this slot
18415       unsafe { UnsortedSegmentMaxOptions::init_from_table(t) }
18416     })
18417    } else {
18418      None
18419    }
18420  }
18421
18422  #[inline]
18423  #[allow(non_snake_case)]
18424  pub fn builtin_options_as_unsorted_segment_min_options(&self) -> Option<UnsortedSegmentMinOptions<'a>> {
18425    if self.builtin_options_type() == BuiltinOptions::UnsortedSegmentMinOptions {
18426      self.builtin_options().map(|t| {
18427       // Safety:
18428       // Created from a valid Table for this object
18429       // Which contains a valid union in this slot
18430       unsafe { UnsortedSegmentMinOptions::init_from_table(t) }
18431     })
18432    } else {
18433      None
18434    }
18435  }
18436
18437  #[inline]
18438  #[allow(non_snake_case)]
18439  pub fn builtin_options_as_unsorted_segment_sum_options(&self) -> Option<UnsortedSegmentSumOptions<'a>> {
18440    if self.builtin_options_type() == BuiltinOptions::UnsortedSegmentSumOptions {
18441      self.builtin_options().map(|t| {
18442       // Safety:
18443       // Created from a valid Table for this object
18444       // Which contains a valid union in this slot
18445       unsafe { UnsortedSegmentSumOptions::init_from_table(t) }
18446     })
18447    } else {
18448      None
18449    }
18450  }
18451
18452  #[inline]
18453  #[allow(non_snake_case)]
18454  pub fn builtin_options_as_atan_2_options(&self) -> Option<ATan2Options<'a>> {
18455    if self.builtin_options_type() == BuiltinOptions::ATan2Options {
18456      self.builtin_options().map(|t| {
18457       // Safety:
18458       // Created from a valid Table for this object
18459       // Which contains a valid union in this slot
18460       unsafe { ATan2Options::init_from_table(t) }
18461     })
18462    } else {
18463      None
18464    }
18465  }
18466
18467  #[inline]
18468  #[allow(non_snake_case)]
18469  pub fn builtin_options_as_sign_options(&self) -> Option<SignOptions<'a>> {
18470    if self.builtin_options_type() == BuiltinOptions::SignOptions {
18471      self.builtin_options().map(|t| {
18472       // Safety:
18473       // Created from a valid Table for this object
18474       // Which contains a valid union in this slot
18475       unsafe { SignOptions::init_from_table(t) }
18476     })
18477    } else {
18478      None
18479    }
18480  }
18481
18482  #[inline]
18483  #[allow(non_snake_case)]
18484  pub fn builtin_options_as_bitcast_options(&self) -> Option<BitcastOptions<'a>> {
18485    if self.builtin_options_type() == BuiltinOptions::BitcastOptions {
18486      self.builtin_options().map(|t| {
18487       // Safety:
18488       // Created from a valid Table for this object
18489       // Which contains a valid union in this slot
18490       unsafe { BitcastOptions::init_from_table(t) }
18491     })
18492    } else {
18493      None
18494    }
18495  }
18496
18497  #[inline]
18498  #[allow(non_snake_case)]
18499  pub fn builtin_options_as_bitwise_xor_options(&self) -> Option<BitwiseXorOptions<'a>> {
18500    if self.builtin_options_type() == BuiltinOptions::BitwiseXorOptions {
18501      self.builtin_options().map(|t| {
18502       // Safety:
18503       // Created from a valid Table for this object
18504       // Which contains a valid union in this slot
18505       unsafe { BitwiseXorOptions::init_from_table(t) }
18506     })
18507    } else {
18508      None
18509    }
18510  }
18511
18512  #[inline]
18513  #[allow(non_snake_case)]
18514  pub fn builtin_options_as_right_shift_options(&self) -> Option<RightShiftOptions<'a>> {
18515    if self.builtin_options_type() == BuiltinOptions::RightShiftOptions {
18516      self.builtin_options().map(|t| {
18517       // Safety:
18518       // Created from a valid Table for this object
18519       // Which contains a valid union in this slot
18520       unsafe { RightShiftOptions::init_from_table(t) }
18521     })
18522    } else {
18523      None
18524    }
18525  }
18526
18527}
18528
18529impl flatbuffers::Verifiable for Operator<'_> {
18530  #[inline]
18531  fn run_verifier(
18532    v: &mut flatbuffers::Verifier, pos: usize
18533  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18534    use self::flatbuffers::Verifiable;
18535    v.visit_table(pos)?
18536     .visit_field::<u32>("opcode_index", Self::VT_OPCODE_INDEX, false)?
18537     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("inputs", Self::VT_INPUTS, false)?
18538     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("outputs", Self::VT_OUTPUTS, false)?
18539     .visit_union::<BuiltinOptions, _>("builtin_options_type", Self::VT_BUILTIN_OPTIONS_TYPE, "builtin_options", Self::VT_BUILTIN_OPTIONS, false, |key, v, pos| {
18540        match key {
18541          BuiltinOptions::Conv2DOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Conv2DOptions>>("BuiltinOptions::Conv2DOptions", pos),
18542          BuiltinOptions::DepthwiseConv2DOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DepthwiseConv2DOptions>>("BuiltinOptions::DepthwiseConv2DOptions", pos),
18543          BuiltinOptions::ConcatEmbeddingsOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ConcatEmbeddingsOptions>>("BuiltinOptions::ConcatEmbeddingsOptions", pos),
18544          BuiltinOptions::LSHProjectionOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LSHProjectionOptions>>("BuiltinOptions::LSHProjectionOptions", pos),
18545          BuiltinOptions::Pool2DOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Pool2DOptions>>("BuiltinOptions::Pool2DOptions", pos),
18546          BuiltinOptions::SVDFOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SVDFOptions>>("BuiltinOptions::SVDFOptions", pos),
18547          BuiltinOptions::RNNOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<RNNOptions>>("BuiltinOptions::RNNOptions", pos),
18548          BuiltinOptions::FullyConnectedOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<FullyConnectedOptions>>("BuiltinOptions::FullyConnectedOptions", pos),
18549          BuiltinOptions::SoftmaxOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SoftmaxOptions>>("BuiltinOptions::SoftmaxOptions", pos),
18550          BuiltinOptions::ConcatenationOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ConcatenationOptions>>("BuiltinOptions::ConcatenationOptions", pos),
18551          BuiltinOptions::AddOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<AddOptions>>("BuiltinOptions::AddOptions", pos),
18552          BuiltinOptions::L2NormOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<L2NormOptions>>("BuiltinOptions::L2NormOptions", pos),
18553          BuiltinOptions::LocalResponseNormalizationOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LocalResponseNormalizationOptions>>("BuiltinOptions::LocalResponseNormalizationOptions", pos),
18554          BuiltinOptions::LSTMOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LSTMOptions>>("BuiltinOptions::LSTMOptions", pos),
18555          BuiltinOptions::ResizeBilinearOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ResizeBilinearOptions>>("BuiltinOptions::ResizeBilinearOptions", pos),
18556          BuiltinOptions::CallOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CallOptions>>("BuiltinOptions::CallOptions", pos),
18557          BuiltinOptions::ReshapeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ReshapeOptions>>("BuiltinOptions::ReshapeOptions", pos),
18558          BuiltinOptions::SkipGramOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SkipGramOptions>>("BuiltinOptions::SkipGramOptions", pos),
18559          BuiltinOptions::SpaceToDepthOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SpaceToDepthOptions>>("BuiltinOptions::SpaceToDepthOptions", pos),
18560          BuiltinOptions::EmbeddingLookupSparseOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<EmbeddingLookupSparseOptions>>("BuiltinOptions::EmbeddingLookupSparseOptions", pos),
18561          BuiltinOptions::MulOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<MulOptions>>("BuiltinOptions::MulOptions", pos),
18562          BuiltinOptions::PadOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<PadOptions>>("BuiltinOptions::PadOptions", pos),
18563          BuiltinOptions::GatherOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<GatherOptions>>("BuiltinOptions::GatherOptions", pos),
18564          BuiltinOptions::BatchToSpaceNDOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BatchToSpaceNDOptions>>("BuiltinOptions::BatchToSpaceNDOptions", pos),
18565          BuiltinOptions::SpaceToBatchNDOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SpaceToBatchNDOptions>>("BuiltinOptions::SpaceToBatchNDOptions", pos),
18566          BuiltinOptions::TransposeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<TransposeOptions>>("BuiltinOptions::TransposeOptions", pos),
18567          BuiltinOptions::ReducerOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ReducerOptions>>("BuiltinOptions::ReducerOptions", pos),
18568          BuiltinOptions::SubOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SubOptions>>("BuiltinOptions::SubOptions", pos),
18569          BuiltinOptions::DivOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DivOptions>>("BuiltinOptions::DivOptions", pos),
18570          BuiltinOptions::SqueezeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SqueezeOptions>>("BuiltinOptions::SqueezeOptions", pos),
18571          BuiltinOptions::SequenceRNNOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SequenceRNNOptions>>("BuiltinOptions::SequenceRNNOptions", pos),
18572          BuiltinOptions::StridedSliceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<StridedSliceOptions>>("BuiltinOptions::StridedSliceOptions", pos),
18573          BuiltinOptions::ExpOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ExpOptions>>("BuiltinOptions::ExpOptions", pos),
18574          BuiltinOptions::TopKV2Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<TopKV2Options>>("BuiltinOptions::TopKV2Options", pos),
18575          BuiltinOptions::SplitOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SplitOptions>>("BuiltinOptions::SplitOptions", pos),
18576          BuiltinOptions::LogSoftmaxOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LogSoftmaxOptions>>("BuiltinOptions::LogSoftmaxOptions", pos),
18577          BuiltinOptions::CastOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CastOptions>>("BuiltinOptions::CastOptions", pos),
18578          BuiltinOptions::DequantizeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DequantizeOptions>>("BuiltinOptions::DequantizeOptions", pos),
18579          BuiltinOptions::MaximumMinimumOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<MaximumMinimumOptions>>("BuiltinOptions::MaximumMinimumOptions", pos),
18580          BuiltinOptions::ArgMaxOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ArgMaxOptions>>("BuiltinOptions::ArgMaxOptions", pos),
18581          BuiltinOptions::LessOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LessOptions>>("BuiltinOptions::LessOptions", pos),
18582          BuiltinOptions::NegOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<NegOptions>>("BuiltinOptions::NegOptions", pos),
18583          BuiltinOptions::PadV2Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<PadV2Options>>("BuiltinOptions::PadV2Options", pos),
18584          BuiltinOptions::GreaterOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<GreaterOptions>>("BuiltinOptions::GreaterOptions", pos),
18585          BuiltinOptions::GreaterEqualOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<GreaterEqualOptions>>("BuiltinOptions::GreaterEqualOptions", pos),
18586          BuiltinOptions::LessEqualOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LessEqualOptions>>("BuiltinOptions::LessEqualOptions", pos),
18587          BuiltinOptions::SelectOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SelectOptions>>("BuiltinOptions::SelectOptions", pos),
18588          BuiltinOptions::SliceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SliceOptions>>("BuiltinOptions::SliceOptions", pos),
18589          BuiltinOptions::TransposeConvOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<TransposeConvOptions>>("BuiltinOptions::TransposeConvOptions", pos),
18590          BuiltinOptions::SparseToDenseOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SparseToDenseOptions>>("BuiltinOptions::SparseToDenseOptions", pos),
18591          BuiltinOptions::TileOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<TileOptions>>("BuiltinOptions::TileOptions", pos),
18592          BuiltinOptions::ExpandDimsOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ExpandDimsOptions>>("BuiltinOptions::ExpandDimsOptions", pos),
18593          BuiltinOptions::EqualOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<EqualOptions>>("BuiltinOptions::EqualOptions", pos),
18594          BuiltinOptions::NotEqualOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<NotEqualOptions>>("BuiltinOptions::NotEqualOptions", pos),
18595          BuiltinOptions::ShapeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ShapeOptions>>("BuiltinOptions::ShapeOptions", pos),
18596          BuiltinOptions::PowOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<PowOptions>>("BuiltinOptions::PowOptions", pos),
18597          BuiltinOptions::ArgMinOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ArgMinOptions>>("BuiltinOptions::ArgMinOptions", pos),
18598          BuiltinOptions::FakeQuantOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<FakeQuantOptions>>("BuiltinOptions::FakeQuantOptions", pos),
18599          BuiltinOptions::PackOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<PackOptions>>("BuiltinOptions::PackOptions", pos),
18600          BuiltinOptions::LogicalOrOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LogicalOrOptions>>("BuiltinOptions::LogicalOrOptions", pos),
18601          BuiltinOptions::OneHotOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<OneHotOptions>>("BuiltinOptions::OneHotOptions", pos),
18602          BuiltinOptions::LogicalAndOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LogicalAndOptions>>("BuiltinOptions::LogicalAndOptions", pos),
18603          BuiltinOptions::LogicalNotOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LogicalNotOptions>>("BuiltinOptions::LogicalNotOptions", pos),
18604          BuiltinOptions::UnpackOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnpackOptions>>("BuiltinOptions::UnpackOptions", pos),
18605          BuiltinOptions::FloorDivOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<FloorDivOptions>>("BuiltinOptions::FloorDivOptions", pos),
18606          BuiltinOptions::SquareOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SquareOptions>>("BuiltinOptions::SquareOptions", pos),
18607          BuiltinOptions::ZerosLikeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ZerosLikeOptions>>("BuiltinOptions::ZerosLikeOptions", pos),
18608          BuiltinOptions::FillOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<FillOptions>>("BuiltinOptions::FillOptions", pos),
18609          BuiltinOptions::BidirectionalSequenceLSTMOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BidirectionalSequenceLSTMOptions>>("BuiltinOptions::BidirectionalSequenceLSTMOptions", pos),
18610          BuiltinOptions::BidirectionalSequenceRNNOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BidirectionalSequenceRNNOptions>>("BuiltinOptions::BidirectionalSequenceRNNOptions", pos),
18611          BuiltinOptions::UnidirectionalSequenceLSTMOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnidirectionalSequenceLSTMOptions>>("BuiltinOptions::UnidirectionalSequenceLSTMOptions", pos),
18612          BuiltinOptions::FloorModOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<FloorModOptions>>("BuiltinOptions::FloorModOptions", pos),
18613          BuiltinOptions::RangeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<RangeOptions>>("BuiltinOptions::RangeOptions", pos),
18614          BuiltinOptions::ResizeNearestNeighborOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ResizeNearestNeighborOptions>>("BuiltinOptions::ResizeNearestNeighborOptions", pos),
18615          BuiltinOptions::LeakyReluOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LeakyReluOptions>>("BuiltinOptions::LeakyReluOptions", pos),
18616          BuiltinOptions::SquaredDifferenceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SquaredDifferenceOptions>>("BuiltinOptions::SquaredDifferenceOptions", pos),
18617          BuiltinOptions::MirrorPadOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<MirrorPadOptions>>("BuiltinOptions::MirrorPadOptions", pos),
18618          BuiltinOptions::AbsOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<AbsOptions>>("BuiltinOptions::AbsOptions", pos),
18619          BuiltinOptions::SplitVOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SplitVOptions>>("BuiltinOptions::SplitVOptions", pos),
18620          BuiltinOptions::UniqueOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UniqueOptions>>("BuiltinOptions::UniqueOptions", pos),
18621          BuiltinOptions::ReverseV2Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ReverseV2Options>>("BuiltinOptions::ReverseV2Options", pos),
18622          BuiltinOptions::AddNOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<AddNOptions>>("BuiltinOptions::AddNOptions", pos),
18623          BuiltinOptions::GatherNdOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<GatherNdOptions>>("BuiltinOptions::GatherNdOptions", pos),
18624          BuiltinOptions::CosOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CosOptions>>("BuiltinOptions::CosOptions", pos),
18625          BuiltinOptions::WhereOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<WhereOptions>>("BuiltinOptions::WhereOptions", pos),
18626          BuiltinOptions::RankOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<RankOptions>>("BuiltinOptions::RankOptions", pos),
18627          BuiltinOptions::ReverseSequenceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ReverseSequenceOptions>>("BuiltinOptions::ReverseSequenceOptions", pos),
18628          BuiltinOptions::MatrixDiagOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<MatrixDiagOptions>>("BuiltinOptions::MatrixDiagOptions", pos),
18629          BuiltinOptions::QuantizeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<QuantizeOptions>>("BuiltinOptions::QuantizeOptions", pos),
18630          BuiltinOptions::MatrixSetDiagOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<MatrixSetDiagOptions>>("BuiltinOptions::MatrixSetDiagOptions", pos),
18631          BuiltinOptions::HardSwishOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<HardSwishOptions>>("BuiltinOptions::HardSwishOptions", pos),
18632          BuiltinOptions::IfOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<IfOptions>>("BuiltinOptions::IfOptions", pos),
18633          BuiltinOptions::WhileOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<WhileOptions>>("BuiltinOptions::WhileOptions", pos),
18634          BuiltinOptions::DepthToSpaceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DepthToSpaceOptions>>("BuiltinOptions::DepthToSpaceOptions", pos),
18635          BuiltinOptions::NonMaxSuppressionV4Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<NonMaxSuppressionV4Options>>("BuiltinOptions::NonMaxSuppressionV4Options", pos),
18636          BuiltinOptions::NonMaxSuppressionV5Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<NonMaxSuppressionV5Options>>("BuiltinOptions::NonMaxSuppressionV5Options", pos),
18637          BuiltinOptions::ScatterNdOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ScatterNdOptions>>("BuiltinOptions::ScatterNdOptions", pos),
18638          BuiltinOptions::SelectV2Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SelectV2Options>>("BuiltinOptions::SelectV2Options", pos),
18639          BuiltinOptions::DensifyOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DensifyOptions>>("BuiltinOptions::DensifyOptions", pos),
18640          BuiltinOptions::SegmentSumOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SegmentSumOptions>>("BuiltinOptions::SegmentSumOptions", pos),
18641          BuiltinOptions::BatchMatMulOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BatchMatMulOptions>>("BuiltinOptions::BatchMatMulOptions", pos),
18642          BuiltinOptions::CumsumOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CumsumOptions>>("BuiltinOptions::CumsumOptions", pos),
18643          BuiltinOptions::CallOnceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<CallOnceOptions>>("BuiltinOptions::CallOnceOptions", pos),
18644          BuiltinOptions::BroadcastToOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BroadcastToOptions>>("BuiltinOptions::BroadcastToOptions", pos),
18645          BuiltinOptions::Rfft2dOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Rfft2dOptions>>("BuiltinOptions::Rfft2dOptions", pos),
18646          BuiltinOptions::Conv3DOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<Conv3DOptions>>("BuiltinOptions::Conv3DOptions", pos),
18647          BuiltinOptions::HashtableOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<HashtableOptions>>("BuiltinOptions::HashtableOptions", pos),
18648          BuiltinOptions::HashtableFindOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<HashtableFindOptions>>("BuiltinOptions::HashtableFindOptions", pos),
18649          BuiltinOptions::HashtableImportOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<HashtableImportOptions>>("BuiltinOptions::HashtableImportOptions", pos),
18650          BuiltinOptions::HashtableSizeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<HashtableSizeOptions>>("BuiltinOptions::HashtableSizeOptions", pos),
18651          BuiltinOptions::VarHandleOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<VarHandleOptions>>("BuiltinOptions::VarHandleOptions", pos),
18652          BuiltinOptions::ReadVariableOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ReadVariableOptions>>("BuiltinOptions::ReadVariableOptions", pos),
18653          BuiltinOptions::AssignVariableOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<AssignVariableOptions>>("BuiltinOptions::AssignVariableOptions", pos),
18654          BuiltinOptions::RandomOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<RandomOptions>>("BuiltinOptions::RandomOptions", pos),
18655          BuiltinOptions::BucketizeOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BucketizeOptions>>("BuiltinOptions::BucketizeOptions", pos),
18656          BuiltinOptions::GeluOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<GeluOptions>>("BuiltinOptions::GeluOptions", pos),
18657          BuiltinOptions::DynamicUpdateSliceOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DynamicUpdateSliceOptions>>("BuiltinOptions::DynamicUpdateSliceOptions", pos),
18658          BuiltinOptions::UnsortedSegmentProdOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnsortedSegmentProdOptions>>("BuiltinOptions::UnsortedSegmentProdOptions", pos),
18659          BuiltinOptions::UnsortedSegmentMaxOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnsortedSegmentMaxOptions>>("BuiltinOptions::UnsortedSegmentMaxOptions", pos),
18660          BuiltinOptions::UnsortedSegmentMinOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnsortedSegmentMinOptions>>("BuiltinOptions::UnsortedSegmentMinOptions", pos),
18661          BuiltinOptions::UnsortedSegmentSumOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<UnsortedSegmentSumOptions>>("BuiltinOptions::UnsortedSegmentSumOptions", pos),
18662          BuiltinOptions::ATan2Options => v.verify_union_variant::<flatbuffers::ForwardsUOffset<ATan2Options>>("BuiltinOptions::ATan2Options", pos),
18663          BuiltinOptions::SignOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<SignOptions>>("BuiltinOptions::SignOptions", pos),
18664          BuiltinOptions::BitcastOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BitcastOptions>>("BuiltinOptions::BitcastOptions", pos),
18665          BuiltinOptions::BitwiseXorOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<BitwiseXorOptions>>("BuiltinOptions::BitwiseXorOptions", pos),
18666          BuiltinOptions::RightShiftOptions => v.verify_union_variant::<flatbuffers::ForwardsUOffset<RightShiftOptions>>("BuiltinOptions::RightShiftOptions", pos),
18667          _ => Ok(()),
18668        }
18669     })?
18670     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("custom_options", Self::VT_CUSTOM_OPTIONS, false)?
18671     .visit_field::<CustomOptionsFormat>("custom_options_format", Self::VT_CUSTOM_OPTIONS_FORMAT, false)?
18672     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, bool>>>("mutating_variable_inputs", Self::VT_MUTATING_VARIABLE_INPUTS, false)?
18673     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("intermediates", Self::VT_INTERMEDIATES, false)?
18674     .finish();
18675    Ok(())
18676  }
18677}
18678pub struct OperatorArgs<'a> {
18679    pub opcode_index: u32,
18680    pub inputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
18681    pub outputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
18682    pub builtin_options_type: BuiltinOptions,
18683    pub builtin_options: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
18684    pub custom_options: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
18685    pub custom_options_format: CustomOptionsFormat,
18686    pub mutating_variable_inputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, bool>>>,
18687    pub intermediates: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
18688}
18689impl<'a> Default for OperatorArgs<'a> {
18690  #[inline]
18691  fn default() -> Self {
18692    OperatorArgs {
18693      opcode_index: 0,
18694      inputs: None,
18695      outputs: None,
18696      builtin_options_type: BuiltinOptions::NONE,
18697      builtin_options: None,
18698      custom_options: None,
18699      custom_options_format: CustomOptionsFormat::FLEXBUFFERS,
18700      mutating_variable_inputs: None,
18701      intermediates: None,
18702    }
18703  }
18704}
18705
18706pub struct OperatorBuilder<'a: 'b, 'b> {
18707  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
18708  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18709}
18710impl<'a: 'b, 'b> OperatorBuilder<'a, 'b> {
18711  #[inline]
18712  pub fn add_opcode_index(&mut self, opcode_index: u32) {
18713    self.fbb_.push_slot::<u32>(Operator::VT_OPCODE_INDEX, opcode_index, 0);
18714  }
18715  #[inline]
18716  pub fn add_inputs(&mut self, inputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
18717    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_INPUTS, inputs);
18718  }
18719  #[inline]
18720  pub fn add_outputs(&mut self, outputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
18721    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_OUTPUTS, outputs);
18722  }
18723  #[inline]
18724  pub fn add_builtin_options_type(&mut self, builtin_options_type: BuiltinOptions) {
18725    self.fbb_.push_slot::<BuiltinOptions>(Operator::VT_BUILTIN_OPTIONS_TYPE, builtin_options_type, BuiltinOptions::NONE);
18726  }
18727  #[inline]
18728  pub fn add_builtin_options(&mut self, builtin_options: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
18729    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_BUILTIN_OPTIONS, builtin_options);
18730  }
18731  #[inline]
18732  pub fn add_custom_options(&mut self, custom_options: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
18733    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_CUSTOM_OPTIONS, custom_options);
18734  }
18735  #[inline]
18736  pub fn add_custom_options_format(&mut self, custom_options_format: CustomOptionsFormat) {
18737    self.fbb_.push_slot::<CustomOptionsFormat>(Operator::VT_CUSTOM_OPTIONS_FORMAT, custom_options_format, CustomOptionsFormat::FLEXBUFFERS);
18738  }
18739  #[inline]
18740  pub fn add_mutating_variable_inputs(&mut self, mutating_variable_inputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , bool>>) {
18741    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_MUTATING_VARIABLE_INPUTS, mutating_variable_inputs);
18742  }
18743  #[inline]
18744  pub fn add_intermediates(&mut self, intermediates: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
18745    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Operator::VT_INTERMEDIATES, intermediates);
18746  }
18747  #[inline]
18748  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> OperatorBuilder<'a, 'b> {
18749    let start = _fbb.start_table();
18750    OperatorBuilder {
18751      fbb_: _fbb,
18752      start_: start,
18753    }
18754  }
18755  #[inline]
18756  pub fn finish(self) -> flatbuffers::WIPOffset<Operator<'a>> {
18757    let o = self.fbb_.end_table(self.start_);
18758    flatbuffers::WIPOffset::new(o.value())
18759  }
18760}
18761
18762impl core::fmt::Debug for Operator<'_> {
18763  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18764    let mut ds = f.debug_struct("Operator");
18765      ds.field("opcode_index", &self.opcode_index());
18766      ds.field("inputs", &self.inputs());
18767      ds.field("outputs", &self.outputs());
18768      ds.field("builtin_options_type", &self.builtin_options_type());
18769      match self.builtin_options_type() {
18770        BuiltinOptions::Conv2DOptions => {
18771          if let Some(x) = self.builtin_options_as_conv_2_doptions() {
18772            ds.field("builtin_options", &x)
18773          } else {
18774            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18775          }
18776        },
18777        BuiltinOptions::DepthwiseConv2DOptions => {
18778          if let Some(x) = self.builtin_options_as_depthwise_conv_2_doptions() {
18779            ds.field("builtin_options", &x)
18780          } else {
18781            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18782          }
18783        },
18784        BuiltinOptions::ConcatEmbeddingsOptions => {
18785          if let Some(x) = self.builtin_options_as_concat_embeddings_options() {
18786            ds.field("builtin_options", &x)
18787          } else {
18788            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18789          }
18790        },
18791        BuiltinOptions::LSHProjectionOptions => {
18792          if let Some(x) = self.builtin_options_as_lshprojection_options() {
18793            ds.field("builtin_options", &x)
18794          } else {
18795            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18796          }
18797        },
18798        BuiltinOptions::Pool2DOptions => {
18799          if let Some(x) = self.builtin_options_as_pool_2_doptions() {
18800            ds.field("builtin_options", &x)
18801          } else {
18802            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18803          }
18804        },
18805        BuiltinOptions::SVDFOptions => {
18806          if let Some(x) = self.builtin_options_as_svdfoptions() {
18807            ds.field("builtin_options", &x)
18808          } else {
18809            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18810          }
18811        },
18812        BuiltinOptions::RNNOptions => {
18813          if let Some(x) = self.builtin_options_as_rnnoptions() {
18814            ds.field("builtin_options", &x)
18815          } else {
18816            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18817          }
18818        },
18819        BuiltinOptions::FullyConnectedOptions => {
18820          if let Some(x) = self.builtin_options_as_fully_connected_options() {
18821            ds.field("builtin_options", &x)
18822          } else {
18823            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18824          }
18825        },
18826        BuiltinOptions::SoftmaxOptions => {
18827          if let Some(x) = self.builtin_options_as_softmax_options() {
18828            ds.field("builtin_options", &x)
18829          } else {
18830            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18831          }
18832        },
18833        BuiltinOptions::ConcatenationOptions => {
18834          if let Some(x) = self.builtin_options_as_concatenation_options() {
18835            ds.field("builtin_options", &x)
18836          } else {
18837            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18838          }
18839        },
18840        BuiltinOptions::AddOptions => {
18841          if let Some(x) = self.builtin_options_as_add_options() {
18842            ds.field("builtin_options", &x)
18843          } else {
18844            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18845          }
18846        },
18847        BuiltinOptions::L2NormOptions => {
18848          if let Some(x) = self.builtin_options_as_l2_norm_options() {
18849            ds.field("builtin_options", &x)
18850          } else {
18851            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18852          }
18853        },
18854        BuiltinOptions::LocalResponseNormalizationOptions => {
18855          if let Some(x) = self.builtin_options_as_local_response_normalization_options() {
18856            ds.field("builtin_options", &x)
18857          } else {
18858            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18859          }
18860        },
18861        BuiltinOptions::LSTMOptions => {
18862          if let Some(x) = self.builtin_options_as_lstmoptions() {
18863            ds.field("builtin_options", &x)
18864          } else {
18865            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18866          }
18867        },
18868        BuiltinOptions::ResizeBilinearOptions => {
18869          if let Some(x) = self.builtin_options_as_resize_bilinear_options() {
18870            ds.field("builtin_options", &x)
18871          } else {
18872            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18873          }
18874        },
18875        BuiltinOptions::CallOptions => {
18876          if let Some(x) = self.builtin_options_as_call_options() {
18877            ds.field("builtin_options", &x)
18878          } else {
18879            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18880          }
18881        },
18882        BuiltinOptions::ReshapeOptions => {
18883          if let Some(x) = self.builtin_options_as_reshape_options() {
18884            ds.field("builtin_options", &x)
18885          } else {
18886            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18887          }
18888        },
18889        BuiltinOptions::SkipGramOptions => {
18890          if let Some(x) = self.builtin_options_as_skip_gram_options() {
18891            ds.field("builtin_options", &x)
18892          } else {
18893            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18894          }
18895        },
18896        BuiltinOptions::SpaceToDepthOptions => {
18897          if let Some(x) = self.builtin_options_as_space_to_depth_options() {
18898            ds.field("builtin_options", &x)
18899          } else {
18900            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18901          }
18902        },
18903        BuiltinOptions::EmbeddingLookupSparseOptions => {
18904          if let Some(x) = self.builtin_options_as_embedding_lookup_sparse_options() {
18905            ds.field("builtin_options", &x)
18906          } else {
18907            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18908          }
18909        },
18910        BuiltinOptions::MulOptions => {
18911          if let Some(x) = self.builtin_options_as_mul_options() {
18912            ds.field("builtin_options", &x)
18913          } else {
18914            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18915          }
18916        },
18917        BuiltinOptions::PadOptions => {
18918          if let Some(x) = self.builtin_options_as_pad_options() {
18919            ds.field("builtin_options", &x)
18920          } else {
18921            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18922          }
18923        },
18924        BuiltinOptions::GatherOptions => {
18925          if let Some(x) = self.builtin_options_as_gather_options() {
18926            ds.field("builtin_options", &x)
18927          } else {
18928            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18929          }
18930        },
18931        BuiltinOptions::BatchToSpaceNDOptions => {
18932          if let Some(x) = self.builtin_options_as_batch_to_space_ndoptions() {
18933            ds.field("builtin_options", &x)
18934          } else {
18935            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18936          }
18937        },
18938        BuiltinOptions::SpaceToBatchNDOptions => {
18939          if let Some(x) = self.builtin_options_as_space_to_batch_ndoptions() {
18940            ds.field("builtin_options", &x)
18941          } else {
18942            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18943          }
18944        },
18945        BuiltinOptions::TransposeOptions => {
18946          if let Some(x) = self.builtin_options_as_transpose_options() {
18947            ds.field("builtin_options", &x)
18948          } else {
18949            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18950          }
18951        },
18952        BuiltinOptions::ReducerOptions => {
18953          if let Some(x) = self.builtin_options_as_reducer_options() {
18954            ds.field("builtin_options", &x)
18955          } else {
18956            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18957          }
18958        },
18959        BuiltinOptions::SubOptions => {
18960          if let Some(x) = self.builtin_options_as_sub_options() {
18961            ds.field("builtin_options", &x)
18962          } else {
18963            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18964          }
18965        },
18966        BuiltinOptions::DivOptions => {
18967          if let Some(x) = self.builtin_options_as_div_options() {
18968            ds.field("builtin_options", &x)
18969          } else {
18970            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18971          }
18972        },
18973        BuiltinOptions::SqueezeOptions => {
18974          if let Some(x) = self.builtin_options_as_squeeze_options() {
18975            ds.field("builtin_options", &x)
18976          } else {
18977            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18978          }
18979        },
18980        BuiltinOptions::SequenceRNNOptions => {
18981          if let Some(x) = self.builtin_options_as_sequence_rnnoptions() {
18982            ds.field("builtin_options", &x)
18983          } else {
18984            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18985          }
18986        },
18987        BuiltinOptions::StridedSliceOptions => {
18988          if let Some(x) = self.builtin_options_as_strided_slice_options() {
18989            ds.field("builtin_options", &x)
18990          } else {
18991            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18992          }
18993        },
18994        BuiltinOptions::ExpOptions => {
18995          if let Some(x) = self.builtin_options_as_exp_options() {
18996            ds.field("builtin_options", &x)
18997          } else {
18998            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
18999          }
19000        },
19001        BuiltinOptions::TopKV2Options => {
19002          if let Some(x) = self.builtin_options_as_top_kv2_options() {
19003            ds.field("builtin_options", &x)
19004          } else {
19005            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19006          }
19007        },
19008        BuiltinOptions::SplitOptions => {
19009          if let Some(x) = self.builtin_options_as_split_options() {
19010            ds.field("builtin_options", &x)
19011          } else {
19012            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19013          }
19014        },
19015        BuiltinOptions::LogSoftmaxOptions => {
19016          if let Some(x) = self.builtin_options_as_log_softmax_options() {
19017            ds.field("builtin_options", &x)
19018          } else {
19019            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19020          }
19021        },
19022        BuiltinOptions::CastOptions => {
19023          if let Some(x) = self.builtin_options_as_cast_options() {
19024            ds.field("builtin_options", &x)
19025          } else {
19026            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19027          }
19028        },
19029        BuiltinOptions::DequantizeOptions => {
19030          if let Some(x) = self.builtin_options_as_dequantize_options() {
19031            ds.field("builtin_options", &x)
19032          } else {
19033            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19034          }
19035        },
19036        BuiltinOptions::MaximumMinimumOptions => {
19037          if let Some(x) = self.builtin_options_as_maximum_minimum_options() {
19038            ds.field("builtin_options", &x)
19039          } else {
19040            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19041          }
19042        },
19043        BuiltinOptions::ArgMaxOptions => {
19044          if let Some(x) = self.builtin_options_as_arg_max_options() {
19045            ds.field("builtin_options", &x)
19046          } else {
19047            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19048          }
19049        },
19050        BuiltinOptions::LessOptions => {
19051          if let Some(x) = self.builtin_options_as_less_options() {
19052            ds.field("builtin_options", &x)
19053          } else {
19054            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19055          }
19056        },
19057        BuiltinOptions::NegOptions => {
19058          if let Some(x) = self.builtin_options_as_neg_options() {
19059            ds.field("builtin_options", &x)
19060          } else {
19061            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19062          }
19063        },
19064        BuiltinOptions::PadV2Options => {
19065          if let Some(x) = self.builtin_options_as_pad_v2_options() {
19066            ds.field("builtin_options", &x)
19067          } else {
19068            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19069          }
19070        },
19071        BuiltinOptions::GreaterOptions => {
19072          if let Some(x) = self.builtin_options_as_greater_options() {
19073            ds.field("builtin_options", &x)
19074          } else {
19075            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19076          }
19077        },
19078        BuiltinOptions::GreaterEqualOptions => {
19079          if let Some(x) = self.builtin_options_as_greater_equal_options() {
19080            ds.field("builtin_options", &x)
19081          } else {
19082            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19083          }
19084        },
19085        BuiltinOptions::LessEqualOptions => {
19086          if let Some(x) = self.builtin_options_as_less_equal_options() {
19087            ds.field("builtin_options", &x)
19088          } else {
19089            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19090          }
19091        },
19092        BuiltinOptions::SelectOptions => {
19093          if let Some(x) = self.builtin_options_as_select_options() {
19094            ds.field("builtin_options", &x)
19095          } else {
19096            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19097          }
19098        },
19099        BuiltinOptions::SliceOptions => {
19100          if let Some(x) = self.builtin_options_as_slice_options() {
19101            ds.field("builtin_options", &x)
19102          } else {
19103            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19104          }
19105        },
19106        BuiltinOptions::TransposeConvOptions => {
19107          if let Some(x) = self.builtin_options_as_transpose_conv_options() {
19108            ds.field("builtin_options", &x)
19109          } else {
19110            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19111          }
19112        },
19113        BuiltinOptions::SparseToDenseOptions => {
19114          if let Some(x) = self.builtin_options_as_sparse_to_dense_options() {
19115            ds.field("builtin_options", &x)
19116          } else {
19117            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19118          }
19119        },
19120        BuiltinOptions::TileOptions => {
19121          if let Some(x) = self.builtin_options_as_tile_options() {
19122            ds.field("builtin_options", &x)
19123          } else {
19124            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19125          }
19126        },
19127        BuiltinOptions::ExpandDimsOptions => {
19128          if let Some(x) = self.builtin_options_as_expand_dims_options() {
19129            ds.field("builtin_options", &x)
19130          } else {
19131            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19132          }
19133        },
19134        BuiltinOptions::EqualOptions => {
19135          if let Some(x) = self.builtin_options_as_equal_options() {
19136            ds.field("builtin_options", &x)
19137          } else {
19138            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19139          }
19140        },
19141        BuiltinOptions::NotEqualOptions => {
19142          if let Some(x) = self.builtin_options_as_not_equal_options() {
19143            ds.field("builtin_options", &x)
19144          } else {
19145            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19146          }
19147        },
19148        BuiltinOptions::ShapeOptions => {
19149          if let Some(x) = self.builtin_options_as_shape_options() {
19150            ds.field("builtin_options", &x)
19151          } else {
19152            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19153          }
19154        },
19155        BuiltinOptions::PowOptions => {
19156          if let Some(x) = self.builtin_options_as_pow_options() {
19157            ds.field("builtin_options", &x)
19158          } else {
19159            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19160          }
19161        },
19162        BuiltinOptions::ArgMinOptions => {
19163          if let Some(x) = self.builtin_options_as_arg_min_options() {
19164            ds.field("builtin_options", &x)
19165          } else {
19166            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19167          }
19168        },
19169        BuiltinOptions::FakeQuantOptions => {
19170          if let Some(x) = self.builtin_options_as_fake_quant_options() {
19171            ds.field("builtin_options", &x)
19172          } else {
19173            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19174          }
19175        },
19176        BuiltinOptions::PackOptions => {
19177          if let Some(x) = self.builtin_options_as_pack_options() {
19178            ds.field("builtin_options", &x)
19179          } else {
19180            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19181          }
19182        },
19183        BuiltinOptions::LogicalOrOptions => {
19184          if let Some(x) = self.builtin_options_as_logical_or_options() {
19185            ds.field("builtin_options", &x)
19186          } else {
19187            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19188          }
19189        },
19190        BuiltinOptions::OneHotOptions => {
19191          if let Some(x) = self.builtin_options_as_one_hot_options() {
19192            ds.field("builtin_options", &x)
19193          } else {
19194            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19195          }
19196        },
19197        BuiltinOptions::LogicalAndOptions => {
19198          if let Some(x) = self.builtin_options_as_logical_and_options() {
19199            ds.field("builtin_options", &x)
19200          } else {
19201            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19202          }
19203        },
19204        BuiltinOptions::LogicalNotOptions => {
19205          if let Some(x) = self.builtin_options_as_logical_not_options() {
19206            ds.field("builtin_options", &x)
19207          } else {
19208            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19209          }
19210        },
19211        BuiltinOptions::UnpackOptions => {
19212          if let Some(x) = self.builtin_options_as_unpack_options() {
19213            ds.field("builtin_options", &x)
19214          } else {
19215            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19216          }
19217        },
19218        BuiltinOptions::FloorDivOptions => {
19219          if let Some(x) = self.builtin_options_as_floor_div_options() {
19220            ds.field("builtin_options", &x)
19221          } else {
19222            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19223          }
19224        },
19225        BuiltinOptions::SquareOptions => {
19226          if let Some(x) = self.builtin_options_as_square_options() {
19227            ds.field("builtin_options", &x)
19228          } else {
19229            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19230          }
19231        },
19232        BuiltinOptions::ZerosLikeOptions => {
19233          if let Some(x) = self.builtin_options_as_zeros_like_options() {
19234            ds.field("builtin_options", &x)
19235          } else {
19236            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19237          }
19238        },
19239        BuiltinOptions::FillOptions => {
19240          if let Some(x) = self.builtin_options_as_fill_options() {
19241            ds.field("builtin_options", &x)
19242          } else {
19243            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19244          }
19245        },
19246        BuiltinOptions::BidirectionalSequenceLSTMOptions => {
19247          if let Some(x) = self.builtin_options_as_bidirectional_sequence_lstmoptions() {
19248            ds.field("builtin_options", &x)
19249          } else {
19250            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19251          }
19252        },
19253        BuiltinOptions::BidirectionalSequenceRNNOptions => {
19254          if let Some(x) = self.builtin_options_as_bidirectional_sequence_rnnoptions() {
19255            ds.field("builtin_options", &x)
19256          } else {
19257            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19258          }
19259        },
19260        BuiltinOptions::UnidirectionalSequenceLSTMOptions => {
19261          if let Some(x) = self.builtin_options_as_unidirectional_sequence_lstmoptions() {
19262            ds.field("builtin_options", &x)
19263          } else {
19264            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19265          }
19266        },
19267        BuiltinOptions::FloorModOptions => {
19268          if let Some(x) = self.builtin_options_as_floor_mod_options() {
19269            ds.field("builtin_options", &x)
19270          } else {
19271            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19272          }
19273        },
19274        BuiltinOptions::RangeOptions => {
19275          if let Some(x) = self.builtin_options_as_range_options() {
19276            ds.field("builtin_options", &x)
19277          } else {
19278            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19279          }
19280        },
19281        BuiltinOptions::ResizeNearestNeighborOptions => {
19282          if let Some(x) = self.builtin_options_as_resize_nearest_neighbor_options() {
19283            ds.field("builtin_options", &x)
19284          } else {
19285            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19286          }
19287        },
19288        BuiltinOptions::LeakyReluOptions => {
19289          if let Some(x) = self.builtin_options_as_leaky_relu_options() {
19290            ds.field("builtin_options", &x)
19291          } else {
19292            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19293          }
19294        },
19295        BuiltinOptions::SquaredDifferenceOptions => {
19296          if let Some(x) = self.builtin_options_as_squared_difference_options() {
19297            ds.field("builtin_options", &x)
19298          } else {
19299            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19300          }
19301        },
19302        BuiltinOptions::MirrorPadOptions => {
19303          if let Some(x) = self.builtin_options_as_mirror_pad_options() {
19304            ds.field("builtin_options", &x)
19305          } else {
19306            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19307          }
19308        },
19309        BuiltinOptions::AbsOptions => {
19310          if let Some(x) = self.builtin_options_as_abs_options() {
19311            ds.field("builtin_options", &x)
19312          } else {
19313            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19314          }
19315        },
19316        BuiltinOptions::SplitVOptions => {
19317          if let Some(x) = self.builtin_options_as_split_voptions() {
19318            ds.field("builtin_options", &x)
19319          } else {
19320            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19321          }
19322        },
19323        BuiltinOptions::UniqueOptions => {
19324          if let Some(x) = self.builtin_options_as_unique_options() {
19325            ds.field("builtin_options", &x)
19326          } else {
19327            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19328          }
19329        },
19330        BuiltinOptions::ReverseV2Options => {
19331          if let Some(x) = self.builtin_options_as_reverse_v2_options() {
19332            ds.field("builtin_options", &x)
19333          } else {
19334            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19335          }
19336        },
19337        BuiltinOptions::AddNOptions => {
19338          if let Some(x) = self.builtin_options_as_add_noptions() {
19339            ds.field("builtin_options", &x)
19340          } else {
19341            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19342          }
19343        },
19344        BuiltinOptions::GatherNdOptions => {
19345          if let Some(x) = self.builtin_options_as_gather_nd_options() {
19346            ds.field("builtin_options", &x)
19347          } else {
19348            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19349          }
19350        },
19351        BuiltinOptions::CosOptions => {
19352          if let Some(x) = self.builtin_options_as_cos_options() {
19353            ds.field("builtin_options", &x)
19354          } else {
19355            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19356          }
19357        },
19358        BuiltinOptions::WhereOptions => {
19359          if let Some(x) = self.builtin_options_as_where_options() {
19360            ds.field("builtin_options", &x)
19361          } else {
19362            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19363          }
19364        },
19365        BuiltinOptions::RankOptions => {
19366          if let Some(x) = self.builtin_options_as_rank_options() {
19367            ds.field("builtin_options", &x)
19368          } else {
19369            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19370          }
19371        },
19372        BuiltinOptions::ReverseSequenceOptions => {
19373          if let Some(x) = self.builtin_options_as_reverse_sequence_options() {
19374            ds.field("builtin_options", &x)
19375          } else {
19376            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19377          }
19378        },
19379        BuiltinOptions::MatrixDiagOptions => {
19380          if let Some(x) = self.builtin_options_as_matrix_diag_options() {
19381            ds.field("builtin_options", &x)
19382          } else {
19383            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19384          }
19385        },
19386        BuiltinOptions::QuantizeOptions => {
19387          if let Some(x) = self.builtin_options_as_quantize_options() {
19388            ds.field("builtin_options", &x)
19389          } else {
19390            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19391          }
19392        },
19393        BuiltinOptions::MatrixSetDiagOptions => {
19394          if let Some(x) = self.builtin_options_as_matrix_set_diag_options() {
19395            ds.field("builtin_options", &x)
19396          } else {
19397            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19398          }
19399        },
19400        BuiltinOptions::HardSwishOptions => {
19401          if let Some(x) = self.builtin_options_as_hard_swish_options() {
19402            ds.field("builtin_options", &x)
19403          } else {
19404            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19405          }
19406        },
19407        BuiltinOptions::IfOptions => {
19408          if let Some(x) = self.builtin_options_as_if_options() {
19409            ds.field("builtin_options", &x)
19410          } else {
19411            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19412          }
19413        },
19414        BuiltinOptions::WhileOptions => {
19415          if let Some(x) = self.builtin_options_as_while_options() {
19416            ds.field("builtin_options", &x)
19417          } else {
19418            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19419          }
19420        },
19421        BuiltinOptions::DepthToSpaceOptions => {
19422          if let Some(x) = self.builtin_options_as_depth_to_space_options() {
19423            ds.field("builtin_options", &x)
19424          } else {
19425            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19426          }
19427        },
19428        BuiltinOptions::NonMaxSuppressionV4Options => {
19429          if let Some(x) = self.builtin_options_as_non_max_suppression_v4_options() {
19430            ds.field("builtin_options", &x)
19431          } else {
19432            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19433          }
19434        },
19435        BuiltinOptions::NonMaxSuppressionV5Options => {
19436          if let Some(x) = self.builtin_options_as_non_max_suppression_v5_options() {
19437            ds.field("builtin_options", &x)
19438          } else {
19439            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19440          }
19441        },
19442        BuiltinOptions::ScatterNdOptions => {
19443          if let Some(x) = self.builtin_options_as_scatter_nd_options() {
19444            ds.field("builtin_options", &x)
19445          } else {
19446            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19447          }
19448        },
19449        BuiltinOptions::SelectV2Options => {
19450          if let Some(x) = self.builtin_options_as_select_v2_options() {
19451            ds.field("builtin_options", &x)
19452          } else {
19453            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19454          }
19455        },
19456        BuiltinOptions::DensifyOptions => {
19457          if let Some(x) = self.builtin_options_as_densify_options() {
19458            ds.field("builtin_options", &x)
19459          } else {
19460            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19461          }
19462        },
19463        BuiltinOptions::SegmentSumOptions => {
19464          if let Some(x) = self.builtin_options_as_segment_sum_options() {
19465            ds.field("builtin_options", &x)
19466          } else {
19467            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19468          }
19469        },
19470        BuiltinOptions::BatchMatMulOptions => {
19471          if let Some(x) = self.builtin_options_as_batch_mat_mul_options() {
19472            ds.field("builtin_options", &x)
19473          } else {
19474            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19475          }
19476        },
19477        BuiltinOptions::CumsumOptions => {
19478          if let Some(x) = self.builtin_options_as_cumsum_options() {
19479            ds.field("builtin_options", &x)
19480          } else {
19481            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19482          }
19483        },
19484        BuiltinOptions::CallOnceOptions => {
19485          if let Some(x) = self.builtin_options_as_call_once_options() {
19486            ds.field("builtin_options", &x)
19487          } else {
19488            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19489          }
19490        },
19491        BuiltinOptions::BroadcastToOptions => {
19492          if let Some(x) = self.builtin_options_as_broadcast_to_options() {
19493            ds.field("builtin_options", &x)
19494          } else {
19495            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19496          }
19497        },
19498        BuiltinOptions::Rfft2dOptions => {
19499          if let Some(x) = self.builtin_options_as_rfft_2d_options() {
19500            ds.field("builtin_options", &x)
19501          } else {
19502            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19503          }
19504        },
19505        BuiltinOptions::Conv3DOptions => {
19506          if let Some(x) = self.builtin_options_as_conv_3_doptions() {
19507            ds.field("builtin_options", &x)
19508          } else {
19509            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19510          }
19511        },
19512        BuiltinOptions::HashtableOptions => {
19513          if let Some(x) = self.builtin_options_as_hashtable_options() {
19514            ds.field("builtin_options", &x)
19515          } else {
19516            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19517          }
19518        },
19519        BuiltinOptions::HashtableFindOptions => {
19520          if let Some(x) = self.builtin_options_as_hashtable_find_options() {
19521            ds.field("builtin_options", &x)
19522          } else {
19523            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19524          }
19525        },
19526        BuiltinOptions::HashtableImportOptions => {
19527          if let Some(x) = self.builtin_options_as_hashtable_import_options() {
19528            ds.field("builtin_options", &x)
19529          } else {
19530            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19531          }
19532        },
19533        BuiltinOptions::HashtableSizeOptions => {
19534          if let Some(x) = self.builtin_options_as_hashtable_size_options() {
19535            ds.field("builtin_options", &x)
19536          } else {
19537            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19538          }
19539        },
19540        BuiltinOptions::VarHandleOptions => {
19541          if let Some(x) = self.builtin_options_as_var_handle_options() {
19542            ds.field("builtin_options", &x)
19543          } else {
19544            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19545          }
19546        },
19547        BuiltinOptions::ReadVariableOptions => {
19548          if let Some(x) = self.builtin_options_as_read_variable_options() {
19549            ds.field("builtin_options", &x)
19550          } else {
19551            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19552          }
19553        },
19554        BuiltinOptions::AssignVariableOptions => {
19555          if let Some(x) = self.builtin_options_as_assign_variable_options() {
19556            ds.field("builtin_options", &x)
19557          } else {
19558            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19559          }
19560        },
19561        BuiltinOptions::RandomOptions => {
19562          if let Some(x) = self.builtin_options_as_random_options() {
19563            ds.field("builtin_options", &x)
19564          } else {
19565            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19566          }
19567        },
19568        BuiltinOptions::BucketizeOptions => {
19569          if let Some(x) = self.builtin_options_as_bucketize_options() {
19570            ds.field("builtin_options", &x)
19571          } else {
19572            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19573          }
19574        },
19575        BuiltinOptions::GeluOptions => {
19576          if let Some(x) = self.builtin_options_as_gelu_options() {
19577            ds.field("builtin_options", &x)
19578          } else {
19579            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19580          }
19581        },
19582        BuiltinOptions::DynamicUpdateSliceOptions => {
19583          if let Some(x) = self.builtin_options_as_dynamic_update_slice_options() {
19584            ds.field("builtin_options", &x)
19585          } else {
19586            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19587          }
19588        },
19589        BuiltinOptions::UnsortedSegmentProdOptions => {
19590          if let Some(x) = self.builtin_options_as_unsorted_segment_prod_options() {
19591            ds.field("builtin_options", &x)
19592          } else {
19593            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19594          }
19595        },
19596        BuiltinOptions::UnsortedSegmentMaxOptions => {
19597          if let Some(x) = self.builtin_options_as_unsorted_segment_max_options() {
19598            ds.field("builtin_options", &x)
19599          } else {
19600            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19601          }
19602        },
19603        BuiltinOptions::UnsortedSegmentMinOptions => {
19604          if let Some(x) = self.builtin_options_as_unsorted_segment_min_options() {
19605            ds.field("builtin_options", &x)
19606          } else {
19607            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19608          }
19609        },
19610        BuiltinOptions::UnsortedSegmentSumOptions => {
19611          if let Some(x) = self.builtin_options_as_unsorted_segment_sum_options() {
19612            ds.field("builtin_options", &x)
19613          } else {
19614            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19615          }
19616        },
19617        BuiltinOptions::ATan2Options => {
19618          if let Some(x) = self.builtin_options_as_atan_2_options() {
19619            ds.field("builtin_options", &x)
19620          } else {
19621            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19622          }
19623        },
19624        BuiltinOptions::SignOptions => {
19625          if let Some(x) = self.builtin_options_as_sign_options() {
19626            ds.field("builtin_options", &x)
19627          } else {
19628            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19629          }
19630        },
19631        BuiltinOptions::BitcastOptions => {
19632          if let Some(x) = self.builtin_options_as_bitcast_options() {
19633            ds.field("builtin_options", &x)
19634          } else {
19635            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19636          }
19637        },
19638        BuiltinOptions::BitwiseXorOptions => {
19639          if let Some(x) = self.builtin_options_as_bitwise_xor_options() {
19640            ds.field("builtin_options", &x)
19641          } else {
19642            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19643          }
19644        },
19645        BuiltinOptions::RightShiftOptions => {
19646          if let Some(x) = self.builtin_options_as_right_shift_options() {
19647            ds.field("builtin_options", &x)
19648          } else {
19649            ds.field("builtin_options", &"InvalidFlatbuffer: Union discriminant does not match value.")
19650          }
19651        },
19652        _ => {
19653          let x: Option<()> = None;
19654          ds.field("builtin_options", &x)
19655        },
19656      };
19657      ds.field("custom_options", &self.custom_options());
19658      ds.field("custom_options_format", &self.custom_options_format());
19659      ds.field("mutating_variable_inputs", &self.mutating_variable_inputs());
19660      ds.field("intermediates", &self.intermediates());
19661      ds.finish()
19662  }
19663}
19664pub enum SubGraphOffset {}
19665#[derive(Copy, Clone, PartialEq)]
19666
19667pub struct SubGraph<'a> {
19668  pub _tab: flatbuffers::Table<'a>,
19669}
19670
19671impl<'a> flatbuffers::Follow<'a> for SubGraph<'a> {
19672  type Inner = SubGraph<'a>;
19673  #[inline]
19674  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19675    Self { _tab: flatbuffers::Table::new(buf, loc) }
19676  }
19677}
19678
19679impl<'a> SubGraph<'a> {
19680  pub const VT_TENSORS: flatbuffers::VOffsetT = 4;
19681  pub const VT_INPUTS: flatbuffers::VOffsetT = 6;
19682  pub const VT_OUTPUTS: flatbuffers::VOffsetT = 8;
19683  pub const VT_OPERATORS: flatbuffers::VOffsetT = 10;
19684  pub const VT_NAME: flatbuffers::VOffsetT = 12;
19685
19686  #[inline]
19687  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19688    SubGraph { _tab: table }
19689  }
19690  #[allow(unused_mut)]
19691  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
19692    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
19693    args: &'args SubGraphArgs<'args>
19694  ) -> flatbuffers::WIPOffset<SubGraph<'bldr>> {
19695    let mut builder = SubGraphBuilder::new(_fbb);
19696    if let Some(x) = args.name { builder.add_name(x); }
19697    if let Some(x) = args.operators { builder.add_operators(x); }
19698    if let Some(x) = args.outputs { builder.add_outputs(x); }
19699    if let Some(x) = args.inputs { builder.add_inputs(x); }
19700    if let Some(x) = args.tensors { builder.add_tensors(x); }
19701    builder.finish()
19702  }
19703
19704
19705  #[inline]
19706  pub fn tensors(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Tensor<'a>>>> {
19707    // Safety:
19708    // Created from valid Table for this object
19709    // which contains a valid value in this slot
19710    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Tensor>>>>(SubGraph::VT_TENSORS, None)}
19711  }
19712  #[inline]
19713  pub fn inputs(&self) -> Option<flatbuffers::Vector<'a, i32>> {
19714    // Safety:
19715    // Created from valid Table for this object
19716    // which contains a valid value in this slot
19717    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(SubGraph::VT_INPUTS, None)}
19718  }
19719  #[inline]
19720  pub fn outputs(&self) -> Option<flatbuffers::Vector<'a, i32>> {
19721    // Safety:
19722    // Created from valid Table for this object
19723    // which contains a valid value in this slot
19724    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(SubGraph::VT_OUTPUTS, None)}
19725  }
19726  #[inline]
19727  pub fn operators(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Operator<'a>>>> {
19728    // Safety:
19729    // Created from valid Table for this object
19730    // which contains a valid value in this slot
19731    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Operator>>>>(SubGraph::VT_OPERATORS, None)}
19732  }
19733  #[inline]
19734  pub fn name(&self) -> Option<&'a str> {
19735    // Safety:
19736    // Created from valid Table for this object
19737    // which contains a valid value in this slot
19738    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(SubGraph::VT_NAME, None)}
19739  }
19740}
19741
19742impl flatbuffers::Verifiable for SubGraph<'_> {
19743  #[inline]
19744  fn run_verifier(
19745    v: &mut flatbuffers::Verifier, pos: usize
19746  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19747    use self::flatbuffers::Verifiable;
19748    v.visit_table(pos)?
19749     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Tensor>>>>("tensors", Self::VT_TENSORS, false)?
19750     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("inputs", Self::VT_INPUTS, false)?
19751     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("outputs", Self::VT_OUTPUTS, false)?
19752     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Operator>>>>("operators", Self::VT_OPERATORS, false)?
19753     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
19754     .finish();
19755    Ok(())
19756  }
19757}
19758pub struct SubGraphArgs<'a> {
19759    pub tensors: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Tensor<'a>>>>>,
19760    pub inputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
19761    pub outputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
19762    pub operators: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Operator<'a>>>>>,
19763    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
19764}
19765impl<'a> Default for SubGraphArgs<'a> {
19766  #[inline]
19767  fn default() -> Self {
19768    SubGraphArgs {
19769      tensors: None,
19770      inputs: None,
19771      outputs: None,
19772      operators: None,
19773      name: None,
19774    }
19775  }
19776}
19777
19778pub struct SubGraphBuilder<'a: 'b, 'b> {
19779  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
19780  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19781}
19782impl<'a: 'b, 'b> SubGraphBuilder<'a, 'b> {
19783  #[inline]
19784  pub fn add_tensors(&mut self, tensors: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Tensor<'b >>>>) {
19785    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SubGraph::VT_TENSORS, tensors);
19786  }
19787  #[inline]
19788  pub fn add_inputs(&mut self, inputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
19789    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SubGraph::VT_INPUTS, inputs);
19790  }
19791  #[inline]
19792  pub fn add_outputs(&mut self, outputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
19793    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SubGraph::VT_OUTPUTS, outputs);
19794  }
19795  #[inline]
19796  pub fn add_operators(&mut self, operators: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Operator<'b >>>>) {
19797    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SubGraph::VT_OPERATORS, operators);
19798  }
19799  #[inline]
19800  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
19801    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SubGraph::VT_NAME, name);
19802  }
19803  #[inline]
19804  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SubGraphBuilder<'a, 'b> {
19805    let start = _fbb.start_table();
19806    SubGraphBuilder {
19807      fbb_: _fbb,
19808      start_: start,
19809    }
19810  }
19811  #[inline]
19812  pub fn finish(self) -> flatbuffers::WIPOffset<SubGraph<'a>> {
19813    let o = self.fbb_.end_table(self.start_);
19814    flatbuffers::WIPOffset::new(o.value())
19815  }
19816}
19817
19818impl core::fmt::Debug for SubGraph<'_> {
19819  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19820    let mut ds = f.debug_struct("SubGraph");
19821      ds.field("tensors", &self.tensors());
19822      ds.field("inputs", &self.inputs());
19823      ds.field("outputs", &self.outputs());
19824      ds.field("operators", &self.operators());
19825      ds.field("name", &self.name());
19826      ds.finish()
19827  }
19828}
19829pub enum BufferOffset {}
19830#[derive(Copy, Clone, PartialEq)]
19831
19832pub struct Buffer<'a> {
19833  pub _tab: flatbuffers::Table<'a>,
19834}
19835
19836impl<'a> flatbuffers::Follow<'a> for Buffer<'a> {
19837  type Inner = Buffer<'a>;
19838  #[inline]
19839  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19840    Self { _tab: flatbuffers::Table::new(buf, loc) }
19841  }
19842}
19843
19844impl<'a> Buffer<'a> {
19845  pub const VT_DATA: flatbuffers::VOffsetT = 4;
19846
19847  #[inline]
19848  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19849    Buffer { _tab: table }
19850  }
19851  #[allow(unused_mut)]
19852  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
19853    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
19854    args: &'args BufferArgs<'args>
19855  ) -> flatbuffers::WIPOffset<Buffer<'bldr>> {
19856    let mut builder = BufferBuilder::new(_fbb);
19857    if let Some(x) = args.data { builder.add_data(x); }
19858    builder.finish()
19859  }
19860
19861
19862  #[inline]
19863  pub fn data(&self) -> Option<flatbuffers::Vector<'a, u8>> {
19864    // Safety:
19865    // Created from valid Table for this object
19866    // which contains a valid value in this slot
19867    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(Buffer::VT_DATA, None)}
19868  }
19869}
19870
19871impl flatbuffers::Verifiable for Buffer<'_> {
19872  #[inline]
19873  fn run_verifier(
19874    v: &mut flatbuffers::Verifier, pos: usize
19875  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19876    use self::flatbuffers::Verifiable;
19877    v.visit_table(pos)?
19878     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("data", Self::VT_DATA, false)?
19879     .finish();
19880    Ok(())
19881  }
19882}
19883pub struct BufferArgs<'a> {
19884    pub data: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
19885}
19886impl<'a> Default for BufferArgs<'a> {
19887  #[inline]
19888  fn default() -> Self {
19889    BufferArgs {
19890      data: None,
19891    }
19892  }
19893}
19894
19895pub struct BufferBuilder<'a: 'b, 'b> {
19896  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
19897  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19898}
19899impl<'a: 'b, 'b> BufferBuilder<'a, 'b> {
19900  #[inline]
19901  pub fn add_data(&mut self, data: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
19902    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Buffer::VT_DATA, data);
19903  }
19904  #[inline]
19905  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> BufferBuilder<'a, 'b> {
19906    let start = _fbb.start_table();
19907    BufferBuilder {
19908      fbb_: _fbb,
19909      start_: start,
19910    }
19911  }
19912  #[inline]
19913  pub fn finish(self) -> flatbuffers::WIPOffset<Buffer<'a>> {
19914    let o = self.fbb_.end_table(self.start_);
19915    flatbuffers::WIPOffset::new(o.value())
19916  }
19917}
19918
19919impl core::fmt::Debug for Buffer<'_> {
19920  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19921    let mut ds = f.debug_struct("Buffer");
19922      ds.field("data", &self.data());
19923      ds.finish()
19924  }
19925}
19926pub enum MetadataOffset {}
19927#[derive(Copy, Clone, PartialEq)]
19928
19929pub struct Metadata<'a> {
19930  pub _tab: flatbuffers::Table<'a>,
19931}
19932
19933impl<'a> flatbuffers::Follow<'a> for Metadata<'a> {
19934  type Inner = Metadata<'a>;
19935  #[inline]
19936  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19937    Self { _tab: flatbuffers::Table::new(buf, loc) }
19938  }
19939}
19940
19941impl<'a> Metadata<'a> {
19942  pub const VT_NAME: flatbuffers::VOffsetT = 4;
19943  pub const VT_BUFFER: flatbuffers::VOffsetT = 6;
19944
19945  #[inline]
19946  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19947    Metadata { _tab: table }
19948  }
19949  #[allow(unused_mut)]
19950  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
19951    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
19952    args: &'args MetadataArgs<'args>
19953  ) -> flatbuffers::WIPOffset<Metadata<'bldr>> {
19954    let mut builder = MetadataBuilder::new(_fbb);
19955    builder.add_buffer(args.buffer);
19956    if let Some(x) = args.name { builder.add_name(x); }
19957    builder.finish()
19958  }
19959
19960
19961  #[inline]
19962  pub fn name(&self) -> Option<&'a str> {
19963    // Safety:
19964    // Created from valid Table for this object
19965    // which contains a valid value in this slot
19966    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Metadata::VT_NAME, None)}
19967  }
19968  #[inline]
19969  pub fn buffer(&self) -> u32 {
19970    // Safety:
19971    // Created from valid Table for this object
19972    // which contains a valid value in this slot
19973    unsafe { self._tab.get::<u32>(Metadata::VT_BUFFER, Some(0)).unwrap()}
19974  }
19975}
19976
19977impl flatbuffers::Verifiable for Metadata<'_> {
19978  #[inline]
19979  fn run_verifier(
19980    v: &mut flatbuffers::Verifier, pos: usize
19981  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19982    use self::flatbuffers::Verifiable;
19983    v.visit_table(pos)?
19984     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
19985     .visit_field::<u32>("buffer", Self::VT_BUFFER, false)?
19986     .finish();
19987    Ok(())
19988  }
19989}
19990pub struct MetadataArgs<'a> {
19991    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
19992    pub buffer: u32,
19993}
19994impl<'a> Default for MetadataArgs<'a> {
19995  #[inline]
19996  fn default() -> Self {
19997    MetadataArgs {
19998      name: None,
19999      buffer: 0,
20000    }
20001  }
20002}
20003
20004pub struct MetadataBuilder<'a: 'b, 'b> {
20005  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
20006  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20007}
20008impl<'a: 'b, 'b> MetadataBuilder<'a, 'b> {
20009  #[inline]
20010  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
20011    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Metadata::VT_NAME, name);
20012  }
20013  #[inline]
20014  pub fn add_buffer(&mut self, buffer: u32) {
20015    self.fbb_.push_slot::<u32>(Metadata::VT_BUFFER, buffer, 0);
20016  }
20017  #[inline]
20018  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> MetadataBuilder<'a, 'b> {
20019    let start = _fbb.start_table();
20020    MetadataBuilder {
20021      fbb_: _fbb,
20022      start_: start,
20023    }
20024  }
20025  #[inline]
20026  pub fn finish(self) -> flatbuffers::WIPOffset<Metadata<'a>> {
20027    let o = self.fbb_.end_table(self.start_);
20028    flatbuffers::WIPOffset::new(o.value())
20029  }
20030}
20031
20032impl core::fmt::Debug for Metadata<'_> {
20033  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20034    let mut ds = f.debug_struct("Metadata");
20035      ds.field("name", &self.name());
20036      ds.field("buffer", &self.buffer());
20037      ds.finish()
20038  }
20039}
20040pub enum TensorMapOffset {}
20041#[derive(Copy, Clone, PartialEq)]
20042
20043pub struct TensorMap<'a> {
20044  pub _tab: flatbuffers::Table<'a>,
20045}
20046
20047impl<'a> flatbuffers::Follow<'a> for TensorMap<'a> {
20048  type Inner = TensorMap<'a>;
20049  #[inline]
20050  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20051    Self { _tab: flatbuffers::Table::new(buf, loc) }
20052  }
20053}
20054
20055impl<'a> TensorMap<'a> {
20056  pub const VT_NAME: flatbuffers::VOffsetT = 4;
20057  pub const VT_TENSOR_INDEX: flatbuffers::VOffsetT = 6;
20058
20059  #[inline]
20060  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20061    TensorMap { _tab: table }
20062  }
20063  #[allow(unused_mut)]
20064  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
20065    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
20066    args: &'args TensorMapArgs<'args>
20067  ) -> flatbuffers::WIPOffset<TensorMap<'bldr>> {
20068    let mut builder = TensorMapBuilder::new(_fbb);
20069    builder.add_tensor_index(args.tensor_index);
20070    if let Some(x) = args.name { builder.add_name(x); }
20071    builder.finish()
20072  }
20073
20074
20075  #[inline]
20076  pub fn name(&self) -> Option<&'a str> {
20077    // Safety:
20078    // Created from valid Table for this object
20079    // which contains a valid value in this slot
20080    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(TensorMap::VT_NAME, None)}
20081  }
20082  #[inline]
20083  pub fn tensor_index(&self) -> u32 {
20084    // Safety:
20085    // Created from valid Table for this object
20086    // which contains a valid value in this slot
20087    unsafe { self._tab.get::<u32>(TensorMap::VT_TENSOR_INDEX, Some(0)).unwrap()}
20088  }
20089}
20090
20091impl flatbuffers::Verifiable for TensorMap<'_> {
20092  #[inline]
20093  fn run_verifier(
20094    v: &mut flatbuffers::Verifier, pos: usize
20095  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20096    use self::flatbuffers::Verifiable;
20097    v.visit_table(pos)?
20098     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
20099     .visit_field::<u32>("tensor_index", Self::VT_TENSOR_INDEX, false)?
20100     .finish();
20101    Ok(())
20102  }
20103}
20104pub struct TensorMapArgs<'a> {
20105    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
20106    pub tensor_index: u32,
20107}
20108impl<'a> Default for TensorMapArgs<'a> {
20109  #[inline]
20110  fn default() -> Self {
20111    TensorMapArgs {
20112      name: None,
20113      tensor_index: 0,
20114    }
20115  }
20116}
20117
20118pub struct TensorMapBuilder<'a: 'b, 'b> {
20119  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
20120  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20121}
20122impl<'a: 'b, 'b> TensorMapBuilder<'a, 'b> {
20123  #[inline]
20124  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
20125    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TensorMap::VT_NAME, name);
20126  }
20127  #[inline]
20128  pub fn add_tensor_index(&mut self, tensor_index: u32) {
20129    self.fbb_.push_slot::<u32>(TensorMap::VT_TENSOR_INDEX, tensor_index, 0);
20130  }
20131  #[inline]
20132  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> TensorMapBuilder<'a, 'b> {
20133    let start = _fbb.start_table();
20134    TensorMapBuilder {
20135      fbb_: _fbb,
20136      start_: start,
20137    }
20138  }
20139  #[inline]
20140  pub fn finish(self) -> flatbuffers::WIPOffset<TensorMap<'a>> {
20141    let o = self.fbb_.end_table(self.start_);
20142    flatbuffers::WIPOffset::new(o.value())
20143  }
20144}
20145
20146impl core::fmt::Debug for TensorMap<'_> {
20147  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20148    let mut ds = f.debug_struct("TensorMap");
20149      ds.field("name", &self.name());
20150      ds.field("tensor_index", &self.tensor_index());
20151      ds.finish()
20152  }
20153}
20154pub enum SignatureDefOffset {}
20155#[derive(Copy, Clone, PartialEq)]
20156
20157pub struct SignatureDef<'a> {
20158  pub _tab: flatbuffers::Table<'a>,
20159}
20160
20161impl<'a> flatbuffers::Follow<'a> for SignatureDef<'a> {
20162  type Inner = SignatureDef<'a>;
20163  #[inline]
20164  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20165    Self { _tab: flatbuffers::Table::new(buf, loc) }
20166  }
20167}
20168
20169impl<'a> SignatureDef<'a> {
20170  pub const VT_INPUTS: flatbuffers::VOffsetT = 4;
20171  pub const VT_OUTPUTS: flatbuffers::VOffsetT = 6;
20172  pub const VT_SIGNATURE_KEY: flatbuffers::VOffsetT = 8;
20173  pub const VT_SUBGRAPH_INDEX: flatbuffers::VOffsetT = 12;
20174
20175  #[inline]
20176  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20177    SignatureDef { _tab: table }
20178  }
20179  #[allow(unused_mut)]
20180  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
20181    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
20182    args: &'args SignatureDefArgs<'args>
20183  ) -> flatbuffers::WIPOffset<SignatureDef<'bldr>> {
20184    let mut builder = SignatureDefBuilder::new(_fbb);
20185    builder.add_subgraph_index(args.subgraph_index);
20186    if let Some(x) = args.signature_key { builder.add_signature_key(x); }
20187    if let Some(x) = args.outputs { builder.add_outputs(x); }
20188    if let Some(x) = args.inputs { builder.add_inputs(x); }
20189    builder.finish()
20190  }
20191
20192
20193  #[inline]
20194  pub fn inputs(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap<'a>>>> {
20195    // Safety:
20196    // Created from valid Table for this object
20197    // which contains a valid value in this slot
20198    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap>>>>(SignatureDef::VT_INPUTS, None)}
20199  }
20200  #[inline]
20201  pub fn outputs(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap<'a>>>> {
20202    // Safety:
20203    // Created from valid Table for this object
20204    // which contains a valid value in this slot
20205    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap>>>>(SignatureDef::VT_OUTPUTS, None)}
20206  }
20207  #[inline]
20208  pub fn signature_key(&self) -> Option<&'a str> {
20209    // Safety:
20210    // Created from valid Table for this object
20211    // which contains a valid value in this slot
20212    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(SignatureDef::VT_SIGNATURE_KEY, None)}
20213  }
20214  #[inline]
20215  pub fn subgraph_index(&self) -> u32 {
20216    // Safety:
20217    // Created from valid Table for this object
20218    // which contains a valid value in this slot
20219    unsafe { self._tab.get::<u32>(SignatureDef::VT_SUBGRAPH_INDEX, Some(0)).unwrap()}
20220  }
20221}
20222
20223impl flatbuffers::Verifiable for SignatureDef<'_> {
20224  #[inline]
20225  fn run_verifier(
20226    v: &mut flatbuffers::Verifier, pos: usize
20227  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20228    use self::flatbuffers::Verifiable;
20229    v.visit_table(pos)?
20230     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<TensorMap>>>>("inputs", Self::VT_INPUTS, false)?
20231     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<TensorMap>>>>("outputs", Self::VT_OUTPUTS, false)?
20232     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("signature_key", Self::VT_SIGNATURE_KEY, false)?
20233     .visit_field::<u32>("subgraph_index", Self::VT_SUBGRAPH_INDEX, false)?
20234     .finish();
20235    Ok(())
20236  }
20237}
20238pub struct SignatureDefArgs<'a> {
20239    pub inputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap<'a>>>>>,
20240    pub outputs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TensorMap<'a>>>>>,
20241    pub signature_key: Option<flatbuffers::WIPOffset<&'a str>>,
20242    pub subgraph_index: u32,
20243}
20244impl<'a> Default for SignatureDefArgs<'a> {
20245  #[inline]
20246  fn default() -> Self {
20247    SignatureDefArgs {
20248      inputs: None,
20249      outputs: None,
20250      signature_key: None,
20251      subgraph_index: 0,
20252    }
20253  }
20254}
20255
20256pub struct SignatureDefBuilder<'a: 'b, 'b> {
20257  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
20258  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20259}
20260impl<'a: 'b, 'b> SignatureDefBuilder<'a, 'b> {
20261  #[inline]
20262  pub fn add_inputs(&mut self, inputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<TensorMap<'b >>>>) {
20263    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SignatureDef::VT_INPUTS, inputs);
20264  }
20265  #[inline]
20266  pub fn add_outputs(&mut self, outputs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<TensorMap<'b >>>>) {
20267    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SignatureDef::VT_OUTPUTS, outputs);
20268  }
20269  #[inline]
20270  pub fn add_signature_key(&mut self, signature_key: flatbuffers::WIPOffset<&'b  str>) {
20271    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SignatureDef::VT_SIGNATURE_KEY, signature_key);
20272  }
20273  #[inline]
20274  pub fn add_subgraph_index(&mut self, subgraph_index: u32) {
20275    self.fbb_.push_slot::<u32>(SignatureDef::VT_SUBGRAPH_INDEX, subgraph_index, 0);
20276  }
20277  #[inline]
20278  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> SignatureDefBuilder<'a, 'b> {
20279    let start = _fbb.start_table();
20280    SignatureDefBuilder {
20281      fbb_: _fbb,
20282      start_: start,
20283    }
20284  }
20285  #[inline]
20286  pub fn finish(self) -> flatbuffers::WIPOffset<SignatureDef<'a>> {
20287    let o = self.fbb_.end_table(self.start_);
20288    flatbuffers::WIPOffset::new(o.value())
20289  }
20290}
20291
20292impl core::fmt::Debug for SignatureDef<'_> {
20293  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20294    let mut ds = f.debug_struct("SignatureDef");
20295      ds.field("inputs", &self.inputs());
20296      ds.field("outputs", &self.outputs());
20297      ds.field("signature_key", &self.signature_key());
20298      ds.field("subgraph_index", &self.subgraph_index());
20299      ds.finish()
20300  }
20301}
20302pub enum ModelOffset {}
20303#[derive(Copy, Clone, PartialEq)]
20304
20305pub struct Model<'a> {
20306  pub _tab: flatbuffers::Table<'a>,
20307}
20308
20309impl<'a> flatbuffers::Follow<'a> for Model<'a> {
20310  type Inner = Model<'a>;
20311  #[inline]
20312  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20313    Self { _tab: flatbuffers::Table::new(buf, loc) }
20314  }
20315}
20316
20317impl<'a> Model<'a> {
20318  pub const VT_VERSION: flatbuffers::VOffsetT = 4;
20319  pub const VT_OPERATOR_CODES: flatbuffers::VOffsetT = 6;
20320  pub const VT_SUBGRAPHS: flatbuffers::VOffsetT = 8;
20321  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 10;
20322  pub const VT_BUFFERS: flatbuffers::VOffsetT = 12;
20323  pub const VT_METADATA_BUFFER: flatbuffers::VOffsetT = 14;
20324  pub const VT_METADATA: flatbuffers::VOffsetT = 16;
20325  pub const VT_SIGNATURE_DEFS: flatbuffers::VOffsetT = 18;
20326
20327  #[inline]
20328  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20329    Model { _tab: table }
20330  }
20331  #[allow(unused_mut)]
20332  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr>(
20333    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr>,
20334    args: &'args ModelArgs<'args>
20335  ) -> flatbuffers::WIPOffset<Model<'bldr>> {
20336    let mut builder = ModelBuilder::new(_fbb);
20337    if let Some(x) = args.signature_defs { builder.add_signature_defs(x); }
20338    if let Some(x) = args.metadata { builder.add_metadata(x); }
20339    if let Some(x) = args.metadata_buffer { builder.add_metadata_buffer(x); }
20340    if let Some(x) = args.buffers { builder.add_buffers(x); }
20341    if let Some(x) = args.description { builder.add_description(x); }
20342    if let Some(x) = args.subgraphs { builder.add_subgraphs(x); }
20343    if let Some(x) = args.operator_codes { builder.add_operator_codes(x); }
20344    builder.add_version(args.version);
20345    builder.finish()
20346  }
20347
20348
20349  #[inline]
20350  pub fn version(&self) -> u32 {
20351    // Safety:
20352    // Created from valid Table for this object
20353    // which contains a valid value in this slot
20354    unsafe { self._tab.get::<u32>(Model::VT_VERSION, Some(0)).unwrap()}
20355  }
20356  #[inline]
20357  pub fn operator_codes(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<OperatorCode<'a>>>> {
20358    // Safety:
20359    // Created from valid Table for this object
20360    // which contains a valid value in this slot
20361    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<OperatorCode>>>>(Model::VT_OPERATOR_CODES, None)}
20362  }
20363  #[inline]
20364  pub fn subgraphs(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SubGraph<'a>>>> {
20365    // Safety:
20366    // Created from valid Table for this object
20367    // which contains a valid value in this slot
20368    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SubGraph>>>>(Model::VT_SUBGRAPHS, None)}
20369  }
20370  #[inline]
20371  pub fn description(&self) -> Option<&'a str> {
20372    // Safety:
20373    // Created from valid Table for this object
20374    // which contains a valid value in this slot
20375    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Model::VT_DESCRIPTION, None)}
20376  }
20377  #[inline]
20378  pub fn buffers(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Buffer<'a>>>> {
20379    // Safety:
20380    // Created from valid Table for this object
20381    // which contains a valid value in this slot
20382    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Buffer>>>>(Model::VT_BUFFERS, None)}
20383  }
20384  #[inline]
20385  pub fn metadata_buffer(&self) -> Option<flatbuffers::Vector<'a, i32>> {
20386    // Safety:
20387    // Created from valid Table for this object
20388    // which contains a valid value in this slot
20389    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(Model::VT_METADATA_BUFFER, None)}
20390  }
20391  #[inline]
20392  pub fn metadata(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Metadata<'a>>>> {
20393    // Safety:
20394    // Created from valid Table for this object
20395    // which contains a valid value in this slot
20396    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Metadata>>>>(Model::VT_METADATA, None)}
20397  }
20398  #[inline]
20399  pub fn signature_defs(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SignatureDef<'a>>>> {
20400    // Safety:
20401    // Created from valid Table for this object
20402    // which contains a valid value in this slot
20403    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SignatureDef>>>>(Model::VT_SIGNATURE_DEFS, None)}
20404  }
20405}
20406
20407impl flatbuffers::Verifiable for Model<'_> {
20408  #[inline]
20409  fn run_verifier(
20410    v: &mut flatbuffers::Verifier, pos: usize
20411  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20412    use self::flatbuffers::Verifiable;
20413    v.visit_table(pos)?
20414     .visit_field::<u32>("version", Self::VT_VERSION, false)?
20415     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<OperatorCode>>>>("operator_codes", Self::VT_OPERATOR_CODES, false)?
20416     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<SubGraph>>>>("subgraphs", Self::VT_SUBGRAPHS, false)?
20417     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
20418     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Buffer>>>>("buffers", Self::VT_BUFFERS, false)?
20419     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("metadata_buffer", Self::VT_METADATA_BUFFER, false)?
20420     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Metadata>>>>("metadata", Self::VT_METADATA, false)?
20421     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<SignatureDef>>>>("signature_defs", Self::VT_SIGNATURE_DEFS, false)?
20422     .finish();
20423    Ok(())
20424  }
20425}
20426pub struct ModelArgs<'a> {
20427    pub version: u32,
20428    pub operator_codes: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<OperatorCode<'a>>>>>,
20429    pub subgraphs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SubGraph<'a>>>>>,
20430    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
20431    pub buffers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Buffer<'a>>>>>,
20432    pub metadata_buffer: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
20433    pub metadata: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Metadata<'a>>>>>,
20434    pub signature_defs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SignatureDef<'a>>>>>,
20435}
20436impl<'a> Default for ModelArgs<'a> {
20437  #[inline]
20438  fn default() -> Self {
20439    ModelArgs {
20440      version: 0,
20441      operator_codes: None,
20442      subgraphs: None,
20443      description: None,
20444      buffers: None,
20445      metadata_buffer: None,
20446      metadata: None,
20447      signature_defs: None,
20448    }
20449  }
20450}
20451
20452pub struct ModelBuilder<'a: 'b, 'b> {
20453  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a>,
20454  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20455}
20456impl<'a: 'b, 'b> ModelBuilder<'a, 'b> {
20457  #[inline]
20458  pub fn add_version(&mut self, version: u32) {
20459    self.fbb_.push_slot::<u32>(Model::VT_VERSION, version, 0);
20460  }
20461  #[inline]
20462  pub fn add_operator_codes(&mut self, operator_codes: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<OperatorCode<'b >>>>) {
20463    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_OPERATOR_CODES, operator_codes);
20464  }
20465  #[inline]
20466  pub fn add_subgraphs(&mut self, subgraphs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<SubGraph<'b >>>>) {
20467    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_SUBGRAPHS, subgraphs);
20468  }
20469  #[inline]
20470  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
20471    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_DESCRIPTION, description);
20472  }
20473  #[inline]
20474  pub fn add_buffers(&mut self, buffers: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Buffer<'b >>>>) {
20475    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_BUFFERS, buffers);
20476  }
20477  #[inline]
20478  pub fn add_metadata_buffer(&mut self, metadata_buffer: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
20479    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_METADATA_BUFFER, metadata_buffer);
20480  }
20481  #[inline]
20482  pub fn add_metadata(&mut self, metadata: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Metadata<'b >>>>) {
20483    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_METADATA, metadata);
20484  }
20485  #[inline]
20486  pub fn add_signature_defs(&mut self, signature_defs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<SignatureDef<'b >>>>) {
20487    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Model::VT_SIGNATURE_DEFS, signature_defs);
20488  }
20489  #[inline]
20490  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>) -> ModelBuilder<'a, 'b> {
20491    let start = _fbb.start_table();
20492    ModelBuilder {
20493      fbb_: _fbb,
20494      start_: start,
20495    }
20496  }
20497  #[inline]
20498  pub fn finish(self) -> flatbuffers::WIPOffset<Model<'a>> {
20499    let o = self.fbb_.end_table(self.start_);
20500    flatbuffers::WIPOffset::new(o.value())
20501  }
20502}
20503
20504impl core::fmt::Debug for Model<'_> {
20505  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20506    let mut ds = f.debug_struct("Model");
20507      ds.field("version", &self.version());
20508      ds.field("operator_codes", &self.operator_codes());
20509      ds.field("subgraphs", &self.subgraphs());
20510      ds.field("description", &self.description());
20511      ds.field("buffers", &self.buffers());
20512      ds.field("metadata_buffer", &self.metadata_buffer());
20513      ds.field("metadata", &self.metadata());
20514      ds.field("signature_defs", &self.signature_defs());
20515      ds.finish()
20516  }
20517}
20518#[inline]
20519/// Verifies that a buffer of bytes contains a `Model`
20520/// and returns it.
20521/// Note that verification is still experimental and may not
20522/// catch every error, or be maximally performant. For the
20523/// previous, unchecked, behavior use
20524/// `root_as_model_unchecked`.
20525pub fn root_as_model(buf: &[u8]) -> Result<Model, flatbuffers::InvalidFlatbuffer> {
20526  flatbuffers::root::<Model>(buf)
20527}
20528#[inline]
20529/// Verifies that a buffer of bytes contains a size prefixed
20530/// `Model` and returns it.
20531/// Note that verification is still experimental and may not
20532/// catch every error, or be maximally performant. For the
20533/// previous, unchecked, behavior use
20534/// `size_prefixed_root_as_model_unchecked`.
20535pub fn size_prefixed_root_as_model(buf: &[u8]) -> Result<Model, flatbuffers::InvalidFlatbuffer> {
20536  flatbuffers::size_prefixed_root::<Model>(buf)
20537}
20538#[inline]
20539/// Verifies, with the given options, that a buffer of bytes
20540/// contains a `Model` and returns it.
20541/// Note that verification is still experimental and may not
20542/// catch every error, or be maximally performant. For the
20543/// previous, unchecked, behavior use
20544/// `root_as_model_unchecked`.
20545pub fn root_as_model_with_opts<'b, 'o>(
20546  opts: &'o flatbuffers::VerifierOptions,
20547  buf: &'b [u8],
20548) -> Result<Model<'b>, flatbuffers::InvalidFlatbuffer> {
20549  flatbuffers::root_with_opts::<Model<'b>>(opts, buf)
20550}
20551#[inline]
20552/// Verifies, with the given verifier options, that a buffer of
20553/// bytes contains a size prefixed `Model` and returns
20554/// it. Note that verification is still experimental and may not
20555/// catch every error, or be maximally performant. For the
20556/// previous, unchecked, behavior use
20557/// `root_as_model_unchecked`.
20558pub fn size_prefixed_root_as_model_with_opts<'b, 'o>(
20559  opts: &'o flatbuffers::VerifierOptions,
20560  buf: &'b [u8],
20561) -> Result<Model<'b>, flatbuffers::InvalidFlatbuffer> {
20562  flatbuffers::size_prefixed_root_with_opts::<Model<'b>>(opts, buf)
20563}
20564#[inline]
20565/// Assumes, without verification, that a buffer of bytes contains a Model and returns it.
20566/// # Safety
20567/// Callers must trust the given bytes do indeed contain a valid `Model`.
20568pub unsafe fn root_as_model_unchecked(buf: &[u8]) -> Model {
20569  flatbuffers::root_unchecked::<Model>(buf)
20570}
20571#[inline]
20572/// Assumes, without verification, that a buffer of bytes contains a size prefixed Model and returns it.
20573/// # Safety
20574/// Callers must trust the given bytes do indeed contain a valid size prefixed `Model`.
20575pub unsafe fn size_prefixed_root_as_model_unchecked(buf: &[u8]) -> Model {
20576  flatbuffers::size_prefixed_root_unchecked::<Model>(buf)
20577}
20578pub const MODEL_IDENTIFIER: &str = "TFL3";
20579
20580#[inline]
20581pub fn model_buffer_has_identifier(buf: &[u8]) -> bool {
20582  flatbuffers::buffer_has_identifier(buf, MODEL_IDENTIFIER, false)
20583}
20584
20585#[inline]
20586pub fn model_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
20587  flatbuffers::buffer_has_identifier(buf, MODEL_IDENTIFIER, true)
20588}
20589
20590pub const MODEL_EXTENSION: &str = "tflite";
20591
20592#[inline]
20593pub fn finish_model_buffer<'a, 'b>(
20594    fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>,
20595    root: flatbuffers::WIPOffset<Model<'a>>) {
20596  fbb.finish(root, Some(MODEL_IDENTIFIER));
20597}
20598
20599#[inline]
20600pub fn finish_size_prefixed_model_buffer<'a, 'b>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a>, root: flatbuffers::WIPOffset<Model<'a>>) {
20601  fbb.finish_size_prefixed(root, Some(MODEL_IDENTIFIER));
20602}
20603}  // pub mod tflite
20604