Skip to main content

duc/flatbuffers/
duc_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 duc {
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_VERTICAL_ALIGN: u8 = 10;
23#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
24pub const ENUM_MAX_VERTICAL_ALIGN: u8 = 12;
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_VERTICAL_ALIGN: [VERTICAL_ALIGN; 3] = [
28  VERTICAL_ALIGN::TOP,
29  VERTICAL_ALIGN::MIDDLE,
30  VERTICAL_ALIGN::BOTTOM,
31];
32
33#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
34#[repr(transparent)]
35pub struct VERTICAL_ALIGN(pub u8);
36#[allow(non_upper_case_globals)]
37impl VERTICAL_ALIGN {
38  pub const TOP: Self = Self(10);
39  pub const MIDDLE: Self = Self(11);
40  pub const BOTTOM: Self = Self(12);
41
42  pub const ENUM_MIN: u8 = 10;
43  pub const ENUM_MAX: u8 = 12;
44  pub const ENUM_VALUES: &'static [Self] = &[
45    Self::TOP,
46    Self::MIDDLE,
47    Self::BOTTOM,
48  ];
49  /// Returns the variant's name or "" if unknown.
50  pub fn variant_name(self) -> Option<&'static str> {
51    match self {
52      Self::TOP => Some("TOP"),
53      Self::MIDDLE => Some("MIDDLE"),
54      Self::BOTTOM => Some("BOTTOM"),
55      _ => None,
56    }
57  }
58}
59impl core::fmt::Debug for VERTICAL_ALIGN {
60  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
61    if let Some(name) = self.variant_name() {
62      f.write_str(name)
63    } else {
64      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
65    }
66  }
67}
68impl<'a> flatbuffers::Follow<'a> for VERTICAL_ALIGN {
69  type Inner = Self;
70  #[inline]
71  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
72    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
73    Self(b)
74  }
75}
76
77impl flatbuffers::Push for VERTICAL_ALIGN {
78    type Output = VERTICAL_ALIGN;
79    #[inline]
80    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
81        flatbuffers::emplace_scalar::<u8>(dst, self.0);
82    }
83}
84
85impl flatbuffers::EndianScalar for VERTICAL_ALIGN {
86  type Scalar = u8;
87  #[inline]
88  fn to_little_endian(self) -> u8 {
89    self.0.to_le()
90  }
91  #[inline]
92  #[allow(clippy::wrong_self_convention)]
93  fn from_little_endian(v: u8) -> Self {
94    let b = u8::from_le(v);
95    Self(b)
96  }
97}
98
99impl<'a> flatbuffers::Verifiable for VERTICAL_ALIGN {
100  #[inline]
101  fn run_verifier(
102    v: &mut flatbuffers::Verifier, pos: usize
103  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
104    use self::flatbuffers::Verifiable;
105    u8::run_verifier(v, pos)
106  }
107}
108
109impl flatbuffers::SimpleToVerifyInSlice for VERTICAL_ALIGN {}
110#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
111pub const ENUM_MIN_TEXT_ALIGN: u8 = 10;
112#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
113pub const ENUM_MAX_TEXT_ALIGN: u8 = 12;
114#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
115#[allow(non_camel_case_types)]
116pub const ENUM_VALUES_TEXT_ALIGN: [TEXT_ALIGN; 3] = [
117  TEXT_ALIGN::LEFT,
118  TEXT_ALIGN::CENTER,
119  TEXT_ALIGN::RIGHT,
120];
121
122#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
123#[repr(transparent)]
124pub struct TEXT_ALIGN(pub u8);
125#[allow(non_upper_case_globals)]
126impl TEXT_ALIGN {
127  pub const LEFT: Self = Self(10);
128  pub const CENTER: Self = Self(11);
129  pub const RIGHT: Self = Self(12);
130
131  pub const ENUM_MIN: u8 = 10;
132  pub const ENUM_MAX: u8 = 12;
133  pub const ENUM_VALUES: &'static [Self] = &[
134    Self::LEFT,
135    Self::CENTER,
136    Self::RIGHT,
137  ];
138  /// Returns the variant's name or "" if unknown.
139  pub fn variant_name(self) -> Option<&'static str> {
140    match self {
141      Self::LEFT => Some("LEFT"),
142      Self::CENTER => Some("CENTER"),
143      Self::RIGHT => Some("RIGHT"),
144      _ => None,
145    }
146  }
147}
148impl core::fmt::Debug for TEXT_ALIGN {
149  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
150    if let Some(name) = self.variant_name() {
151      f.write_str(name)
152    } else {
153      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
154    }
155  }
156}
157impl<'a> flatbuffers::Follow<'a> for TEXT_ALIGN {
158  type Inner = Self;
159  #[inline]
160  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
161    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
162    Self(b)
163  }
164}
165
166impl flatbuffers::Push for TEXT_ALIGN {
167    type Output = TEXT_ALIGN;
168    #[inline]
169    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
170        flatbuffers::emplace_scalar::<u8>(dst, self.0);
171    }
172}
173
174impl flatbuffers::EndianScalar for TEXT_ALIGN {
175  type Scalar = u8;
176  #[inline]
177  fn to_little_endian(self) -> u8 {
178    self.0.to_le()
179  }
180  #[inline]
181  #[allow(clippy::wrong_self_convention)]
182  fn from_little_endian(v: u8) -> Self {
183    let b = u8::from_le(v);
184    Self(b)
185  }
186}
187
188impl<'a> flatbuffers::Verifiable for TEXT_ALIGN {
189  #[inline]
190  fn run_verifier(
191    v: &mut flatbuffers::Verifier, pos: usize
192  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
193    use self::flatbuffers::Verifiable;
194    u8::run_verifier(v, pos)
195  }
196}
197
198impl flatbuffers::SimpleToVerifyInSlice for TEXT_ALIGN {}
199#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
200pub const ENUM_MIN_LINE_SPACING_TYPE: u8 = 10;
201#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
202pub const ENUM_MAX_LINE_SPACING_TYPE: u8 = 12;
203#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
204#[allow(non_camel_case_types)]
205pub const ENUM_VALUES_LINE_SPACING_TYPE: [LINE_SPACING_TYPE; 3] = [
206  LINE_SPACING_TYPE::AT_LEAST,
207  LINE_SPACING_TYPE::EXACTLY,
208  LINE_SPACING_TYPE::MULTIPLE,
209];
210
211#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
212#[repr(transparent)]
213pub struct LINE_SPACING_TYPE(pub u8);
214#[allow(non_upper_case_globals)]
215impl LINE_SPACING_TYPE {
216  pub const AT_LEAST: Self = Self(10);
217  pub const EXACTLY: Self = Self(11);
218  pub const MULTIPLE: Self = Self(12);
219
220  pub const ENUM_MIN: u8 = 10;
221  pub const ENUM_MAX: u8 = 12;
222  pub const ENUM_VALUES: &'static [Self] = &[
223    Self::AT_LEAST,
224    Self::EXACTLY,
225    Self::MULTIPLE,
226  ];
227  /// Returns the variant's name or "" if unknown.
228  pub fn variant_name(self) -> Option<&'static str> {
229    match self {
230      Self::AT_LEAST => Some("AT_LEAST"),
231      Self::EXACTLY => Some("EXACTLY"),
232      Self::MULTIPLE => Some("MULTIPLE"),
233      _ => None,
234    }
235  }
236}
237impl core::fmt::Debug for LINE_SPACING_TYPE {
238  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
239    if let Some(name) = self.variant_name() {
240      f.write_str(name)
241    } else {
242      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
243    }
244  }
245}
246impl<'a> flatbuffers::Follow<'a> for LINE_SPACING_TYPE {
247  type Inner = Self;
248  #[inline]
249  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
250    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
251    Self(b)
252  }
253}
254
255impl flatbuffers::Push for LINE_SPACING_TYPE {
256    type Output = LINE_SPACING_TYPE;
257    #[inline]
258    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
259        flatbuffers::emplace_scalar::<u8>(dst, self.0);
260    }
261}
262
263impl flatbuffers::EndianScalar for LINE_SPACING_TYPE {
264  type Scalar = u8;
265  #[inline]
266  fn to_little_endian(self) -> u8 {
267    self.0.to_le()
268  }
269  #[inline]
270  #[allow(clippy::wrong_self_convention)]
271  fn from_little_endian(v: u8) -> Self {
272    let b = u8::from_le(v);
273    Self(b)
274  }
275}
276
277impl<'a> flatbuffers::Verifiable for LINE_SPACING_TYPE {
278  #[inline]
279  fn run_verifier(
280    v: &mut flatbuffers::Verifier, pos: usize
281  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
282    use self::flatbuffers::Verifiable;
283    u8::run_verifier(v, pos)
284  }
285}
286
287impl flatbuffers::SimpleToVerifyInSlice for LINE_SPACING_TYPE {}
288#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
289pub const ENUM_MIN_STACKED_TEXT_ALIGN: u8 = 10;
290#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
291pub const ENUM_MAX_STACKED_TEXT_ALIGN: u8 = 12;
292#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
293#[allow(non_camel_case_types)]
294pub const ENUM_VALUES_STACKED_TEXT_ALIGN: [STACKED_TEXT_ALIGN; 3] = [
295  STACKED_TEXT_ALIGN::CENTER,
296  STACKED_TEXT_ALIGN::DECIMAL,
297  STACKED_TEXT_ALIGN::SLASH,
298];
299
300#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
301#[repr(transparent)]
302pub struct STACKED_TEXT_ALIGN(pub u8);
303#[allow(non_upper_case_globals)]
304impl STACKED_TEXT_ALIGN {
305  pub const CENTER: Self = Self(10);
306  pub const DECIMAL: Self = Self(11);
307  pub const SLASH: Self = Self(12);
308
309  pub const ENUM_MIN: u8 = 10;
310  pub const ENUM_MAX: u8 = 12;
311  pub const ENUM_VALUES: &'static [Self] = &[
312    Self::CENTER,
313    Self::DECIMAL,
314    Self::SLASH,
315  ];
316  /// Returns the variant's name or "" if unknown.
317  pub fn variant_name(self) -> Option<&'static str> {
318    match self {
319      Self::CENTER => Some("CENTER"),
320      Self::DECIMAL => Some("DECIMAL"),
321      Self::SLASH => Some("SLASH"),
322      _ => None,
323    }
324  }
325}
326impl core::fmt::Debug for STACKED_TEXT_ALIGN {
327  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
328    if let Some(name) = self.variant_name() {
329      f.write_str(name)
330    } else {
331      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
332    }
333  }
334}
335impl<'a> flatbuffers::Follow<'a> for STACKED_TEXT_ALIGN {
336  type Inner = Self;
337  #[inline]
338  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
339    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
340    Self(b)
341  }
342}
343
344impl flatbuffers::Push for STACKED_TEXT_ALIGN {
345    type Output = STACKED_TEXT_ALIGN;
346    #[inline]
347    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
348        flatbuffers::emplace_scalar::<u8>(dst, self.0);
349    }
350}
351
352impl flatbuffers::EndianScalar for STACKED_TEXT_ALIGN {
353  type Scalar = u8;
354  #[inline]
355  fn to_little_endian(self) -> u8 {
356    self.0.to_le()
357  }
358  #[inline]
359  #[allow(clippy::wrong_self_convention)]
360  fn from_little_endian(v: u8) -> Self {
361    let b = u8::from_le(v);
362    Self(b)
363  }
364}
365
366impl<'a> flatbuffers::Verifiable for STACKED_TEXT_ALIGN {
367  #[inline]
368  fn run_verifier(
369    v: &mut flatbuffers::Verifier, pos: usize
370  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
371    use self::flatbuffers::Verifiable;
372    u8::run_verifier(v, pos)
373  }
374}
375
376impl flatbuffers::SimpleToVerifyInSlice for STACKED_TEXT_ALIGN {}
377#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
378pub const ENUM_MIN_TEXT_FIELD_SOURCE_TYPE: u8 = 10;
379#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
380pub const ENUM_MAX_TEXT_FIELD_SOURCE_TYPE: u8 = 20;
381#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
382#[allow(non_camel_case_types)]
383pub const ENUM_VALUES_TEXT_FIELD_SOURCE_TYPE: [TEXT_FIELD_SOURCE_TYPE; 2] = [
384  TEXT_FIELD_SOURCE_TYPE::ELEMENT,
385  TEXT_FIELD_SOURCE_TYPE::DICTIONARY,
386];
387
388#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
389#[repr(transparent)]
390pub struct TEXT_FIELD_SOURCE_TYPE(pub u8);
391#[allow(non_upper_case_globals)]
392impl TEXT_FIELD_SOURCE_TYPE {
393  pub const ELEMENT: Self = Self(10);
394  pub const DICTIONARY: Self = Self(20);
395
396  pub const ENUM_MIN: u8 = 10;
397  pub const ENUM_MAX: u8 = 20;
398  pub const ENUM_VALUES: &'static [Self] = &[
399    Self::ELEMENT,
400    Self::DICTIONARY,
401  ];
402  /// Returns the variant's name or "" if unknown.
403  pub fn variant_name(self) -> Option<&'static str> {
404    match self {
405      Self::ELEMENT => Some("ELEMENT"),
406      Self::DICTIONARY => Some("DICTIONARY"),
407      _ => None,
408    }
409  }
410}
411impl core::fmt::Debug for TEXT_FIELD_SOURCE_TYPE {
412  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
413    if let Some(name) = self.variant_name() {
414      f.write_str(name)
415    } else {
416      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
417    }
418  }
419}
420impl<'a> flatbuffers::Follow<'a> for TEXT_FIELD_SOURCE_TYPE {
421  type Inner = Self;
422  #[inline]
423  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
424    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
425    Self(b)
426  }
427}
428
429impl flatbuffers::Push for TEXT_FIELD_SOURCE_TYPE {
430    type Output = TEXT_FIELD_SOURCE_TYPE;
431    #[inline]
432    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
433        flatbuffers::emplace_scalar::<u8>(dst, self.0);
434    }
435}
436
437impl flatbuffers::EndianScalar for TEXT_FIELD_SOURCE_TYPE {
438  type Scalar = u8;
439  #[inline]
440  fn to_little_endian(self) -> u8 {
441    self.0.to_le()
442  }
443  #[inline]
444  #[allow(clippy::wrong_self_convention)]
445  fn from_little_endian(v: u8) -> Self {
446    let b = u8::from_le(v);
447    Self(b)
448  }
449}
450
451impl<'a> flatbuffers::Verifiable for TEXT_FIELD_SOURCE_TYPE {
452  #[inline]
453  fn run_verifier(
454    v: &mut flatbuffers::Verifier, pos: usize
455  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
456    use self::flatbuffers::Verifiable;
457    u8::run_verifier(v, pos)
458  }
459}
460
461impl flatbuffers::SimpleToVerifyInSlice for TEXT_FIELD_SOURCE_TYPE {}
462#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
463pub const ENUM_MIN_TEXT_FIELD_SOURCE_PROPERTY: u8 = 10;
464#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
465pub const ENUM_MAX_TEXT_FIELD_SOURCE_PROPERTY: u8 = 20;
466#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
467#[allow(non_camel_case_types)]
468pub const ENUM_VALUES_TEXT_FIELD_SOURCE_PROPERTY: [TEXT_FIELD_SOURCE_PROPERTY; 11] = [
469  TEXT_FIELD_SOURCE_PROPERTY::AREA,
470  TEXT_FIELD_SOURCE_PROPERTY::PERIMETER,
471  TEXT_FIELD_SOURCE_PROPERTY::VOLUME,
472  TEXT_FIELD_SOURCE_PROPERTY::LENGTH,
473  TEXT_FIELD_SOURCE_PROPERTY::WIDTH,
474  TEXT_FIELD_SOURCE_PROPERTY::HEIGHT,
475  TEXT_FIELD_SOURCE_PROPERTY::RADIUS,
476  TEXT_FIELD_SOURCE_PROPERTY::DIAMETER,
477  TEXT_FIELD_SOURCE_PROPERTY::X_COORDINATE,
478  TEXT_FIELD_SOURCE_PROPERTY::Y_COORDINATE,
479  TEXT_FIELD_SOURCE_PROPERTY::LABEL,
480];
481
482#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
483#[repr(transparent)]
484pub struct TEXT_FIELD_SOURCE_PROPERTY(pub u8);
485#[allow(non_upper_case_globals)]
486impl TEXT_FIELD_SOURCE_PROPERTY {
487  pub const AREA: Self = Self(10);
488  pub const PERIMETER: Self = Self(11);
489  pub const VOLUME: Self = Self(12);
490  pub const LENGTH: Self = Self(13);
491  pub const WIDTH: Self = Self(14);
492  pub const HEIGHT: Self = Self(15);
493  pub const RADIUS: Self = Self(16);
494  pub const DIAMETER: Self = Self(17);
495  pub const X_COORDINATE: Self = Self(18);
496  pub const Y_COORDINATE: Self = Self(19);
497  pub const LABEL: Self = Self(20);
498
499  pub const ENUM_MIN: u8 = 10;
500  pub const ENUM_MAX: u8 = 20;
501  pub const ENUM_VALUES: &'static [Self] = &[
502    Self::AREA,
503    Self::PERIMETER,
504    Self::VOLUME,
505    Self::LENGTH,
506    Self::WIDTH,
507    Self::HEIGHT,
508    Self::RADIUS,
509    Self::DIAMETER,
510    Self::X_COORDINATE,
511    Self::Y_COORDINATE,
512    Self::LABEL,
513  ];
514  /// Returns the variant's name or "" if unknown.
515  pub fn variant_name(self) -> Option<&'static str> {
516    match self {
517      Self::AREA => Some("AREA"),
518      Self::PERIMETER => Some("PERIMETER"),
519      Self::VOLUME => Some("VOLUME"),
520      Self::LENGTH => Some("LENGTH"),
521      Self::WIDTH => Some("WIDTH"),
522      Self::HEIGHT => Some("HEIGHT"),
523      Self::RADIUS => Some("RADIUS"),
524      Self::DIAMETER => Some("DIAMETER"),
525      Self::X_COORDINATE => Some("X_COORDINATE"),
526      Self::Y_COORDINATE => Some("Y_COORDINATE"),
527      Self::LABEL => Some("LABEL"),
528      _ => None,
529    }
530  }
531}
532impl core::fmt::Debug for TEXT_FIELD_SOURCE_PROPERTY {
533  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
534    if let Some(name) = self.variant_name() {
535      f.write_str(name)
536    } else {
537      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
538    }
539  }
540}
541impl<'a> flatbuffers::Follow<'a> for TEXT_FIELD_SOURCE_PROPERTY {
542  type Inner = Self;
543  #[inline]
544  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
545    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
546    Self(b)
547  }
548}
549
550impl flatbuffers::Push for TEXT_FIELD_SOURCE_PROPERTY {
551    type Output = TEXT_FIELD_SOURCE_PROPERTY;
552    #[inline]
553    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
554        flatbuffers::emplace_scalar::<u8>(dst, self.0);
555    }
556}
557
558impl flatbuffers::EndianScalar for TEXT_FIELD_SOURCE_PROPERTY {
559  type Scalar = u8;
560  #[inline]
561  fn to_little_endian(self) -> u8 {
562    self.0.to_le()
563  }
564  #[inline]
565  #[allow(clippy::wrong_self_convention)]
566  fn from_little_endian(v: u8) -> Self {
567    let b = u8::from_le(v);
568    Self(b)
569  }
570}
571
572impl<'a> flatbuffers::Verifiable for TEXT_FIELD_SOURCE_PROPERTY {
573  #[inline]
574  fn run_verifier(
575    v: &mut flatbuffers::Verifier, pos: usize
576  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
577    use self::flatbuffers::Verifiable;
578    u8::run_verifier(v, pos)
579  }
580}
581
582impl flatbuffers::SimpleToVerifyInSlice for TEXT_FIELD_SOURCE_PROPERTY {}
583#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
584pub const ENUM_MIN_STROKE_PLACEMENT: u8 = 10;
585#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
586pub const ENUM_MAX_STROKE_PLACEMENT: u8 = 12;
587#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
588#[allow(non_camel_case_types)]
589pub const ENUM_VALUES_STROKE_PLACEMENT: [STROKE_PLACEMENT; 3] = [
590  STROKE_PLACEMENT::INSIDE,
591  STROKE_PLACEMENT::CENTER,
592  STROKE_PLACEMENT::OUTSIDE,
593];
594
595#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
596#[repr(transparent)]
597pub struct STROKE_PLACEMENT(pub u8);
598#[allow(non_upper_case_globals)]
599impl STROKE_PLACEMENT {
600  pub const INSIDE: Self = Self(10);
601  pub const CENTER: Self = Self(11);
602  pub const OUTSIDE: Self = Self(12);
603
604  pub const ENUM_MIN: u8 = 10;
605  pub const ENUM_MAX: u8 = 12;
606  pub const ENUM_VALUES: &'static [Self] = &[
607    Self::INSIDE,
608    Self::CENTER,
609    Self::OUTSIDE,
610  ];
611  /// Returns the variant's name or "" if unknown.
612  pub fn variant_name(self) -> Option<&'static str> {
613    match self {
614      Self::INSIDE => Some("INSIDE"),
615      Self::CENTER => Some("CENTER"),
616      Self::OUTSIDE => Some("OUTSIDE"),
617      _ => None,
618    }
619  }
620}
621impl core::fmt::Debug for STROKE_PLACEMENT {
622  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
623    if let Some(name) = self.variant_name() {
624      f.write_str(name)
625    } else {
626      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
627    }
628  }
629}
630impl<'a> flatbuffers::Follow<'a> for STROKE_PLACEMENT {
631  type Inner = Self;
632  #[inline]
633  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
634    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
635    Self(b)
636  }
637}
638
639impl flatbuffers::Push for STROKE_PLACEMENT {
640    type Output = STROKE_PLACEMENT;
641    #[inline]
642    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
643        flatbuffers::emplace_scalar::<u8>(dst, self.0);
644    }
645}
646
647impl flatbuffers::EndianScalar for STROKE_PLACEMENT {
648  type Scalar = u8;
649  #[inline]
650  fn to_little_endian(self) -> u8 {
651    self.0.to_le()
652  }
653  #[inline]
654  #[allow(clippy::wrong_self_convention)]
655  fn from_little_endian(v: u8) -> Self {
656    let b = u8::from_le(v);
657    Self(b)
658  }
659}
660
661impl<'a> flatbuffers::Verifiable for STROKE_PLACEMENT {
662  #[inline]
663  fn run_verifier(
664    v: &mut flatbuffers::Verifier, pos: usize
665  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
666    use self::flatbuffers::Verifiable;
667    u8::run_verifier(v, pos)
668  }
669}
670
671impl flatbuffers::SimpleToVerifyInSlice for STROKE_PLACEMENT {}
672#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
673pub const ENUM_MIN_STROKE_WIDTH: u8 = 1;
674#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
675pub const ENUM_MAX_STROKE_WIDTH: u8 = 4;
676#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
677#[allow(non_camel_case_types)]
678pub const ENUM_VALUES_STROKE_WIDTH: [STROKE_WIDTH; 3] = [
679  STROKE_WIDTH::THIN,
680  STROKE_WIDTH::BOLD,
681  STROKE_WIDTH::EXTRA_BOLD,
682];
683
684#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
685#[repr(transparent)]
686pub struct STROKE_WIDTH(pub u8);
687#[allow(non_upper_case_globals)]
688impl STROKE_WIDTH {
689  pub const THIN: Self = Self(1);
690  pub const BOLD: Self = Self(2);
691  pub const EXTRA_BOLD: Self = Self(4);
692
693  pub const ENUM_MIN: u8 = 1;
694  pub const ENUM_MAX: u8 = 4;
695  pub const ENUM_VALUES: &'static [Self] = &[
696    Self::THIN,
697    Self::BOLD,
698    Self::EXTRA_BOLD,
699  ];
700  /// Returns the variant's name or "" if unknown.
701  pub fn variant_name(self) -> Option<&'static str> {
702    match self {
703      Self::THIN => Some("THIN"),
704      Self::BOLD => Some("BOLD"),
705      Self::EXTRA_BOLD => Some("EXTRA_BOLD"),
706      _ => None,
707    }
708  }
709}
710impl core::fmt::Debug for STROKE_WIDTH {
711  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
712    if let Some(name) = self.variant_name() {
713      f.write_str(name)
714    } else {
715      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
716    }
717  }
718}
719impl<'a> flatbuffers::Follow<'a> for STROKE_WIDTH {
720  type Inner = Self;
721  #[inline]
722  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
723    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
724    Self(b)
725  }
726}
727
728impl flatbuffers::Push for STROKE_WIDTH {
729    type Output = STROKE_WIDTH;
730    #[inline]
731    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
732        flatbuffers::emplace_scalar::<u8>(dst, self.0);
733    }
734}
735
736impl flatbuffers::EndianScalar for STROKE_WIDTH {
737  type Scalar = u8;
738  #[inline]
739  fn to_little_endian(self) -> u8 {
740    self.0.to_le()
741  }
742  #[inline]
743  #[allow(clippy::wrong_self_convention)]
744  fn from_little_endian(v: u8) -> Self {
745    let b = u8::from_le(v);
746    Self(b)
747  }
748}
749
750impl<'a> flatbuffers::Verifiable for STROKE_WIDTH {
751  #[inline]
752  fn run_verifier(
753    v: &mut flatbuffers::Verifier, pos: usize
754  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
755    use self::flatbuffers::Verifiable;
756    u8::run_verifier(v, pos)
757  }
758}
759
760impl flatbuffers::SimpleToVerifyInSlice for STROKE_WIDTH {}
761#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
762pub const ENUM_MIN_ELEMENT_CONTENT_PREFERENCE: u8 = 12;
763#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
764pub const ENUM_MAX_ELEMENT_CONTENT_PREFERENCE: u8 = 18;
765#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
766#[allow(non_camel_case_types)]
767pub const ENUM_VALUES_ELEMENT_CONTENT_PREFERENCE: [ELEMENT_CONTENT_PREFERENCE; 6] = [
768  ELEMENT_CONTENT_PREFERENCE::SOLID,
769  ELEMENT_CONTENT_PREFERENCE::FILL,
770  ELEMENT_CONTENT_PREFERENCE::FIT,
771  ELEMENT_CONTENT_PREFERENCE::TILE,
772  ELEMENT_CONTENT_PREFERENCE::STRETCH,
773  ELEMENT_CONTENT_PREFERENCE::HATCH,
774];
775
776#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
777#[repr(transparent)]
778pub struct ELEMENT_CONTENT_PREFERENCE(pub u8);
779#[allow(non_upper_case_globals)]
780impl ELEMENT_CONTENT_PREFERENCE {
781  pub const SOLID: Self = Self(12);
782  pub const FILL: Self = Self(14);
783  pub const FIT: Self = Self(15);
784  pub const TILE: Self = Self(16);
785  pub const STRETCH: Self = Self(17);
786  pub const HATCH: Self = Self(18);
787
788  pub const ENUM_MIN: u8 = 12;
789  pub const ENUM_MAX: u8 = 18;
790  pub const ENUM_VALUES: &'static [Self] = &[
791    Self::SOLID,
792    Self::FILL,
793    Self::FIT,
794    Self::TILE,
795    Self::STRETCH,
796    Self::HATCH,
797  ];
798  /// Returns the variant's name or "" if unknown.
799  pub fn variant_name(self) -> Option<&'static str> {
800    match self {
801      Self::SOLID => Some("SOLID"),
802      Self::FILL => Some("FILL"),
803      Self::FIT => Some("FIT"),
804      Self::TILE => Some("TILE"),
805      Self::STRETCH => Some("STRETCH"),
806      Self::HATCH => Some("HATCH"),
807      _ => None,
808    }
809  }
810}
811impl core::fmt::Debug for ELEMENT_CONTENT_PREFERENCE {
812  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
813    if let Some(name) = self.variant_name() {
814      f.write_str(name)
815    } else {
816      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
817    }
818  }
819}
820impl<'a> flatbuffers::Follow<'a> for ELEMENT_CONTENT_PREFERENCE {
821  type Inner = Self;
822  #[inline]
823  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
824    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
825    Self(b)
826  }
827}
828
829impl flatbuffers::Push for ELEMENT_CONTENT_PREFERENCE {
830    type Output = ELEMENT_CONTENT_PREFERENCE;
831    #[inline]
832    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
833        flatbuffers::emplace_scalar::<u8>(dst, self.0);
834    }
835}
836
837impl flatbuffers::EndianScalar for ELEMENT_CONTENT_PREFERENCE {
838  type Scalar = u8;
839  #[inline]
840  fn to_little_endian(self) -> u8 {
841    self.0.to_le()
842  }
843  #[inline]
844  #[allow(clippy::wrong_self_convention)]
845  fn from_little_endian(v: u8) -> Self {
846    let b = u8::from_le(v);
847    Self(b)
848  }
849}
850
851impl<'a> flatbuffers::Verifiable for ELEMENT_CONTENT_PREFERENCE {
852  #[inline]
853  fn run_verifier(
854    v: &mut flatbuffers::Verifier, pos: usize
855  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
856    use self::flatbuffers::Verifiable;
857    u8::run_verifier(v, pos)
858  }
859}
860
861impl flatbuffers::SimpleToVerifyInSlice for ELEMENT_CONTENT_PREFERENCE {}
862#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
863pub const ENUM_MIN_STROKE_PREFERENCE: u8 = 10;
864#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
865pub const ENUM_MAX_STROKE_PREFERENCE: u8 = 13;
866#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
867#[allow(non_camel_case_types)]
868pub const ENUM_VALUES_STROKE_PREFERENCE: [STROKE_PREFERENCE; 4] = [
869  STROKE_PREFERENCE::SOLID,
870  STROKE_PREFERENCE::DASHED,
871  STROKE_PREFERENCE::DOTTED,
872  STROKE_PREFERENCE::CUSTOM,
873];
874
875#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
876#[repr(transparent)]
877pub struct STROKE_PREFERENCE(pub u8);
878#[allow(non_upper_case_globals)]
879impl STROKE_PREFERENCE {
880  pub const SOLID: Self = Self(10);
881  pub const DASHED: Self = Self(11);
882  pub const DOTTED: Self = Self(12);
883  pub const CUSTOM: Self = Self(13);
884
885  pub const ENUM_MIN: u8 = 10;
886  pub const ENUM_MAX: u8 = 13;
887  pub const ENUM_VALUES: &'static [Self] = &[
888    Self::SOLID,
889    Self::DASHED,
890    Self::DOTTED,
891    Self::CUSTOM,
892  ];
893  /// Returns the variant's name or "" if unknown.
894  pub fn variant_name(self) -> Option<&'static str> {
895    match self {
896      Self::SOLID => Some("SOLID"),
897      Self::DASHED => Some("DASHED"),
898      Self::DOTTED => Some("DOTTED"),
899      Self::CUSTOM => Some("CUSTOM"),
900      _ => None,
901    }
902  }
903}
904impl core::fmt::Debug for STROKE_PREFERENCE {
905  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
906    if let Some(name) = self.variant_name() {
907      f.write_str(name)
908    } else {
909      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
910    }
911  }
912}
913impl<'a> flatbuffers::Follow<'a> for STROKE_PREFERENCE {
914  type Inner = Self;
915  #[inline]
916  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
917    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
918    Self(b)
919  }
920}
921
922impl flatbuffers::Push for STROKE_PREFERENCE {
923    type Output = STROKE_PREFERENCE;
924    #[inline]
925    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
926        flatbuffers::emplace_scalar::<u8>(dst, self.0);
927    }
928}
929
930impl flatbuffers::EndianScalar for STROKE_PREFERENCE {
931  type Scalar = u8;
932  #[inline]
933  fn to_little_endian(self) -> u8 {
934    self.0.to_le()
935  }
936  #[inline]
937  #[allow(clippy::wrong_self_convention)]
938  fn from_little_endian(v: u8) -> Self {
939    let b = u8::from_le(v);
940    Self(b)
941  }
942}
943
944impl<'a> flatbuffers::Verifiable for STROKE_PREFERENCE {
945  #[inline]
946  fn run_verifier(
947    v: &mut flatbuffers::Verifier, pos: usize
948  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
949    use self::flatbuffers::Verifiable;
950    u8::run_verifier(v, pos)
951  }
952}
953
954impl flatbuffers::SimpleToVerifyInSlice for STROKE_PREFERENCE {}
955#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
956pub const ENUM_MIN_STROKE_SIDE_PREFERENCE: u8 = 10;
957#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
958pub const ENUM_MAX_STROKE_SIDE_PREFERENCE: u8 = 15;
959#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
960#[allow(non_camel_case_types)]
961pub const ENUM_VALUES_STROKE_SIDE_PREFERENCE: [STROKE_SIDE_PREFERENCE; 6] = [
962  STROKE_SIDE_PREFERENCE::TOP,
963  STROKE_SIDE_PREFERENCE::BOTTOM,
964  STROKE_SIDE_PREFERENCE::LEFT,
965  STROKE_SIDE_PREFERENCE::RIGHT,
966  STROKE_SIDE_PREFERENCE::CUSTOM,
967  STROKE_SIDE_PREFERENCE::ALL,
968];
969
970#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
971#[repr(transparent)]
972pub struct STROKE_SIDE_PREFERENCE(pub u8);
973#[allow(non_upper_case_globals)]
974impl STROKE_SIDE_PREFERENCE {
975  pub const TOP: Self = Self(10);
976  pub const BOTTOM: Self = Self(11);
977  pub const LEFT: Self = Self(12);
978  pub const RIGHT: Self = Self(13);
979  pub const CUSTOM: Self = Self(14);
980  pub const ALL: Self = Self(15);
981
982  pub const ENUM_MIN: u8 = 10;
983  pub const ENUM_MAX: u8 = 15;
984  pub const ENUM_VALUES: &'static [Self] = &[
985    Self::TOP,
986    Self::BOTTOM,
987    Self::LEFT,
988    Self::RIGHT,
989    Self::CUSTOM,
990    Self::ALL,
991  ];
992  /// Returns the variant's name or "" if unknown.
993  pub fn variant_name(self) -> Option<&'static str> {
994    match self {
995      Self::TOP => Some("TOP"),
996      Self::BOTTOM => Some("BOTTOM"),
997      Self::LEFT => Some("LEFT"),
998      Self::RIGHT => Some("RIGHT"),
999      Self::CUSTOM => Some("CUSTOM"),
1000      Self::ALL => Some("ALL"),
1001      _ => None,
1002    }
1003  }
1004}
1005impl core::fmt::Debug for STROKE_SIDE_PREFERENCE {
1006  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1007    if let Some(name) = self.variant_name() {
1008      f.write_str(name)
1009    } else {
1010      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1011    }
1012  }
1013}
1014impl<'a> flatbuffers::Follow<'a> for STROKE_SIDE_PREFERENCE {
1015  type Inner = Self;
1016  #[inline]
1017  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1018    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1019    Self(b)
1020  }
1021}
1022
1023impl flatbuffers::Push for STROKE_SIDE_PREFERENCE {
1024    type Output = STROKE_SIDE_PREFERENCE;
1025    #[inline]
1026    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1027        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1028    }
1029}
1030
1031impl flatbuffers::EndianScalar for STROKE_SIDE_PREFERENCE {
1032  type Scalar = u8;
1033  #[inline]
1034  fn to_little_endian(self) -> u8 {
1035    self.0.to_le()
1036  }
1037  #[inline]
1038  #[allow(clippy::wrong_self_convention)]
1039  fn from_little_endian(v: u8) -> Self {
1040    let b = u8::from_le(v);
1041    Self(b)
1042  }
1043}
1044
1045impl<'a> flatbuffers::Verifiable for STROKE_SIDE_PREFERENCE {
1046  #[inline]
1047  fn run_verifier(
1048    v: &mut flatbuffers::Verifier, pos: usize
1049  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1050    use self::flatbuffers::Verifiable;
1051    u8::run_verifier(v, pos)
1052  }
1053}
1054
1055impl flatbuffers::SimpleToVerifyInSlice for STROKE_SIDE_PREFERENCE {}
1056#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1057pub const ENUM_MIN_STROKE_CAP: u8 = 10;
1058#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1059pub const ENUM_MAX_STROKE_CAP: u8 = 12;
1060#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1061#[allow(non_camel_case_types)]
1062pub const ENUM_VALUES_STROKE_CAP: [STROKE_CAP; 3] = [
1063  STROKE_CAP::BUTT,
1064  STROKE_CAP::ROUND,
1065  STROKE_CAP::SQUARE,
1066];
1067
1068#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1069#[repr(transparent)]
1070pub struct STROKE_CAP(pub u8);
1071#[allow(non_upper_case_globals)]
1072impl STROKE_CAP {
1073  pub const BUTT: Self = Self(10);
1074  pub const ROUND: Self = Self(11);
1075  pub const SQUARE: Self = Self(12);
1076
1077  pub const ENUM_MIN: u8 = 10;
1078  pub const ENUM_MAX: u8 = 12;
1079  pub const ENUM_VALUES: &'static [Self] = &[
1080    Self::BUTT,
1081    Self::ROUND,
1082    Self::SQUARE,
1083  ];
1084  /// Returns the variant's name or "" if unknown.
1085  pub fn variant_name(self) -> Option<&'static str> {
1086    match self {
1087      Self::BUTT => Some("BUTT"),
1088      Self::ROUND => Some("ROUND"),
1089      Self::SQUARE => Some("SQUARE"),
1090      _ => None,
1091    }
1092  }
1093}
1094impl core::fmt::Debug for STROKE_CAP {
1095  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1096    if let Some(name) = self.variant_name() {
1097      f.write_str(name)
1098    } else {
1099      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1100    }
1101  }
1102}
1103impl<'a> flatbuffers::Follow<'a> for STROKE_CAP {
1104  type Inner = Self;
1105  #[inline]
1106  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1107    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1108    Self(b)
1109  }
1110}
1111
1112impl flatbuffers::Push for STROKE_CAP {
1113    type Output = STROKE_CAP;
1114    #[inline]
1115    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1116        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1117    }
1118}
1119
1120impl flatbuffers::EndianScalar for STROKE_CAP {
1121  type Scalar = u8;
1122  #[inline]
1123  fn to_little_endian(self) -> u8 {
1124    self.0.to_le()
1125  }
1126  #[inline]
1127  #[allow(clippy::wrong_self_convention)]
1128  fn from_little_endian(v: u8) -> Self {
1129    let b = u8::from_le(v);
1130    Self(b)
1131  }
1132}
1133
1134impl<'a> flatbuffers::Verifiable for STROKE_CAP {
1135  #[inline]
1136  fn run_verifier(
1137    v: &mut flatbuffers::Verifier, pos: usize
1138  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1139    use self::flatbuffers::Verifiable;
1140    u8::run_verifier(v, pos)
1141  }
1142}
1143
1144impl flatbuffers::SimpleToVerifyInSlice for STROKE_CAP {}
1145#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1146pub const ENUM_MIN_STROKE_JOIN: u8 = 10;
1147#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1148pub const ENUM_MAX_STROKE_JOIN: u8 = 12;
1149#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1150#[allow(non_camel_case_types)]
1151pub const ENUM_VALUES_STROKE_JOIN: [STROKE_JOIN; 3] = [
1152  STROKE_JOIN::MITER,
1153  STROKE_JOIN::ROUND,
1154  STROKE_JOIN::BEVEL,
1155];
1156
1157#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1158#[repr(transparent)]
1159pub struct STROKE_JOIN(pub u8);
1160#[allow(non_upper_case_globals)]
1161impl STROKE_JOIN {
1162  pub const MITER: Self = Self(10);
1163  pub const ROUND: Self = Self(11);
1164  pub const BEVEL: Self = Self(12);
1165
1166  pub const ENUM_MIN: u8 = 10;
1167  pub const ENUM_MAX: u8 = 12;
1168  pub const ENUM_VALUES: &'static [Self] = &[
1169    Self::MITER,
1170    Self::ROUND,
1171    Self::BEVEL,
1172  ];
1173  /// Returns the variant's name or "" if unknown.
1174  pub fn variant_name(self) -> Option<&'static str> {
1175    match self {
1176      Self::MITER => Some("MITER"),
1177      Self::ROUND => Some("ROUND"),
1178      Self::BEVEL => Some("BEVEL"),
1179      _ => None,
1180    }
1181  }
1182}
1183impl core::fmt::Debug for STROKE_JOIN {
1184  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1185    if let Some(name) = self.variant_name() {
1186      f.write_str(name)
1187    } else {
1188      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1189    }
1190  }
1191}
1192impl<'a> flatbuffers::Follow<'a> for STROKE_JOIN {
1193  type Inner = Self;
1194  #[inline]
1195  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1196    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1197    Self(b)
1198  }
1199}
1200
1201impl flatbuffers::Push for STROKE_JOIN {
1202    type Output = STROKE_JOIN;
1203    #[inline]
1204    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1205        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1206    }
1207}
1208
1209impl flatbuffers::EndianScalar for STROKE_JOIN {
1210  type Scalar = u8;
1211  #[inline]
1212  fn to_little_endian(self) -> u8 {
1213    self.0.to_le()
1214  }
1215  #[inline]
1216  #[allow(clippy::wrong_self_convention)]
1217  fn from_little_endian(v: u8) -> Self {
1218    let b = u8::from_le(v);
1219    Self(b)
1220  }
1221}
1222
1223impl<'a> flatbuffers::Verifiable for STROKE_JOIN {
1224  #[inline]
1225  fn run_verifier(
1226    v: &mut flatbuffers::Verifier, pos: usize
1227  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1228    use self::flatbuffers::Verifiable;
1229    u8::run_verifier(v, pos)
1230  }
1231}
1232
1233impl flatbuffers::SimpleToVerifyInSlice for STROKE_JOIN {}
1234#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1235pub const ENUM_MIN_LINE_HEAD: u8 = 10;
1236#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1237pub const ENUM_MAX_LINE_HEAD: u8 = 24;
1238#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1239#[allow(non_camel_case_types)]
1240pub const ENUM_VALUES_LINE_HEAD: [LINE_HEAD; 15] = [
1241  LINE_HEAD::ARROW,
1242  LINE_HEAD::BAR,
1243  LINE_HEAD::CIRCLE,
1244  LINE_HEAD::CIRCLE_OUTLINED,
1245  LINE_HEAD::TRIANGLE,
1246  LINE_HEAD::TRIANGLE_OUTLINED,
1247  LINE_HEAD::DIAMOND,
1248  LINE_HEAD::DIAMOND_OUTLINED,
1249  LINE_HEAD::CROSS,
1250  LINE_HEAD::OPEN_ARROW,
1251  LINE_HEAD::REVERSED_ARROW,
1252  LINE_HEAD::REVERSED_TRIANGLE,
1253  LINE_HEAD::REVERSED_TRIANGLE_OUTLINED,
1254  LINE_HEAD::CONE,
1255  LINE_HEAD::HALF_CONE,
1256];
1257
1258#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1259#[repr(transparent)]
1260pub struct LINE_HEAD(pub u8);
1261#[allow(non_upper_case_globals)]
1262impl LINE_HEAD {
1263  pub const ARROW: Self = Self(10);
1264  pub const BAR: Self = Self(11);
1265  pub const CIRCLE: Self = Self(12);
1266  pub const CIRCLE_OUTLINED: Self = Self(13);
1267  pub const TRIANGLE: Self = Self(14);
1268  pub const TRIANGLE_OUTLINED: Self = Self(15);
1269  pub const DIAMOND: Self = Self(16);
1270  pub const DIAMOND_OUTLINED: Self = Self(17);
1271  pub const CROSS: Self = Self(18);
1272  pub const OPEN_ARROW: Self = Self(19);
1273  pub const REVERSED_ARROW: Self = Self(20);
1274  pub const REVERSED_TRIANGLE: Self = Self(21);
1275  pub const REVERSED_TRIANGLE_OUTLINED: Self = Self(22);
1276  pub const CONE: Self = Self(23);
1277  pub const HALF_CONE: Self = Self(24);
1278
1279  pub const ENUM_MIN: u8 = 10;
1280  pub const ENUM_MAX: u8 = 24;
1281  pub const ENUM_VALUES: &'static [Self] = &[
1282    Self::ARROW,
1283    Self::BAR,
1284    Self::CIRCLE,
1285    Self::CIRCLE_OUTLINED,
1286    Self::TRIANGLE,
1287    Self::TRIANGLE_OUTLINED,
1288    Self::DIAMOND,
1289    Self::DIAMOND_OUTLINED,
1290    Self::CROSS,
1291    Self::OPEN_ARROW,
1292    Self::REVERSED_ARROW,
1293    Self::REVERSED_TRIANGLE,
1294    Self::REVERSED_TRIANGLE_OUTLINED,
1295    Self::CONE,
1296    Self::HALF_CONE,
1297  ];
1298  /// Returns the variant's name or "" if unknown.
1299  pub fn variant_name(self) -> Option<&'static str> {
1300    match self {
1301      Self::ARROW => Some("ARROW"),
1302      Self::BAR => Some("BAR"),
1303      Self::CIRCLE => Some("CIRCLE"),
1304      Self::CIRCLE_OUTLINED => Some("CIRCLE_OUTLINED"),
1305      Self::TRIANGLE => Some("TRIANGLE"),
1306      Self::TRIANGLE_OUTLINED => Some("TRIANGLE_OUTLINED"),
1307      Self::DIAMOND => Some("DIAMOND"),
1308      Self::DIAMOND_OUTLINED => Some("DIAMOND_OUTLINED"),
1309      Self::CROSS => Some("CROSS"),
1310      Self::OPEN_ARROW => Some("OPEN_ARROW"),
1311      Self::REVERSED_ARROW => Some("REVERSED_ARROW"),
1312      Self::REVERSED_TRIANGLE => Some("REVERSED_TRIANGLE"),
1313      Self::REVERSED_TRIANGLE_OUTLINED => Some("REVERSED_TRIANGLE_OUTLINED"),
1314      Self::CONE => Some("CONE"),
1315      Self::HALF_CONE => Some("HALF_CONE"),
1316      _ => None,
1317    }
1318  }
1319}
1320impl core::fmt::Debug for LINE_HEAD {
1321  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1322    if let Some(name) = self.variant_name() {
1323      f.write_str(name)
1324    } else {
1325      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1326    }
1327  }
1328}
1329impl<'a> flatbuffers::Follow<'a> for LINE_HEAD {
1330  type Inner = Self;
1331  #[inline]
1332  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1333    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1334    Self(b)
1335  }
1336}
1337
1338impl flatbuffers::Push for LINE_HEAD {
1339    type Output = LINE_HEAD;
1340    #[inline]
1341    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1342        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1343    }
1344}
1345
1346impl flatbuffers::EndianScalar for LINE_HEAD {
1347  type Scalar = u8;
1348  #[inline]
1349  fn to_little_endian(self) -> u8 {
1350    self.0.to_le()
1351  }
1352  #[inline]
1353  #[allow(clippy::wrong_self_convention)]
1354  fn from_little_endian(v: u8) -> Self {
1355    let b = u8::from_le(v);
1356    Self(b)
1357  }
1358}
1359
1360impl<'a> flatbuffers::Verifiable for LINE_HEAD {
1361  #[inline]
1362  fn run_verifier(
1363    v: &mut flatbuffers::Verifier, pos: usize
1364  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1365    use self::flatbuffers::Verifiable;
1366    u8::run_verifier(v, pos)
1367  }
1368}
1369
1370impl flatbuffers::SimpleToVerifyInSlice for LINE_HEAD {}
1371#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1372pub const ENUM_MIN_BEZIER_MIRRORING: u8 = 10;
1373#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1374pub const ENUM_MAX_BEZIER_MIRRORING: u8 = 12;
1375#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1376#[allow(non_camel_case_types)]
1377pub const ENUM_VALUES_BEZIER_MIRRORING: [BEZIER_MIRRORING; 3] = [
1378  BEZIER_MIRRORING::NONE,
1379  BEZIER_MIRRORING::ANGLE,
1380  BEZIER_MIRRORING::ANGLE_LENGTH,
1381];
1382
1383#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1384#[repr(transparent)]
1385pub struct BEZIER_MIRRORING(pub u8);
1386#[allow(non_upper_case_globals)]
1387impl BEZIER_MIRRORING {
1388  pub const NONE: Self = Self(10);
1389  pub const ANGLE: Self = Self(11);
1390  pub const ANGLE_LENGTH: Self = Self(12);
1391
1392  pub const ENUM_MIN: u8 = 10;
1393  pub const ENUM_MAX: u8 = 12;
1394  pub const ENUM_VALUES: &'static [Self] = &[
1395    Self::NONE,
1396    Self::ANGLE,
1397    Self::ANGLE_LENGTH,
1398  ];
1399  /// Returns the variant's name or "" if unknown.
1400  pub fn variant_name(self) -> Option<&'static str> {
1401    match self {
1402      Self::NONE => Some("NONE"),
1403      Self::ANGLE => Some("ANGLE"),
1404      Self::ANGLE_LENGTH => Some("ANGLE_LENGTH"),
1405      _ => None,
1406    }
1407  }
1408}
1409impl core::fmt::Debug for BEZIER_MIRRORING {
1410  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1411    if let Some(name) = self.variant_name() {
1412      f.write_str(name)
1413    } else {
1414      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1415    }
1416  }
1417}
1418impl<'a> flatbuffers::Follow<'a> for BEZIER_MIRRORING {
1419  type Inner = Self;
1420  #[inline]
1421  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1422    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1423    Self(b)
1424  }
1425}
1426
1427impl flatbuffers::Push for BEZIER_MIRRORING {
1428    type Output = BEZIER_MIRRORING;
1429    #[inline]
1430    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1431        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1432    }
1433}
1434
1435impl flatbuffers::EndianScalar for BEZIER_MIRRORING {
1436  type Scalar = u8;
1437  #[inline]
1438  fn to_little_endian(self) -> u8 {
1439    self.0.to_le()
1440  }
1441  #[inline]
1442  #[allow(clippy::wrong_self_convention)]
1443  fn from_little_endian(v: u8) -> Self {
1444    let b = u8::from_le(v);
1445    Self(b)
1446  }
1447}
1448
1449impl<'a> flatbuffers::Verifiable for BEZIER_MIRRORING {
1450  #[inline]
1451  fn run_verifier(
1452    v: &mut flatbuffers::Verifier, pos: usize
1453  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1454    use self::flatbuffers::Verifiable;
1455    u8::run_verifier(v, pos)
1456  }
1457}
1458
1459impl flatbuffers::SimpleToVerifyInSlice for BEZIER_MIRRORING {}
1460#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1461pub const ENUM_MIN_HANDLE_TYPE: u8 = 10;
1462#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1463pub const ENUM_MAX_HANDLE_TYPE: u8 = 11;
1464#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1465#[allow(non_camel_case_types)]
1466pub const ENUM_VALUES_HANDLE_TYPE: [HANDLE_TYPE; 2] = [
1467  HANDLE_TYPE::HANDLE_IN,
1468  HANDLE_TYPE::HANDLE_OUT,
1469];
1470
1471#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1472#[repr(transparent)]
1473pub struct HANDLE_TYPE(pub u8);
1474#[allow(non_upper_case_globals)]
1475impl HANDLE_TYPE {
1476  pub const HANDLE_IN: Self = Self(10);
1477  pub const HANDLE_OUT: Self = Self(11);
1478
1479  pub const ENUM_MIN: u8 = 10;
1480  pub const ENUM_MAX: u8 = 11;
1481  pub const ENUM_VALUES: &'static [Self] = &[
1482    Self::HANDLE_IN,
1483    Self::HANDLE_OUT,
1484  ];
1485  /// Returns the variant's name or "" if unknown.
1486  pub fn variant_name(self) -> Option<&'static str> {
1487    match self {
1488      Self::HANDLE_IN => Some("HANDLE_IN"),
1489      Self::HANDLE_OUT => Some("HANDLE_OUT"),
1490      _ => None,
1491    }
1492  }
1493}
1494impl core::fmt::Debug for HANDLE_TYPE {
1495  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1496    if let Some(name) = self.variant_name() {
1497      f.write_str(name)
1498    } else {
1499      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1500    }
1501  }
1502}
1503impl<'a> flatbuffers::Follow<'a> for HANDLE_TYPE {
1504  type Inner = Self;
1505  #[inline]
1506  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1507    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1508    Self(b)
1509  }
1510}
1511
1512impl flatbuffers::Push for HANDLE_TYPE {
1513    type Output = HANDLE_TYPE;
1514    #[inline]
1515    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1516        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1517    }
1518}
1519
1520impl flatbuffers::EndianScalar for HANDLE_TYPE {
1521  type Scalar = u8;
1522  #[inline]
1523  fn to_little_endian(self) -> u8 {
1524    self.0.to_le()
1525  }
1526  #[inline]
1527  #[allow(clippy::wrong_self_convention)]
1528  fn from_little_endian(v: u8) -> Self {
1529    let b = u8::from_le(v);
1530    Self(b)
1531  }
1532}
1533
1534impl<'a> flatbuffers::Verifiable for HANDLE_TYPE {
1535  #[inline]
1536  fn run_verifier(
1537    v: &mut flatbuffers::Verifier, pos: usize
1538  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1539    use self::flatbuffers::Verifiable;
1540    u8::run_verifier(v, pos)
1541  }
1542}
1543
1544impl flatbuffers::SimpleToVerifyInSlice for HANDLE_TYPE {}
1545#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1546pub const ENUM_MIN_YOUTUBE_STATES: i8 = -1;
1547#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1548pub const ENUM_MAX_YOUTUBE_STATES: i8 = 5;
1549#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1550#[allow(non_camel_case_types)]
1551pub const ENUM_VALUES_YOUTUBE_STATES: [YOUTUBE_STATES; 6] = [
1552  YOUTUBE_STATES::UNSTARTED,
1553  YOUTUBE_STATES::ENDED,
1554  YOUTUBE_STATES::PLAYING,
1555  YOUTUBE_STATES::PAUSED,
1556  YOUTUBE_STATES::BUFFERING,
1557  YOUTUBE_STATES::CUED,
1558];
1559
1560#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1561#[repr(transparent)]
1562pub struct YOUTUBE_STATES(pub i8);
1563#[allow(non_upper_case_globals)]
1564impl YOUTUBE_STATES {
1565  pub const UNSTARTED: Self = Self(-1);
1566  pub const ENDED: Self = Self(0);
1567  pub const PLAYING: Self = Self(1);
1568  pub const PAUSED: Self = Self(2);
1569  pub const BUFFERING: Self = Self(3);
1570  pub const CUED: Self = Self(5);
1571
1572  pub const ENUM_MIN: i8 = -1;
1573  pub const ENUM_MAX: i8 = 5;
1574  pub const ENUM_VALUES: &'static [Self] = &[
1575    Self::UNSTARTED,
1576    Self::ENDED,
1577    Self::PLAYING,
1578    Self::PAUSED,
1579    Self::BUFFERING,
1580    Self::CUED,
1581  ];
1582  /// Returns the variant's name or "" if unknown.
1583  pub fn variant_name(self) -> Option<&'static str> {
1584    match self {
1585      Self::UNSTARTED => Some("UNSTARTED"),
1586      Self::ENDED => Some("ENDED"),
1587      Self::PLAYING => Some("PLAYING"),
1588      Self::PAUSED => Some("PAUSED"),
1589      Self::BUFFERING => Some("BUFFERING"),
1590      Self::CUED => Some("CUED"),
1591      _ => None,
1592    }
1593  }
1594}
1595impl core::fmt::Debug for YOUTUBE_STATES {
1596  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1597    if let Some(name) = self.variant_name() {
1598      f.write_str(name)
1599    } else {
1600      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1601    }
1602  }
1603}
1604impl<'a> flatbuffers::Follow<'a> for YOUTUBE_STATES {
1605  type Inner = Self;
1606  #[inline]
1607  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1608    let b = flatbuffers::read_scalar_at::<i8>(buf, loc);
1609    Self(b)
1610  }
1611}
1612
1613impl flatbuffers::Push for YOUTUBE_STATES {
1614    type Output = YOUTUBE_STATES;
1615    #[inline]
1616    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1617        flatbuffers::emplace_scalar::<i8>(dst, self.0);
1618    }
1619}
1620
1621impl flatbuffers::EndianScalar for YOUTUBE_STATES {
1622  type Scalar = i8;
1623  #[inline]
1624  fn to_little_endian(self) -> i8 {
1625    self.0.to_le()
1626  }
1627  #[inline]
1628  #[allow(clippy::wrong_self_convention)]
1629  fn from_little_endian(v: i8) -> Self {
1630    let b = i8::from_le(v);
1631    Self(b)
1632  }
1633}
1634
1635impl<'a> flatbuffers::Verifiable for YOUTUBE_STATES {
1636  #[inline]
1637  fn run_verifier(
1638    v: &mut flatbuffers::Verifier, pos: usize
1639  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1640    use self::flatbuffers::Verifiable;
1641    i8::run_verifier(v, pos)
1642  }
1643}
1644
1645impl flatbuffers::SimpleToVerifyInSlice for YOUTUBE_STATES {}
1646#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1647pub const ENUM_MIN_BLENDING: u8 = 11;
1648#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1649pub const ENUM_MAX_BLENDING: u8 = 17;
1650#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1651#[allow(non_camel_case_types)]
1652pub const ENUM_VALUES_BLENDING: [BLENDING; 7] = [
1653  BLENDING::MULTIPLY,
1654  BLENDING::SCREEN,
1655  BLENDING::OVERLAY,
1656  BLENDING::DARKEN,
1657  BLENDING::LIGHTEN,
1658  BLENDING::DIFFERENCE,
1659  BLENDING::EXCLUSION,
1660];
1661
1662#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1663#[repr(transparent)]
1664pub struct BLENDING(pub u8);
1665#[allow(non_upper_case_globals)]
1666impl BLENDING {
1667  pub const MULTIPLY: Self = Self(11);
1668  pub const SCREEN: Self = Self(12);
1669  pub const OVERLAY: Self = Self(13);
1670  pub const DARKEN: Self = Self(14);
1671  pub const LIGHTEN: Self = Self(15);
1672  pub const DIFFERENCE: Self = Self(16);
1673  pub const EXCLUSION: Self = Self(17);
1674
1675  pub const ENUM_MIN: u8 = 11;
1676  pub const ENUM_MAX: u8 = 17;
1677  pub const ENUM_VALUES: &'static [Self] = &[
1678    Self::MULTIPLY,
1679    Self::SCREEN,
1680    Self::OVERLAY,
1681    Self::DARKEN,
1682    Self::LIGHTEN,
1683    Self::DIFFERENCE,
1684    Self::EXCLUSION,
1685  ];
1686  /// Returns the variant's name or "" if unknown.
1687  pub fn variant_name(self) -> Option<&'static str> {
1688    match self {
1689      Self::MULTIPLY => Some("MULTIPLY"),
1690      Self::SCREEN => Some("SCREEN"),
1691      Self::OVERLAY => Some("OVERLAY"),
1692      Self::DARKEN => Some("DARKEN"),
1693      Self::LIGHTEN => Some("LIGHTEN"),
1694      Self::DIFFERENCE => Some("DIFFERENCE"),
1695      Self::EXCLUSION => Some("EXCLUSION"),
1696      _ => None,
1697    }
1698  }
1699}
1700impl core::fmt::Debug for BLENDING {
1701  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1702    if let Some(name) = self.variant_name() {
1703      f.write_str(name)
1704    } else {
1705      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1706    }
1707  }
1708}
1709impl<'a> flatbuffers::Follow<'a> for BLENDING {
1710  type Inner = Self;
1711  #[inline]
1712  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1713    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1714    Self(b)
1715  }
1716}
1717
1718impl flatbuffers::Push for BLENDING {
1719    type Output = BLENDING;
1720    #[inline]
1721    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1722        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1723    }
1724}
1725
1726impl flatbuffers::EndianScalar for BLENDING {
1727  type Scalar = u8;
1728  #[inline]
1729  fn to_little_endian(self) -> u8 {
1730    self.0.to_le()
1731  }
1732  #[inline]
1733  #[allow(clippy::wrong_self_convention)]
1734  fn from_little_endian(v: u8) -> Self {
1735    let b = u8::from_le(v);
1736    Self(b)
1737  }
1738}
1739
1740impl<'a> flatbuffers::Verifiable for BLENDING {
1741  #[inline]
1742  fn run_verifier(
1743    v: &mut flatbuffers::Verifier, pos: usize
1744  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1745    use self::flatbuffers::Verifiable;
1746    u8::run_verifier(v, pos)
1747  }
1748}
1749
1750impl flatbuffers::SimpleToVerifyInSlice for BLENDING {}
1751#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1752pub const ENUM_MIN_GRID_DISPLAY_TYPE: u8 = 10;
1753#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1754pub const ENUM_MAX_GRID_DISPLAY_TYPE: u8 = 13;
1755#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1756#[allow(non_camel_case_types)]
1757pub const ENUM_VALUES_GRID_DISPLAY_TYPE: [GRID_DISPLAY_TYPE; 4] = [
1758  GRID_DISPLAY_TYPE::LINES,
1759  GRID_DISPLAY_TYPE::DOTS,
1760  GRID_DISPLAY_TYPE::CROSSES,
1761  GRID_DISPLAY_TYPE::ADAPTIVE,
1762];
1763
1764#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1765#[repr(transparent)]
1766pub struct GRID_DISPLAY_TYPE(pub u8);
1767#[allow(non_upper_case_globals)]
1768impl GRID_DISPLAY_TYPE {
1769  pub const LINES: Self = Self(10);
1770  pub const DOTS: Self = Self(11);
1771  pub const CROSSES: Self = Self(12);
1772  pub const ADAPTIVE: Self = Self(13);
1773
1774  pub const ENUM_MIN: u8 = 10;
1775  pub const ENUM_MAX: u8 = 13;
1776  pub const ENUM_VALUES: &'static [Self] = &[
1777    Self::LINES,
1778    Self::DOTS,
1779    Self::CROSSES,
1780    Self::ADAPTIVE,
1781  ];
1782  /// Returns the variant's name or "" if unknown.
1783  pub fn variant_name(self) -> Option<&'static str> {
1784    match self {
1785      Self::LINES => Some("LINES"),
1786      Self::DOTS => Some("DOTS"),
1787      Self::CROSSES => Some("CROSSES"),
1788      Self::ADAPTIVE => Some("ADAPTIVE"),
1789      _ => None,
1790    }
1791  }
1792}
1793impl core::fmt::Debug for GRID_DISPLAY_TYPE {
1794  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1795    if let Some(name) = self.variant_name() {
1796      f.write_str(name)
1797    } else {
1798      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1799    }
1800  }
1801}
1802impl<'a> flatbuffers::Follow<'a> for GRID_DISPLAY_TYPE {
1803  type Inner = Self;
1804  #[inline]
1805  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1806    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1807    Self(b)
1808  }
1809}
1810
1811impl flatbuffers::Push for GRID_DISPLAY_TYPE {
1812    type Output = GRID_DISPLAY_TYPE;
1813    #[inline]
1814    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1815        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1816    }
1817}
1818
1819impl flatbuffers::EndianScalar for GRID_DISPLAY_TYPE {
1820  type Scalar = u8;
1821  #[inline]
1822  fn to_little_endian(self) -> u8 {
1823    self.0.to_le()
1824  }
1825  #[inline]
1826  #[allow(clippy::wrong_self_convention)]
1827  fn from_little_endian(v: u8) -> Self {
1828    let b = u8::from_le(v);
1829    Self(b)
1830  }
1831}
1832
1833impl<'a> flatbuffers::Verifiable for GRID_DISPLAY_TYPE {
1834  #[inline]
1835  fn run_verifier(
1836    v: &mut flatbuffers::Verifier, pos: usize
1837  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1838    use self::flatbuffers::Verifiable;
1839    u8::run_verifier(v, pos)
1840  }
1841}
1842
1843impl flatbuffers::SimpleToVerifyInSlice for GRID_DISPLAY_TYPE {}
1844#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1845pub const ENUM_MIN_GRID_TYPE: u8 = 10;
1846#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1847pub const ENUM_MAX_GRID_TYPE: u8 = 14;
1848#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1849#[allow(non_camel_case_types)]
1850pub const ENUM_VALUES_GRID_TYPE: [GRID_TYPE; 5] = [
1851  GRID_TYPE::RECTANGULAR,
1852  GRID_TYPE::ISOMETRIC,
1853  GRID_TYPE::POLAR,
1854  GRID_TYPE::TRIANGULAR,
1855  GRID_TYPE::CUSTOM,
1856];
1857
1858#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1859#[repr(transparent)]
1860pub struct GRID_TYPE(pub u8);
1861#[allow(non_upper_case_globals)]
1862impl GRID_TYPE {
1863  pub const RECTANGULAR: Self = Self(10);
1864  pub const ISOMETRIC: Self = Self(11);
1865  pub const POLAR: Self = Self(12);
1866  pub const TRIANGULAR: Self = Self(13);
1867  pub const CUSTOM: Self = Self(14);
1868
1869  pub const ENUM_MIN: u8 = 10;
1870  pub const ENUM_MAX: u8 = 14;
1871  pub const ENUM_VALUES: &'static [Self] = &[
1872    Self::RECTANGULAR,
1873    Self::ISOMETRIC,
1874    Self::POLAR,
1875    Self::TRIANGULAR,
1876    Self::CUSTOM,
1877  ];
1878  /// Returns the variant's name or "" if unknown.
1879  pub fn variant_name(self) -> Option<&'static str> {
1880    match self {
1881      Self::RECTANGULAR => Some("RECTANGULAR"),
1882      Self::ISOMETRIC => Some("ISOMETRIC"),
1883      Self::POLAR => Some("POLAR"),
1884      Self::TRIANGULAR => Some("TRIANGULAR"),
1885      Self::CUSTOM => Some("CUSTOM"),
1886      _ => None,
1887    }
1888  }
1889}
1890impl core::fmt::Debug for GRID_TYPE {
1891  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
1892    if let Some(name) = self.variant_name() {
1893      f.write_str(name)
1894    } else {
1895      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
1896    }
1897  }
1898}
1899impl<'a> flatbuffers::Follow<'a> for GRID_TYPE {
1900  type Inner = Self;
1901  #[inline]
1902  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
1903    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
1904    Self(b)
1905  }
1906}
1907
1908impl flatbuffers::Push for GRID_TYPE {
1909    type Output = GRID_TYPE;
1910    #[inline]
1911    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
1912        flatbuffers::emplace_scalar::<u8>(dst, self.0);
1913    }
1914}
1915
1916impl flatbuffers::EndianScalar for GRID_TYPE {
1917  type Scalar = u8;
1918  #[inline]
1919  fn to_little_endian(self) -> u8 {
1920    self.0.to_le()
1921  }
1922  #[inline]
1923  #[allow(clippy::wrong_self_convention)]
1924  fn from_little_endian(v: u8) -> Self {
1925    let b = u8::from_le(v);
1926    Self(b)
1927  }
1928}
1929
1930impl<'a> flatbuffers::Verifiable for GRID_TYPE {
1931  #[inline]
1932  fn run_verifier(
1933    v: &mut flatbuffers::Verifier, pos: usize
1934  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
1935    use self::flatbuffers::Verifiable;
1936    u8::run_verifier(v, pos)
1937  }
1938}
1939
1940impl flatbuffers::SimpleToVerifyInSlice for GRID_TYPE {}
1941#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1942pub const ENUM_MIN_OBJECT_SNAP_MODE: u8 = 0;
1943#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1944pub const ENUM_MAX_OBJECT_SNAP_MODE: u8 = 28;
1945#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
1946#[allow(non_camel_case_types)]
1947pub const ENUM_VALUES_OBJECT_SNAP_MODE: [OBJECT_SNAP_MODE; 20] = [
1948  OBJECT_SNAP_MODE::NONE,
1949  OBJECT_SNAP_MODE::ENDPOINT,
1950  OBJECT_SNAP_MODE::MIDPOINT,
1951  OBJECT_SNAP_MODE::CENTER,
1952  OBJECT_SNAP_MODE::QUADRANT,
1953  OBJECT_SNAP_MODE::INTERSECTION,
1954  OBJECT_SNAP_MODE::EXTENSION,
1955  OBJECT_SNAP_MODE::PERPENDICULAR,
1956  OBJECT_SNAP_MODE::TANGENT,
1957  OBJECT_SNAP_MODE::NEAREST,
1958  OBJECT_SNAP_MODE::NODE,
1959  OBJECT_SNAP_MODE::INSERT,
1960  OBJECT_SNAP_MODE::PARALLEL,
1961  OBJECT_SNAP_MODE::APPARENT,
1962  OBJECT_SNAP_MODE::FROM,
1963  OBJECT_SNAP_MODE::POINT_FILTER,
1964  OBJECT_SNAP_MODE::TEMPORARY,
1965  OBJECT_SNAP_MODE::BETWEEN_TWO_POINTS,
1966  OBJECT_SNAP_MODE::POINT_ON_CURVE,
1967  OBJECT_SNAP_MODE::GEOMETRIC,
1968];
1969
1970#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
1971#[repr(transparent)]
1972pub struct OBJECT_SNAP_MODE(pub u8);
1973#[allow(non_upper_case_globals)]
1974impl OBJECT_SNAP_MODE {
1975  pub const NONE: Self = Self(0);
1976  pub const ENDPOINT: Self = Self(10);
1977  pub const MIDPOINT: Self = Self(11);
1978  pub const CENTER: Self = Self(12);
1979  pub const QUADRANT: Self = Self(13);
1980  pub const INTERSECTION: Self = Self(14);
1981  pub const EXTENSION: Self = Self(15);
1982  pub const PERPENDICULAR: Self = Self(16);
1983  pub const TANGENT: Self = Self(17);
1984  pub const NEAREST: Self = Self(18);
1985  pub const NODE: Self = Self(19);
1986  pub const INSERT: Self = Self(20);
1987  pub const PARALLEL: Self = Self(21);
1988  pub const APPARENT: Self = Self(22);
1989  pub const FROM: Self = Self(23);
1990  pub const POINT_FILTER: Self = Self(24);
1991  pub const TEMPORARY: Self = Self(25);
1992  pub const BETWEEN_TWO_POINTS: Self = Self(26);
1993  pub const POINT_ON_CURVE: Self = Self(27);
1994  pub const GEOMETRIC: Self = Self(28);
1995
1996  pub const ENUM_MIN: u8 = 0;
1997  pub const ENUM_MAX: u8 = 28;
1998  pub const ENUM_VALUES: &'static [Self] = &[
1999    Self::NONE,
2000    Self::ENDPOINT,
2001    Self::MIDPOINT,
2002    Self::CENTER,
2003    Self::QUADRANT,
2004    Self::INTERSECTION,
2005    Self::EXTENSION,
2006    Self::PERPENDICULAR,
2007    Self::TANGENT,
2008    Self::NEAREST,
2009    Self::NODE,
2010    Self::INSERT,
2011    Self::PARALLEL,
2012    Self::APPARENT,
2013    Self::FROM,
2014    Self::POINT_FILTER,
2015    Self::TEMPORARY,
2016    Self::BETWEEN_TWO_POINTS,
2017    Self::POINT_ON_CURVE,
2018    Self::GEOMETRIC,
2019  ];
2020  /// Returns the variant's name or "" if unknown.
2021  pub fn variant_name(self) -> Option<&'static str> {
2022    match self {
2023      Self::NONE => Some("NONE"),
2024      Self::ENDPOINT => Some("ENDPOINT"),
2025      Self::MIDPOINT => Some("MIDPOINT"),
2026      Self::CENTER => Some("CENTER"),
2027      Self::QUADRANT => Some("QUADRANT"),
2028      Self::INTERSECTION => Some("INTERSECTION"),
2029      Self::EXTENSION => Some("EXTENSION"),
2030      Self::PERPENDICULAR => Some("PERPENDICULAR"),
2031      Self::TANGENT => Some("TANGENT"),
2032      Self::NEAREST => Some("NEAREST"),
2033      Self::NODE => Some("NODE"),
2034      Self::INSERT => Some("INSERT"),
2035      Self::PARALLEL => Some("PARALLEL"),
2036      Self::APPARENT => Some("APPARENT"),
2037      Self::FROM => Some("FROM"),
2038      Self::POINT_FILTER => Some("POINT_FILTER"),
2039      Self::TEMPORARY => Some("TEMPORARY"),
2040      Self::BETWEEN_TWO_POINTS => Some("BETWEEN_TWO_POINTS"),
2041      Self::POINT_ON_CURVE => Some("POINT_ON_CURVE"),
2042      Self::GEOMETRIC => Some("GEOMETRIC"),
2043      _ => None,
2044    }
2045  }
2046}
2047impl core::fmt::Debug for OBJECT_SNAP_MODE {
2048  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2049    if let Some(name) = self.variant_name() {
2050      f.write_str(name)
2051    } else {
2052      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2053    }
2054  }
2055}
2056impl<'a> flatbuffers::Follow<'a> for OBJECT_SNAP_MODE {
2057  type Inner = Self;
2058  #[inline]
2059  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2060    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2061    Self(b)
2062  }
2063}
2064
2065impl flatbuffers::Push for OBJECT_SNAP_MODE {
2066    type Output = OBJECT_SNAP_MODE;
2067    #[inline]
2068    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2069        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2070    }
2071}
2072
2073impl flatbuffers::EndianScalar for OBJECT_SNAP_MODE {
2074  type Scalar = u8;
2075  #[inline]
2076  fn to_little_endian(self) -> u8 {
2077    self.0.to_le()
2078  }
2079  #[inline]
2080  #[allow(clippy::wrong_self_convention)]
2081  fn from_little_endian(v: u8) -> Self {
2082    let b = u8::from_le(v);
2083    Self(b)
2084  }
2085}
2086
2087impl<'a> flatbuffers::Verifiable for OBJECT_SNAP_MODE {
2088  #[inline]
2089  fn run_verifier(
2090    v: &mut flatbuffers::Verifier, pos: usize
2091  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2092    use self::flatbuffers::Verifiable;
2093    u8::run_verifier(v, pos)
2094  }
2095}
2096
2097impl flatbuffers::SimpleToVerifyInSlice for OBJECT_SNAP_MODE {}
2098#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2099pub const ENUM_MIN_SNAP_MODE: u8 = 10;
2100#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2101pub const ENUM_MAX_SNAP_MODE: u8 = 11;
2102#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2103#[allow(non_camel_case_types)]
2104pub const ENUM_VALUES_SNAP_MODE: [SNAP_MODE; 2] = [
2105  SNAP_MODE::RUNNING,
2106  SNAP_MODE::SINGLE,
2107];
2108
2109#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2110#[repr(transparent)]
2111pub struct SNAP_MODE(pub u8);
2112#[allow(non_upper_case_globals)]
2113impl SNAP_MODE {
2114  pub const RUNNING: Self = Self(10);
2115  pub const SINGLE: Self = Self(11);
2116
2117  pub const ENUM_MIN: u8 = 10;
2118  pub const ENUM_MAX: u8 = 11;
2119  pub const ENUM_VALUES: &'static [Self] = &[
2120    Self::RUNNING,
2121    Self::SINGLE,
2122  ];
2123  /// Returns the variant's name or "" if unknown.
2124  pub fn variant_name(self) -> Option<&'static str> {
2125    match self {
2126      Self::RUNNING => Some("RUNNING"),
2127      Self::SINGLE => Some("SINGLE"),
2128      _ => None,
2129    }
2130  }
2131}
2132impl core::fmt::Debug for SNAP_MODE {
2133  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2134    if let Some(name) = self.variant_name() {
2135      f.write_str(name)
2136    } else {
2137      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2138    }
2139  }
2140}
2141impl<'a> flatbuffers::Follow<'a> for SNAP_MODE {
2142  type Inner = Self;
2143  #[inline]
2144  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2145    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2146    Self(b)
2147  }
2148}
2149
2150impl flatbuffers::Push for SNAP_MODE {
2151    type Output = SNAP_MODE;
2152    #[inline]
2153    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2154        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2155    }
2156}
2157
2158impl flatbuffers::EndianScalar for SNAP_MODE {
2159  type Scalar = u8;
2160  #[inline]
2161  fn to_little_endian(self) -> u8 {
2162    self.0.to_le()
2163  }
2164  #[inline]
2165  #[allow(clippy::wrong_self_convention)]
2166  fn from_little_endian(v: u8) -> Self {
2167    let b = u8::from_le(v);
2168    Self(b)
2169  }
2170}
2171
2172impl<'a> flatbuffers::Verifiable for SNAP_MODE {
2173  #[inline]
2174  fn run_verifier(
2175    v: &mut flatbuffers::Verifier, pos: usize
2176  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2177    use self::flatbuffers::Verifiable;
2178    u8::run_verifier(v, pos)
2179  }
2180}
2181
2182impl flatbuffers::SimpleToVerifyInSlice for SNAP_MODE {}
2183#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2184pub const ENUM_MIN_SNAP_OVERRIDE_BEHAVIOR: u8 = 10;
2185#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2186pub const ENUM_MAX_SNAP_OVERRIDE_BEHAVIOR: u8 = 12;
2187#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2188#[allow(non_camel_case_types)]
2189pub const ENUM_VALUES_SNAP_OVERRIDE_BEHAVIOR: [SNAP_OVERRIDE_BEHAVIOR; 3] = [
2190  SNAP_OVERRIDE_BEHAVIOR::DISABLE,
2191  SNAP_OVERRIDE_BEHAVIOR::FORCE_GRID,
2192  SNAP_OVERRIDE_BEHAVIOR::FORCE_OBJECT,
2193];
2194
2195#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2196#[repr(transparent)]
2197pub struct SNAP_OVERRIDE_BEHAVIOR(pub u8);
2198#[allow(non_upper_case_globals)]
2199impl SNAP_OVERRIDE_BEHAVIOR {
2200  pub const DISABLE: Self = Self(10);
2201  pub const FORCE_GRID: Self = Self(11);
2202  pub const FORCE_OBJECT: Self = Self(12);
2203
2204  pub const ENUM_MIN: u8 = 10;
2205  pub const ENUM_MAX: u8 = 12;
2206  pub const ENUM_VALUES: &'static [Self] = &[
2207    Self::DISABLE,
2208    Self::FORCE_GRID,
2209    Self::FORCE_OBJECT,
2210  ];
2211  /// Returns the variant's name or "" if unknown.
2212  pub fn variant_name(self) -> Option<&'static str> {
2213    match self {
2214      Self::DISABLE => Some("DISABLE"),
2215      Self::FORCE_GRID => Some("FORCE_GRID"),
2216      Self::FORCE_OBJECT => Some("FORCE_OBJECT"),
2217      _ => None,
2218    }
2219  }
2220}
2221impl core::fmt::Debug for SNAP_OVERRIDE_BEHAVIOR {
2222  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2223    if let Some(name) = self.variant_name() {
2224      f.write_str(name)
2225    } else {
2226      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2227    }
2228  }
2229}
2230impl<'a> flatbuffers::Follow<'a> for SNAP_OVERRIDE_BEHAVIOR {
2231  type Inner = Self;
2232  #[inline]
2233  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2234    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2235    Self(b)
2236  }
2237}
2238
2239impl flatbuffers::Push for SNAP_OVERRIDE_BEHAVIOR {
2240    type Output = SNAP_OVERRIDE_BEHAVIOR;
2241    #[inline]
2242    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2243        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2244    }
2245}
2246
2247impl flatbuffers::EndianScalar for SNAP_OVERRIDE_BEHAVIOR {
2248  type Scalar = u8;
2249  #[inline]
2250  fn to_little_endian(self) -> u8 {
2251    self.0.to_le()
2252  }
2253  #[inline]
2254  #[allow(clippy::wrong_self_convention)]
2255  fn from_little_endian(v: u8) -> Self {
2256    let b = u8::from_le(v);
2257    Self(b)
2258  }
2259}
2260
2261impl<'a> flatbuffers::Verifiable for SNAP_OVERRIDE_BEHAVIOR {
2262  #[inline]
2263  fn run_verifier(
2264    v: &mut flatbuffers::Verifier, pos: usize
2265  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2266    use self::flatbuffers::Verifiable;
2267    u8::run_verifier(v, pos)
2268  }
2269}
2270
2271impl flatbuffers::SimpleToVerifyInSlice for SNAP_OVERRIDE_BEHAVIOR {}
2272#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2273pub const ENUM_MIN_SNAP_MARKER_SHAPE: u8 = 10;
2274#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2275pub const ENUM_MAX_SNAP_MARKER_SHAPE: u8 = 13;
2276#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2277#[allow(non_camel_case_types)]
2278pub const ENUM_VALUES_SNAP_MARKER_SHAPE: [SNAP_MARKER_SHAPE; 4] = [
2279  SNAP_MARKER_SHAPE::SQUARE,
2280  SNAP_MARKER_SHAPE::CIRCLE,
2281  SNAP_MARKER_SHAPE::TRIANGLE,
2282  SNAP_MARKER_SHAPE::X,
2283];
2284
2285#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2286#[repr(transparent)]
2287pub struct SNAP_MARKER_SHAPE(pub u8);
2288#[allow(non_upper_case_globals)]
2289impl SNAP_MARKER_SHAPE {
2290  pub const SQUARE: Self = Self(10);
2291  pub const CIRCLE: Self = Self(11);
2292  pub const TRIANGLE: Self = Self(12);
2293  pub const X: Self = Self(13);
2294
2295  pub const ENUM_MIN: u8 = 10;
2296  pub const ENUM_MAX: u8 = 13;
2297  pub const ENUM_VALUES: &'static [Self] = &[
2298    Self::SQUARE,
2299    Self::CIRCLE,
2300    Self::TRIANGLE,
2301    Self::X,
2302  ];
2303  /// Returns the variant's name or "" if unknown.
2304  pub fn variant_name(self) -> Option<&'static str> {
2305    match self {
2306      Self::SQUARE => Some("SQUARE"),
2307      Self::CIRCLE => Some("CIRCLE"),
2308      Self::TRIANGLE => Some("TRIANGLE"),
2309      Self::X => Some("X"),
2310      _ => None,
2311    }
2312  }
2313}
2314impl core::fmt::Debug for SNAP_MARKER_SHAPE {
2315  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2316    if let Some(name) = self.variant_name() {
2317      f.write_str(name)
2318    } else {
2319      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2320    }
2321  }
2322}
2323impl<'a> flatbuffers::Follow<'a> for SNAP_MARKER_SHAPE {
2324  type Inner = Self;
2325  #[inline]
2326  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2327    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2328    Self(b)
2329  }
2330}
2331
2332impl flatbuffers::Push for SNAP_MARKER_SHAPE {
2333    type Output = SNAP_MARKER_SHAPE;
2334    #[inline]
2335    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2336        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2337    }
2338}
2339
2340impl flatbuffers::EndianScalar for SNAP_MARKER_SHAPE {
2341  type Scalar = u8;
2342  #[inline]
2343  fn to_little_endian(self) -> u8 {
2344    self.0.to_le()
2345  }
2346  #[inline]
2347  #[allow(clippy::wrong_self_convention)]
2348  fn from_little_endian(v: u8) -> Self {
2349    let b = u8::from_le(v);
2350    Self(b)
2351  }
2352}
2353
2354impl<'a> flatbuffers::Verifiable for SNAP_MARKER_SHAPE {
2355  #[inline]
2356  fn run_verifier(
2357    v: &mut flatbuffers::Verifier, pos: usize
2358  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2359    use self::flatbuffers::Verifiable;
2360    u8::run_verifier(v, pos)
2361  }
2362}
2363
2364impl flatbuffers::SimpleToVerifyInSlice for SNAP_MARKER_SHAPE {}
2365#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2366pub const ENUM_MIN_TABLE_CELL_ALIGNMENT: u8 = 10;
2367#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2368pub const ENUM_MAX_TABLE_CELL_ALIGNMENT: u8 = 18;
2369#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2370#[allow(non_camel_case_types)]
2371pub const ENUM_VALUES_TABLE_CELL_ALIGNMENT: [TABLE_CELL_ALIGNMENT; 9] = [
2372  TABLE_CELL_ALIGNMENT::TOP_LEFT,
2373  TABLE_CELL_ALIGNMENT::TOP_CENTER,
2374  TABLE_CELL_ALIGNMENT::TOP_RIGHT,
2375  TABLE_CELL_ALIGNMENT::MIDDLE_LEFT,
2376  TABLE_CELL_ALIGNMENT::MIDDLE_CENTER,
2377  TABLE_CELL_ALIGNMENT::MIDDLE_RIGHT,
2378  TABLE_CELL_ALIGNMENT::BOTTOM_LEFT,
2379  TABLE_CELL_ALIGNMENT::BOTTOM_CENTER,
2380  TABLE_CELL_ALIGNMENT::BOTTOM_RIGHT,
2381];
2382
2383#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2384#[repr(transparent)]
2385pub struct TABLE_CELL_ALIGNMENT(pub u8);
2386#[allow(non_upper_case_globals)]
2387impl TABLE_CELL_ALIGNMENT {
2388  pub const TOP_LEFT: Self = Self(10);
2389  pub const TOP_CENTER: Self = Self(11);
2390  pub const TOP_RIGHT: Self = Self(12);
2391  pub const MIDDLE_LEFT: Self = Self(13);
2392  pub const MIDDLE_CENTER: Self = Self(14);
2393  pub const MIDDLE_RIGHT: Self = Self(15);
2394  pub const BOTTOM_LEFT: Self = Self(16);
2395  pub const BOTTOM_CENTER: Self = Self(17);
2396  pub const BOTTOM_RIGHT: Self = Self(18);
2397
2398  pub const ENUM_MIN: u8 = 10;
2399  pub const ENUM_MAX: u8 = 18;
2400  pub const ENUM_VALUES: &'static [Self] = &[
2401    Self::TOP_LEFT,
2402    Self::TOP_CENTER,
2403    Self::TOP_RIGHT,
2404    Self::MIDDLE_LEFT,
2405    Self::MIDDLE_CENTER,
2406    Self::MIDDLE_RIGHT,
2407    Self::BOTTOM_LEFT,
2408    Self::BOTTOM_CENTER,
2409    Self::BOTTOM_RIGHT,
2410  ];
2411  /// Returns the variant's name or "" if unknown.
2412  pub fn variant_name(self) -> Option<&'static str> {
2413    match self {
2414      Self::TOP_LEFT => Some("TOP_LEFT"),
2415      Self::TOP_CENTER => Some("TOP_CENTER"),
2416      Self::TOP_RIGHT => Some("TOP_RIGHT"),
2417      Self::MIDDLE_LEFT => Some("MIDDLE_LEFT"),
2418      Self::MIDDLE_CENTER => Some("MIDDLE_CENTER"),
2419      Self::MIDDLE_RIGHT => Some("MIDDLE_RIGHT"),
2420      Self::BOTTOM_LEFT => Some("BOTTOM_LEFT"),
2421      Self::BOTTOM_CENTER => Some("BOTTOM_CENTER"),
2422      Self::BOTTOM_RIGHT => Some("BOTTOM_RIGHT"),
2423      _ => None,
2424    }
2425  }
2426}
2427impl core::fmt::Debug for TABLE_CELL_ALIGNMENT {
2428  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2429    if let Some(name) = self.variant_name() {
2430      f.write_str(name)
2431    } else {
2432      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2433    }
2434  }
2435}
2436impl<'a> flatbuffers::Follow<'a> for TABLE_CELL_ALIGNMENT {
2437  type Inner = Self;
2438  #[inline]
2439  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2440    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2441    Self(b)
2442  }
2443}
2444
2445impl flatbuffers::Push for TABLE_CELL_ALIGNMENT {
2446    type Output = TABLE_CELL_ALIGNMENT;
2447    #[inline]
2448    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2449        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2450    }
2451}
2452
2453impl flatbuffers::EndianScalar for TABLE_CELL_ALIGNMENT {
2454  type Scalar = u8;
2455  #[inline]
2456  fn to_little_endian(self) -> u8 {
2457    self.0.to_le()
2458  }
2459  #[inline]
2460  #[allow(clippy::wrong_self_convention)]
2461  fn from_little_endian(v: u8) -> Self {
2462    let b = u8::from_le(v);
2463    Self(b)
2464  }
2465}
2466
2467impl<'a> flatbuffers::Verifiable for TABLE_CELL_ALIGNMENT {
2468  #[inline]
2469  fn run_verifier(
2470    v: &mut flatbuffers::Verifier, pos: usize
2471  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2472    use self::flatbuffers::Verifiable;
2473    u8::run_verifier(v, pos)
2474  }
2475}
2476
2477impl flatbuffers::SimpleToVerifyInSlice for TABLE_CELL_ALIGNMENT {}
2478#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2479pub const ENUM_MIN_TABLE_FLOW_DIRECTION: u8 = 10;
2480#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2481pub const ENUM_MAX_TABLE_FLOW_DIRECTION: u8 = 11;
2482#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2483#[allow(non_camel_case_types)]
2484pub const ENUM_VALUES_TABLE_FLOW_DIRECTION: [TABLE_FLOW_DIRECTION; 2] = [
2485  TABLE_FLOW_DIRECTION::DOWN,
2486  TABLE_FLOW_DIRECTION::UP,
2487];
2488
2489#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2490#[repr(transparent)]
2491pub struct TABLE_FLOW_DIRECTION(pub u8);
2492#[allow(non_upper_case_globals)]
2493impl TABLE_FLOW_DIRECTION {
2494  pub const DOWN: Self = Self(10);
2495  pub const UP: Self = Self(11);
2496
2497  pub const ENUM_MIN: u8 = 10;
2498  pub const ENUM_MAX: u8 = 11;
2499  pub const ENUM_VALUES: &'static [Self] = &[
2500    Self::DOWN,
2501    Self::UP,
2502  ];
2503  /// Returns the variant's name or "" if unknown.
2504  pub fn variant_name(self) -> Option<&'static str> {
2505    match self {
2506      Self::DOWN => Some("DOWN"),
2507      Self::UP => Some("UP"),
2508      _ => None,
2509    }
2510  }
2511}
2512impl core::fmt::Debug for TABLE_FLOW_DIRECTION {
2513  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2514    if let Some(name) = self.variant_name() {
2515      f.write_str(name)
2516    } else {
2517      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2518    }
2519  }
2520}
2521impl<'a> flatbuffers::Follow<'a> for TABLE_FLOW_DIRECTION {
2522  type Inner = Self;
2523  #[inline]
2524  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2525    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2526    Self(b)
2527  }
2528}
2529
2530impl flatbuffers::Push for TABLE_FLOW_DIRECTION {
2531    type Output = TABLE_FLOW_DIRECTION;
2532    #[inline]
2533    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2534        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2535    }
2536}
2537
2538impl flatbuffers::EndianScalar for TABLE_FLOW_DIRECTION {
2539  type Scalar = u8;
2540  #[inline]
2541  fn to_little_endian(self) -> u8 {
2542    self.0.to_le()
2543  }
2544  #[inline]
2545  #[allow(clippy::wrong_self_convention)]
2546  fn from_little_endian(v: u8) -> Self {
2547    let b = u8::from_le(v);
2548    Self(b)
2549  }
2550}
2551
2552impl<'a> flatbuffers::Verifiable for TABLE_FLOW_DIRECTION {
2553  #[inline]
2554  fn run_verifier(
2555    v: &mut flatbuffers::Verifier, pos: usize
2556  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2557    use self::flatbuffers::Verifiable;
2558    u8::run_verifier(v, pos)
2559  }
2560}
2561
2562impl flatbuffers::SimpleToVerifyInSlice for TABLE_FLOW_DIRECTION {}
2563#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2564pub const ENUM_MIN_TOLERANCE_DISPLAY: u8 = 10;
2565#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2566pub const ENUM_MAX_TOLERANCE_DISPLAY: u8 = 14;
2567#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2568#[allow(non_camel_case_types)]
2569pub const ENUM_VALUES_TOLERANCE_DISPLAY: [TOLERANCE_DISPLAY; 5] = [
2570  TOLERANCE_DISPLAY::NONE,
2571  TOLERANCE_DISPLAY::SYMMETRICAL,
2572  TOLERANCE_DISPLAY::DEVIATION,
2573  TOLERANCE_DISPLAY::LIMITS,
2574  TOLERANCE_DISPLAY::BASIC,
2575];
2576
2577#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2578#[repr(transparent)]
2579pub struct TOLERANCE_DISPLAY(pub u8);
2580#[allow(non_upper_case_globals)]
2581impl TOLERANCE_DISPLAY {
2582  pub const NONE: Self = Self(10);
2583  pub const SYMMETRICAL: Self = Self(11);
2584  pub const DEVIATION: Self = Self(12);
2585  pub const LIMITS: Self = Self(13);
2586  pub const BASIC: Self = Self(14);
2587
2588  pub const ENUM_MIN: u8 = 10;
2589  pub const ENUM_MAX: u8 = 14;
2590  pub const ENUM_VALUES: &'static [Self] = &[
2591    Self::NONE,
2592    Self::SYMMETRICAL,
2593    Self::DEVIATION,
2594    Self::LIMITS,
2595    Self::BASIC,
2596  ];
2597  /// Returns the variant's name or "" if unknown.
2598  pub fn variant_name(self) -> Option<&'static str> {
2599    match self {
2600      Self::NONE => Some("NONE"),
2601      Self::SYMMETRICAL => Some("SYMMETRICAL"),
2602      Self::DEVIATION => Some("DEVIATION"),
2603      Self::LIMITS => Some("LIMITS"),
2604      Self::BASIC => Some("BASIC"),
2605      _ => None,
2606    }
2607  }
2608}
2609impl core::fmt::Debug for TOLERANCE_DISPLAY {
2610  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2611    if let Some(name) = self.variant_name() {
2612      f.write_str(name)
2613    } else {
2614      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2615    }
2616  }
2617}
2618impl<'a> flatbuffers::Follow<'a> for TOLERANCE_DISPLAY {
2619  type Inner = Self;
2620  #[inline]
2621  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2622    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2623    Self(b)
2624  }
2625}
2626
2627impl flatbuffers::Push for TOLERANCE_DISPLAY {
2628    type Output = TOLERANCE_DISPLAY;
2629    #[inline]
2630    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2631        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2632    }
2633}
2634
2635impl flatbuffers::EndianScalar for TOLERANCE_DISPLAY {
2636  type Scalar = u8;
2637  #[inline]
2638  fn to_little_endian(self) -> u8 {
2639    self.0.to_le()
2640  }
2641  #[inline]
2642  #[allow(clippy::wrong_self_convention)]
2643  fn from_little_endian(v: u8) -> Self {
2644    let b = u8::from_le(v);
2645    Self(b)
2646  }
2647}
2648
2649impl<'a> flatbuffers::Verifiable for TOLERANCE_DISPLAY {
2650  #[inline]
2651  fn run_verifier(
2652    v: &mut flatbuffers::Verifier, pos: usize
2653  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2654    use self::flatbuffers::Verifiable;
2655    u8::run_verifier(v, pos)
2656  }
2657}
2658
2659impl flatbuffers::SimpleToVerifyInSlice for TOLERANCE_DISPLAY {}
2660#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2661pub const ENUM_MIN_DIMENSION_TYPE: u8 = 10;
2662#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2663pub const ENUM_MAX_DIMENSION_TYPE: u8 = 22;
2664#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2665#[allow(non_camel_case_types)]
2666pub const ENUM_VALUES_DIMENSION_TYPE: [DIMENSION_TYPE; 13] = [
2667  DIMENSION_TYPE::LINEAR,
2668  DIMENSION_TYPE::ALIGNED,
2669  DIMENSION_TYPE::ANGULAR,
2670  DIMENSION_TYPE::ARC_LENGTH,
2671  DIMENSION_TYPE::RADIUS,
2672  DIMENSION_TYPE::DIAMETER,
2673  DIMENSION_TYPE::CENTER_MARK,
2674  DIMENSION_TYPE::ROTATED,
2675  DIMENSION_TYPE::SPACING,
2676  DIMENSION_TYPE::CONTINUE,
2677  DIMENSION_TYPE::BASELINE,
2678  DIMENSION_TYPE::JOGGED_LINEAR,
2679  DIMENSION_TYPE::ORDINATE,
2680];
2681
2682#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2683#[repr(transparent)]
2684pub struct DIMENSION_TYPE(pub u8);
2685#[allow(non_upper_case_globals)]
2686impl DIMENSION_TYPE {
2687  pub const LINEAR: Self = Self(10);
2688  pub const ALIGNED: Self = Self(11);
2689  pub const ANGULAR: Self = Self(12);
2690  pub const ARC_LENGTH: Self = Self(13);
2691  pub const RADIUS: Self = Self(14);
2692  pub const DIAMETER: Self = Self(15);
2693  pub const CENTER_MARK: Self = Self(16);
2694  pub const ROTATED: Self = Self(17);
2695  pub const SPACING: Self = Self(18);
2696  pub const CONTINUE: Self = Self(19);
2697  pub const BASELINE: Self = Self(20);
2698  pub const JOGGED_LINEAR: Self = Self(21);
2699  pub const ORDINATE: Self = Self(22);
2700
2701  pub const ENUM_MIN: u8 = 10;
2702  pub const ENUM_MAX: u8 = 22;
2703  pub const ENUM_VALUES: &'static [Self] = &[
2704    Self::LINEAR,
2705    Self::ALIGNED,
2706    Self::ANGULAR,
2707    Self::ARC_LENGTH,
2708    Self::RADIUS,
2709    Self::DIAMETER,
2710    Self::CENTER_MARK,
2711    Self::ROTATED,
2712    Self::SPACING,
2713    Self::CONTINUE,
2714    Self::BASELINE,
2715    Self::JOGGED_LINEAR,
2716    Self::ORDINATE,
2717  ];
2718  /// Returns the variant's name or "" if unknown.
2719  pub fn variant_name(self) -> Option<&'static str> {
2720    match self {
2721      Self::LINEAR => Some("LINEAR"),
2722      Self::ALIGNED => Some("ALIGNED"),
2723      Self::ANGULAR => Some("ANGULAR"),
2724      Self::ARC_LENGTH => Some("ARC_LENGTH"),
2725      Self::RADIUS => Some("RADIUS"),
2726      Self::DIAMETER => Some("DIAMETER"),
2727      Self::CENTER_MARK => Some("CENTER_MARK"),
2728      Self::ROTATED => Some("ROTATED"),
2729      Self::SPACING => Some("SPACING"),
2730      Self::CONTINUE => Some("CONTINUE"),
2731      Self::BASELINE => Some("BASELINE"),
2732      Self::JOGGED_LINEAR => Some("JOGGED_LINEAR"),
2733      Self::ORDINATE => Some("ORDINATE"),
2734      _ => None,
2735    }
2736  }
2737}
2738impl core::fmt::Debug for DIMENSION_TYPE {
2739  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2740    if let Some(name) = self.variant_name() {
2741      f.write_str(name)
2742    } else {
2743      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2744    }
2745  }
2746}
2747impl<'a> flatbuffers::Follow<'a> for DIMENSION_TYPE {
2748  type Inner = Self;
2749  #[inline]
2750  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2751    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2752    Self(b)
2753  }
2754}
2755
2756impl flatbuffers::Push for DIMENSION_TYPE {
2757    type Output = DIMENSION_TYPE;
2758    #[inline]
2759    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2760        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2761    }
2762}
2763
2764impl flatbuffers::EndianScalar for DIMENSION_TYPE {
2765  type Scalar = u8;
2766  #[inline]
2767  fn to_little_endian(self) -> u8 {
2768    self.0.to_le()
2769  }
2770  #[inline]
2771  #[allow(clippy::wrong_self_convention)]
2772  fn from_little_endian(v: u8) -> Self {
2773    let b = u8::from_le(v);
2774    Self(b)
2775  }
2776}
2777
2778impl<'a> flatbuffers::Verifiable for DIMENSION_TYPE {
2779  #[inline]
2780  fn run_verifier(
2781    v: &mut flatbuffers::Verifier, pos: usize
2782  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2783    use self::flatbuffers::Verifiable;
2784    u8::run_verifier(v, pos)
2785  }
2786}
2787
2788impl flatbuffers::SimpleToVerifyInSlice for DIMENSION_TYPE {}
2789#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2790pub const ENUM_MIN_MARK_ELLIPSE_CENTER: u8 = 10;
2791#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2792pub const ENUM_MAX_MARK_ELLIPSE_CENTER: u8 = 11;
2793#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2794#[allow(non_camel_case_types)]
2795pub const ENUM_VALUES_MARK_ELLIPSE_CENTER: [MARK_ELLIPSE_CENTER; 2] = [
2796  MARK_ELLIPSE_CENTER::MARK,
2797  MARK_ELLIPSE_CENTER::LINE,
2798];
2799
2800#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2801#[repr(transparent)]
2802pub struct MARK_ELLIPSE_CENTER(pub u8);
2803#[allow(non_upper_case_globals)]
2804impl MARK_ELLIPSE_CENTER {
2805  pub const MARK: Self = Self(10);
2806  pub const LINE: Self = Self(11);
2807
2808  pub const ENUM_MIN: u8 = 10;
2809  pub const ENUM_MAX: u8 = 11;
2810  pub const ENUM_VALUES: &'static [Self] = &[
2811    Self::MARK,
2812    Self::LINE,
2813  ];
2814  /// Returns the variant's name or "" if unknown.
2815  pub fn variant_name(self) -> Option<&'static str> {
2816    match self {
2817      Self::MARK => Some("MARK"),
2818      Self::LINE => Some("LINE"),
2819      _ => None,
2820    }
2821  }
2822}
2823impl core::fmt::Debug for MARK_ELLIPSE_CENTER {
2824  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2825    if let Some(name) = self.variant_name() {
2826      f.write_str(name)
2827    } else {
2828      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2829    }
2830  }
2831}
2832impl<'a> flatbuffers::Follow<'a> for MARK_ELLIPSE_CENTER {
2833  type Inner = Self;
2834  #[inline]
2835  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2836    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2837    Self(b)
2838  }
2839}
2840
2841impl flatbuffers::Push for MARK_ELLIPSE_CENTER {
2842    type Output = MARK_ELLIPSE_CENTER;
2843    #[inline]
2844    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2845        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2846    }
2847}
2848
2849impl flatbuffers::EndianScalar for MARK_ELLIPSE_CENTER {
2850  type Scalar = u8;
2851  #[inline]
2852  fn to_little_endian(self) -> u8 {
2853    self.0.to_le()
2854  }
2855  #[inline]
2856  #[allow(clippy::wrong_self_convention)]
2857  fn from_little_endian(v: u8) -> Self {
2858    let b = u8::from_le(v);
2859    Self(b)
2860  }
2861}
2862
2863impl<'a> flatbuffers::Verifiable for MARK_ELLIPSE_CENTER {
2864  #[inline]
2865  fn run_verifier(
2866    v: &mut flatbuffers::Verifier, pos: usize
2867  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2868    use self::flatbuffers::Verifiable;
2869    u8::run_verifier(v, pos)
2870  }
2871}
2872
2873impl flatbuffers::SimpleToVerifyInSlice for MARK_ELLIPSE_CENTER {}
2874#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2875pub const ENUM_MIN_TEXT_FLOW_DIRECTION: u8 = 10;
2876#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2877pub const ENUM_MAX_TEXT_FLOW_DIRECTION: u8 = 13;
2878#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2879#[allow(non_camel_case_types)]
2880pub const ENUM_VALUES_TEXT_FLOW_DIRECTION: [TEXT_FLOW_DIRECTION; 4] = [
2881  TEXT_FLOW_DIRECTION::LEFT_TO_RIGHT,
2882  TEXT_FLOW_DIRECTION::RIGHT_TO_LEFT,
2883  TEXT_FLOW_DIRECTION::TOP_TO_BOTTOM,
2884  TEXT_FLOW_DIRECTION::BOTTOM_TO_TOP,
2885];
2886
2887#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2888#[repr(transparent)]
2889pub struct TEXT_FLOW_DIRECTION(pub u8);
2890#[allow(non_upper_case_globals)]
2891impl TEXT_FLOW_DIRECTION {
2892  pub const LEFT_TO_RIGHT: Self = Self(10);
2893  pub const RIGHT_TO_LEFT: Self = Self(11);
2894  pub const TOP_TO_BOTTOM: Self = Self(12);
2895  pub const BOTTOM_TO_TOP: Self = Self(13);
2896
2897  pub const ENUM_MIN: u8 = 10;
2898  pub const ENUM_MAX: u8 = 13;
2899  pub const ENUM_VALUES: &'static [Self] = &[
2900    Self::LEFT_TO_RIGHT,
2901    Self::RIGHT_TO_LEFT,
2902    Self::TOP_TO_BOTTOM,
2903    Self::BOTTOM_TO_TOP,
2904  ];
2905  /// Returns the variant's name or "" if unknown.
2906  pub fn variant_name(self) -> Option<&'static str> {
2907    match self {
2908      Self::LEFT_TO_RIGHT => Some("LEFT_TO_RIGHT"),
2909      Self::RIGHT_TO_LEFT => Some("RIGHT_TO_LEFT"),
2910      Self::TOP_TO_BOTTOM => Some("TOP_TO_BOTTOM"),
2911      Self::BOTTOM_TO_TOP => Some("BOTTOM_TO_TOP"),
2912      _ => None,
2913    }
2914  }
2915}
2916impl core::fmt::Debug for TEXT_FLOW_DIRECTION {
2917  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
2918    if let Some(name) = self.variant_name() {
2919      f.write_str(name)
2920    } else {
2921      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
2922    }
2923  }
2924}
2925impl<'a> flatbuffers::Follow<'a> for TEXT_FLOW_DIRECTION {
2926  type Inner = Self;
2927  #[inline]
2928  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
2929    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
2930    Self(b)
2931  }
2932}
2933
2934impl flatbuffers::Push for TEXT_FLOW_DIRECTION {
2935    type Output = TEXT_FLOW_DIRECTION;
2936    #[inline]
2937    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
2938        flatbuffers::emplace_scalar::<u8>(dst, self.0);
2939    }
2940}
2941
2942impl flatbuffers::EndianScalar for TEXT_FLOW_DIRECTION {
2943  type Scalar = u8;
2944  #[inline]
2945  fn to_little_endian(self) -> u8 {
2946    self.0.to_le()
2947  }
2948  #[inline]
2949  #[allow(clippy::wrong_self_convention)]
2950  fn from_little_endian(v: u8) -> Self {
2951    let b = u8::from_le(v);
2952    Self(b)
2953  }
2954}
2955
2956impl<'a> flatbuffers::Verifiable for TEXT_FLOW_DIRECTION {
2957  #[inline]
2958  fn run_verifier(
2959    v: &mut flatbuffers::Verifier, pos: usize
2960  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
2961    use self::flatbuffers::Verifiable;
2962    u8::run_verifier(v, pos)
2963  }
2964}
2965
2966impl flatbuffers::SimpleToVerifyInSlice for TEXT_FLOW_DIRECTION {}
2967#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2968pub const ENUM_MIN_COLUMN_TYPE: u8 = 10;
2969#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2970pub const ENUM_MAX_COLUMN_TYPE: u8 = 12;
2971#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
2972#[allow(non_camel_case_types)]
2973pub const ENUM_VALUES_COLUMN_TYPE: [COLUMN_TYPE; 3] = [
2974  COLUMN_TYPE::NO_COLUMNS,
2975  COLUMN_TYPE::STATIC_COLUMNS,
2976  COLUMN_TYPE::DYNAMIC_COLUMNS,
2977];
2978
2979#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
2980#[repr(transparent)]
2981pub struct COLUMN_TYPE(pub u8);
2982#[allow(non_upper_case_globals)]
2983impl COLUMN_TYPE {
2984  pub const NO_COLUMNS: Self = Self(10);
2985  pub const STATIC_COLUMNS: Self = Self(11);
2986  pub const DYNAMIC_COLUMNS: Self = Self(12);
2987
2988  pub const ENUM_MIN: u8 = 10;
2989  pub const ENUM_MAX: u8 = 12;
2990  pub const ENUM_VALUES: &'static [Self] = &[
2991    Self::NO_COLUMNS,
2992    Self::STATIC_COLUMNS,
2993    Self::DYNAMIC_COLUMNS,
2994  ];
2995  /// Returns the variant's name or "" if unknown.
2996  pub fn variant_name(self) -> Option<&'static str> {
2997    match self {
2998      Self::NO_COLUMNS => Some("NO_COLUMNS"),
2999      Self::STATIC_COLUMNS => Some("STATIC_COLUMNS"),
3000      Self::DYNAMIC_COLUMNS => Some("DYNAMIC_COLUMNS"),
3001      _ => None,
3002    }
3003  }
3004}
3005impl core::fmt::Debug for COLUMN_TYPE {
3006  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3007    if let Some(name) = self.variant_name() {
3008      f.write_str(name)
3009    } else {
3010      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3011    }
3012  }
3013}
3014impl<'a> flatbuffers::Follow<'a> for COLUMN_TYPE {
3015  type Inner = Self;
3016  #[inline]
3017  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3018    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3019    Self(b)
3020  }
3021}
3022
3023impl flatbuffers::Push for COLUMN_TYPE {
3024    type Output = COLUMN_TYPE;
3025    #[inline]
3026    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3027        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3028    }
3029}
3030
3031impl flatbuffers::EndianScalar for COLUMN_TYPE {
3032  type Scalar = u8;
3033  #[inline]
3034  fn to_little_endian(self) -> u8 {
3035    self.0.to_le()
3036  }
3037  #[inline]
3038  #[allow(clippy::wrong_self_convention)]
3039  fn from_little_endian(v: u8) -> Self {
3040    let b = u8::from_le(v);
3041    Self(b)
3042  }
3043}
3044
3045impl<'a> flatbuffers::Verifiable for COLUMN_TYPE {
3046  #[inline]
3047  fn run_verifier(
3048    v: &mut flatbuffers::Verifier, pos: usize
3049  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3050    use self::flatbuffers::Verifiable;
3051    u8::run_verifier(v, pos)
3052  }
3053}
3054
3055impl flatbuffers::SimpleToVerifyInSlice for COLUMN_TYPE {}
3056#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3057pub const ENUM_MIN_GDT_SYMBOL: u8 = 10;
3058#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3059pub const ENUM_MAX_GDT_SYMBOL: u8 = 29;
3060#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3061#[allow(non_camel_case_types)]
3062pub const ENUM_VALUES_GDT_SYMBOL: [GDT_SYMBOL; 20] = [
3063  GDT_SYMBOL::STRAIGHTNESS,
3064  GDT_SYMBOL::FLATNESS,
3065  GDT_SYMBOL::CIRCULARITY,
3066  GDT_SYMBOL::CYLINDRICITY,
3067  GDT_SYMBOL::PERPENDICULARITY,
3068  GDT_SYMBOL::ANGULARITY,
3069  GDT_SYMBOL::PARALLELISM,
3070  GDT_SYMBOL::POSITION,
3071  GDT_SYMBOL::TRUE_POSITION,
3072  GDT_SYMBOL::CONCENTRICITY,
3073  GDT_SYMBOL::COAXIALITY,
3074  GDT_SYMBOL::SYMMETRY,
3075  GDT_SYMBOL::CIRCULAR_RUNOUT,
3076  GDT_SYMBOL::TOTAL_RUNOUT,
3077  GDT_SYMBOL::PROFILE_OF_LINE,
3078  GDT_SYMBOL::PROFILE_OF_SURFACE,
3079  GDT_SYMBOL::STATISTICAL,
3080  GDT_SYMBOL::ALL_AROUND,
3081  GDT_SYMBOL::ALL_OVER,
3082  GDT_SYMBOL::BETWEEN,
3083];
3084
3085#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3086#[repr(transparent)]
3087pub struct GDT_SYMBOL(pub u8);
3088#[allow(non_upper_case_globals)]
3089impl GDT_SYMBOL {
3090  pub const STRAIGHTNESS: Self = Self(10);
3091  pub const FLATNESS: Self = Self(11);
3092  pub const CIRCULARITY: Self = Self(12);
3093  pub const CYLINDRICITY: Self = Self(13);
3094  pub const PERPENDICULARITY: Self = Self(14);
3095  pub const ANGULARITY: Self = Self(15);
3096  pub const PARALLELISM: Self = Self(16);
3097  pub const POSITION: Self = Self(17);
3098  pub const TRUE_POSITION: Self = Self(18);
3099  pub const CONCENTRICITY: Self = Self(19);
3100  pub const COAXIALITY: Self = Self(20);
3101  pub const SYMMETRY: Self = Self(21);
3102  pub const CIRCULAR_RUNOUT: Self = Self(22);
3103  pub const TOTAL_RUNOUT: Self = Self(23);
3104  pub const PROFILE_OF_LINE: Self = Self(24);
3105  pub const PROFILE_OF_SURFACE: Self = Self(25);
3106  pub const STATISTICAL: Self = Self(26);
3107  pub const ALL_AROUND: Self = Self(27);
3108  pub const ALL_OVER: Self = Self(28);
3109  pub const BETWEEN: Self = Self(29);
3110
3111  pub const ENUM_MIN: u8 = 10;
3112  pub const ENUM_MAX: u8 = 29;
3113  pub const ENUM_VALUES: &'static [Self] = &[
3114    Self::STRAIGHTNESS,
3115    Self::FLATNESS,
3116    Self::CIRCULARITY,
3117    Self::CYLINDRICITY,
3118    Self::PERPENDICULARITY,
3119    Self::ANGULARITY,
3120    Self::PARALLELISM,
3121    Self::POSITION,
3122    Self::TRUE_POSITION,
3123    Self::CONCENTRICITY,
3124    Self::COAXIALITY,
3125    Self::SYMMETRY,
3126    Self::CIRCULAR_RUNOUT,
3127    Self::TOTAL_RUNOUT,
3128    Self::PROFILE_OF_LINE,
3129    Self::PROFILE_OF_SURFACE,
3130    Self::STATISTICAL,
3131    Self::ALL_AROUND,
3132    Self::ALL_OVER,
3133    Self::BETWEEN,
3134  ];
3135  /// Returns the variant's name or "" if unknown.
3136  pub fn variant_name(self) -> Option<&'static str> {
3137    match self {
3138      Self::STRAIGHTNESS => Some("STRAIGHTNESS"),
3139      Self::FLATNESS => Some("FLATNESS"),
3140      Self::CIRCULARITY => Some("CIRCULARITY"),
3141      Self::CYLINDRICITY => Some("CYLINDRICITY"),
3142      Self::PERPENDICULARITY => Some("PERPENDICULARITY"),
3143      Self::ANGULARITY => Some("ANGULARITY"),
3144      Self::PARALLELISM => Some("PARALLELISM"),
3145      Self::POSITION => Some("POSITION"),
3146      Self::TRUE_POSITION => Some("TRUE_POSITION"),
3147      Self::CONCENTRICITY => Some("CONCENTRICITY"),
3148      Self::COAXIALITY => Some("COAXIALITY"),
3149      Self::SYMMETRY => Some("SYMMETRY"),
3150      Self::CIRCULAR_RUNOUT => Some("CIRCULAR_RUNOUT"),
3151      Self::TOTAL_RUNOUT => Some("TOTAL_RUNOUT"),
3152      Self::PROFILE_OF_LINE => Some("PROFILE_OF_LINE"),
3153      Self::PROFILE_OF_SURFACE => Some("PROFILE_OF_SURFACE"),
3154      Self::STATISTICAL => Some("STATISTICAL"),
3155      Self::ALL_AROUND => Some("ALL_AROUND"),
3156      Self::ALL_OVER => Some("ALL_OVER"),
3157      Self::BETWEEN => Some("BETWEEN"),
3158      _ => None,
3159    }
3160  }
3161}
3162impl core::fmt::Debug for GDT_SYMBOL {
3163  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3164    if let Some(name) = self.variant_name() {
3165      f.write_str(name)
3166    } else {
3167      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3168    }
3169  }
3170}
3171impl<'a> flatbuffers::Follow<'a> for GDT_SYMBOL {
3172  type Inner = Self;
3173  #[inline]
3174  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3175    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3176    Self(b)
3177  }
3178}
3179
3180impl flatbuffers::Push for GDT_SYMBOL {
3181    type Output = GDT_SYMBOL;
3182    #[inline]
3183    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3184        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3185    }
3186}
3187
3188impl flatbuffers::EndianScalar for GDT_SYMBOL {
3189  type Scalar = u8;
3190  #[inline]
3191  fn to_little_endian(self) -> u8 {
3192    self.0.to_le()
3193  }
3194  #[inline]
3195  #[allow(clippy::wrong_self_convention)]
3196  fn from_little_endian(v: u8) -> Self {
3197    let b = u8::from_le(v);
3198    Self(b)
3199  }
3200}
3201
3202impl<'a> flatbuffers::Verifiable for GDT_SYMBOL {
3203  #[inline]
3204  fn run_verifier(
3205    v: &mut flatbuffers::Verifier, pos: usize
3206  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3207    use self::flatbuffers::Verifiable;
3208    u8::run_verifier(v, pos)
3209  }
3210}
3211
3212impl flatbuffers::SimpleToVerifyInSlice for GDT_SYMBOL {}
3213#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3214pub const ENUM_MIN_MATERIAL_CONDITION: u8 = 10;
3215#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3216pub const ENUM_MAX_MATERIAL_CONDITION: u8 = 12;
3217#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3218#[allow(non_camel_case_types)]
3219pub const ENUM_VALUES_MATERIAL_CONDITION: [MATERIAL_CONDITION; 3] = [
3220  MATERIAL_CONDITION::MAXIMUM,
3221  MATERIAL_CONDITION::LEAST,
3222  MATERIAL_CONDITION::REGARDLESS,
3223];
3224
3225#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3226#[repr(transparent)]
3227pub struct MATERIAL_CONDITION(pub u8);
3228#[allow(non_upper_case_globals)]
3229impl MATERIAL_CONDITION {
3230  pub const MAXIMUM: Self = Self(10);
3231  pub const LEAST: Self = Self(11);
3232  pub const REGARDLESS: Self = Self(12);
3233
3234  pub const ENUM_MIN: u8 = 10;
3235  pub const ENUM_MAX: u8 = 12;
3236  pub const ENUM_VALUES: &'static [Self] = &[
3237    Self::MAXIMUM,
3238    Self::LEAST,
3239    Self::REGARDLESS,
3240  ];
3241  /// Returns the variant's name or "" if unknown.
3242  pub fn variant_name(self) -> Option<&'static str> {
3243    match self {
3244      Self::MAXIMUM => Some("MAXIMUM"),
3245      Self::LEAST => Some("LEAST"),
3246      Self::REGARDLESS => Some("REGARDLESS"),
3247      _ => None,
3248    }
3249  }
3250}
3251impl core::fmt::Debug for MATERIAL_CONDITION {
3252  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3253    if let Some(name) = self.variant_name() {
3254      f.write_str(name)
3255    } else {
3256      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3257    }
3258  }
3259}
3260impl<'a> flatbuffers::Follow<'a> for MATERIAL_CONDITION {
3261  type Inner = Self;
3262  #[inline]
3263  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3264    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3265    Self(b)
3266  }
3267}
3268
3269impl flatbuffers::Push for MATERIAL_CONDITION {
3270    type Output = MATERIAL_CONDITION;
3271    #[inline]
3272    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3273        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3274    }
3275}
3276
3277impl flatbuffers::EndianScalar for MATERIAL_CONDITION {
3278  type Scalar = u8;
3279  #[inline]
3280  fn to_little_endian(self) -> u8 {
3281    self.0.to_le()
3282  }
3283  #[inline]
3284  #[allow(clippy::wrong_self_convention)]
3285  fn from_little_endian(v: u8) -> Self {
3286    let b = u8::from_le(v);
3287    Self(b)
3288  }
3289}
3290
3291impl<'a> flatbuffers::Verifiable for MATERIAL_CONDITION {
3292  #[inline]
3293  fn run_verifier(
3294    v: &mut flatbuffers::Verifier, pos: usize
3295  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3296    use self::flatbuffers::Verifiable;
3297    u8::run_verifier(v, pos)
3298  }
3299}
3300
3301impl flatbuffers::SimpleToVerifyInSlice for MATERIAL_CONDITION {}
3302#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3303pub const ENUM_MIN_FEATURE_MODIFIER: u8 = 0;
3304#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3305pub const ENUM_MAX_FEATURE_MODIFIER: u8 = 24;
3306#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3307#[allow(non_camel_case_types)]
3308pub const ENUM_VALUES_FEATURE_MODIFIER: [FEATURE_MODIFIER; 16] = [
3309  FEATURE_MODIFIER::NONE,
3310  FEATURE_MODIFIER::FREE_STATE,
3311  FEATURE_MODIFIER::TANGENT_PLANE,
3312  FEATURE_MODIFIER::PROJECTED_TOLERANCE_ZONE,
3313  FEATURE_MODIFIER::DIAMETER,
3314  FEATURE_MODIFIER::SPHERICAL_DIAMETER,
3315  FEATURE_MODIFIER::RADIUS,
3316  FEATURE_MODIFIER::SPHERICAL_RADIUS,
3317  FEATURE_MODIFIER::CONTROLLED_RADIUS,
3318  FEATURE_MODIFIER::SQUARE,
3319  FEATURE_MODIFIER::TRANSLATION,
3320  FEATURE_MODIFIER::ALL_AROUND,
3321  FEATURE_MODIFIER::ALL_OVER,
3322  FEATURE_MODIFIER::STATISTICAL,
3323  FEATURE_MODIFIER::CONTINUOUS_FEATURE,
3324  FEATURE_MODIFIER::UNEQUALLY_DISPOSED,
3325];
3326
3327#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3328#[repr(transparent)]
3329pub struct FEATURE_MODIFIER(pub u8);
3330#[allow(non_upper_case_globals)]
3331impl FEATURE_MODIFIER {
3332  pub const NONE: Self = Self(0);
3333  pub const FREE_STATE: Self = Self(10);
3334  pub const TANGENT_PLANE: Self = Self(11);
3335  pub const PROJECTED_TOLERANCE_ZONE: Self = Self(12);
3336  pub const DIAMETER: Self = Self(13);
3337  pub const SPHERICAL_DIAMETER: Self = Self(14);
3338  pub const RADIUS: Self = Self(15);
3339  pub const SPHERICAL_RADIUS: Self = Self(16);
3340  pub const CONTROLLED_RADIUS: Self = Self(17);
3341  pub const SQUARE: Self = Self(18);
3342  pub const TRANSLATION: Self = Self(19);
3343  pub const ALL_AROUND: Self = Self(20);
3344  pub const ALL_OVER: Self = Self(21);
3345  pub const STATISTICAL: Self = Self(22);
3346  pub const CONTINUOUS_FEATURE: Self = Self(23);
3347  pub const UNEQUALLY_DISPOSED: Self = Self(24);
3348
3349  pub const ENUM_MIN: u8 = 0;
3350  pub const ENUM_MAX: u8 = 24;
3351  pub const ENUM_VALUES: &'static [Self] = &[
3352    Self::NONE,
3353    Self::FREE_STATE,
3354    Self::TANGENT_PLANE,
3355    Self::PROJECTED_TOLERANCE_ZONE,
3356    Self::DIAMETER,
3357    Self::SPHERICAL_DIAMETER,
3358    Self::RADIUS,
3359    Self::SPHERICAL_RADIUS,
3360    Self::CONTROLLED_RADIUS,
3361    Self::SQUARE,
3362    Self::TRANSLATION,
3363    Self::ALL_AROUND,
3364    Self::ALL_OVER,
3365    Self::STATISTICAL,
3366    Self::CONTINUOUS_FEATURE,
3367    Self::UNEQUALLY_DISPOSED,
3368  ];
3369  /// Returns the variant's name or "" if unknown.
3370  pub fn variant_name(self) -> Option<&'static str> {
3371    match self {
3372      Self::NONE => Some("NONE"),
3373      Self::FREE_STATE => Some("FREE_STATE"),
3374      Self::TANGENT_PLANE => Some("TANGENT_PLANE"),
3375      Self::PROJECTED_TOLERANCE_ZONE => Some("PROJECTED_TOLERANCE_ZONE"),
3376      Self::DIAMETER => Some("DIAMETER"),
3377      Self::SPHERICAL_DIAMETER => Some("SPHERICAL_DIAMETER"),
3378      Self::RADIUS => Some("RADIUS"),
3379      Self::SPHERICAL_RADIUS => Some("SPHERICAL_RADIUS"),
3380      Self::CONTROLLED_RADIUS => Some("CONTROLLED_RADIUS"),
3381      Self::SQUARE => Some("SQUARE"),
3382      Self::TRANSLATION => Some("TRANSLATION"),
3383      Self::ALL_AROUND => Some("ALL_AROUND"),
3384      Self::ALL_OVER => Some("ALL_OVER"),
3385      Self::STATISTICAL => Some("STATISTICAL"),
3386      Self::CONTINUOUS_FEATURE => Some("CONTINUOUS_FEATURE"),
3387      Self::UNEQUALLY_DISPOSED => Some("UNEQUALLY_DISPOSED"),
3388      _ => None,
3389    }
3390  }
3391}
3392impl core::fmt::Debug for FEATURE_MODIFIER {
3393  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3394    if let Some(name) = self.variant_name() {
3395      f.write_str(name)
3396    } else {
3397      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3398    }
3399  }
3400}
3401impl<'a> flatbuffers::Follow<'a> for FEATURE_MODIFIER {
3402  type Inner = Self;
3403  #[inline]
3404  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3405    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3406    Self(b)
3407  }
3408}
3409
3410impl flatbuffers::Push for FEATURE_MODIFIER {
3411    type Output = FEATURE_MODIFIER;
3412    #[inline]
3413    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3414        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3415    }
3416}
3417
3418impl flatbuffers::EndianScalar for FEATURE_MODIFIER {
3419  type Scalar = u8;
3420  #[inline]
3421  fn to_little_endian(self) -> u8 {
3422    self.0.to_le()
3423  }
3424  #[inline]
3425  #[allow(clippy::wrong_self_convention)]
3426  fn from_little_endian(v: u8) -> Self {
3427    let b = u8::from_le(v);
3428    Self(b)
3429  }
3430}
3431
3432impl<'a> flatbuffers::Verifiable for FEATURE_MODIFIER {
3433  #[inline]
3434  fn run_verifier(
3435    v: &mut flatbuffers::Verifier, pos: usize
3436  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3437    use self::flatbuffers::Verifiable;
3438    u8::run_verifier(v, pos)
3439  }
3440}
3441
3442impl flatbuffers::SimpleToVerifyInSlice for FEATURE_MODIFIER {}
3443#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3444pub const ENUM_MIN_TOLERANCE_ZONE_TYPE: u8 = 10;
3445#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3446pub const ENUM_MAX_TOLERANCE_ZONE_TYPE: u8 = 14;
3447#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3448#[allow(non_camel_case_types)]
3449pub const ENUM_VALUES_TOLERANCE_ZONE_TYPE: [TOLERANCE_ZONE_TYPE; 5] = [
3450  TOLERANCE_ZONE_TYPE::CYLINDRICAL,
3451  TOLERANCE_ZONE_TYPE::SPHERICAL,
3452  TOLERANCE_ZONE_TYPE::RECTANGULAR,
3453  TOLERANCE_ZONE_TYPE::LINEAR,
3454  TOLERANCE_ZONE_TYPE::CIRCULAR,
3455];
3456
3457#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3458#[repr(transparent)]
3459pub struct TOLERANCE_ZONE_TYPE(pub u8);
3460#[allow(non_upper_case_globals)]
3461impl TOLERANCE_ZONE_TYPE {
3462  pub const CYLINDRICAL: Self = Self(10);
3463  pub const SPHERICAL: Self = Self(11);
3464  pub const RECTANGULAR: Self = Self(12);
3465  pub const LINEAR: Self = Self(13);
3466  pub const CIRCULAR: Self = Self(14);
3467
3468  pub const ENUM_MIN: u8 = 10;
3469  pub const ENUM_MAX: u8 = 14;
3470  pub const ENUM_VALUES: &'static [Self] = &[
3471    Self::CYLINDRICAL,
3472    Self::SPHERICAL,
3473    Self::RECTANGULAR,
3474    Self::LINEAR,
3475    Self::CIRCULAR,
3476  ];
3477  /// Returns the variant's name or "" if unknown.
3478  pub fn variant_name(self) -> Option<&'static str> {
3479    match self {
3480      Self::CYLINDRICAL => Some("CYLINDRICAL"),
3481      Self::SPHERICAL => Some("SPHERICAL"),
3482      Self::RECTANGULAR => Some("RECTANGULAR"),
3483      Self::LINEAR => Some("LINEAR"),
3484      Self::CIRCULAR => Some("CIRCULAR"),
3485      _ => None,
3486    }
3487  }
3488}
3489impl core::fmt::Debug for TOLERANCE_ZONE_TYPE {
3490  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3491    if let Some(name) = self.variant_name() {
3492      f.write_str(name)
3493    } else {
3494      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3495    }
3496  }
3497}
3498impl<'a> flatbuffers::Follow<'a> for TOLERANCE_ZONE_TYPE {
3499  type Inner = Self;
3500  #[inline]
3501  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3502    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3503    Self(b)
3504  }
3505}
3506
3507impl flatbuffers::Push for TOLERANCE_ZONE_TYPE {
3508    type Output = TOLERANCE_ZONE_TYPE;
3509    #[inline]
3510    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3511        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3512    }
3513}
3514
3515impl flatbuffers::EndianScalar for TOLERANCE_ZONE_TYPE {
3516  type Scalar = u8;
3517  #[inline]
3518  fn to_little_endian(self) -> u8 {
3519    self.0.to_le()
3520  }
3521  #[inline]
3522  #[allow(clippy::wrong_self_convention)]
3523  fn from_little_endian(v: u8) -> Self {
3524    let b = u8::from_le(v);
3525    Self(b)
3526  }
3527}
3528
3529impl<'a> flatbuffers::Verifiable for TOLERANCE_ZONE_TYPE {
3530  #[inline]
3531  fn run_verifier(
3532    v: &mut flatbuffers::Verifier, pos: usize
3533  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3534    use self::flatbuffers::Verifiable;
3535    u8::run_verifier(v, pos)
3536  }
3537}
3538
3539impl flatbuffers::SimpleToVerifyInSlice for TOLERANCE_ZONE_TYPE {}
3540#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3541pub const ENUM_MIN_DATUM_TARGET_TYPE: u8 = 10;
3542#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3543pub const ENUM_MAX_DATUM_TARGET_TYPE: u8 = 13;
3544#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3545#[allow(non_camel_case_types)]
3546pub const ENUM_VALUES_DATUM_TARGET_TYPE: [DATUM_TARGET_TYPE; 4] = [
3547  DATUM_TARGET_TYPE::POINT,
3548  DATUM_TARGET_TYPE::LINE,
3549  DATUM_TARGET_TYPE::AREA,
3550  DATUM_TARGET_TYPE::MOVABLE,
3551];
3552
3553#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3554#[repr(transparent)]
3555pub struct DATUM_TARGET_TYPE(pub u8);
3556#[allow(non_upper_case_globals)]
3557impl DATUM_TARGET_TYPE {
3558  pub const POINT: Self = Self(10);
3559  pub const LINE: Self = Self(11);
3560  pub const AREA: Self = Self(12);
3561  pub const MOVABLE: Self = Self(13);
3562
3563  pub const ENUM_MIN: u8 = 10;
3564  pub const ENUM_MAX: u8 = 13;
3565  pub const ENUM_VALUES: &'static [Self] = &[
3566    Self::POINT,
3567    Self::LINE,
3568    Self::AREA,
3569    Self::MOVABLE,
3570  ];
3571  /// Returns the variant's name or "" if unknown.
3572  pub fn variant_name(self) -> Option<&'static str> {
3573    match self {
3574      Self::POINT => Some("POINT"),
3575      Self::LINE => Some("LINE"),
3576      Self::AREA => Some("AREA"),
3577      Self::MOVABLE => Some("MOVABLE"),
3578      _ => None,
3579    }
3580  }
3581}
3582impl core::fmt::Debug for DATUM_TARGET_TYPE {
3583  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3584    if let Some(name) = self.variant_name() {
3585      f.write_str(name)
3586    } else {
3587      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3588    }
3589  }
3590}
3591impl<'a> flatbuffers::Follow<'a> for DATUM_TARGET_TYPE {
3592  type Inner = Self;
3593  #[inline]
3594  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3595    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3596    Self(b)
3597  }
3598}
3599
3600impl flatbuffers::Push for DATUM_TARGET_TYPE {
3601    type Output = DATUM_TARGET_TYPE;
3602    #[inline]
3603    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3604        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3605    }
3606}
3607
3608impl flatbuffers::EndianScalar for DATUM_TARGET_TYPE {
3609  type Scalar = u8;
3610  #[inline]
3611  fn to_little_endian(self) -> u8 {
3612    self.0.to_le()
3613  }
3614  #[inline]
3615  #[allow(clippy::wrong_self_convention)]
3616  fn from_little_endian(v: u8) -> Self {
3617    let b = u8::from_le(v);
3618    Self(b)
3619  }
3620}
3621
3622impl<'a> flatbuffers::Verifiable for DATUM_TARGET_TYPE {
3623  #[inline]
3624  fn run_verifier(
3625    v: &mut flatbuffers::Verifier, pos: usize
3626  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3627    use self::flatbuffers::Verifiable;
3628    u8::run_verifier(v, pos)
3629  }
3630}
3631
3632impl flatbuffers::SimpleToVerifyInSlice for DATUM_TARGET_TYPE {}
3633#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3634pub const ENUM_MIN_TOLERANCE_TYPE: u8 = 10;
3635#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3636pub const ENUM_MAX_TOLERANCE_TYPE: u8 = 12;
3637#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3638#[allow(non_camel_case_types)]
3639pub const ENUM_VALUES_TOLERANCE_TYPE: [TOLERANCE_TYPE; 3] = [
3640  TOLERANCE_TYPE::SINGLE,
3641  TOLERANCE_TYPE::COMPOSITE,
3642  TOLERANCE_TYPE::MULTIPLE,
3643];
3644
3645#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3646#[repr(transparent)]
3647pub struct TOLERANCE_TYPE(pub u8);
3648#[allow(non_upper_case_globals)]
3649impl TOLERANCE_TYPE {
3650  pub const SINGLE: Self = Self(10);
3651  pub const COMPOSITE: Self = Self(11);
3652  pub const MULTIPLE: Self = Self(12);
3653
3654  pub const ENUM_MIN: u8 = 10;
3655  pub const ENUM_MAX: u8 = 12;
3656  pub const ENUM_VALUES: &'static [Self] = &[
3657    Self::SINGLE,
3658    Self::COMPOSITE,
3659    Self::MULTIPLE,
3660  ];
3661  /// Returns the variant's name or "" if unknown.
3662  pub fn variant_name(self) -> Option<&'static str> {
3663    match self {
3664      Self::SINGLE => Some("SINGLE"),
3665      Self::COMPOSITE => Some("COMPOSITE"),
3666      Self::MULTIPLE => Some("MULTIPLE"),
3667      _ => None,
3668    }
3669  }
3670}
3671impl core::fmt::Debug for TOLERANCE_TYPE {
3672  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3673    if let Some(name) = self.variant_name() {
3674      f.write_str(name)
3675    } else {
3676      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3677    }
3678  }
3679}
3680impl<'a> flatbuffers::Follow<'a> for TOLERANCE_TYPE {
3681  type Inner = Self;
3682  #[inline]
3683  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3684    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3685    Self(b)
3686  }
3687}
3688
3689impl flatbuffers::Push for TOLERANCE_TYPE {
3690    type Output = TOLERANCE_TYPE;
3691    #[inline]
3692    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3693        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3694    }
3695}
3696
3697impl flatbuffers::EndianScalar for TOLERANCE_TYPE {
3698  type Scalar = u8;
3699  #[inline]
3700  fn to_little_endian(self) -> u8 {
3701    self.0.to_le()
3702  }
3703  #[inline]
3704  #[allow(clippy::wrong_self_convention)]
3705  fn from_little_endian(v: u8) -> Self {
3706    let b = u8::from_le(v);
3707    Self(b)
3708  }
3709}
3710
3711impl<'a> flatbuffers::Verifiable for TOLERANCE_TYPE {
3712  #[inline]
3713  fn run_verifier(
3714    v: &mut flatbuffers::Verifier, pos: usize
3715  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3716    use self::flatbuffers::Verifiable;
3717    u8::run_verifier(v, pos)
3718  }
3719}
3720
3721impl flatbuffers::SimpleToVerifyInSlice for TOLERANCE_TYPE {}
3722#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3723pub const ENUM_MIN_DATUM_BRACKET_STYLE: u8 = 10;
3724#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3725pub const ENUM_MAX_DATUM_BRACKET_STYLE: u8 = 12;
3726#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3727#[allow(non_camel_case_types)]
3728pub const ENUM_VALUES_DATUM_BRACKET_STYLE: [DATUM_BRACKET_STYLE; 3] = [
3729  DATUM_BRACKET_STYLE::SQUARE,
3730  DATUM_BRACKET_STYLE::ROUND,
3731  DATUM_BRACKET_STYLE::NONE,
3732];
3733
3734#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3735#[repr(transparent)]
3736pub struct DATUM_BRACKET_STYLE(pub u8);
3737#[allow(non_upper_case_globals)]
3738impl DATUM_BRACKET_STYLE {
3739  pub const SQUARE: Self = Self(10);
3740  pub const ROUND: Self = Self(11);
3741  pub const NONE: Self = Self(12);
3742
3743  pub const ENUM_MIN: u8 = 10;
3744  pub const ENUM_MAX: u8 = 12;
3745  pub const ENUM_VALUES: &'static [Self] = &[
3746    Self::SQUARE,
3747    Self::ROUND,
3748    Self::NONE,
3749  ];
3750  /// Returns the variant's name or "" if unknown.
3751  pub fn variant_name(self) -> Option<&'static str> {
3752    match self {
3753      Self::SQUARE => Some("SQUARE"),
3754      Self::ROUND => Some("ROUND"),
3755      Self::NONE => Some("NONE"),
3756      _ => None,
3757    }
3758  }
3759}
3760impl core::fmt::Debug for DATUM_BRACKET_STYLE {
3761  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3762    if let Some(name) = self.variant_name() {
3763      f.write_str(name)
3764    } else {
3765      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3766    }
3767  }
3768}
3769impl<'a> flatbuffers::Follow<'a> for DATUM_BRACKET_STYLE {
3770  type Inner = Self;
3771  #[inline]
3772  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3773    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3774    Self(b)
3775  }
3776}
3777
3778impl flatbuffers::Push for DATUM_BRACKET_STYLE {
3779    type Output = DATUM_BRACKET_STYLE;
3780    #[inline]
3781    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3782        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3783    }
3784}
3785
3786impl flatbuffers::EndianScalar for DATUM_BRACKET_STYLE {
3787  type Scalar = u8;
3788  #[inline]
3789  fn to_little_endian(self) -> u8 {
3790    self.0.to_le()
3791  }
3792  #[inline]
3793  #[allow(clippy::wrong_self_convention)]
3794  fn from_little_endian(v: u8) -> Self {
3795    let b = u8::from_le(v);
3796    Self(b)
3797  }
3798}
3799
3800impl<'a> flatbuffers::Verifiable for DATUM_BRACKET_STYLE {
3801  #[inline]
3802  fn run_verifier(
3803    v: &mut flatbuffers::Verifier, pos: usize
3804  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3805    use self::flatbuffers::Verifiable;
3806    u8::run_verifier(v, pos)
3807  }
3808}
3809
3810impl flatbuffers::SimpleToVerifyInSlice for DATUM_BRACKET_STYLE {}
3811#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3812pub const ENUM_MIN_DIMENSION_UNITS_FORMAT: u8 = 10;
3813#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3814pub const ENUM_MAX_DIMENSION_UNITS_FORMAT: u8 = 14;
3815#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3816#[allow(non_camel_case_types)]
3817pub const ENUM_VALUES_DIMENSION_UNITS_FORMAT: [DIMENSION_UNITS_FORMAT; 5] = [
3818  DIMENSION_UNITS_FORMAT::DECIMAL,
3819  DIMENSION_UNITS_FORMAT::ENGINEERING,
3820  DIMENSION_UNITS_FORMAT::ARCHITECTURAL,
3821  DIMENSION_UNITS_FORMAT::FRACTIONAL,
3822  DIMENSION_UNITS_FORMAT::SCIENTIFIC,
3823];
3824
3825#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3826#[repr(transparent)]
3827pub struct DIMENSION_UNITS_FORMAT(pub u8);
3828#[allow(non_upper_case_globals)]
3829impl DIMENSION_UNITS_FORMAT {
3830  pub const DECIMAL: Self = Self(10);
3831  pub const ENGINEERING: Self = Self(11);
3832  pub const ARCHITECTURAL: Self = Self(12);
3833  pub const FRACTIONAL: Self = Self(13);
3834  pub const SCIENTIFIC: Self = Self(14);
3835
3836  pub const ENUM_MIN: u8 = 10;
3837  pub const ENUM_MAX: u8 = 14;
3838  pub const ENUM_VALUES: &'static [Self] = &[
3839    Self::DECIMAL,
3840    Self::ENGINEERING,
3841    Self::ARCHITECTURAL,
3842    Self::FRACTIONAL,
3843    Self::SCIENTIFIC,
3844  ];
3845  /// Returns the variant's name or "" if unknown.
3846  pub fn variant_name(self) -> Option<&'static str> {
3847    match self {
3848      Self::DECIMAL => Some("DECIMAL"),
3849      Self::ENGINEERING => Some("ENGINEERING"),
3850      Self::ARCHITECTURAL => Some("ARCHITECTURAL"),
3851      Self::FRACTIONAL => Some("FRACTIONAL"),
3852      Self::SCIENTIFIC => Some("SCIENTIFIC"),
3853      _ => None,
3854    }
3855  }
3856}
3857impl core::fmt::Debug for DIMENSION_UNITS_FORMAT {
3858  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3859    if let Some(name) = self.variant_name() {
3860      f.write_str(name)
3861    } else {
3862      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3863    }
3864  }
3865}
3866impl<'a> flatbuffers::Follow<'a> for DIMENSION_UNITS_FORMAT {
3867  type Inner = Self;
3868  #[inline]
3869  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3870    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3871    Self(b)
3872  }
3873}
3874
3875impl flatbuffers::Push for DIMENSION_UNITS_FORMAT {
3876    type Output = DIMENSION_UNITS_FORMAT;
3877    #[inline]
3878    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3879        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3880    }
3881}
3882
3883impl flatbuffers::EndianScalar for DIMENSION_UNITS_FORMAT {
3884  type Scalar = u8;
3885  #[inline]
3886  fn to_little_endian(self) -> u8 {
3887    self.0.to_le()
3888  }
3889  #[inline]
3890  #[allow(clippy::wrong_self_convention)]
3891  fn from_little_endian(v: u8) -> Self {
3892    let b = u8::from_le(v);
3893    Self(b)
3894  }
3895}
3896
3897impl<'a> flatbuffers::Verifiable for DIMENSION_UNITS_FORMAT {
3898  #[inline]
3899  fn run_verifier(
3900    v: &mut flatbuffers::Verifier, pos: usize
3901  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3902    use self::flatbuffers::Verifiable;
3903    u8::run_verifier(v, pos)
3904  }
3905}
3906
3907impl flatbuffers::SimpleToVerifyInSlice for DIMENSION_UNITS_FORMAT {}
3908#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3909pub const ENUM_MIN_DIMENSION_FIT_RULE: u8 = 10;
3910#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3911pub const ENUM_MAX_DIMENSION_FIT_RULE: u8 = 13;
3912#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
3913#[allow(non_camel_case_types)]
3914pub const ENUM_VALUES_DIMENSION_FIT_RULE: [DIMENSION_FIT_RULE; 4] = [
3915  DIMENSION_FIT_RULE::TEXT_AND_ARROWS,
3916  DIMENSION_FIT_RULE::ARROWS_ONLY,
3917  DIMENSION_FIT_RULE::TEXT_ONLY,
3918  DIMENSION_FIT_RULE::BEST_FIT,
3919];
3920
3921#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
3922#[repr(transparent)]
3923pub struct DIMENSION_FIT_RULE(pub u8);
3924#[allow(non_upper_case_globals)]
3925impl DIMENSION_FIT_RULE {
3926  pub const TEXT_AND_ARROWS: Self = Self(10);
3927  pub const ARROWS_ONLY: Self = Self(11);
3928  pub const TEXT_ONLY: Self = Self(12);
3929  pub const BEST_FIT: Self = Self(13);
3930
3931  pub const ENUM_MIN: u8 = 10;
3932  pub const ENUM_MAX: u8 = 13;
3933  pub const ENUM_VALUES: &'static [Self] = &[
3934    Self::TEXT_AND_ARROWS,
3935    Self::ARROWS_ONLY,
3936    Self::TEXT_ONLY,
3937    Self::BEST_FIT,
3938  ];
3939  /// Returns the variant's name or "" if unknown.
3940  pub fn variant_name(self) -> Option<&'static str> {
3941    match self {
3942      Self::TEXT_AND_ARROWS => Some("TEXT_AND_ARROWS"),
3943      Self::ARROWS_ONLY => Some("ARROWS_ONLY"),
3944      Self::TEXT_ONLY => Some("TEXT_ONLY"),
3945      Self::BEST_FIT => Some("BEST_FIT"),
3946      _ => None,
3947    }
3948  }
3949}
3950impl core::fmt::Debug for DIMENSION_FIT_RULE {
3951  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
3952    if let Some(name) = self.variant_name() {
3953      f.write_str(name)
3954    } else {
3955      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
3956    }
3957  }
3958}
3959impl<'a> flatbuffers::Follow<'a> for DIMENSION_FIT_RULE {
3960  type Inner = Self;
3961  #[inline]
3962  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
3963    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
3964    Self(b)
3965  }
3966}
3967
3968impl flatbuffers::Push for DIMENSION_FIT_RULE {
3969    type Output = DIMENSION_FIT_RULE;
3970    #[inline]
3971    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
3972        flatbuffers::emplace_scalar::<u8>(dst, self.0);
3973    }
3974}
3975
3976impl flatbuffers::EndianScalar for DIMENSION_FIT_RULE {
3977  type Scalar = u8;
3978  #[inline]
3979  fn to_little_endian(self) -> u8 {
3980    self.0.to_le()
3981  }
3982  #[inline]
3983  #[allow(clippy::wrong_self_convention)]
3984  fn from_little_endian(v: u8) -> Self {
3985    let b = u8::from_le(v);
3986    Self(b)
3987  }
3988}
3989
3990impl<'a> flatbuffers::Verifiable for DIMENSION_FIT_RULE {
3991  #[inline]
3992  fn run_verifier(
3993    v: &mut flatbuffers::Verifier, pos: usize
3994  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
3995    use self::flatbuffers::Verifiable;
3996    u8::run_verifier(v, pos)
3997  }
3998}
3999
4000impl flatbuffers::SimpleToVerifyInSlice for DIMENSION_FIT_RULE {}
4001#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4002pub const ENUM_MIN_DIMENSION_TEXT_PLACEMENT: u8 = 10;
4003#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4004pub const ENUM_MAX_DIMENSION_TEXT_PLACEMENT: u8 = 12;
4005#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4006#[allow(non_camel_case_types)]
4007pub const ENUM_VALUES_DIMENSION_TEXT_PLACEMENT: [DIMENSION_TEXT_PLACEMENT; 3] = [
4008  DIMENSION_TEXT_PLACEMENT::BESIDE_LINE,
4009  DIMENSION_TEXT_PLACEMENT::OVER_LINE,
4010  DIMENSION_TEXT_PLACEMENT::OVER_LINE_WITH_LEADER,
4011];
4012
4013#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4014#[repr(transparent)]
4015pub struct DIMENSION_TEXT_PLACEMENT(pub u8);
4016#[allow(non_upper_case_globals)]
4017impl DIMENSION_TEXT_PLACEMENT {
4018  pub const BESIDE_LINE: Self = Self(10);
4019  pub const OVER_LINE: Self = Self(11);
4020  pub const OVER_LINE_WITH_LEADER: Self = Self(12);
4021
4022  pub const ENUM_MIN: u8 = 10;
4023  pub const ENUM_MAX: u8 = 12;
4024  pub const ENUM_VALUES: &'static [Self] = &[
4025    Self::BESIDE_LINE,
4026    Self::OVER_LINE,
4027    Self::OVER_LINE_WITH_LEADER,
4028  ];
4029  /// Returns the variant's name or "" if unknown.
4030  pub fn variant_name(self) -> Option<&'static str> {
4031    match self {
4032      Self::BESIDE_LINE => Some("BESIDE_LINE"),
4033      Self::OVER_LINE => Some("OVER_LINE"),
4034      Self::OVER_LINE_WITH_LEADER => Some("OVER_LINE_WITH_LEADER"),
4035      _ => None,
4036    }
4037  }
4038}
4039impl core::fmt::Debug for DIMENSION_TEXT_PLACEMENT {
4040  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4041    if let Some(name) = self.variant_name() {
4042      f.write_str(name)
4043    } else {
4044      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4045    }
4046  }
4047}
4048impl<'a> flatbuffers::Follow<'a> for DIMENSION_TEXT_PLACEMENT {
4049  type Inner = Self;
4050  #[inline]
4051  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4052    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4053    Self(b)
4054  }
4055}
4056
4057impl flatbuffers::Push for DIMENSION_TEXT_PLACEMENT {
4058    type Output = DIMENSION_TEXT_PLACEMENT;
4059    #[inline]
4060    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4061        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4062    }
4063}
4064
4065impl flatbuffers::EndianScalar for DIMENSION_TEXT_PLACEMENT {
4066  type Scalar = u8;
4067  #[inline]
4068  fn to_little_endian(self) -> u8 {
4069    self.0.to_le()
4070  }
4071  #[inline]
4072  #[allow(clippy::wrong_self_convention)]
4073  fn from_little_endian(v: u8) -> Self {
4074    let b = u8::from_le(v);
4075    Self(b)
4076  }
4077}
4078
4079impl<'a> flatbuffers::Verifiable for DIMENSION_TEXT_PLACEMENT {
4080  #[inline]
4081  fn run_verifier(
4082    v: &mut flatbuffers::Verifier, pos: usize
4083  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4084    use self::flatbuffers::Verifiable;
4085    u8::run_verifier(v, pos)
4086  }
4087}
4088
4089impl flatbuffers::SimpleToVerifyInSlice for DIMENSION_TEXT_PLACEMENT {}
4090#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4091pub const ENUM_MIN_ANGULAR_UNITS_FORMAT: u8 = 10;
4092#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4093pub const ENUM_MAX_ANGULAR_UNITS_FORMAT: u8 = 14;
4094#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4095#[allow(non_camel_case_types)]
4096pub const ENUM_VALUES_ANGULAR_UNITS_FORMAT: [ANGULAR_UNITS_FORMAT; 5] = [
4097  ANGULAR_UNITS_FORMAT::DECIMAL_DEGREES,
4098  ANGULAR_UNITS_FORMAT::DEGREES_MINUTES_SECONDS,
4099  ANGULAR_UNITS_FORMAT::GRADS,
4100  ANGULAR_UNITS_FORMAT::RADIANS,
4101  ANGULAR_UNITS_FORMAT::SURVEYOR,
4102];
4103
4104#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4105#[repr(transparent)]
4106pub struct ANGULAR_UNITS_FORMAT(pub u8);
4107#[allow(non_upper_case_globals)]
4108impl ANGULAR_UNITS_FORMAT {
4109  pub const DECIMAL_DEGREES: Self = Self(10);
4110  pub const DEGREES_MINUTES_SECONDS: Self = Self(11);
4111  pub const GRADS: Self = Self(12);
4112  pub const RADIANS: Self = Self(13);
4113  pub const SURVEYOR: Self = Self(14);
4114
4115  pub const ENUM_MIN: u8 = 10;
4116  pub const ENUM_MAX: u8 = 14;
4117  pub const ENUM_VALUES: &'static [Self] = &[
4118    Self::DECIMAL_DEGREES,
4119    Self::DEGREES_MINUTES_SECONDS,
4120    Self::GRADS,
4121    Self::RADIANS,
4122    Self::SURVEYOR,
4123  ];
4124  /// Returns the variant's name or "" if unknown.
4125  pub fn variant_name(self) -> Option<&'static str> {
4126    match self {
4127      Self::DECIMAL_DEGREES => Some("DECIMAL_DEGREES"),
4128      Self::DEGREES_MINUTES_SECONDS => Some("DEGREES_MINUTES_SECONDS"),
4129      Self::GRADS => Some("GRADS"),
4130      Self::RADIANS => Some("RADIANS"),
4131      Self::SURVEYOR => Some("SURVEYOR"),
4132      _ => None,
4133    }
4134  }
4135}
4136impl core::fmt::Debug for ANGULAR_UNITS_FORMAT {
4137  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4138    if let Some(name) = self.variant_name() {
4139      f.write_str(name)
4140    } else {
4141      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4142    }
4143  }
4144}
4145impl<'a> flatbuffers::Follow<'a> for ANGULAR_UNITS_FORMAT {
4146  type Inner = Self;
4147  #[inline]
4148  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4149    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4150    Self(b)
4151  }
4152}
4153
4154impl flatbuffers::Push for ANGULAR_UNITS_FORMAT {
4155    type Output = ANGULAR_UNITS_FORMAT;
4156    #[inline]
4157    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4158        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4159    }
4160}
4161
4162impl flatbuffers::EndianScalar for ANGULAR_UNITS_FORMAT {
4163  type Scalar = u8;
4164  #[inline]
4165  fn to_little_endian(self) -> u8 {
4166    self.0.to_le()
4167  }
4168  #[inline]
4169  #[allow(clippy::wrong_self_convention)]
4170  fn from_little_endian(v: u8) -> Self {
4171    let b = u8::from_le(v);
4172    Self(b)
4173  }
4174}
4175
4176impl<'a> flatbuffers::Verifiable for ANGULAR_UNITS_FORMAT {
4177  #[inline]
4178  fn run_verifier(
4179    v: &mut flatbuffers::Verifier, pos: usize
4180  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4181    use self::flatbuffers::Verifiable;
4182    u8::run_verifier(v, pos)
4183  }
4184}
4185
4186impl flatbuffers::SimpleToVerifyInSlice for ANGULAR_UNITS_FORMAT {}
4187#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4188pub const ENUM_MIN_UNIT_SYSTEM: u8 = 10;
4189#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4190pub const ENUM_MAX_UNIT_SYSTEM: u8 = 11;
4191#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4192#[allow(non_camel_case_types)]
4193pub const ENUM_VALUES_UNIT_SYSTEM: [UNIT_SYSTEM; 2] = [
4194  UNIT_SYSTEM::METRIC,
4195  UNIT_SYSTEM::IMPERIAL,
4196];
4197
4198#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4199#[repr(transparent)]
4200pub struct UNIT_SYSTEM(pub u8);
4201#[allow(non_upper_case_globals)]
4202impl UNIT_SYSTEM {
4203  pub const METRIC: Self = Self(10);
4204  pub const IMPERIAL: Self = Self(11);
4205
4206  pub const ENUM_MIN: u8 = 10;
4207  pub const ENUM_MAX: u8 = 11;
4208  pub const ENUM_VALUES: &'static [Self] = &[
4209    Self::METRIC,
4210    Self::IMPERIAL,
4211  ];
4212  /// Returns the variant's name or "" if unknown.
4213  pub fn variant_name(self) -> Option<&'static str> {
4214    match self {
4215      Self::METRIC => Some("METRIC"),
4216      Self::IMPERIAL => Some("IMPERIAL"),
4217      _ => None,
4218    }
4219  }
4220}
4221impl core::fmt::Debug for UNIT_SYSTEM {
4222  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4223    if let Some(name) = self.variant_name() {
4224      f.write_str(name)
4225    } else {
4226      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4227    }
4228  }
4229}
4230impl<'a> flatbuffers::Follow<'a> for UNIT_SYSTEM {
4231  type Inner = Self;
4232  #[inline]
4233  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4234    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4235    Self(b)
4236  }
4237}
4238
4239impl flatbuffers::Push for UNIT_SYSTEM {
4240    type Output = UNIT_SYSTEM;
4241    #[inline]
4242    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4243        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4244    }
4245}
4246
4247impl flatbuffers::EndianScalar for UNIT_SYSTEM {
4248  type Scalar = u8;
4249  #[inline]
4250  fn to_little_endian(self) -> u8 {
4251    self.0.to_le()
4252  }
4253  #[inline]
4254  #[allow(clippy::wrong_self_convention)]
4255  fn from_little_endian(v: u8) -> Self {
4256    let b = u8::from_le(v);
4257    Self(b)
4258  }
4259}
4260
4261impl<'a> flatbuffers::Verifiable for UNIT_SYSTEM {
4262  #[inline]
4263  fn run_verifier(
4264    v: &mut flatbuffers::Verifier, pos: usize
4265  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4266    use self::flatbuffers::Verifiable;
4267    u8::run_verifier(v, pos)
4268  }
4269}
4270
4271impl flatbuffers::SimpleToVerifyInSlice for UNIT_SYSTEM {}
4272#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4273pub const ENUM_MIN_DECIMAL_SEPARATOR: u8 = 10;
4274#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4275pub const ENUM_MAX_DECIMAL_SEPARATOR: u8 = 11;
4276#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4277#[allow(non_camel_case_types)]
4278pub const ENUM_VALUES_DECIMAL_SEPARATOR: [DECIMAL_SEPARATOR; 2] = [
4279  DECIMAL_SEPARATOR::DOT,
4280  DECIMAL_SEPARATOR::COMMA,
4281];
4282
4283#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4284#[repr(transparent)]
4285pub struct DECIMAL_SEPARATOR(pub u8);
4286#[allow(non_upper_case_globals)]
4287impl DECIMAL_SEPARATOR {
4288  pub const DOT: Self = Self(10);
4289  pub const COMMA: Self = Self(11);
4290
4291  pub const ENUM_MIN: u8 = 10;
4292  pub const ENUM_MAX: u8 = 11;
4293  pub const ENUM_VALUES: &'static [Self] = &[
4294    Self::DOT,
4295    Self::COMMA,
4296  ];
4297  /// Returns the variant's name or "" if unknown.
4298  pub fn variant_name(self) -> Option<&'static str> {
4299    match self {
4300      Self::DOT => Some("DOT"),
4301      Self::COMMA => Some("COMMA"),
4302      _ => None,
4303    }
4304  }
4305}
4306impl core::fmt::Debug for DECIMAL_SEPARATOR {
4307  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4308    if let Some(name) = self.variant_name() {
4309      f.write_str(name)
4310    } else {
4311      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4312    }
4313  }
4314}
4315impl<'a> flatbuffers::Follow<'a> for DECIMAL_SEPARATOR {
4316  type Inner = Self;
4317  #[inline]
4318  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4319    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4320    Self(b)
4321  }
4322}
4323
4324impl flatbuffers::Push for DECIMAL_SEPARATOR {
4325    type Output = DECIMAL_SEPARATOR;
4326    #[inline]
4327    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4328        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4329    }
4330}
4331
4332impl flatbuffers::EndianScalar for DECIMAL_SEPARATOR {
4333  type Scalar = u8;
4334  #[inline]
4335  fn to_little_endian(self) -> u8 {
4336    self.0.to_le()
4337  }
4338  #[inline]
4339  #[allow(clippy::wrong_self_convention)]
4340  fn from_little_endian(v: u8) -> Self {
4341    let b = u8::from_le(v);
4342    Self(b)
4343  }
4344}
4345
4346impl<'a> flatbuffers::Verifiable for DECIMAL_SEPARATOR {
4347  #[inline]
4348  fn run_verifier(
4349    v: &mut flatbuffers::Verifier, pos: usize
4350  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4351    use self::flatbuffers::Verifiable;
4352    u8::run_verifier(v, pos)
4353  }
4354}
4355
4356impl flatbuffers::SimpleToVerifyInSlice for DECIMAL_SEPARATOR {}
4357#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4358pub const ENUM_MIN_VIEWPORT_SHADE_PLOT: u8 = 10;
4359#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4360pub const ENUM_MAX_VIEWPORT_SHADE_PLOT: u8 = 13;
4361#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4362#[allow(non_camel_case_types)]
4363pub const ENUM_VALUES_VIEWPORT_SHADE_PLOT: [VIEWPORT_SHADE_PLOT; 4] = [
4364  VIEWPORT_SHADE_PLOT::AS_DISPLAYED,
4365  VIEWPORT_SHADE_PLOT::WIREFRAME,
4366  VIEWPORT_SHADE_PLOT::HIDDEN,
4367  VIEWPORT_SHADE_PLOT::RENDERED,
4368];
4369
4370#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4371#[repr(transparent)]
4372pub struct VIEWPORT_SHADE_PLOT(pub u8);
4373#[allow(non_upper_case_globals)]
4374impl VIEWPORT_SHADE_PLOT {
4375  pub const AS_DISPLAYED: Self = Self(10);
4376  pub const WIREFRAME: Self = Self(11);
4377  pub const HIDDEN: Self = Self(12);
4378  pub const RENDERED: Self = Self(13);
4379
4380  pub const ENUM_MIN: u8 = 10;
4381  pub const ENUM_MAX: u8 = 13;
4382  pub const ENUM_VALUES: &'static [Self] = &[
4383    Self::AS_DISPLAYED,
4384    Self::WIREFRAME,
4385    Self::HIDDEN,
4386    Self::RENDERED,
4387  ];
4388  /// Returns the variant's name or "" if unknown.
4389  pub fn variant_name(self) -> Option<&'static str> {
4390    match self {
4391      Self::AS_DISPLAYED => Some("AS_DISPLAYED"),
4392      Self::WIREFRAME => Some("WIREFRAME"),
4393      Self::HIDDEN => Some("HIDDEN"),
4394      Self::RENDERED => Some("RENDERED"),
4395      _ => None,
4396    }
4397  }
4398}
4399impl core::fmt::Debug for VIEWPORT_SHADE_PLOT {
4400  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4401    if let Some(name) = self.variant_name() {
4402      f.write_str(name)
4403    } else {
4404      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4405    }
4406  }
4407}
4408impl<'a> flatbuffers::Follow<'a> for VIEWPORT_SHADE_PLOT {
4409  type Inner = Self;
4410  #[inline]
4411  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4412    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4413    Self(b)
4414  }
4415}
4416
4417impl flatbuffers::Push for VIEWPORT_SHADE_PLOT {
4418    type Output = VIEWPORT_SHADE_PLOT;
4419    #[inline]
4420    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4421        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4422    }
4423}
4424
4425impl flatbuffers::EndianScalar for VIEWPORT_SHADE_PLOT {
4426  type Scalar = u8;
4427  #[inline]
4428  fn to_little_endian(self) -> u8 {
4429    self.0.to_le()
4430  }
4431  #[inline]
4432  #[allow(clippy::wrong_self_convention)]
4433  fn from_little_endian(v: u8) -> Self {
4434    let b = u8::from_le(v);
4435    Self(b)
4436  }
4437}
4438
4439impl<'a> flatbuffers::Verifiable for VIEWPORT_SHADE_PLOT {
4440  #[inline]
4441  fn run_verifier(
4442    v: &mut flatbuffers::Verifier, pos: usize
4443  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4444    use self::flatbuffers::Verifiable;
4445    u8::run_verifier(v, pos)
4446  }
4447}
4448
4449impl flatbuffers::SimpleToVerifyInSlice for VIEWPORT_SHADE_PLOT {}
4450#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4451pub const ENUM_MIN_HATCH_STYLE: u8 = 10;
4452#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4453pub const ENUM_MAX_HATCH_STYLE: u8 = 12;
4454#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4455#[allow(non_camel_case_types)]
4456pub const ENUM_VALUES_HATCH_STYLE: [HATCH_STYLE; 3] = [
4457  HATCH_STYLE::NORMAL,
4458  HATCH_STYLE::OUTER,
4459  HATCH_STYLE::IGNORE,
4460];
4461
4462#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4463#[repr(transparent)]
4464pub struct HATCH_STYLE(pub u8);
4465#[allow(non_upper_case_globals)]
4466impl HATCH_STYLE {
4467  pub const NORMAL: Self = Self(10);
4468  pub const OUTER: Self = Self(11);
4469  pub const IGNORE: Self = Self(12);
4470
4471  pub const ENUM_MIN: u8 = 10;
4472  pub const ENUM_MAX: u8 = 12;
4473  pub const ENUM_VALUES: &'static [Self] = &[
4474    Self::NORMAL,
4475    Self::OUTER,
4476    Self::IGNORE,
4477  ];
4478  /// Returns the variant's name or "" if unknown.
4479  pub fn variant_name(self) -> Option<&'static str> {
4480    match self {
4481      Self::NORMAL => Some("NORMAL"),
4482      Self::OUTER => Some("OUTER"),
4483      Self::IGNORE => Some("IGNORE"),
4484      _ => None,
4485    }
4486  }
4487}
4488impl core::fmt::Debug for HATCH_STYLE {
4489  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4490    if let Some(name) = self.variant_name() {
4491      f.write_str(name)
4492    } else {
4493      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4494    }
4495  }
4496}
4497impl<'a> flatbuffers::Follow<'a> for HATCH_STYLE {
4498  type Inner = Self;
4499  #[inline]
4500  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4501    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4502    Self(b)
4503  }
4504}
4505
4506impl flatbuffers::Push for HATCH_STYLE {
4507    type Output = HATCH_STYLE;
4508    #[inline]
4509    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4510        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4511    }
4512}
4513
4514impl flatbuffers::EndianScalar for HATCH_STYLE {
4515  type Scalar = u8;
4516  #[inline]
4517  fn to_little_endian(self) -> u8 {
4518    self.0.to_le()
4519  }
4520  #[inline]
4521  #[allow(clippy::wrong_self_convention)]
4522  fn from_little_endian(v: u8) -> Self {
4523    let b = u8::from_le(v);
4524    Self(b)
4525  }
4526}
4527
4528impl<'a> flatbuffers::Verifiable for HATCH_STYLE {
4529  #[inline]
4530  fn run_verifier(
4531    v: &mut flatbuffers::Verifier, pos: usize
4532  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4533    use self::flatbuffers::Verifiable;
4534    u8::run_verifier(v, pos)
4535  }
4536}
4537
4538impl flatbuffers::SimpleToVerifyInSlice for HATCH_STYLE {}
4539#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4540pub const ENUM_MIN_IMAGE_STATUS: u8 = 10;
4541#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4542pub const ENUM_MAX_IMAGE_STATUS: u8 = 12;
4543#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4544#[allow(non_camel_case_types)]
4545pub const ENUM_VALUES_IMAGE_STATUS: [IMAGE_STATUS; 3] = [
4546  IMAGE_STATUS::PENDING,
4547  IMAGE_STATUS::SAVED,
4548  IMAGE_STATUS::ERROR,
4549];
4550
4551#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4552#[repr(transparent)]
4553pub struct IMAGE_STATUS(pub u8);
4554#[allow(non_upper_case_globals)]
4555impl IMAGE_STATUS {
4556  pub const PENDING: Self = Self(10);
4557  pub const SAVED: Self = Self(11);
4558  pub const ERROR: Self = Self(12);
4559
4560  pub const ENUM_MIN: u8 = 10;
4561  pub const ENUM_MAX: u8 = 12;
4562  pub const ENUM_VALUES: &'static [Self] = &[
4563    Self::PENDING,
4564    Self::SAVED,
4565    Self::ERROR,
4566  ];
4567  /// Returns the variant's name or "" if unknown.
4568  pub fn variant_name(self) -> Option<&'static str> {
4569    match self {
4570      Self::PENDING => Some("PENDING"),
4571      Self::SAVED => Some("SAVED"),
4572      Self::ERROR => Some("ERROR"),
4573      _ => None,
4574    }
4575  }
4576}
4577impl core::fmt::Debug for IMAGE_STATUS {
4578  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4579    if let Some(name) = self.variant_name() {
4580      f.write_str(name)
4581    } else {
4582      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4583    }
4584  }
4585}
4586impl<'a> flatbuffers::Follow<'a> for IMAGE_STATUS {
4587  type Inner = Self;
4588  #[inline]
4589  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4590    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4591    Self(b)
4592  }
4593}
4594
4595impl flatbuffers::Push for IMAGE_STATUS {
4596    type Output = IMAGE_STATUS;
4597    #[inline]
4598    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4599        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4600    }
4601}
4602
4603impl flatbuffers::EndianScalar for IMAGE_STATUS {
4604  type Scalar = u8;
4605  #[inline]
4606  fn to_little_endian(self) -> u8 {
4607    self.0.to_le()
4608  }
4609  #[inline]
4610  #[allow(clippy::wrong_self_convention)]
4611  fn from_little_endian(v: u8) -> Self {
4612    let b = u8::from_le(v);
4613    Self(b)
4614  }
4615}
4616
4617impl<'a> flatbuffers::Verifiable for IMAGE_STATUS {
4618  #[inline]
4619  fn run_verifier(
4620    v: &mut flatbuffers::Verifier, pos: usize
4621  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4622    use self::flatbuffers::Verifiable;
4623    u8::run_verifier(v, pos)
4624  }
4625}
4626
4627impl flatbuffers::SimpleToVerifyInSlice for IMAGE_STATUS {}
4628#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4629pub const ENUM_MIN_BLOCK_ATTACHMENT: u8 = 10;
4630#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4631pub const ENUM_MAX_BLOCK_ATTACHMENT: u8 = 11;
4632#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4633#[allow(non_camel_case_types)]
4634pub const ENUM_VALUES_BLOCK_ATTACHMENT: [BLOCK_ATTACHMENT; 2] = [
4635  BLOCK_ATTACHMENT::CENTER_EXTENTS,
4636  BLOCK_ATTACHMENT::INSERTION_POINT,
4637];
4638
4639#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4640#[repr(transparent)]
4641pub struct BLOCK_ATTACHMENT(pub u8);
4642#[allow(non_upper_case_globals)]
4643impl BLOCK_ATTACHMENT {
4644  pub const CENTER_EXTENTS: Self = Self(10);
4645  pub const INSERTION_POINT: Self = Self(11);
4646
4647  pub const ENUM_MIN: u8 = 10;
4648  pub const ENUM_MAX: u8 = 11;
4649  pub const ENUM_VALUES: &'static [Self] = &[
4650    Self::CENTER_EXTENTS,
4651    Self::INSERTION_POINT,
4652  ];
4653  /// Returns the variant's name or "" if unknown.
4654  pub fn variant_name(self) -> Option<&'static str> {
4655    match self {
4656      Self::CENTER_EXTENTS => Some("CENTER_EXTENTS"),
4657      Self::INSERTION_POINT => Some("INSERTION_POINT"),
4658      _ => None,
4659    }
4660  }
4661}
4662impl core::fmt::Debug for BLOCK_ATTACHMENT {
4663  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4664    if let Some(name) = self.variant_name() {
4665      f.write_str(name)
4666    } else {
4667      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4668    }
4669  }
4670}
4671impl<'a> flatbuffers::Follow<'a> for BLOCK_ATTACHMENT {
4672  type Inner = Self;
4673  #[inline]
4674  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4675    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4676    Self(b)
4677  }
4678}
4679
4680impl flatbuffers::Push for BLOCK_ATTACHMENT {
4681    type Output = BLOCK_ATTACHMENT;
4682    #[inline]
4683    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4684        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4685    }
4686}
4687
4688impl flatbuffers::EndianScalar for BLOCK_ATTACHMENT {
4689  type Scalar = u8;
4690  #[inline]
4691  fn to_little_endian(self) -> u8 {
4692    self.0.to_le()
4693  }
4694  #[inline]
4695  #[allow(clippy::wrong_self_convention)]
4696  fn from_little_endian(v: u8) -> Self {
4697    let b = u8::from_le(v);
4698    Self(b)
4699  }
4700}
4701
4702impl<'a> flatbuffers::Verifiable for BLOCK_ATTACHMENT {
4703  #[inline]
4704  fn run_verifier(
4705    v: &mut flatbuffers::Verifier, pos: usize
4706  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4707    use self::flatbuffers::Verifiable;
4708    u8::run_verifier(v, pos)
4709  }
4710}
4711
4712impl flatbuffers::SimpleToVerifyInSlice for BLOCK_ATTACHMENT {}
4713#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4714pub const ENUM_MIN_AXIS: u8 = 10;
4715#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4716pub const ENUM_MAX_AXIS: u8 = 30;
4717#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4718#[allow(non_camel_case_types)]
4719pub const ENUM_VALUES_AXIS: [AXIS; 3] = [
4720  AXIS::X,
4721  AXIS::Y,
4722  AXIS::Z,
4723];
4724
4725#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4726#[repr(transparent)]
4727pub struct AXIS(pub u8);
4728#[allow(non_upper_case_globals)]
4729impl AXIS {
4730  pub const X: Self = Self(10);
4731  pub const Y: Self = Self(20);
4732  pub const Z: Self = Self(30);
4733
4734  pub const ENUM_MIN: u8 = 10;
4735  pub const ENUM_MAX: u8 = 30;
4736  pub const ENUM_VALUES: &'static [Self] = &[
4737    Self::X,
4738    Self::Y,
4739    Self::Z,
4740  ];
4741  /// Returns the variant's name or "" if unknown.
4742  pub fn variant_name(self) -> Option<&'static str> {
4743    match self {
4744      Self::X => Some("X"),
4745      Self::Y => Some("Y"),
4746      Self::Z => Some("Z"),
4747      _ => None,
4748    }
4749  }
4750}
4751impl core::fmt::Debug for AXIS {
4752  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4753    if let Some(name) = self.variant_name() {
4754      f.write_str(name)
4755    } else {
4756      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4757    }
4758  }
4759}
4760impl<'a> flatbuffers::Follow<'a> for AXIS {
4761  type Inner = Self;
4762  #[inline]
4763  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4764    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4765    Self(b)
4766  }
4767}
4768
4769impl flatbuffers::Push for AXIS {
4770    type Output = AXIS;
4771    #[inline]
4772    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4773        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4774    }
4775}
4776
4777impl flatbuffers::EndianScalar for AXIS {
4778  type Scalar = u8;
4779  #[inline]
4780  fn to_little_endian(self) -> u8 {
4781    self.0.to_le()
4782  }
4783  #[inline]
4784  #[allow(clippy::wrong_self_convention)]
4785  fn from_little_endian(v: u8) -> Self {
4786    let b = u8::from_le(v);
4787    Self(b)
4788  }
4789}
4790
4791impl<'a> flatbuffers::Verifiable for AXIS {
4792  #[inline]
4793  fn run_verifier(
4794    v: &mut flatbuffers::Verifier, pos: usize
4795  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4796    use self::flatbuffers::Verifiable;
4797    u8::run_verifier(v, pos)
4798  }
4799}
4800
4801impl flatbuffers::SimpleToVerifyInSlice for AXIS {}
4802#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4803pub const ENUM_MIN_PRUNING_LEVEL: u8 = 10;
4804#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4805pub const ENUM_MAX_PRUNING_LEVEL: u8 = 30;
4806#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4807#[allow(non_camel_case_types)]
4808pub const ENUM_VALUES_PRUNING_LEVEL: [PRUNING_LEVEL; 3] = [
4809  PRUNING_LEVEL::CONSERVATIVE,
4810  PRUNING_LEVEL::BALANCED,
4811  PRUNING_LEVEL::AGGRESSIVE,
4812];
4813
4814#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4815#[repr(transparent)]
4816pub struct PRUNING_LEVEL(pub u8);
4817#[allow(non_upper_case_globals)]
4818impl PRUNING_LEVEL {
4819  pub const CONSERVATIVE: Self = Self(10);
4820  pub const BALANCED: Self = Self(20);
4821  pub const AGGRESSIVE: Self = Self(30);
4822
4823  pub const ENUM_MIN: u8 = 10;
4824  pub const ENUM_MAX: u8 = 30;
4825  pub const ENUM_VALUES: &'static [Self] = &[
4826    Self::CONSERVATIVE,
4827    Self::BALANCED,
4828    Self::AGGRESSIVE,
4829  ];
4830  /// Returns the variant's name or "" if unknown.
4831  pub fn variant_name(self) -> Option<&'static str> {
4832    match self {
4833      Self::CONSERVATIVE => Some("CONSERVATIVE"),
4834      Self::BALANCED => Some("BALANCED"),
4835      Self::AGGRESSIVE => Some("AGGRESSIVE"),
4836      _ => None,
4837    }
4838  }
4839}
4840impl core::fmt::Debug for PRUNING_LEVEL {
4841  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4842    if let Some(name) = self.variant_name() {
4843      f.write_str(name)
4844    } else {
4845      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4846    }
4847  }
4848}
4849impl<'a> flatbuffers::Follow<'a> for PRUNING_LEVEL {
4850  type Inner = Self;
4851  #[inline]
4852  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4853    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4854    Self(b)
4855  }
4856}
4857
4858impl flatbuffers::Push for PRUNING_LEVEL {
4859    type Output = PRUNING_LEVEL;
4860    #[inline]
4861    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4862        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4863    }
4864}
4865
4866impl flatbuffers::EndianScalar for PRUNING_LEVEL {
4867  type Scalar = u8;
4868  #[inline]
4869  fn to_little_endian(self) -> u8 {
4870    self.0.to_le()
4871  }
4872  #[inline]
4873  #[allow(clippy::wrong_self_convention)]
4874  fn from_little_endian(v: u8) -> Self {
4875    let b = u8::from_le(v);
4876    Self(b)
4877  }
4878}
4879
4880impl<'a> flatbuffers::Verifiable for PRUNING_LEVEL {
4881  #[inline]
4882  fn run_verifier(
4883    v: &mut flatbuffers::Verifier, pos: usize
4884  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4885    use self::flatbuffers::Verifiable;
4886    u8::run_verifier(v, pos)
4887  }
4888}
4889
4890impl flatbuffers::SimpleToVerifyInSlice for PRUNING_LEVEL {}
4891#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4892pub const ENUM_MIN_PARAMETRIC_SOURCE_TYPE: u8 = 10;
4893#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4894pub const ENUM_MAX_PARAMETRIC_SOURCE_TYPE: u8 = 11;
4895#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4896#[allow(non_camel_case_types)]
4897pub const ENUM_VALUES_PARAMETRIC_SOURCE_TYPE: [PARAMETRIC_SOURCE_TYPE; 2] = [
4898  PARAMETRIC_SOURCE_TYPE::CODE,
4899  PARAMETRIC_SOURCE_TYPE::FILE,
4900];
4901
4902#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4903#[repr(transparent)]
4904pub struct PARAMETRIC_SOURCE_TYPE(pub u8);
4905#[allow(non_upper_case_globals)]
4906impl PARAMETRIC_SOURCE_TYPE {
4907  pub const CODE: Self = Self(10);
4908  pub const FILE: Self = Self(11);
4909
4910  pub const ENUM_MIN: u8 = 10;
4911  pub const ENUM_MAX: u8 = 11;
4912  pub const ENUM_VALUES: &'static [Self] = &[
4913    Self::CODE,
4914    Self::FILE,
4915  ];
4916  /// Returns the variant's name or "" if unknown.
4917  pub fn variant_name(self) -> Option<&'static str> {
4918    match self {
4919      Self::CODE => Some("CODE"),
4920      Self::FILE => Some("FILE"),
4921      _ => None,
4922    }
4923  }
4924}
4925impl core::fmt::Debug for PARAMETRIC_SOURCE_TYPE {
4926  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
4927    if let Some(name) = self.variant_name() {
4928      f.write_str(name)
4929    } else {
4930      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
4931    }
4932  }
4933}
4934impl<'a> flatbuffers::Follow<'a> for PARAMETRIC_SOURCE_TYPE {
4935  type Inner = Self;
4936  #[inline]
4937  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
4938    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
4939    Self(b)
4940  }
4941}
4942
4943impl flatbuffers::Push for PARAMETRIC_SOURCE_TYPE {
4944    type Output = PARAMETRIC_SOURCE_TYPE;
4945    #[inline]
4946    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
4947        flatbuffers::emplace_scalar::<u8>(dst, self.0);
4948    }
4949}
4950
4951impl flatbuffers::EndianScalar for PARAMETRIC_SOURCE_TYPE {
4952  type Scalar = u8;
4953  #[inline]
4954  fn to_little_endian(self) -> u8 {
4955    self.0.to_le()
4956  }
4957  #[inline]
4958  #[allow(clippy::wrong_self_convention)]
4959  fn from_little_endian(v: u8) -> Self {
4960    let b = u8::from_le(v);
4961    Self(b)
4962  }
4963}
4964
4965impl<'a> flatbuffers::Verifiable for PARAMETRIC_SOURCE_TYPE {
4966  #[inline]
4967  fn run_verifier(
4968    v: &mut flatbuffers::Verifier, pos: usize
4969  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
4970    use self::flatbuffers::Verifiable;
4971    u8::run_verifier(v, pos)
4972  }
4973}
4974
4975impl flatbuffers::SimpleToVerifyInSlice for PARAMETRIC_SOURCE_TYPE {}
4976#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4977pub const ENUM_MIN_DOCUMENT_GRID_ALIGN_ITEMS: u8 = 10;
4978#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4979pub const ENUM_MAX_DOCUMENT_GRID_ALIGN_ITEMS: u8 = 12;
4980#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
4981#[allow(non_camel_case_types)]
4982pub const ENUM_VALUES_DOCUMENT_GRID_ALIGN_ITEMS: [DOCUMENT_GRID_ALIGN_ITEMS; 3] = [
4983  DOCUMENT_GRID_ALIGN_ITEMS::START,
4984  DOCUMENT_GRID_ALIGN_ITEMS::CENTER,
4985  DOCUMENT_GRID_ALIGN_ITEMS::END,
4986];
4987
4988#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
4989#[repr(transparent)]
4990pub struct DOCUMENT_GRID_ALIGN_ITEMS(pub u8);
4991#[allow(non_upper_case_globals)]
4992impl DOCUMENT_GRID_ALIGN_ITEMS {
4993  pub const START: Self = Self(10);
4994  pub const CENTER: Self = Self(11);
4995  pub const END: Self = Self(12);
4996
4997  pub const ENUM_MIN: u8 = 10;
4998  pub const ENUM_MAX: u8 = 12;
4999  pub const ENUM_VALUES: &'static [Self] = &[
5000    Self::START,
5001    Self::CENTER,
5002    Self::END,
5003  ];
5004  /// Returns the variant's name or "" if unknown.
5005  pub fn variant_name(self) -> Option<&'static str> {
5006    match self {
5007      Self::START => Some("START"),
5008      Self::CENTER => Some("CENTER"),
5009      Self::END => Some("END"),
5010      _ => None,
5011    }
5012  }
5013}
5014impl core::fmt::Debug for DOCUMENT_GRID_ALIGN_ITEMS {
5015  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5016    if let Some(name) = self.variant_name() {
5017      f.write_str(name)
5018    } else {
5019      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5020    }
5021  }
5022}
5023impl<'a> flatbuffers::Follow<'a> for DOCUMENT_GRID_ALIGN_ITEMS {
5024  type Inner = Self;
5025  #[inline]
5026  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5027    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5028    Self(b)
5029  }
5030}
5031
5032impl flatbuffers::Push for DOCUMENT_GRID_ALIGN_ITEMS {
5033    type Output = DOCUMENT_GRID_ALIGN_ITEMS;
5034    #[inline]
5035    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5036        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5037    }
5038}
5039
5040impl flatbuffers::EndianScalar for DOCUMENT_GRID_ALIGN_ITEMS {
5041  type Scalar = u8;
5042  #[inline]
5043  fn to_little_endian(self) -> u8 {
5044    self.0.to_le()
5045  }
5046  #[inline]
5047  #[allow(clippy::wrong_self_convention)]
5048  fn from_little_endian(v: u8) -> Self {
5049    let b = u8::from_le(v);
5050    Self(b)
5051  }
5052}
5053
5054impl<'a> flatbuffers::Verifiable for DOCUMENT_GRID_ALIGN_ITEMS {
5055  #[inline]
5056  fn run_verifier(
5057    v: &mut flatbuffers::Verifier, pos: usize
5058  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5059    use self::flatbuffers::Verifiable;
5060    u8::run_verifier(v, pos)
5061  }
5062}
5063
5064impl flatbuffers::SimpleToVerifyInSlice for DOCUMENT_GRID_ALIGN_ITEMS {}
5065#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5066pub const ENUM_MIN_LEADER_CONTENT_TYPE: u8 = 10;
5067#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5068pub const ENUM_MAX_LEADER_CONTENT_TYPE: u8 = 11;
5069#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5070#[allow(non_camel_case_types)]
5071pub const ENUM_VALUES_LEADER_CONTENT_TYPE: [LEADER_CONTENT_TYPE; 2] = [
5072  LEADER_CONTENT_TYPE::TEXT,
5073  LEADER_CONTENT_TYPE::BLOCK,
5074];
5075
5076#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5077#[repr(transparent)]
5078pub struct LEADER_CONTENT_TYPE(pub u8);
5079#[allow(non_upper_case_globals)]
5080impl LEADER_CONTENT_TYPE {
5081  pub const TEXT: Self = Self(10);
5082  pub const BLOCK: Self = Self(11);
5083
5084  pub const ENUM_MIN: u8 = 10;
5085  pub const ENUM_MAX: u8 = 11;
5086  pub const ENUM_VALUES: &'static [Self] = &[
5087    Self::TEXT,
5088    Self::BLOCK,
5089  ];
5090  /// Returns the variant's name or "" if unknown.
5091  pub fn variant_name(self) -> Option<&'static str> {
5092    match self {
5093      Self::TEXT => Some("TEXT"),
5094      Self::BLOCK => Some("BLOCK"),
5095      _ => None,
5096    }
5097  }
5098}
5099impl core::fmt::Debug for LEADER_CONTENT_TYPE {
5100  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5101    if let Some(name) = self.variant_name() {
5102      f.write_str(name)
5103    } else {
5104      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5105    }
5106  }
5107}
5108impl<'a> flatbuffers::Follow<'a> for LEADER_CONTENT_TYPE {
5109  type Inner = Self;
5110  #[inline]
5111  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5112    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5113    Self(b)
5114  }
5115}
5116
5117impl flatbuffers::Push for LEADER_CONTENT_TYPE {
5118    type Output = LEADER_CONTENT_TYPE;
5119    #[inline]
5120    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5121        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5122    }
5123}
5124
5125impl flatbuffers::EndianScalar for LEADER_CONTENT_TYPE {
5126  type Scalar = u8;
5127  #[inline]
5128  fn to_little_endian(self) -> u8 {
5129    self.0.to_le()
5130  }
5131  #[inline]
5132  #[allow(clippy::wrong_self_convention)]
5133  fn from_little_endian(v: u8) -> Self {
5134    let b = u8::from_le(v);
5135    Self(b)
5136  }
5137}
5138
5139impl<'a> flatbuffers::Verifiable for LEADER_CONTENT_TYPE {
5140  #[inline]
5141  fn run_verifier(
5142    v: &mut flatbuffers::Verifier, pos: usize
5143  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5144    use self::flatbuffers::Verifiable;
5145    u8::run_verifier(v, pos)
5146  }
5147}
5148
5149impl flatbuffers::SimpleToVerifyInSlice for LEADER_CONTENT_TYPE {}
5150#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5151pub const ENUM_MIN_BOOLEAN_OPERATION: u8 = 10;
5152#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5153pub const ENUM_MAX_BOOLEAN_OPERATION: u8 = 13;
5154#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5155#[allow(non_camel_case_types)]
5156pub const ENUM_VALUES_BOOLEAN_OPERATION: [BOOLEAN_OPERATION; 4] = [
5157  BOOLEAN_OPERATION::UNION,
5158  BOOLEAN_OPERATION::SUBTRACT,
5159  BOOLEAN_OPERATION::INTERSECT,
5160  BOOLEAN_OPERATION::EXCLUDE,
5161];
5162
5163#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5164#[repr(transparent)]
5165pub struct BOOLEAN_OPERATION(pub u8);
5166#[allow(non_upper_case_globals)]
5167impl BOOLEAN_OPERATION {
5168  pub const UNION: Self = Self(10);
5169  pub const SUBTRACT: Self = Self(11);
5170  pub const INTERSECT: Self = Self(12);
5171  pub const EXCLUDE: Self = Self(13);
5172
5173  pub const ENUM_MIN: u8 = 10;
5174  pub const ENUM_MAX: u8 = 13;
5175  pub const ENUM_VALUES: &'static [Self] = &[
5176    Self::UNION,
5177    Self::SUBTRACT,
5178    Self::INTERSECT,
5179    Self::EXCLUDE,
5180  ];
5181  /// Returns the variant's name or "" if unknown.
5182  pub fn variant_name(self) -> Option<&'static str> {
5183    match self {
5184      Self::UNION => Some("UNION"),
5185      Self::SUBTRACT => Some("SUBTRACT"),
5186      Self::INTERSECT => Some("INTERSECT"),
5187      Self::EXCLUDE => Some("EXCLUDE"),
5188      _ => None,
5189    }
5190  }
5191}
5192impl core::fmt::Debug for BOOLEAN_OPERATION {
5193  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5194    if let Some(name) = self.variant_name() {
5195      f.write_str(name)
5196    } else {
5197      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5198    }
5199  }
5200}
5201impl<'a> flatbuffers::Follow<'a> for BOOLEAN_OPERATION {
5202  type Inner = Self;
5203  #[inline]
5204  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5205    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5206    Self(b)
5207  }
5208}
5209
5210impl flatbuffers::Push for BOOLEAN_OPERATION {
5211    type Output = BOOLEAN_OPERATION;
5212    #[inline]
5213    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5214        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5215    }
5216}
5217
5218impl flatbuffers::EndianScalar for BOOLEAN_OPERATION {
5219  type Scalar = u8;
5220  #[inline]
5221  fn to_little_endian(self) -> u8 {
5222    self.0.to_le()
5223  }
5224  #[inline]
5225  #[allow(clippy::wrong_self_convention)]
5226  fn from_little_endian(v: u8) -> Self {
5227    let b = u8::from_le(v);
5228    Self(b)
5229  }
5230}
5231
5232impl<'a> flatbuffers::Verifiable for BOOLEAN_OPERATION {
5233  #[inline]
5234  fn run_verifier(
5235    v: &mut flatbuffers::Verifier, pos: usize
5236  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5237    use self::flatbuffers::Verifiable;
5238    u8::run_verifier(v, pos)
5239  }
5240}
5241
5242impl flatbuffers::SimpleToVerifyInSlice for BOOLEAN_OPERATION {}
5243#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5244pub const ENUM_MIN_DUC_TEXT_DYNAMIC_SOURCE_DATA: u8 = 0;
5245#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5246pub const ENUM_MAX_DUC_TEXT_DYNAMIC_SOURCE_DATA: u8 = 2;
5247#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5248#[allow(non_camel_case_types)]
5249pub const ENUM_VALUES_DUC_TEXT_DYNAMIC_SOURCE_DATA: [DucTextDynamicSourceData; 3] = [
5250  DucTextDynamicSourceData::NONE,
5251  DucTextDynamicSourceData::DucTextDynamicElementSource,
5252  DucTextDynamicSourceData::DucTextDynamicDictionarySource,
5253];
5254
5255#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5256#[repr(transparent)]
5257pub struct DucTextDynamicSourceData(pub u8);
5258#[allow(non_upper_case_globals)]
5259impl DucTextDynamicSourceData {
5260  pub const NONE: Self = Self(0);
5261  pub const DucTextDynamicElementSource: Self = Self(1);
5262  pub const DucTextDynamicDictionarySource: Self = Self(2);
5263
5264  pub const ENUM_MIN: u8 = 0;
5265  pub const ENUM_MAX: u8 = 2;
5266  pub const ENUM_VALUES: &'static [Self] = &[
5267    Self::NONE,
5268    Self::DucTextDynamicElementSource,
5269    Self::DucTextDynamicDictionarySource,
5270  ];
5271  /// Returns the variant's name or "" if unknown.
5272  pub fn variant_name(self) -> Option<&'static str> {
5273    match self {
5274      Self::NONE => Some("NONE"),
5275      Self::DucTextDynamicElementSource => Some("DucTextDynamicElementSource"),
5276      Self::DucTextDynamicDictionarySource => Some("DucTextDynamicDictionarySource"),
5277      _ => None,
5278    }
5279  }
5280}
5281impl core::fmt::Debug for DucTextDynamicSourceData {
5282  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5283    if let Some(name) = self.variant_name() {
5284      f.write_str(name)
5285    } else {
5286      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5287    }
5288  }
5289}
5290impl<'a> flatbuffers::Follow<'a> for DucTextDynamicSourceData {
5291  type Inner = Self;
5292  #[inline]
5293  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5294    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5295    Self(b)
5296  }
5297}
5298
5299impl flatbuffers::Push for DucTextDynamicSourceData {
5300    type Output = DucTextDynamicSourceData;
5301    #[inline]
5302    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5303        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5304    }
5305}
5306
5307impl flatbuffers::EndianScalar for DucTextDynamicSourceData {
5308  type Scalar = u8;
5309  #[inline]
5310  fn to_little_endian(self) -> u8 {
5311    self.0.to_le()
5312  }
5313  #[inline]
5314  #[allow(clippy::wrong_self_convention)]
5315  fn from_little_endian(v: u8) -> Self {
5316    let b = u8::from_le(v);
5317    Self(b)
5318  }
5319}
5320
5321impl<'a> flatbuffers::Verifiable for DucTextDynamicSourceData {
5322  #[inline]
5323  fn run_verifier(
5324    v: &mut flatbuffers::Verifier, pos: usize
5325  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5326    use self::flatbuffers::Verifiable;
5327    u8::run_verifier(v, pos)
5328  }
5329}
5330
5331impl flatbuffers::SimpleToVerifyInSlice for DucTextDynamicSourceData {}
5332pub struct DucTextDynamicSourceDataUnionTableOffset {}
5333
5334#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5335pub const ENUM_MIN_LEADER_CONTENT_DATA: u8 = 0;
5336#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5337pub const ENUM_MAX_LEADER_CONTENT_DATA: u8 = 2;
5338#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5339#[allow(non_camel_case_types)]
5340pub const ENUM_VALUES_LEADER_CONTENT_DATA: [LeaderContentData; 3] = [
5341  LeaderContentData::NONE,
5342  LeaderContentData::LeaderTextBlockContent,
5343  LeaderContentData::LeaderBlockContent,
5344];
5345
5346#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5347#[repr(transparent)]
5348pub struct LeaderContentData(pub u8);
5349#[allow(non_upper_case_globals)]
5350impl LeaderContentData {
5351  pub const NONE: Self = Self(0);
5352  pub const LeaderTextBlockContent: Self = Self(1);
5353  pub const LeaderBlockContent: Self = Self(2);
5354
5355  pub const ENUM_MIN: u8 = 0;
5356  pub const ENUM_MAX: u8 = 2;
5357  pub const ENUM_VALUES: &'static [Self] = &[
5358    Self::NONE,
5359    Self::LeaderTextBlockContent,
5360    Self::LeaderBlockContent,
5361  ];
5362  /// Returns the variant's name or "" if unknown.
5363  pub fn variant_name(self) -> Option<&'static str> {
5364    match self {
5365      Self::NONE => Some("NONE"),
5366      Self::LeaderTextBlockContent => Some("LeaderTextBlockContent"),
5367      Self::LeaderBlockContent => Some("LeaderBlockContent"),
5368      _ => None,
5369    }
5370  }
5371}
5372impl core::fmt::Debug for LeaderContentData {
5373  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5374    if let Some(name) = self.variant_name() {
5375      f.write_str(name)
5376    } else {
5377      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5378    }
5379  }
5380}
5381impl<'a> flatbuffers::Follow<'a> for LeaderContentData {
5382  type Inner = Self;
5383  #[inline]
5384  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5385    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5386    Self(b)
5387  }
5388}
5389
5390impl flatbuffers::Push for LeaderContentData {
5391    type Output = LeaderContentData;
5392    #[inline]
5393    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5394        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5395    }
5396}
5397
5398impl flatbuffers::EndianScalar for LeaderContentData {
5399  type Scalar = u8;
5400  #[inline]
5401  fn to_little_endian(self) -> u8 {
5402    self.0.to_le()
5403  }
5404  #[inline]
5405  #[allow(clippy::wrong_self_convention)]
5406  fn from_little_endian(v: u8) -> Self {
5407    let b = u8::from_le(v);
5408    Self(b)
5409  }
5410}
5411
5412impl<'a> flatbuffers::Verifiable for LeaderContentData {
5413  #[inline]
5414  fn run_verifier(
5415    v: &mut flatbuffers::Verifier, pos: usize
5416  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5417    use self::flatbuffers::Verifiable;
5418    u8::run_verifier(v, pos)
5419  }
5420}
5421
5422impl flatbuffers::SimpleToVerifyInSlice for LeaderContentData {}
5423pub struct LeaderContentDataUnionTableOffset {}
5424
5425#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5426pub const ENUM_MIN_ELEMENT: u8 = 0;
5427#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5428pub const ENUM_MAX_ELEMENT: u8 = 23;
5429#[deprecated(since = "2.0.0", note = "Use associated constants instead. This will no longer be generated in 2021.")]
5430#[allow(non_camel_case_types)]
5431pub const ENUM_VALUES_ELEMENT: [Element; 24] = [
5432  Element::NONE,
5433  Element::DucRectangleElement,
5434  Element::DucPolygonElement,
5435  Element::DucEllipseElement,
5436  Element::DucEmbeddableElement,
5437  Element::DucPdfElement,
5438  Element::DucMermaidElement,
5439  Element::DucTableElement,
5440  Element::DucImageElement,
5441  Element::DucTextElement,
5442  Element::DucLinearElement,
5443  Element::DucArrowElement,
5444  Element::DucFreeDrawElement,
5445  Element::DucBlockInstanceElement,
5446  Element::DucFrameElement,
5447  Element::DucPlotElement,
5448  Element::DucViewportElement,
5449  Element::DucXRayElement,
5450  Element::DucLeaderElement,
5451  Element::DucDimensionElement,
5452  Element::DucFeatureControlFrameElement,
5453  Element::DucDocElement,
5454  Element::DucParametricElement,
5455  Element::DucModelElement,
5456];
5457
5458#[derive(Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash, Default)]
5459#[repr(transparent)]
5460pub struct Element(pub u8);
5461#[allow(non_upper_case_globals)]
5462impl Element {
5463  pub const NONE: Self = Self(0);
5464  pub const DucRectangleElement: Self = Self(1);
5465  pub const DucPolygonElement: Self = Self(2);
5466  pub const DucEllipseElement: Self = Self(3);
5467  pub const DucEmbeddableElement: Self = Self(4);
5468  pub const DucPdfElement: Self = Self(5);
5469  pub const DucMermaidElement: Self = Self(6);
5470  pub const DucTableElement: Self = Self(7);
5471  pub const DucImageElement: Self = Self(8);
5472  pub const DucTextElement: Self = Self(9);
5473  pub const DucLinearElement: Self = Self(10);
5474  pub const DucArrowElement: Self = Self(11);
5475  pub const DucFreeDrawElement: Self = Self(12);
5476  pub const DucBlockInstanceElement: Self = Self(13);
5477  pub const DucFrameElement: Self = Self(14);
5478  pub const DucPlotElement: Self = Self(15);
5479  pub const DucViewportElement: Self = Self(16);
5480  pub const DucXRayElement: Self = Self(17);
5481  pub const DucLeaderElement: Self = Self(18);
5482  pub const DucDimensionElement: Self = Self(19);
5483  pub const DucFeatureControlFrameElement: Self = Self(20);
5484  pub const DucDocElement: Self = Self(21);
5485  pub const DucParametricElement: Self = Self(22);
5486  pub const DucModelElement: Self = Self(23);
5487
5488  pub const ENUM_MIN: u8 = 0;
5489  pub const ENUM_MAX: u8 = 23;
5490  pub const ENUM_VALUES: &'static [Self] = &[
5491    Self::NONE,
5492    Self::DucRectangleElement,
5493    Self::DucPolygonElement,
5494    Self::DucEllipseElement,
5495    Self::DucEmbeddableElement,
5496    Self::DucPdfElement,
5497    Self::DucMermaidElement,
5498    Self::DucTableElement,
5499    Self::DucImageElement,
5500    Self::DucTextElement,
5501    Self::DucLinearElement,
5502    Self::DucArrowElement,
5503    Self::DucFreeDrawElement,
5504    Self::DucBlockInstanceElement,
5505    Self::DucFrameElement,
5506    Self::DucPlotElement,
5507    Self::DucViewportElement,
5508    Self::DucXRayElement,
5509    Self::DucLeaderElement,
5510    Self::DucDimensionElement,
5511    Self::DucFeatureControlFrameElement,
5512    Self::DucDocElement,
5513    Self::DucParametricElement,
5514    Self::DucModelElement,
5515  ];
5516  /// Returns the variant's name or "" if unknown.
5517  pub fn variant_name(self) -> Option<&'static str> {
5518    match self {
5519      Self::NONE => Some("NONE"),
5520      Self::DucRectangleElement => Some("DucRectangleElement"),
5521      Self::DucPolygonElement => Some("DucPolygonElement"),
5522      Self::DucEllipseElement => Some("DucEllipseElement"),
5523      Self::DucEmbeddableElement => Some("DucEmbeddableElement"),
5524      Self::DucPdfElement => Some("DucPdfElement"),
5525      Self::DucMermaidElement => Some("DucMermaidElement"),
5526      Self::DucTableElement => Some("DucTableElement"),
5527      Self::DucImageElement => Some("DucImageElement"),
5528      Self::DucTextElement => Some("DucTextElement"),
5529      Self::DucLinearElement => Some("DucLinearElement"),
5530      Self::DucArrowElement => Some("DucArrowElement"),
5531      Self::DucFreeDrawElement => Some("DucFreeDrawElement"),
5532      Self::DucBlockInstanceElement => Some("DucBlockInstanceElement"),
5533      Self::DucFrameElement => Some("DucFrameElement"),
5534      Self::DucPlotElement => Some("DucPlotElement"),
5535      Self::DucViewportElement => Some("DucViewportElement"),
5536      Self::DucXRayElement => Some("DucXRayElement"),
5537      Self::DucLeaderElement => Some("DucLeaderElement"),
5538      Self::DucDimensionElement => Some("DucDimensionElement"),
5539      Self::DucFeatureControlFrameElement => Some("DucFeatureControlFrameElement"),
5540      Self::DucDocElement => Some("DucDocElement"),
5541      Self::DucParametricElement => Some("DucParametricElement"),
5542      Self::DucModelElement => Some("DucModelElement"),
5543      _ => None,
5544    }
5545  }
5546}
5547impl core::fmt::Debug for Element {
5548  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5549    if let Some(name) = self.variant_name() {
5550      f.write_str(name)
5551    } else {
5552      f.write_fmt(format_args!("<UNKNOWN {:?}>", self.0))
5553    }
5554  }
5555}
5556impl<'a> flatbuffers::Follow<'a> for Element {
5557  type Inner = Self;
5558  #[inline]
5559  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5560    let b = flatbuffers::read_scalar_at::<u8>(buf, loc);
5561    Self(b)
5562  }
5563}
5564
5565impl flatbuffers::Push for Element {
5566    type Output = Element;
5567    #[inline]
5568    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5569        flatbuffers::emplace_scalar::<u8>(dst, self.0);
5570    }
5571}
5572
5573impl flatbuffers::EndianScalar for Element {
5574  type Scalar = u8;
5575  #[inline]
5576  fn to_little_endian(self) -> u8 {
5577    self.0.to_le()
5578  }
5579  #[inline]
5580  #[allow(clippy::wrong_self_convention)]
5581  fn from_little_endian(v: u8) -> Self {
5582    let b = u8::from_le(v);
5583    Self(b)
5584  }
5585}
5586
5587impl<'a> flatbuffers::Verifiable for Element {
5588  #[inline]
5589  fn run_verifier(
5590    v: &mut flatbuffers::Verifier, pos: usize
5591  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5592    use self::flatbuffers::Verifiable;
5593    u8::run_verifier(v, pos)
5594  }
5595}
5596
5597impl flatbuffers::SimpleToVerifyInSlice for Element {}
5598pub struct ElementUnionTableOffset {}
5599
5600// struct GeometricPoint, aligned to 8
5601#[repr(transparent)]
5602#[derive(Clone, Copy, PartialEq)]
5603pub struct GeometricPoint(pub [u8; 16]);
5604impl Default for GeometricPoint { 
5605  fn default() -> Self { 
5606    Self([0; 16])
5607  }
5608}
5609impl core::fmt::Debug for GeometricPoint {
5610  fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
5611    f.debug_struct("GeometricPoint")
5612      .field("x", &self.x())
5613      .field("y", &self.y())
5614      .finish()
5615  }
5616}
5617
5618impl flatbuffers::SimpleToVerifyInSlice for GeometricPoint {}
5619impl<'a> flatbuffers::Follow<'a> for GeometricPoint {
5620  type Inner = &'a GeometricPoint;
5621  #[inline]
5622  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5623    <&'a GeometricPoint>::follow(buf, loc)
5624  }
5625}
5626impl<'a> flatbuffers::Follow<'a> for &'a GeometricPoint {
5627  type Inner = &'a GeometricPoint;
5628  #[inline]
5629  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5630    flatbuffers::follow_cast_ref::<GeometricPoint>(buf, loc)
5631  }
5632}
5633impl<'b> flatbuffers::Push for GeometricPoint {
5634    type Output = GeometricPoint;
5635    #[inline]
5636    unsafe fn push(&self, dst: &mut [u8], _written_len: usize) {
5637        let src = ::core::slice::from_raw_parts(self as *const GeometricPoint as *const u8, <Self as flatbuffers::Push>::size());
5638        dst.copy_from_slice(src);
5639    }
5640    #[inline]
5641    fn alignment() -> flatbuffers::PushAlignment {
5642        flatbuffers::PushAlignment::new(8)
5643    }
5644}
5645
5646impl<'a> flatbuffers::Verifiable for GeometricPoint {
5647  #[inline]
5648  fn run_verifier(
5649    v: &mut flatbuffers::Verifier, pos: usize
5650  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5651    use self::flatbuffers::Verifiable;
5652    v.in_buffer::<Self>(pos)
5653  }
5654}
5655
5656impl<'a> GeometricPoint {
5657  #[allow(clippy::too_many_arguments)]
5658  pub fn new(
5659    x: f64,
5660    y: f64,
5661  ) -> Self {
5662    let mut s = Self([0; 16]);
5663    s.set_x(x);
5664    s.set_y(y);
5665    s
5666  }
5667
5668  pub fn x(&self) -> f64 {
5669    let mut mem = core::mem::MaybeUninit::<<f64 as EndianScalar>::Scalar>::uninit();
5670    // Safety:
5671    // Created from a valid Table for this object
5672    // Which contains a valid value in this slot
5673    EndianScalar::from_little_endian(unsafe {
5674      core::ptr::copy_nonoverlapping(
5675        self.0[0..].as_ptr(),
5676        mem.as_mut_ptr() as *mut u8,
5677        core::mem::size_of::<<f64 as EndianScalar>::Scalar>(),
5678      );
5679      mem.assume_init()
5680    })
5681  }
5682
5683  pub fn set_x(&mut self, x: f64) {
5684    let x_le = x.to_little_endian();
5685    // Safety:
5686    // Created from a valid Table for this object
5687    // Which contains a valid value in this slot
5688    unsafe {
5689      core::ptr::copy_nonoverlapping(
5690        &x_le as *const _ as *const u8,
5691        self.0[0..].as_mut_ptr(),
5692        core::mem::size_of::<<f64 as EndianScalar>::Scalar>(),
5693      );
5694    }
5695  }
5696
5697  pub fn y(&self) -> f64 {
5698    let mut mem = core::mem::MaybeUninit::<<f64 as EndianScalar>::Scalar>::uninit();
5699    // Safety:
5700    // Created from a valid Table for this object
5701    // Which contains a valid value in this slot
5702    EndianScalar::from_little_endian(unsafe {
5703      core::ptr::copy_nonoverlapping(
5704        self.0[8..].as_ptr(),
5705        mem.as_mut_ptr() as *mut u8,
5706        core::mem::size_of::<<f64 as EndianScalar>::Scalar>(),
5707      );
5708      mem.assume_init()
5709    })
5710  }
5711
5712  pub fn set_y(&mut self, x: f64) {
5713    let x_le = x.to_little_endian();
5714    // Safety:
5715    // Created from a valid Table for this object
5716    // Which contains a valid value in this slot
5717    unsafe {
5718      core::ptr::copy_nonoverlapping(
5719        &x_le as *const _ as *const u8,
5720        self.0[8..].as_mut_ptr(),
5721        core::mem::size_of::<<f64 as EndianScalar>::Scalar>(),
5722      );
5723    }
5724  }
5725
5726}
5727
5728pub enum DictionaryEntryOffset {}
5729#[derive(Copy, Clone, PartialEq)]
5730
5731pub struct DictionaryEntry<'a> {
5732  pub _tab: flatbuffers::Table<'a>,
5733}
5734
5735impl<'a> flatbuffers::Follow<'a> for DictionaryEntry<'a> {
5736  type Inner = DictionaryEntry<'a>;
5737  #[inline]
5738  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5739    Self { _tab: flatbuffers::Table::new(buf, loc) }
5740  }
5741}
5742
5743impl<'a> DictionaryEntry<'a> {
5744  pub const VT_KEY: flatbuffers::VOffsetT = 4;
5745  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
5746
5747  #[inline]
5748  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5749    DictionaryEntry { _tab: table }
5750  }
5751  #[allow(unused_mut)]
5752  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
5753    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
5754    args: &'args DictionaryEntryArgs<'args>
5755  ) -> flatbuffers::WIPOffset<DictionaryEntry<'bldr>> {
5756    let mut builder = DictionaryEntryBuilder::new(_fbb);
5757    if let Some(x) = args.value { builder.add_value(x); }
5758    if let Some(x) = args.key { builder.add_key(x); }
5759    builder.finish()
5760  }
5761
5762
5763  #[inline]
5764  pub fn key(&self) -> &'a str {
5765    // Safety:
5766    // Created from valid Table for this object
5767    // which contains a valid value in this slot
5768    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DictionaryEntry::VT_KEY, None).unwrap()}
5769  }
5770  #[inline]
5771  pub fn key_compare_less_than(&self, o: &DictionaryEntry) -> bool {
5772    self.key() < o.key()
5773  }
5774
5775  #[inline]
5776  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
5777    let key = self.key();
5778    key.cmp(val)
5779  }
5780  #[inline]
5781  pub fn value(&self) -> Option<&'a str> {
5782    // Safety:
5783    // Created from valid Table for this object
5784    // which contains a valid value in this slot
5785    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DictionaryEntry::VT_VALUE, None)}
5786  }
5787}
5788
5789impl flatbuffers::Verifiable for DictionaryEntry<'_> {
5790  #[inline]
5791  fn run_verifier(
5792    v: &mut flatbuffers::Verifier, pos: usize
5793  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5794    use self::flatbuffers::Verifiable;
5795    v.visit_table(pos)?
5796     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
5797     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("value", Self::VT_VALUE, false)?
5798     .finish();
5799    Ok(())
5800  }
5801}
5802pub struct DictionaryEntryArgs<'a> {
5803    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
5804    pub value: Option<flatbuffers::WIPOffset<&'a str>>,
5805}
5806impl<'a> Default for DictionaryEntryArgs<'a> {
5807  #[inline]
5808  fn default() -> Self {
5809    DictionaryEntryArgs {
5810      key: None, // required field
5811      value: None,
5812    }
5813  }
5814}
5815
5816pub struct DictionaryEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
5817  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
5818  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5819}
5820impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DictionaryEntryBuilder<'a, 'b, A> {
5821  #[inline]
5822  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
5823    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DictionaryEntry::VT_KEY, key);
5824  }
5825  #[inline]
5826  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<&'b  str>) {
5827    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DictionaryEntry::VT_VALUE, value);
5828  }
5829  #[inline]
5830  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DictionaryEntryBuilder<'a, 'b, A> {
5831    let start = _fbb.start_table();
5832    DictionaryEntryBuilder {
5833      fbb_: _fbb,
5834      start_: start,
5835    }
5836  }
5837  #[inline]
5838  pub fn finish(self) -> flatbuffers::WIPOffset<DictionaryEntry<'a>> {
5839    let o = self.fbb_.end_table(self.start_);
5840    self.fbb_.required(o, DictionaryEntry::VT_KEY,"key");
5841    flatbuffers::WIPOffset::new(o.value())
5842  }
5843}
5844
5845impl core::fmt::Debug for DictionaryEntry<'_> {
5846  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5847    let mut ds = f.debug_struct("DictionaryEntry");
5848      ds.field("key", &self.key());
5849      ds.field("value", &self.value());
5850      ds.finish()
5851  }
5852}
5853pub enum StringValueEntryOffset {}
5854#[derive(Copy, Clone, PartialEq)]
5855
5856pub struct StringValueEntry<'a> {
5857  pub _tab: flatbuffers::Table<'a>,
5858}
5859
5860impl<'a> flatbuffers::Follow<'a> for StringValueEntry<'a> {
5861  type Inner = StringValueEntry<'a>;
5862  #[inline]
5863  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5864    Self { _tab: flatbuffers::Table::new(buf, loc) }
5865  }
5866}
5867
5868impl<'a> StringValueEntry<'a> {
5869  pub const VT_KEY: flatbuffers::VOffsetT = 4;
5870  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
5871
5872  #[inline]
5873  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
5874    StringValueEntry { _tab: table }
5875  }
5876  #[allow(unused_mut)]
5877  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
5878    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
5879    args: &'args StringValueEntryArgs<'args>
5880  ) -> flatbuffers::WIPOffset<StringValueEntry<'bldr>> {
5881    let mut builder = StringValueEntryBuilder::new(_fbb);
5882    if let Some(x) = args.value { builder.add_value(x); }
5883    if let Some(x) = args.key { builder.add_key(x); }
5884    builder.finish()
5885  }
5886
5887
5888  #[inline]
5889  pub fn key(&self) -> &'a str {
5890    // Safety:
5891    // Created from valid Table for this object
5892    // which contains a valid value in this slot
5893    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StringValueEntry::VT_KEY, None).unwrap()}
5894  }
5895  #[inline]
5896  pub fn key_compare_less_than(&self, o: &StringValueEntry) -> bool {
5897    self.key() < o.key()
5898  }
5899
5900  #[inline]
5901  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
5902    let key = self.key();
5903    key.cmp(val)
5904  }
5905  #[inline]
5906  pub fn value(&self) -> Option<&'a str> {
5907    // Safety:
5908    // Created from valid Table for this object
5909    // which contains a valid value in this slot
5910    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StringValueEntry::VT_VALUE, None)}
5911  }
5912}
5913
5914impl flatbuffers::Verifiable for StringValueEntry<'_> {
5915  #[inline]
5916  fn run_verifier(
5917    v: &mut flatbuffers::Verifier, pos: usize
5918  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
5919    use self::flatbuffers::Verifiable;
5920    v.visit_table(pos)?
5921     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
5922     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("value", Self::VT_VALUE, false)?
5923     .finish();
5924    Ok(())
5925  }
5926}
5927pub struct StringValueEntryArgs<'a> {
5928    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
5929    pub value: Option<flatbuffers::WIPOffset<&'a str>>,
5930}
5931impl<'a> Default for StringValueEntryArgs<'a> {
5932  #[inline]
5933  fn default() -> Self {
5934    StringValueEntryArgs {
5935      key: None, // required field
5936      value: None,
5937    }
5938  }
5939}
5940
5941pub struct StringValueEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
5942  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
5943  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
5944}
5945impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StringValueEntryBuilder<'a, 'b, A> {
5946  #[inline]
5947  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
5948    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StringValueEntry::VT_KEY, key);
5949  }
5950  #[inline]
5951  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<&'b  str>) {
5952    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StringValueEntry::VT_VALUE, value);
5953  }
5954  #[inline]
5955  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StringValueEntryBuilder<'a, 'b, A> {
5956    let start = _fbb.start_table();
5957    StringValueEntryBuilder {
5958      fbb_: _fbb,
5959      start_: start,
5960    }
5961  }
5962  #[inline]
5963  pub fn finish(self) -> flatbuffers::WIPOffset<StringValueEntry<'a>> {
5964    let o = self.fbb_.end_table(self.start_);
5965    self.fbb_.required(o, StringValueEntry::VT_KEY,"key");
5966    flatbuffers::WIPOffset::new(o.value())
5967  }
5968}
5969
5970impl core::fmt::Debug for StringValueEntry<'_> {
5971  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5972    let mut ds = f.debug_struct("StringValueEntry");
5973      ds.field("key", &self.key());
5974      ds.field("value", &self.value());
5975      ds.finish()
5976  }
5977}
5978pub enum IdentifierOffset {}
5979#[derive(Copy, Clone, PartialEq)]
5980
5981pub struct Identifier<'a> {
5982  pub _tab: flatbuffers::Table<'a>,
5983}
5984
5985impl<'a> flatbuffers::Follow<'a> for Identifier<'a> {
5986  type Inner = Identifier<'a>;
5987  #[inline]
5988  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
5989    Self { _tab: flatbuffers::Table::new(buf, loc) }
5990  }
5991}
5992
5993impl<'a> Identifier<'a> {
5994  pub const VT_ID: flatbuffers::VOffsetT = 4;
5995  pub const VT_NAME: flatbuffers::VOffsetT = 6;
5996  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 8;
5997
5998  #[inline]
5999  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6000    Identifier { _tab: table }
6001  }
6002  #[allow(unused_mut)]
6003  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6004    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6005    args: &'args IdentifierArgs<'args>
6006  ) -> flatbuffers::WIPOffset<Identifier<'bldr>> {
6007    let mut builder = IdentifierBuilder::new(_fbb);
6008    if let Some(x) = args.description { builder.add_description(x); }
6009    if let Some(x) = args.name { builder.add_name(x); }
6010    if let Some(x) = args.id { builder.add_id(x); }
6011    builder.finish()
6012  }
6013
6014
6015  #[inline]
6016  pub fn id(&self) -> &'a str {
6017    // Safety:
6018    // Created from valid Table for this object
6019    // which contains a valid value in this slot
6020    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Identifier::VT_ID, None).unwrap()}
6021  }
6022  #[inline]
6023  pub fn key_compare_less_than(&self, o: &Identifier) -> bool {
6024    self.id() < o.id()
6025  }
6026
6027  #[inline]
6028  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
6029    let key = self.id();
6030    key.cmp(val)
6031  }
6032  #[inline]
6033  pub fn name(&self) -> Option<&'a str> {
6034    // Safety:
6035    // Created from valid Table for this object
6036    // which contains a valid value in this slot
6037    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Identifier::VT_NAME, None)}
6038  }
6039  #[inline]
6040  pub fn description(&self) -> Option<&'a str> {
6041    // Safety:
6042    // Created from valid Table for this object
6043    // which contains a valid value in this slot
6044    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Identifier::VT_DESCRIPTION, None)}
6045  }
6046}
6047
6048impl flatbuffers::Verifiable for Identifier<'_> {
6049  #[inline]
6050  fn run_verifier(
6051    v: &mut flatbuffers::Verifier, pos: usize
6052  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6053    use self::flatbuffers::Verifiable;
6054    v.visit_table(pos)?
6055     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
6056     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
6057     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
6058     .finish();
6059    Ok(())
6060  }
6061}
6062pub struct IdentifierArgs<'a> {
6063    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
6064    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
6065    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
6066}
6067impl<'a> Default for IdentifierArgs<'a> {
6068  #[inline]
6069  fn default() -> Self {
6070    IdentifierArgs {
6071      id: None, // required field
6072      name: None,
6073      description: None,
6074    }
6075  }
6076}
6077
6078pub struct IdentifierBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6079  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6080  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6081}
6082impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifierBuilder<'a, 'b, A> {
6083  #[inline]
6084  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
6085    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Identifier::VT_ID, id);
6086  }
6087  #[inline]
6088  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
6089    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Identifier::VT_NAME, name);
6090  }
6091  #[inline]
6092  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
6093    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Identifier::VT_DESCRIPTION, description);
6094  }
6095  #[inline]
6096  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifierBuilder<'a, 'b, A> {
6097    let start = _fbb.start_table();
6098    IdentifierBuilder {
6099      fbb_: _fbb,
6100      start_: start,
6101    }
6102  }
6103  #[inline]
6104  pub fn finish(self) -> flatbuffers::WIPOffset<Identifier<'a>> {
6105    let o = self.fbb_.end_table(self.start_);
6106    self.fbb_.required(o, Identifier::VT_ID,"id");
6107    flatbuffers::WIPOffset::new(o.value())
6108  }
6109}
6110
6111impl core::fmt::Debug for Identifier<'_> {
6112  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6113    let mut ds = f.debug_struct("Identifier");
6114      ds.field("id", &self.id());
6115      ds.field("name", &self.name());
6116      ds.field("description", &self.description());
6117      ds.finish()
6118  }
6119}
6120pub enum DucUcsOffset {}
6121#[derive(Copy, Clone, PartialEq)]
6122
6123pub struct DucUcs<'a> {
6124  pub _tab: flatbuffers::Table<'a>,
6125}
6126
6127impl<'a> flatbuffers::Follow<'a> for DucUcs<'a> {
6128  type Inner = DucUcs<'a>;
6129  #[inline]
6130  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6131    Self { _tab: flatbuffers::Table::new(buf, loc) }
6132  }
6133}
6134
6135impl<'a> DucUcs<'a> {
6136  pub const VT_ORIGIN: flatbuffers::VOffsetT = 4;
6137  pub const VT_ANGLE: flatbuffers::VOffsetT = 6;
6138
6139  #[inline]
6140  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6141    DucUcs { _tab: table }
6142  }
6143  #[allow(unused_mut)]
6144  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6145    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6146    args: &'args DucUcsArgs<'args>
6147  ) -> flatbuffers::WIPOffset<DucUcs<'bldr>> {
6148    let mut builder = DucUcsBuilder::new(_fbb);
6149    builder.add_angle(args.angle);
6150    if let Some(x) = args.origin { builder.add_origin(x); }
6151    builder.finish()
6152  }
6153
6154
6155  #[inline]
6156  pub fn origin(&self) -> Option<&'a GeometricPoint> {
6157    // Safety:
6158    // Created from valid Table for this object
6159    // which contains a valid value in this slot
6160    unsafe { self._tab.get::<GeometricPoint>(DucUcs::VT_ORIGIN, None)}
6161  }
6162  #[inline]
6163  pub fn angle(&self) -> f64 {
6164    // Safety:
6165    // Created from valid Table for this object
6166    // which contains a valid value in this slot
6167    unsafe { self._tab.get::<f64>(DucUcs::VT_ANGLE, Some(0.0)).unwrap()}
6168  }
6169}
6170
6171impl flatbuffers::Verifiable for DucUcs<'_> {
6172  #[inline]
6173  fn run_verifier(
6174    v: &mut flatbuffers::Verifier, pos: usize
6175  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6176    use self::flatbuffers::Verifiable;
6177    v.visit_table(pos)?
6178     .visit_field::<GeometricPoint>("origin", Self::VT_ORIGIN, false)?
6179     .visit_field::<f64>("angle", Self::VT_ANGLE, false)?
6180     .finish();
6181    Ok(())
6182  }
6183}
6184pub struct DucUcsArgs<'a> {
6185    pub origin: Option<&'a GeometricPoint>,
6186    pub angle: f64,
6187}
6188impl<'a> Default for DucUcsArgs<'a> {
6189  #[inline]
6190  fn default() -> Self {
6191    DucUcsArgs {
6192      origin: None,
6193      angle: 0.0,
6194    }
6195  }
6196}
6197
6198pub struct DucUcsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6199  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6200  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6201}
6202impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucUcsBuilder<'a, 'b, A> {
6203  #[inline]
6204  pub fn add_origin(&mut self, origin: &GeometricPoint) {
6205    self.fbb_.push_slot_always::<&GeometricPoint>(DucUcs::VT_ORIGIN, origin);
6206  }
6207  #[inline]
6208  pub fn add_angle(&mut self, angle: f64) {
6209    self.fbb_.push_slot::<f64>(DucUcs::VT_ANGLE, angle, 0.0);
6210  }
6211  #[inline]
6212  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucUcsBuilder<'a, 'b, A> {
6213    let start = _fbb.start_table();
6214    DucUcsBuilder {
6215      fbb_: _fbb,
6216      start_: start,
6217    }
6218  }
6219  #[inline]
6220  pub fn finish(self) -> flatbuffers::WIPOffset<DucUcs<'a>> {
6221    let o = self.fbb_.end_table(self.start_);
6222    flatbuffers::WIPOffset::new(o.value())
6223  }
6224}
6225
6226impl core::fmt::Debug for DucUcs<'_> {
6227  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6228    let mut ds = f.debug_struct("DucUcs");
6229      ds.field("origin", &self.origin());
6230      ds.field("angle", &self.angle());
6231      ds.finish()
6232  }
6233}
6234pub enum DucViewOffset {}
6235#[derive(Copy, Clone, PartialEq)]
6236
6237pub struct DucView<'a> {
6238  pub _tab: flatbuffers::Table<'a>,
6239}
6240
6241impl<'a> flatbuffers::Follow<'a> for DucView<'a> {
6242  type Inner = DucView<'a>;
6243  #[inline]
6244  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6245    Self { _tab: flatbuffers::Table::new(buf, loc) }
6246  }
6247}
6248
6249impl<'a> DucView<'a> {
6250  pub const VT_SCROLL_X: flatbuffers::VOffsetT = 4;
6251  pub const VT_SCROLL_Y: flatbuffers::VOffsetT = 6;
6252  pub const VT_ZOOM: flatbuffers::VOffsetT = 8;
6253  pub const VT_TWIST_ANGLE: flatbuffers::VOffsetT = 10;
6254  pub const VT_CENTER_POINT: flatbuffers::VOffsetT = 12;
6255  pub const VT_SCOPE: flatbuffers::VOffsetT = 14;
6256
6257  #[inline]
6258  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6259    DucView { _tab: table }
6260  }
6261  #[allow(unused_mut)]
6262  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6263    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6264    args: &'args DucViewArgs<'args>
6265  ) -> flatbuffers::WIPOffset<DucView<'bldr>> {
6266    let mut builder = DucViewBuilder::new(_fbb);
6267    builder.add_twist_angle(args.twist_angle);
6268    builder.add_zoom(args.zoom);
6269    builder.add_scroll_y(args.scroll_y);
6270    builder.add_scroll_x(args.scroll_x);
6271    if let Some(x) = args.scope { builder.add_scope(x); }
6272    if let Some(x) = args.center_point { builder.add_center_point(x); }
6273    builder.finish()
6274  }
6275
6276
6277  #[inline]
6278  pub fn scroll_x(&self) -> f64 {
6279    // Safety:
6280    // Created from valid Table for this object
6281    // which contains a valid value in this slot
6282    unsafe { self._tab.get::<f64>(DucView::VT_SCROLL_X, Some(0.0)).unwrap()}
6283  }
6284  #[inline]
6285  pub fn scroll_y(&self) -> f64 {
6286    // Safety:
6287    // Created from valid Table for this object
6288    // which contains a valid value in this slot
6289    unsafe { self._tab.get::<f64>(DucView::VT_SCROLL_Y, Some(0.0)).unwrap()}
6290  }
6291  #[inline]
6292  pub fn zoom(&self) -> f64 {
6293    // Safety:
6294    // Created from valid Table for this object
6295    // which contains a valid value in this slot
6296    unsafe { self._tab.get::<f64>(DucView::VT_ZOOM, Some(0.0)).unwrap()}
6297  }
6298  #[inline]
6299  pub fn twist_angle(&self) -> f64 {
6300    // Safety:
6301    // Created from valid Table for this object
6302    // which contains a valid value in this slot
6303    unsafe { self._tab.get::<f64>(DucView::VT_TWIST_ANGLE, Some(0.0)).unwrap()}
6304  }
6305  #[inline]
6306  pub fn center_point(&self) -> Option<DucPoint<'a>> {
6307    // Safety:
6308    // Created from valid Table for this object
6309    // which contains a valid value in this slot
6310    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(DucView::VT_CENTER_POINT, None)}
6311  }
6312  #[inline]
6313  pub fn scope(&self) -> Option<&'a str> {
6314    // Safety:
6315    // Created from valid Table for this object
6316    // which contains a valid value in this slot
6317    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucView::VT_SCOPE, None)}
6318  }
6319}
6320
6321impl flatbuffers::Verifiable for DucView<'_> {
6322  #[inline]
6323  fn run_verifier(
6324    v: &mut flatbuffers::Verifier, pos: usize
6325  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6326    use self::flatbuffers::Verifiable;
6327    v.visit_table(pos)?
6328     .visit_field::<f64>("scroll_x", Self::VT_SCROLL_X, false)?
6329     .visit_field::<f64>("scroll_y", Self::VT_SCROLL_Y, false)?
6330     .visit_field::<f64>("zoom", Self::VT_ZOOM, false)?
6331     .visit_field::<f64>("twist_angle", Self::VT_TWIST_ANGLE, false)?
6332     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("center_point", Self::VT_CENTER_POINT, false)?
6333     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("scope", Self::VT_SCOPE, false)?
6334     .finish();
6335    Ok(())
6336  }
6337}
6338pub struct DucViewArgs<'a> {
6339    pub scroll_x: f64,
6340    pub scroll_y: f64,
6341    pub zoom: f64,
6342    pub twist_angle: f64,
6343    pub center_point: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
6344    pub scope: Option<flatbuffers::WIPOffset<&'a str>>,
6345}
6346impl<'a> Default for DucViewArgs<'a> {
6347  #[inline]
6348  fn default() -> Self {
6349    DucViewArgs {
6350      scroll_x: 0.0,
6351      scroll_y: 0.0,
6352      zoom: 0.0,
6353      twist_angle: 0.0,
6354      center_point: None,
6355      scope: None,
6356    }
6357  }
6358}
6359
6360pub struct DucViewBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6361  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6362  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6363}
6364impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucViewBuilder<'a, 'b, A> {
6365  #[inline]
6366  pub fn add_scroll_x(&mut self, scroll_x: f64) {
6367    self.fbb_.push_slot::<f64>(DucView::VT_SCROLL_X, scroll_x, 0.0);
6368  }
6369  #[inline]
6370  pub fn add_scroll_y(&mut self, scroll_y: f64) {
6371    self.fbb_.push_slot::<f64>(DucView::VT_SCROLL_Y, scroll_y, 0.0);
6372  }
6373  #[inline]
6374  pub fn add_zoom(&mut self, zoom: f64) {
6375    self.fbb_.push_slot::<f64>(DucView::VT_ZOOM, zoom, 0.0);
6376  }
6377  #[inline]
6378  pub fn add_twist_angle(&mut self, twist_angle: f64) {
6379    self.fbb_.push_slot::<f64>(DucView::VT_TWIST_ANGLE, twist_angle, 0.0);
6380  }
6381  #[inline]
6382  pub fn add_center_point(&mut self, center_point: flatbuffers::WIPOffset<DucPoint<'b >>) {
6383    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(DucView::VT_CENTER_POINT, center_point);
6384  }
6385  #[inline]
6386  pub fn add_scope(&mut self, scope: flatbuffers::WIPOffset<&'b  str>) {
6387    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucView::VT_SCOPE, scope);
6388  }
6389  #[inline]
6390  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucViewBuilder<'a, 'b, A> {
6391    let start = _fbb.start_table();
6392    DucViewBuilder {
6393      fbb_: _fbb,
6394      start_: start,
6395    }
6396  }
6397  #[inline]
6398  pub fn finish(self) -> flatbuffers::WIPOffset<DucView<'a>> {
6399    let o = self.fbb_.end_table(self.start_);
6400    flatbuffers::WIPOffset::new(o.value())
6401  }
6402}
6403
6404impl core::fmt::Debug for DucView<'_> {
6405  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6406    let mut ds = f.debug_struct("DucView");
6407      ds.field("scroll_x", &self.scroll_x());
6408      ds.field("scroll_y", &self.scroll_y());
6409      ds.field("zoom", &self.zoom());
6410      ds.field("twist_angle", &self.twist_angle());
6411      ds.field("center_point", &self.center_point());
6412      ds.field("scope", &self.scope());
6413      ds.finish()
6414  }
6415}
6416pub enum MarginsOffset {}
6417#[derive(Copy, Clone, PartialEq)]
6418
6419pub struct Margins<'a> {
6420  pub _tab: flatbuffers::Table<'a>,
6421}
6422
6423impl<'a> flatbuffers::Follow<'a> for Margins<'a> {
6424  type Inner = Margins<'a>;
6425  #[inline]
6426  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6427    Self { _tab: flatbuffers::Table::new(buf, loc) }
6428  }
6429}
6430
6431impl<'a> Margins<'a> {
6432  pub const VT_TOP: flatbuffers::VOffsetT = 4;
6433  pub const VT_RIGHT: flatbuffers::VOffsetT = 6;
6434  pub const VT_BOTTOM: flatbuffers::VOffsetT = 8;
6435  pub const VT_LEFT: flatbuffers::VOffsetT = 10;
6436
6437  #[inline]
6438  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6439    Margins { _tab: table }
6440  }
6441  #[allow(unused_mut)]
6442  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6443    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6444    args: &'args MarginsArgs
6445  ) -> flatbuffers::WIPOffset<Margins<'bldr>> {
6446    let mut builder = MarginsBuilder::new(_fbb);
6447    builder.add_left(args.left);
6448    builder.add_bottom(args.bottom);
6449    builder.add_right(args.right);
6450    builder.add_top(args.top);
6451    builder.finish()
6452  }
6453
6454
6455  #[inline]
6456  pub fn top(&self) -> f64 {
6457    // Safety:
6458    // Created from valid Table for this object
6459    // which contains a valid value in this slot
6460    unsafe { self._tab.get::<f64>(Margins::VT_TOP, Some(0.0)).unwrap()}
6461  }
6462  #[inline]
6463  pub fn right(&self) -> f64 {
6464    // Safety:
6465    // Created from valid Table for this object
6466    // which contains a valid value in this slot
6467    unsafe { self._tab.get::<f64>(Margins::VT_RIGHT, Some(0.0)).unwrap()}
6468  }
6469  #[inline]
6470  pub fn bottom(&self) -> f64 {
6471    // Safety:
6472    // Created from valid Table for this object
6473    // which contains a valid value in this slot
6474    unsafe { self._tab.get::<f64>(Margins::VT_BOTTOM, Some(0.0)).unwrap()}
6475  }
6476  #[inline]
6477  pub fn left(&self) -> f64 {
6478    // Safety:
6479    // Created from valid Table for this object
6480    // which contains a valid value in this slot
6481    unsafe { self._tab.get::<f64>(Margins::VT_LEFT, Some(0.0)).unwrap()}
6482  }
6483}
6484
6485impl flatbuffers::Verifiable for Margins<'_> {
6486  #[inline]
6487  fn run_verifier(
6488    v: &mut flatbuffers::Verifier, pos: usize
6489  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6490    use self::flatbuffers::Verifiable;
6491    v.visit_table(pos)?
6492     .visit_field::<f64>("top", Self::VT_TOP, false)?
6493     .visit_field::<f64>("right", Self::VT_RIGHT, false)?
6494     .visit_field::<f64>("bottom", Self::VT_BOTTOM, false)?
6495     .visit_field::<f64>("left", Self::VT_LEFT, false)?
6496     .finish();
6497    Ok(())
6498  }
6499}
6500pub struct MarginsArgs {
6501    pub top: f64,
6502    pub right: f64,
6503    pub bottom: f64,
6504    pub left: f64,
6505}
6506impl<'a> Default for MarginsArgs {
6507  #[inline]
6508  fn default() -> Self {
6509    MarginsArgs {
6510      top: 0.0,
6511      right: 0.0,
6512      bottom: 0.0,
6513      left: 0.0,
6514    }
6515  }
6516}
6517
6518pub struct MarginsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6519  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6520  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6521}
6522impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> MarginsBuilder<'a, 'b, A> {
6523  #[inline]
6524  pub fn add_top(&mut self, top: f64) {
6525    self.fbb_.push_slot::<f64>(Margins::VT_TOP, top, 0.0);
6526  }
6527  #[inline]
6528  pub fn add_right(&mut self, right: f64) {
6529    self.fbb_.push_slot::<f64>(Margins::VT_RIGHT, right, 0.0);
6530  }
6531  #[inline]
6532  pub fn add_bottom(&mut self, bottom: f64) {
6533    self.fbb_.push_slot::<f64>(Margins::VT_BOTTOM, bottom, 0.0);
6534  }
6535  #[inline]
6536  pub fn add_left(&mut self, left: f64) {
6537    self.fbb_.push_slot::<f64>(Margins::VT_LEFT, left, 0.0);
6538  }
6539  #[inline]
6540  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> MarginsBuilder<'a, 'b, A> {
6541    let start = _fbb.start_table();
6542    MarginsBuilder {
6543      fbb_: _fbb,
6544      start_: start,
6545    }
6546  }
6547  #[inline]
6548  pub fn finish(self) -> flatbuffers::WIPOffset<Margins<'a>> {
6549    let o = self.fbb_.end_table(self.start_);
6550    flatbuffers::WIPOffset::new(o.value())
6551  }
6552}
6553
6554impl core::fmt::Debug for Margins<'_> {
6555  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6556    let mut ds = f.debug_struct("Margins");
6557      ds.field("top", &self.top());
6558      ds.field("right", &self.right());
6559      ds.field("bottom", &self.bottom());
6560      ds.field("left", &self.left());
6561      ds.finish()
6562  }
6563}
6564pub enum TilingPropertiesOffset {}
6565#[derive(Copy, Clone, PartialEq)]
6566
6567pub struct TilingProperties<'a> {
6568  pub _tab: flatbuffers::Table<'a>,
6569}
6570
6571impl<'a> flatbuffers::Follow<'a> for TilingProperties<'a> {
6572  type Inner = TilingProperties<'a>;
6573  #[inline]
6574  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6575    Self { _tab: flatbuffers::Table::new(buf, loc) }
6576  }
6577}
6578
6579impl<'a> TilingProperties<'a> {
6580  pub const VT_SIZE_IN_PERCENT: flatbuffers::VOffsetT = 4;
6581  pub const VT_ANGLE: flatbuffers::VOffsetT = 6;
6582  pub const VT_SPACING: flatbuffers::VOffsetT = 8;
6583  pub const VT_OFFSET_X: flatbuffers::VOffsetT = 10;
6584  pub const VT_OFFSET_Y: flatbuffers::VOffsetT = 12;
6585
6586  #[inline]
6587  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6588    TilingProperties { _tab: table }
6589  }
6590  #[allow(unused_mut)]
6591  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6592    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6593    args: &'args TilingPropertiesArgs
6594  ) -> flatbuffers::WIPOffset<TilingProperties<'bldr>> {
6595    let mut builder = TilingPropertiesBuilder::new(_fbb);
6596    if let Some(x) = args.offset_y { builder.add_offset_y(x); }
6597    if let Some(x) = args.offset_x { builder.add_offset_x(x); }
6598    if let Some(x) = args.spacing { builder.add_spacing(x); }
6599    builder.add_angle(args.angle);
6600    builder.add_size_in_percent(args.size_in_percent);
6601    builder.finish()
6602  }
6603
6604
6605  #[inline]
6606  pub fn size_in_percent(&self) -> f32 {
6607    // Safety:
6608    // Created from valid Table for this object
6609    // which contains a valid value in this slot
6610    unsafe { self._tab.get::<f32>(TilingProperties::VT_SIZE_IN_PERCENT, Some(0.0)).unwrap()}
6611  }
6612  #[inline]
6613  pub fn angle(&self) -> f64 {
6614    // Safety:
6615    // Created from valid Table for this object
6616    // which contains a valid value in this slot
6617    unsafe { self._tab.get::<f64>(TilingProperties::VT_ANGLE, Some(0.0)).unwrap()}
6618  }
6619  #[inline]
6620  pub fn spacing(&self) -> Option<f64> {
6621    // Safety:
6622    // Created from valid Table for this object
6623    // which contains a valid value in this slot
6624    unsafe { self._tab.get::<f64>(TilingProperties::VT_SPACING, None)}
6625  }
6626  #[inline]
6627  pub fn offset_x(&self) -> Option<f64> {
6628    // Safety:
6629    // Created from valid Table for this object
6630    // which contains a valid value in this slot
6631    unsafe { self._tab.get::<f64>(TilingProperties::VT_OFFSET_X, None)}
6632  }
6633  #[inline]
6634  pub fn offset_y(&self) -> Option<f64> {
6635    // Safety:
6636    // Created from valid Table for this object
6637    // which contains a valid value in this slot
6638    unsafe { self._tab.get::<f64>(TilingProperties::VT_OFFSET_Y, None)}
6639  }
6640}
6641
6642impl flatbuffers::Verifiable for TilingProperties<'_> {
6643  #[inline]
6644  fn run_verifier(
6645    v: &mut flatbuffers::Verifier, pos: usize
6646  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6647    use self::flatbuffers::Verifiable;
6648    v.visit_table(pos)?
6649     .visit_field::<f32>("size_in_percent", Self::VT_SIZE_IN_PERCENT, false)?
6650     .visit_field::<f64>("angle", Self::VT_ANGLE, false)?
6651     .visit_field::<f64>("spacing", Self::VT_SPACING, false)?
6652     .visit_field::<f64>("offset_x", Self::VT_OFFSET_X, false)?
6653     .visit_field::<f64>("offset_y", Self::VT_OFFSET_Y, false)?
6654     .finish();
6655    Ok(())
6656  }
6657}
6658pub struct TilingPropertiesArgs {
6659    pub size_in_percent: f32,
6660    pub angle: f64,
6661    pub spacing: Option<f64>,
6662    pub offset_x: Option<f64>,
6663    pub offset_y: Option<f64>,
6664}
6665impl<'a> Default for TilingPropertiesArgs {
6666  #[inline]
6667  fn default() -> Self {
6668    TilingPropertiesArgs {
6669      size_in_percent: 0.0,
6670      angle: 0.0,
6671      spacing: None,
6672      offset_x: None,
6673      offset_y: None,
6674    }
6675  }
6676}
6677
6678pub struct TilingPropertiesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6679  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6680  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6681}
6682impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TilingPropertiesBuilder<'a, 'b, A> {
6683  #[inline]
6684  pub fn add_size_in_percent(&mut self, size_in_percent: f32) {
6685    self.fbb_.push_slot::<f32>(TilingProperties::VT_SIZE_IN_PERCENT, size_in_percent, 0.0);
6686  }
6687  #[inline]
6688  pub fn add_angle(&mut self, angle: f64) {
6689    self.fbb_.push_slot::<f64>(TilingProperties::VT_ANGLE, angle, 0.0);
6690  }
6691  #[inline]
6692  pub fn add_spacing(&mut self, spacing: f64) {
6693    self.fbb_.push_slot_always::<f64>(TilingProperties::VT_SPACING, spacing);
6694  }
6695  #[inline]
6696  pub fn add_offset_x(&mut self, offset_x: f64) {
6697    self.fbb_.push_slot_always::<f64>(TilingProperties::VT_OFFSET_X, offset_x);
6698  }
6699  #[inline]
6700  pub fn add_offset_y(&mut self, offset_y: f64) {
6701    self.fbb_.push_slot_always::<f64>(TilingProperties::VT_OFFSET_Y, offset_y);
6702  }
6703  #[inline]
6704  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TilingPropertiesBuilder<'a, 'b, A> {
6705    let start = _fbb.start_table();
6706    TilingPropertiesBuilder {
6707      fbb_: _fbb,
6708      start_: start,
6709    }
6710  }
6711  #[inline]
6712  pub fn finish(self) -> flatbuffers::WIPOffset<TilingProperties<'a>> {
6713    let o = self.fbb_.end_table(self.start_);
6714    flatbuffers::WIPOffset::new(o.value())
6715  }
6716}
6717
6718impl core::fmt::Debug for TilingProperties<'_> {
6719  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6720    let mut ds = f.debug_struct("TilingProperties");
6721      ds.field("size_in_percent", &self.size_in_percent());
6722      ds.field("angle", &self.angle());
6723      ds.field("spacing", &self.spacing());
6724      ds.field("offset_x", &self.offset_x());
6725      ds.field("offset_y", &self.offset_y());
6726      ds.finish()
6727  }
6728}
6729pub enum HatchPatternLineOffset {}
6730#[derive(Copy, Clone, PartialEq)]
6731
6732pub struct HatchPatternLine<'a> {
6733  pub _tab: flatbuffers::Table<'a>,
6734}
6735
6736impl<'a> flatbuffers::Follow<'a> for HatchPatternLine<'a> {
6737  type Inner = HatchPatternLine<'a>;
6738  #[inline]
6739  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6740    Self { _tab: flatbuffers::Table::new(buf, loc) }
6741  }
6742}
6743
6744impl<'a> HatchPatternLine<'a> {
6745  pub const VT_ANGLE: flatbuffers::VOffsetT = 4;
6746  pub const VT_ORIGIN: flatbuffers::VOffsetT = 6;
6747  pub const VT_OFFSET: flatbuffers::VOffsetT = 8;
6748  pub const VT_DASH_PATTERN: flatbuffers::VOffsetT = 10;
6749
6750  #[inline]
6751  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6752    HatchPatternLine { _tab: table }
6753  }
6754  #[allow(unused_mut)]
6755  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6756    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6757    args: &'args HatchPatternLineArgs<'args>
6758  ) -> flatbuffers::WIPOffset<HatchPatternLine<'bldr>> {
6759    let mut builder = HatchPatternLineBuilder::new(_fbb);
6760    builder.add_angle(args.angle);
6761    if let Some(x) = args.dash_pattern { builder.add_dash_pattern(x); }
6762    if let Some(x) = args.offset { builder.add_offset(x); }
6763    if let Some(x) = args.origin { builder.add_origin(x); }
6764    builder.finish()
6765  }
6766
6767
6768  #[inline]
6769  pub fn angle(&self) -> f64 {
6770    // Safety:
6771    // Created from valid Table for this object
6772    // which contains a valid value in this slot
6773    unsafe { self._tab.get::<f64>(HatchPatternLine::VT_ANGLE, Some(0.0)).unwrap()}
6774  }
6775  #[inline]
6776  pub fn origin(&self) -> Option<DucPoint<'a>> {
6777    // Safety:
6778    // Created from valid Table for this object
6779    // which contains a valid value in this slot
6780    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(HatchPatternLine::VT_ORIGIN, None)}
6781  }
6782  #[inline]
6783  pub fn offset(&self) -> Option<flatbuffers::Vector<'a, f64>> {
6784    // Safety:
6785    // Created from valid Table for this object
6786    // which contains a valid value in this slot
6787    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(HatchPatternLine::VT_OFFSET, None)}
6788  }
6789  #[inline]
6790  pub fn dash_pattern(&self) -> Option<flatbuffers::Vector<'a, f64>> {
6791    // Safety:
6792    // Created from valid Table for this object
6793    // which contains a valid value in this slot
6794    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(HatchPatternLine::VT_DASH_PATTERN, None)}
6795  }
6796}
6797
6798impl flatbuffers::Verifiable for HatchPatternLine<'_> {
6799  #[inline]
6800  fn run_verifier(
6801    v: &mut flatbuffers::Verifier, pos: usize
6802  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6803    use self::flatbuffers::Verifiable;
6804    v.visit_table(pos)?
6805     .visit_field::<f64>("angle", Self::VT_ANGLE, false)?
6806     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("origin", Self::VT_ORIGIN, false)?
6807     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("offset", Self::VT_OFFSET, false)?
6808     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("dash_pattern", Self::VT_DASH_PATTERN, false)?
6809     .finish();
6810    Ok(())
6811  }
6812}
6813pub struct HatchPatternLineArgs<'a> {
6814    pub angle: f64,
6815    pub origin: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
6816    pub offset: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
6817    pub dash_pattern: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
6818}
6819impl<'a> Default for HatchPatternLineArgs<'a> {
6820  #[inline]
6821  fn default() -> Self {
6822    HatchPatternLineArgs {
6823      angle: 0.0,
6824      origin: None,
6825      offset: None,
6826      dash_pattern: None,
6827    }
6828  }
6829}
6830
6831pub struct HatchPatternLineBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6832  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6833  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6834}
6835impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> HatchPatternLineBuilder<'a, 'b, A> {
6836  #[inline]
6837  pub fn add_angle(&mut self, angle: f64) {
6838    self.fbb_.push_slot::<f64>(HatchPatternLine::VT_ANGLE, angle, 0.0);
6839  }
6840  #[inline]
6841  pub fn add_origin(&mut self, origin: flatbuffers::WIPOffset<DucPoint<'b >>) {
6842    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(HatchPatternLine::VT_ORIGIN, origin);
6843  }
6844  #[inline]
6845  pub fn add_offset(&mut self, offset: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
6846    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(HatchPatternLine::VT_OFFSET, offset);
6847  }
6848  #[inline]
6849  pub fn add_dash_pattern(&mut self, dash_pattern: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
6850    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(HatchPatternLine::VT_DASH_PATTERN, dash_pattern);
6851  }
6852  #[inline]
6853  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> HatchPatternLineBuilder<'a, 'b, A> {
6854    let start = _fbb.start_table();
6855    HatchPatternLineBuilder {
6856      fbb_: _fbb,
6857      start_: start,
6858    }
6859  }
6860  #[inline]
6861  pub fn finish(self) -> flatbuffers::WIPOffset<HatchPatternLine<'a>> {
6862    let o = self.fbb_.end_table(self.start_);
6863    flatbuffers::WIPOffset::new(o.value())
6864  }
6865}
6866
6867impl core::fmt::Debug for HatchPatternLine<'_> {
6868  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6869    let mut ds = f.debug_struct("HatchPatternLine");
6870      ds.field("angle", &self.angle());
6871      ds.field("origin", &self.origin());
6872      ds.field("offset", &self.offset());
6873      ds.field("dash_pattern", &self.dash_pattern());
6874      ds.finish()
6875  }
6876}
6877pub enum CustomHatchPatternOffset {}
6878#[derive(Copy, Clone, PartialEq)]
6879
6880pub struct CustomHatchPattern<'a> {
6881  pub _tab: flatbuffers::Table<'a>,
6882}
6883
6884impl<'a> flatbuffers::Follow<'a> for CustomHatchPattern<'a> {
6885  type Inner = CustomHatchPattern<'a>;
6886  #[inline]
6887  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
6888    Self { _tab: flatbuffers::Table::new(buf, loc) }
6889  }
6890}
6891
6892impl<'a> CustomHatchPattern<'a> {
6893  pub const VT_NAME: flatbuffers::VOffsetT = 4;
6894  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 6;
6895  pub const VT_LINES: flatbuffers::VOffsetT = 8;
6896
6897  #[inline]
6898  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
6899    CustomHatchPattern { _tab: table }
6900  }
6901  #[allow(unused_mut)]
6902  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
6903    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
6904    args: &'args CustomHatchPatternArgs<'args>
6905  ) -> flatbuffers::WIPOffset<CustomHatchPattern<'bldr>> {
6906    let mut builder = CustomHatchPatternBuilder::new(_fbb);
6907    if let Some(x) = args.lines { builder.add_lines(x); }
6908    if let Some(x) = args.description { builder.add_description(x); }
6909    if let Some(x) = args.name { builder.add_name(x); }
6910    builder.finish()
6911  }
6912
6913
6914  #[inline]
6915  pub fn name(&self) -> Option<&'a str> {
6916    // Safety:
6917    // Created from valid Table for this object
6918    // which contains a valid value in this slot
6919    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(CustomHatchPattern::VT_NAME, None)}
6920  }
6921  #[inline]
6922  pub fn description(&self) -> Option<&'a str> {
6923    // Safety:
6924    // Created from valid Table for this object
6925    // which contains a valid value in this slot
6926    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(CustomHatchPattern::VT_DESCRIPTION, None)}
6927  }
6928  #[inline]
6929  pub fn lines(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<HatchPatternLine<'a>>>> {
6930    // Safety:
6931    // Created from valid Table for this object
6932    // which contains a valid value in this slot
6933    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<HatchPatternLine>>>>(CustomHatchPattern::VT_LINES, None)}
6934  }
6935}
6936
6937impl flatbuffers::Verifiable for CustomHatchPattern<'_> {
6938  #[inline]
6939  fn run_verifier(
6940    v: &mut flatbuffers::Verifier, pos: usize
6941  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
6942    use self::flatbuffers::Verifiable;
6943    v.visit_table(pos)?
6944     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
6945     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
6946     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<HatchPatternLine>>>>("lines", Self::VT_LINES, false)?
6947     .finish();
6948    Ok(())
6949  }
6950}
6951pub struct CustomHatchPatternArgs<'a> {
6952    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
6953    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
6954    pub lines: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<HatchPatternLine<'a>>>>>,
6955}
6956impl<'a> Default for CustomHatchPatternArgs<'a> {
6957  #[inline]
6958  fn default() -> Self {
6959    CustomHatchPatternArgs {
6960      name: None,
6961      description: None,
6962      lines: None,
6963    }
6964  }
6965}
6966
6967pub struct CustomHatchPatternBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
6968  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
6969  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
6970}
6971impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> CustomHatchPatternBuilder<'a, 'b, A> {
6972  #[inline]
6973  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
6974    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(CustomHatchPattern::VT_NAME, name);
6975  }
6976  #[inline]
6977  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
6978    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(CustomHatchPattern::VT_DESCRIPTION, description);
6979  }
6980  #[inline]
6981  pub fn add_lines(&mut self, lines: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<HatchPatternLine<'b >>>>) {
6982    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(CustomHatchPattern::VT_LINES, lines);
6983  }
6984  #[inline]
6985  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> CustomHatchPatternBuilder<'a, 'b, A> {
6986    let start = _fbb.start_table();
6987    CustomHatchPatternBuilder {
6988      fbb_: _fbb,
6989      start_: start,
6990    }
6991  }
6992  #[inline]
6993  pub fn finish(self) -> flatbuffers::WIPOffset<CustomHatchPattern<'a>> {
6994    let o = self.fbb_.end_table(self.start_);
6995    flatbuffers::WIPOffset::new(o.value())
6996  }
6997}
6998
6999impl core::fmt::Debug for CustomHatchPattern<'_> {
7000  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7001    let mut ds = f.debug_struct("CustomHatchPattern");
7002      ds.field("name", &self.name());
7003      ds.field("description", &self.description());
7004      ds.field("lines", &self.lines());
7005      ds.finish()
7006  }
7007}
7008pub enum DucHatchStyleOffset {}
7009#[derive(Copy, Clone, PartialEq)]
7010
7011pub struct DucHatchStyle<'a> {
7012  pub _tab: flatbuffers::Table<'a>,
7013}
7014
7015impl<'a> flatbuffers::Follow<'a> for DucHatchStyle<'a> {
7016  type Inner = DucHatchStyle<'a>;
7017  #[inline]
7018  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7019    Self { _tab: flatbuffers::Table::new(buf, loc) }
7020  }
7021}
7022
7023impl<'a> DucHatchStyle<'a> {
7024  pub const VT_HATCH_STYLE: flatbuffers::VOffsetT = 4;
7025  pub const VT_PATTERN_NAME: flatbuffers::VOffsetT = 6;
7026  pub const VT_PATTERN_SCALE: flatbuffers::VOffsetT = 8;
7027  pub const VT_PATTERN_ANGLE: flatbuffers::VOffsetT = 10;
7028  pub const VT_PATTERN_ORIGIN: flatbuffers::VOffsetT = 12;
7029  pub const VT_PATTERN_DOUBLE: flatbuffers::VOffsetT = 14;
7030  pub const VT_CUSTOM_PATTERN: flatbuffers::VOffsetT = 16;
7031
7032  #[inline]
7033  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7034    DucHatchStyle { _tab: table }
7035  }
7036  #[allow(unused_mut)]
7037  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7038    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7039    args: &'args DucHatchStyleArgs<'args>
7040  ) -> flatbuffers::WIPOffset<DucHatchStyle<'bldr>> {
7041    let mut builder = DucHatchStyleBuilder::new(_fbb);
7042    builder.add_pattern_angle(args.pattern_angle);
7043    if let Some(x) = args.custom_pattern { builder.add_custom_pattern(x); }
7044    if let Some(x) = args.pattern_origin { builder.add_pattern_origin(x); }
7045    builder.add_pattern_scale(args.pattern_scale);
7046    if let Some(x) = args.pattern_name { builder.add_pattern_name(x); }
7047    builder.add_pattern_double(args.pattern_double);
7048    if let Some(x) = args.hatch_style { builder.add_hatch_style(x); }
7049    builder.finish()
7050  }
7051
7052
7053  #[inline]
7054  pub fn hatch_style(&self) -> Option<HATCH_STYLE> {
7055    // Safety:
7056    // Created from valid Table for this object
7057    // which contains a valid value in this slot
7058    unsafe { self._tab.get::<HATCH_STYLE>(DucHatchStyle::VT_HATCH_STYLE, None)}
7059  }
7060  #[inline]
7061  pub fn pattern_name(&self) -> Option<&'a str> {
7062    // Safety:
7063    // Created from valid Table for this object
7064    // which contains a valid value in this slot
7065    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucHatchStyle::VT_PATTERN_NAME, None)}
7066  }
7067  #[inline]
7068  pub fn pattern_scale(&self) -> f32 {
7069    // Safety:
7070    // Created from valid Table for this object
7071    // which contains a valid value in this slot
7072    unsafe { self._tab.get::<f32>(DucHatchStyle::VT_PATTERN_SCALE, Some(0.0)).unwrap()}
7073  }
7074  #[inline]
7075  pub fn pattern_angle(&self) -> f64 {
7076    // Safety:
7077    // Created from valid Table for this object
7078    // which contains a valid value in this slot
7079    unsafe { self._tab.get::<f64>(DucHatchStyle::VT_PATTERN_ANGLE, Some(0.0)).unwrap()}
7080  }
7081  #[inline]
7082  pub fn pattern_origin(&self) -> Option<DucPoint<'a>> {
7083    // Safety:
7084    // Created from valid Table for this object
7085    // which contains a valid value in this slot
7086    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(DucHatchStyle::VT_PATTERN_ORIGIN, None)}
7087  }
7088  #[inline]
7089  pub fn pattern_double(&self) -> bool {
7090    // Safety:
7091    // Created from valid Table for this object
7092    // which contains a valid value in this slot
7093    unsafe { self._tab.get::<bool>(DucHatchStyle::VT_PATTERN_DOUBLE, Some(false)).unwrap()}
7094  }
7095  #[inline]
7096  pub fn custom_pattern(&self) -> Option<CustomHatchPattern<'a>> {
7097    // Safety:
7098    // Created from valid Table for this object
7099    // which contains a valid value in this slot
7100    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<CustomHatchPattern>>(DucHatchStyle::VT_CUSTOM_PATTERN, None)}
7101  }
7102}
7103
7104impl flatbuffers::Verifiable for DucHatchStyle<'_> {
7105  #[inline]
7106  fn run_verifier(
7107    v: &mut flatbuffers::Verifier, pos: usize
7108  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7109    use self::flatbuffers::Verifiable;
7110    v.visit_table(pos)?
7111     .visit_field::<HATCH_STYLE>("hatch_style", Self::VT_HATCH_STYLE, false)?
7112     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("pattern_name", Self::VT_PATTERN_NAME, false)?
7113     .visit_field::<f32>("pattern_scale", Self::VT_PATTERN_SCALE, false)?
7114     .visit_field::<f64>("pattern_angle", Self::VT_PATTERN_ANGLE, false)?
7115     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("pattern_origin", Self::VT_PATTERN_ORIGIN, false)?
7116     .visit_field::<bool>("pattern_double", Self::VT_PATTERN_DOUBLE, false)?
7117     .visit_field::<flatbuffers::ForwardsUOffset<CustomHatchPattern>>("custom_pattern", Self::VT_CUSTOM_PATTERN, false)?
7118     .finish();
7119    Ok(())
7120  }
7121}
7122pub struct DucHatchStyleArgs<'a> {
7123    pub hatch_style: Option<HATCH_STYLE>,
7124    pub pattern_name: Option<flatbuffers::WIPOffset<&'a str>>,
7125    pub pattern_scale: f32,
7126    pub pattern_angle: f64,
7127    pub pattern_origin: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
7128    pub pattern_double: bool,
7129    pub custom_pattern: Option<flatbuffers::WIPOffset<CustomHatchPattern<'a>>>,
7130}
7131impl<'a> Default for DucHatchStyleArgs<'a> {
7132  #[inline]
7133  fn default() -> Self {
7134    DucHatchStyleArgs {
7135      hatch_style: None,
7136      pattern_name: None,
7137      pattern_scale: 0.0,
7138      pattern_angle: 0.0,
7139      pattern_origin: None,
7140      pattern_double: false,
7141      custom_pattern: None,
7142    }
7143  }
7144}
7145
7146pub struct DucHatchStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7147  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7148  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7149}
7150impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucHatchStyleBuilder<'a, 'b, A> {
7151  #[inline]
7152  pub fn add_hatch_style(&mut self, hatch_style: HATCH_STYLE) {
7153    self.fbb_.push_slot_always::<HATCH_STYLE>(DucHatchStyle::VT_HATCH_STYLE, hatch_style);
7154  }
7155  #[inline]
7156  pub fn add_pattern_name(&mut self, pattern_name: flatbuffers::WIPOffset<&'b  str>) {
7157    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucHatchStyle::VT_PATTERN_NAME, pattern_name);
7158  }
7159  #[inline]
7160  pub fn add_pattern_scale(&mut self, pattern_scale: f32) {
7161    self.fbb_.push_slot::<f32>(DucHatchStyle::VT_PATTERN_SCALE, pattern_scale, 0.0);
7162  }
7163  #[inline]
7164  pub fn add_pattern_angle(&mut self, pattern_angle: f64) {
7165    self.fbb_.push_slot::<f64>(DucHatchStyle::VT_PATTERN_ANGLE, pattern_angle, 0.0);
7166  }
7167  #[inline]
7168  pub fn add_pattern_origin(&mut self, pattern_origin: flatbuffers::WIPOffset<DucPoint<'b >>) {
7169    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(DucHatchStyle::VT_PATTERN_ORIGIN, pattern_origin);
7170  }
7171  #[inline]
7172  pub fn add_pattern_double(&mut self, pattern_double: bool) {
7173    self.fbb_.push_slot::<bool>(DucHatchStyle::VT_PATTERN_DOUBLE, pattern_double, false);
7174  }
7175  #[inline]
7176  pub fn add_custom_pattern(&mut self, custom_pattern: flatbuffers::WIPOffset<CustomHatchPattern<'b >>) {
7177    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<CustomHatchPattern>>(DucHatchStyle::VT_CUSTOM_PATTERN, custom_pattern);
7178  }
7179  #[inline]
7180  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucHatchStyleBuilder<'a, 'b, A> {
7181    let start = _fbb.start_table();
7182    DucHatchStyleBuilder {
7183      fbb_: _fbb,
7184      start_: start,
7185    }
7186  }
7187  #[inline]
7188  pub fn finish(self) -> flatbuffers::WIPOffset<DucHatchStyle<'a>> {
7189    let o = self.fbb_.end_table(self.start_);
7190    flatbuffers::WIPOffset::new(o.value())
7191  }
7192}
7193
7194impl core::fmt::Debug for DucHatchStyle<'_> {
7195  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7196    let mut ds = f.debug_struct("DucHatchStyle");
7197      ds.field("hatch_style", &self.hatch_style());
7198      ds.field("pattern_name", &self.pattern_name());
7199      ds.field("pattern_scale", &self.pattern_scale());
7200      ds.field("pattern_angle", &self.pattern_angle());
7201      ds.field("pattern_origin", &self.pattern_origin());
7202      ds.field("pattern_double", &self.pattern_double());
7203      ds.field("custom_pattern", &self.custom_pattern());
7204      ds.finish()
7205  }
7206}
7207pub enum DucImageFilterOffset {}
7208#[derive(Copy, Clone, PartialEq)]
7209
7210pub struct DucImageFilter<'a> {
7211  pub _tab: flatbuffers::Table<'a>,
7212}
7213
7214impl<'a> flatbuffers::Follow<'a> for DucImageFilter<'a> {
7215  type Inner = DucImageFilter<'a>;
7216  #[inline]
7217  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7218    Self { _tab: flatbuffers::Table::new(buf, loc) }
7219  }
7220}
7221
7222impl<'a> DucImageFilter<'a> {
7223  pub const VT_BRIGHTNESS: flatbuffers::VOffsetT = 4;
7224  pub const VT_CONTRAST: flatbuffers::VOffsetT = 6;
7225
7226  #[inline]
7227  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7228    DucImageFilter { _tab: table }
7229  }
7230  #[allow(unused_mut)]
7231  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7232    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7233    args: &'args DucImageFilterArgs
7234  ) -> flatbuffers::WIPOffset<DucImageFilter<'bldr>> {
7235    let mut builder = DucImageFilterBuilder::new(_fbb);
7236    builder.add_contrast(args.contrast);
7237    builder.add_brightness(args.brightness);
7238    builder.finish()
7239  }
7240
7241
7242  #[inline]
7243  pub fn brightness(&self) -> f32 {
7244    // Safety:
7245    // Created from valid Table for this object
7246    // which contains a valid value in this slot
7247    unsafe { self._tab.get::<f32>(DucImageFilter::VT_BRIGHTNESS, Some(0.0)).unwrap()}
7248  }
7249  #[inline]
7250  pub fn contrast(&self) -> f32 {
7251    // Safety:
7252    // Created from valid Table for this object
7253    // which contains a valid value in this slot
7254    unsafe { self._tab.get::<f32>(DucImageFilter::VT_CONTRAST, Some(0.0)).unwrap()}
7255  }
7256}
7257
7258impl flatbuffers::Verifiable for DucImageFilter<'_> {
7259  #[inline]
7260  fn run_verifier(
7261    v: &mut flatbuffers::Verifier, pos: usize
7262  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7263    use self::flatbuffers::Verifiable;
7264    v.visit_table(pos)?
7265     .visit_field::<f32>("brightness", Self::VT_BRIGHTNESS, false)?
7266     .visit_field::<f32>("contrast", Self::VT_CONTRAST, false)?
7267     .finish();
7268    Ok(())
7269  }
7270}
7271pub struct DucImageFilterArgs {
7272    pub brightness: f32,
7273    pub contrast: f32,
7274}
7275impl<'a> Default for DucImageFilterArgs {
7276  #[inline]
7277  fn default() -> Self {
7278    DucImageFilterArgs {
7279      brightness: 0.0,
7280      contrast: 0.0,
7281    }
7282  }
7283}
7284
7285pub struct DucImageFilterBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7286  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7287  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7288}
7289impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucImageFilterBuilder<'a, 'b, A> {
7290  #[inline]
7291  pub fn add_brightness(&mut self, brightness: f32) {
7292    self.fbb_.push_slot::<f32>(DucImageFilter::VT_BRIGHTNESS, brightness, 0.0);
7293  }
7294  #[inline]
7295  pub fn add_contrast(&mut self, contrast: f32) {
7296    self.fbb_.push_slot::<f32>(DucImageFilter::VT_CONTRAST, contrast, 0.0);
7297  }
7298  #[inline]
7299  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucImageFilterBuilder<'a, 'b, A> {
7300    let start = _fbb.start_table();
7301    DucImageFilterBuilder {
7302      fbb_: _fbb,
7303      start_: start,
7304    }
7305  }
7306  #[inline]
7307  pub fn finish(self) -> flatbuffers::WIPOffset<DucImageFilter<'a>> {
7308    let o = self.fbb_.end_table(self.start_);
7309    flatbuffers::WIPOffset::new(o.value())
7310  }
7311}
7312
7313impl core::fmt::Debug for DucImageFilter<'_> {
7314  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7315    let mut ds = f.debug_struct("DucImageFilter");
7316      ds.field("brightness", &self.brightness());
7317      ds.field("contrast", &self.contrast());
7318      ds.finish()
7319  }
7320}
7321pub enum ElementContentBaseOffset {}
7322#[derive(Copy, Clone, PartialEq)]
7323
7324pub struct ElementContentBase<'a> {
7325  pub _tab: flatbuffers::Table<'a>,
7326}
7327
7328impl<'a> flatbuffers::Follow<'a> for ElementContentBase<'a> {
7329  type Inner = ElementContentBase<'a>;
7330  #[inline]
7331  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7332    Self { _tab: flatbuffers::Table::new(buf, loc) }
7333  }
7334}
7335
7336impl<'a> ElementContentBase<'a> {
7337  pub const VT_PREFERENCE: flatbuffers::VOffsetT = 4;
7338  pub const VT_SRC: flatbuffers::VOffsetT = 6;
7339  pub const VT_VISIBLE: flatbuffers::VOffsetT = 8;
7340  pub const VT_OPACITY: flatbuffers::VOffsetT = 10;
7341  pub const VT_TILING: flatbuffers::VOffsetT = 12;
7342  pub const VT_HATCH: flatbuffers::VOffsetT = 14;
7343  pub const VT_IMAGE_FILTER: flatbuffers::VOffsetT = 16;
7344
7345  #[inline]
7346  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7347    ElementContentBase { _tab: table }
7348  }
7349  #[allow(unused_mut)]
7350  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7351    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7352    args: &'args ElementContentBaseArgs<'args>
7353  ) -> flatbuffers::WIPOffset<ElementContentBase<'bldr>> {
7354    let mut builder = ElementContentBaseBuilder::new(_fbb);
7355    builder.add_opacity(args.opacity);
7356    if let Some(x) = args.image_filter { builder.add_image_filter(x); }
7357    if let Some(x) = args.hatch { builder.add_hatch(x); }
7358    if let Some(x) = args.tiling { builder.add_tiling(x); }
7359    if let Some(x) = args.src { builder.add_src(x); }
7360    builder.add_visible(args.visible);
7361    if let Some(x) = args.preference { builder.add_preference(x); }
7362    builder.finish()
7363  }
7364
7365
7366  #[inline]
7367  pub fn preference(&self) -> Option<ELEMENT_CONTENT_PREFERENCE> {
7368    // Safety:
7369    // Created from valid Table for this object
7370    // which contains a valid value in this slot
7371    unsafe { self._tab.get::<ELEMENT_CONTENT_PREFERENCE>(ElementContentBase::VT_PREFERENCE, None)}
7372  }
7373  #[inline]
7374  pub fn src(&self) -> Option<&'a str> {
7375    // Safety:
7376    // Created from valid Table for this object
7377    // which contains a valid value in this slot
7378    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ElementContentBase::VT_SRC, None)}
7379  }
7380  #[inline]
7381  pub fn visible(&self) -> bool {
7382    // Safety:
7383    // Created from valid Table for this object
7384    // which contains a valid value in this slot
7385    unsafe { self._tab.get::<bool>(ElementContentBase::VT_VISIBLE, Some(false)).unwrap()}
7386  }
7387  #[inline]
7388  pub fn opacity(&self) -> f64 {
7389    // Safety:
7390    // Created from valid Table for this object
7391    // which contains a valid value in this slot
7392    unsafe { self._tab.get::<f64>(ElementContentBase::VT_OPACITY, Some(0.0)).unwrap()}
7393  }
7394  #[inline]
7395  pub fn tiling(&self) -> Option<TilingProperties<'a>> {
7396    // Safety:
7397    // Created from valid Table for this object
7398    // which contains a valid value in this slot
7399    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<TilingProperties>>(ElementContentBase::VT_TILING, None)}
7400  }
7401  #[inline]
7402  pub fn hatch(&self) -> Option<DucHatchStyle<'a>> {
7403    // Safety:
7404    // Created from valid Table for this object
7405    // which contains a valid value in this slot
7406    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucHatchStyle>>(ElementContentBase::VT_HATCH, None)}
7407  }
7408  #[inline]
7409  pub fn image_filter(&self) -> Option<DucImageFilter<'a>> {
7410    // Safety:
7411    // Created from valid Table for this object
7412    // which contains a valid value in this slot
7413    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucImageFilter>>(ElementContentBase::VT_IMAGE_FILTER, None)}
7414  }
7415}
7416
7417impl flatbuffers::Verifiable for ElementContentBase<'_> {
7418  #[inline]
7419  fn run_verifier(
7420    v: &mut flatbuffers::Verifier, pos: usize
7421  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7422    use self::flatbuffers::Verifiable;
7423    v.visit_table(pos)?
7424     .visit_field::<ELEMENT_CONTENT_PREFERENCE>("preference", Self::VT_PREFERENCE, false)?
7425     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("src", Self::VT_SRC, false)?
7426     .visit_field::<bool>("visible", Self::VT_VISIBLE, false)?
7427     .visit_field::<f64>("opacity", Self::VT_OPACITY, false)?
7428     .visit_field::<flatbuffers::ForwardsUOffset<TilingProperties>>("tiling", Self::VT_TILING, false)?
7429     .visit_field::<flatbuffers::ForwardsUOffset<DucHatchStyle>>("hatch", Self::VT_HATCH, false)?
7430     .visit_field::<flatbuffers::ForwardsUOffset<DucImageFilter>>("image_filter", Self::VT_IMAGE_FILTER, false)?
7431     .finish();
7432    Ok(())
7433  }
7434}
7435pub struct ElementContentBaseArgs<'a> {
7436    pub preference: Option<ELEMENT_CONTENT_PREFERENCE>,
7437    pub src: Option<flatbuffers::WIPOffset<&'a str>>,
7438    pub visible: bool,
7439    pub opacity: f64,
7440    pub tiling: Option<flatbuffers::WIPOffset<TilingProperties<'a>>>,
7441    pub hatch: Option<flatbuffers::WIPOffset<DucHatchStyle<'a>>>,
7442    pub image_filter: Option<flatbuffers::WIPOffset<DucImageFilter<'a>>>,
7443}
7444impl<'a> Default for ElementContentBaseArgs<'a> {
7445  #[inline]
7446  fn default() -> Self {
7447    ElementContentBaseArgs {
7448      preference: None,
7449      src: None,
7450      visible: false,
7451      opacity: 0.0,
7452      tiling: None,
7453      hatch: None,
7454      image_filter: None,
7455    }
7456  }
7457}
7458
7459pub struct ElementContentBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7460  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7461  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7462}
7463impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ElementContentBaseBuilder<'a, 'b, A> {
7464  #[inline]
7465  pub fn add_preference(&mut self, preference: ELEMENT_CONTENT_PREFERENCE) {
7466    self.fbb_.push_slot_always::<ELEMENT_CONTENT_PREFERENCE>(ElementContentBase::VT_PREFERENCE, preference);
7467  }
7468  #[inline]
7469  pub fn add_src(&mut self, src: flatbuffers::WIPOffset<&'b  str>) {
7470    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ElementContentBase::VT_SRC, src);
7471  }
7472  #[inline]
7473  pub fn add_visible(&mut self, visible: bool) {
7474    self.fbb_.push_slot::<bool>(ElementContentBase::VT_VISIBLE, visible, false);
7475  }
7476  #[inline]
7477  pub fn add_opacity(&mut self, opacity: f64) {
7478    self.fbb_.push_slot::<f64>(ElementContentBase::VT_OPACITY, opacity, 0.0);
7479  }
7480  #[inline]
7481  pub fn add_tiling(&mut self, tiling: flatbuffers::WIPOffset<TilingProperties<'b >>) {
7482    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<TilingProperties>>(ElementContentBase::VT_TILING, tiling);
7483  }
7484  #[inline]
7485  pub fn add_hatch(&mut self, hatch: flatbuffers::WIPOffset<DucHatchStyle<'b >>) {
7486    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucHatchStyle>>(ElementContentBase::VT_HATCH, hatch);
7487  }
7488  #[inline]
7489  pub fn add_image_filter(&mut self, image_filter: flatbuffers::WIPOffset<DucImageFilter<'b >>) {
7490    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucImageFilter>>(ElementContentBase::VT_IMAGE_FILTER, image_filter);
7491  }
7492  #[inline]
7493  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ElementContentBaseBuilder<'a, 'b, A> {
7494    let start = _fbb.start_table();
7495    ElementContentBaseBuilder {
7496      fbb_: _fbb,
7497      start_: start,
7498    }
7499  }
7500  #[inline]
7501  pub fn finish(self) -> flatbuffers::WIPOffset<ElementContentBase<'a>> {
7502    let o = self.fbb_.end_table(self.start_);
7503    flatbuffers::WIPOffset::new(o.value())
7504  }
7505}
7506
7507impl core::fmt::Debug for ElementContentBase<'_> {
7508  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7509    let mut ds = f.debug_struct("ElementContentBase");
7510      ds.field("preference", &self.preference());
7511      ds.field("src", &self.src());
7512      ds.field("visible", &self.visible());
7513      ds.field("opacity", &self.opacity());
7514      ds.field("tiling", &self.tiling());
7515      ds.field("hatch", &self.hatch());
7516      ds.field("image_filter", &self.image_filter());
7517      ds.finish()
7518  }
7519}
7520pub enum StrokeStyleOffset {}
7521#[derive(Copy, Clone, PartialEq)]
7522
7523pub struct StrokeStyle<'a> {
7524  pub _tab: flatbuffers::Table<'a>,
7525}
7526
7527impl<'a> flatbuffers::Follow<'a> for StrokeStyle<'a> {
7528  type Inner = StrokeStyle<'a>;
7529  #[inline]
7530  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7531    Self { _tab: flatbuffers::Table::new(buf, loc) }
7532  }
7533}
7534
7535impl<'a> StrokeStyle<'a> {
7536  pub const VT_PREFERENCE: flatbuffers::VOffsetT = 4;
7537  pub const VT_CAP: flatbuffers::VOffsetT = 6;
7538  pub const VT_JOIN: flatbuffers::VOffsetT = 8;
7539  pub const VT_DASH: flatbuffers::VOffsetT = 10;
7540  pub const VT_DASH_LINE_OVERRIDE: flatbuffers::VOffsetT = 12;
7541  pub const VT_DASH_CAP: flatbuffers::VOffsetT = 14;
7542  pub const VT_MITER_LIMIT: flatbuffers::VOffsetT = 16;
7543
7544  #[inline]
7545  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7546    StrokeStyle { _tab: table }
7547  }
7548  #[allow(unused_mut)]
7549  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7550    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7551    args: &'args StrokeStyleArgs<'args>
7552  ) -> flatbuffers::WIPOffset<StrokeStyle<'bldr>> {
7553    let mut builder = StrokeStyleBuilder::new(_fbb);
7554    if let Some(x) = args.miter_limit { builder.add_miter_limit(x); }
7555    if let Some(x) = args.dash_line_override { builder.add_dash_line_override(x); }
7556    if let Some(x) = args.dash { builder.add_dash(x); }
7557    if let Some(x) = args.dash_cap { builder.add_dash_cap(x); }
7558    if let Some(x) = args.join { builder.add_join(x); }
7559    if let Some(x) = args.cap { builder.add_cap(x); }
7560    if let Some(x) = args.preference { builder.add_preference(x); }
7561    builder.finish()
7562  }
7563
7564
7565  #[inline]
7566  pub fn preference(&self) -> Option<STROKE_PREFERENCE> {
7567    // Safety:
7568    // Created from valid Table for this object
7569    // which contains a valid value in this slot
7570    unsafe { self._tab.get::<STROKE_PREFERENCE>(StrokeStyle::VT_PREFERENCE, None)}
7571  }
7572  #[inline]
7573  pub fn cap(&self) -> Option<STROKE_CAP> {
7574    // Safety:
7575    // Created from valid Table for this object
7576    // which contains a valid value in this slot
7577    unsafe { self._tab.get::<STROKE_CAP>(StrokeStyle::VT_CAP, None)}
7578  }
7579  #[inline]
7580  pub fn join(&self) -> Option<STROKE_JOIN> {
7581    // Safety:
7582    // Created from valid Table for this object
7583    // which contains a valid value in this slot
7584    unsafe { self._tab.get::<STROKE_JOIN>(StrokeStyle::VT_JOIN, None)}
7585  }
7586  #[inline]
7587  pub fn dash(&self) -> Option<flatbuffers::Vector<'a, f64>> {
7588    // Safety:
7589    // Created from valid Table for this object
7590    // which contains a valid value in this slot
7591    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(StrokeStyle::VT_DASH, None)}
7592  }
7593  #[inline]
7594  pub fn dash_line_override(&self) -> Option<&'a str> {
7595    // Safety:
7596    // Created from valid Table for this object
7597    // which contains a valid value in this slot
7598    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StrokeStyle::VT_DASH_LINE_OVERRIDE, None)}
7599  }
7600  #[inline]
7601  pub fn dash_cap(&self) -> Option<STROKE_CAP> {
7602    // Safety:
7603    // Created from valid Table for this object
7604    // which contains a valid value in this slot
7605    unsafe { self._tab.get::<STROKE_CAP>(StrokeStyle::VT_DASH_CAP, None)}
7606  }
7607  #[inline]
7608  pub fn miter_limit(&self) -> Option<f64> {
7609    // Safety:
7610    // Created from valid Table for this object
7611    // which contains a valid value in this slot
7612    unsafe { self._tab.get::<f64>(StrokeStyle::VT_MITER_LIMIT, None)}
7613  }
7614}
7615
7616impl flatbuffers::Verifiable for StrokeStyle<'_> {
7617  #[inline]
7618  fn run_verifier(
7619    v: &mut flatbuffers::Verifier, pos: usize
7620  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7621    use self::flatbuffers::Verifiable;
7622    v.visit_table(pos)?
7623     .visit_field::<STROKE_PREFERENCE>("preference", Self::VT_PREFERENCE, false)?
7624     .visit_field::<STROKE_CAP>("cap", Self::VT_CAP, false)?
7625     .visit_field::<STROKE_JOIN>("join", Self::VT_JOIN, false)?
7626     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("dash", Self::VT_DASH, false)?
7627     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("dash_line_override", Self::VT_DASH_LINE_OVERRIDE, false)?
7628     .visit_field::<STROKE_CAP>("dash_cap", Self::VT_DASH_CAP, false)?
7629     .visit_field::<f64>("miter_limit", Self::VT_MITER_LIMIT, false)?
7630     .finish();
7631    Ok(())
7632  }
7633}
7634pub struct StrokeStyleArgs<'a> {
7635    pub preference: Option<STROKE_PREFERENCE>,
7636    pub cap: Option<STROKE_CAP>,
7637    pub join: Option<STROKE_JOIN>,
7638    pub dash: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
7639    pub dash_line_override: Option<flatbuffers::WIPOffset<&'a str>>,
7640    pub dash_cap: Option<STROKE_CAP>,
7641    pub miter_limit: Option<f64>,
7642}
7643impl<'a> Default for StrokeStyleArgs<'a> {
7644  #[inline]
7645  fn default() -> Self {
7646    StrokeStyleArgs {
7647      preference: None,
7648      cap: None,
7649      join: None,
7650      dash: None,
7651      dash_line_override: None,
7652      dash_cap: None,
7653      miter_limit: None,
7654    }
7655  }
7656}
7657
7658pub struct StrokeStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7659  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7660  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7661}
7662impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StrokeStyleBuilder<'a, 'b, A> {
7663  #[inline]
7664  pub fn add_preference(&mut self, preference: STROKE_PREFERENCE) {
7665    self.fbb_.push_slot_always::<STROKE_PREFERENCE>(StrokeStyle::VT_PREFERENCE, preference);
7666  }
7667  #[inline]
7668  pub fn add_cap(&mut self, cap: STROKE_CAP) {
7669    self.fbb_.push_slot_always::<STROKE_CAP>(StrokeStyle::VT_CAP, cap);
7670  }
7671  #[inline]
7672  pub fn add_join(&mut self, join: STROKE_JOIN) {
7673    self.fbb_.push_slot_always::<STROKE_JOIN>(StrokeStyle::VT_JOIN, join);
7674  }
7675  #[inline]
7676  pub fn add_dash(&mut self, dash: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
7677    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StrokeStyle::VT_DASH, dash);
7678  }
7679  #[inline]
7680  pub fn add_dash_line_override(&mut self, dash_line_override: flatbuffers::WIPOffset<&'b  str>) {
7681    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StrokeStyle::VT_DASH_LINE_OVERRIDE, dash_line_override);
7682  }
7683  #[inline]
7684  pub fn add_dash_cap(&mut self, dash_cap: STROKE_CAP) {
7685    self.fbb_.push_slot_always::<STROKE_CAP>(StrokeStyle::VT_DASH_CAP, dash_cap);
7686  }
7687  #[inline]
7688  pub fn add_miter_limit(&mut self, miter_limit: f64) {
7689    self.fbb_.push_slot_always::<f64>(StrokeStyle::VT_MITER_LIMIT, miter_limit);
7690  }
7691  #[inline]
7692  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StrokeStyleBuilder<'a, 'b, A> {
7693    let start = _fbb.start_table();
7694    StrokeStyleBuilder {
7695      fbb_: _fbb,
7696      start_: start,
7697    }
7698  }
7699  #[inline]
7700  pub fn finish(self) -> flatbuffers::WIPOffset<StrokeStyle<'a>> {
7701    let o = self.fbb_.end_table(self.start_);
7702    flatbuffers::WIPOffset::new(o.value())
7703  }
7704}
7705
7706impl core::fmt::Debug for StrokeStyle<'_> {
7707  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7708    let mut ds = f.debug_struct("StrokeStyle");
7709      ds.field("preference", &self.preference());
7710      ds.field("cap", &self.cap());
7711      ds.field("join", &self.join());
7712      ds.field("dash", &self.dash());
7713      ds.field("dash_line_override", &self.dash_line_override());
7714      ds.field("dash_cap", &self.dash_cap());
7715      ds.field("miter_limit", &self.miter_limit());
7716      ds.finish()
7717  }
7718}
7719pub enum StrokeSidesOffset {}
7720#[derive(Copy, Clone, PartialEq)]
7721
7722pub struct StrokeSides<'a> {
7723  pub _tab: flatbuffers::Table<'a>,
7724}
7725
7726impl<'a> flatbuffers::Follow<'a> for StrokeSides<'a> {
7727  type Inner = StrokeSides<'a>;
7728  #[inline]
7729  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7730    Self { _tab: flatbuffers::Table::new(buf, loc) }
7731  }
7732}
7733
7734impl<'a> StrokeSides<'a> {
7735  pub const VT_PREFERENCE: flatbuffers::VOffsetT = 4;
7736  pub const VT_VALUES: flatbuffers::VOffsetT = 6;
7737
7738  #[inline]
7739  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7740    StrokeSides { _tab: table }
7741  }
7742  #[allow(unused_mut)]
7743  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7744    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7745    args: &'args StrokeSidesArgs<'args>
7746  ) -> flatbuffers::WIPOffset<StrokeSides<'bldr>> {
7747    let mut builder = StrokeSidesBuilder::new(_fbb);
7748    if let Some(x) = args.values { builder.add_values(x); }
7749    if let Some(x) = args.preference { builder.add_preference(x); }
7750    builder.finish()
7751  }
7752
7753
7754  #[inline]
7755  pub fn preference(&self) -> Option<STROKE_SIDE_PREFERENCE> {
7756    // Safety:
7757    // Created from valid Table for this object
7758    // which contains a valid value in this slot
7759    unsafe { self._tab.get::<STROKE_SIDE_PREFERENCE>(StrokeSides::VT_PREFERENCE, None)}
7760  }
7761  #[inline]
7762  pub fn values(&self) -> Option<flatbuffers::Vector<'a, f64>> {
7763    // Safety:
7764    // Created from valid Table for this object
7765    // which contains a valid value in this slot
7766    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(StrokeSides::VT_VALUES, None)}
7767  }
7768}
7769
7770impl flatbuffers::Verifiable for StrokeSides<'_> {
7771  #[inline]
7772  fn run_verifier(
7773    v: &mut flatbuffers::Verifier, pos: usize
7774  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7775    use self::flatbuffers::Verifiable;
7776    v.visit_table(pos)?
7777     .visit_field::<STROKE_SIDE_PREFERENCE>("preference", Self::VT_PREFERENCE, false)?
7778     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("values", Self::VT_VALUES, false)?
7779     .finish();
7780    Ok(())
7781  }
7782}
7783pub struct StrokeSidesArgs<'a> {
7784    pub preference: Option<STROKE_SIDE_PREFERENCE>,
7785    pub values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
7786}
7787impl<'a> Default for StrokeSidesArgs<'a> {
7788  #[inline]
7789  fn default() -> Self {
7790    StrokeSidesArgs {
7791      preference: None,
7792      values: None,
7793    }
7794  }
7795}
7796
7797pub struct StrokeSidesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7798  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7799  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7800}
7801impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StrokeSidesBuilder<'a, 'b, A> {
7802  #[inline]
7803  pub fn add_preference(&mut self, preference: STROKE_SIDE_PREFERENCE) {
7804    self.fbb_.push_slot_always::<STROKE_SIDE_PREFERENCE>(StrokeSides::VT_PREFERENCE, preference);
7805  }
7806  #[inline]
7807  pub fn add_values(&mut self, values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
7808    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StrokeSides::VT_VALUES, values);
7809  }
7810  #[inline]
7811  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StrokeSidesBuilder<'a, 'b, A> {
7812    let start = _fbb.start_table();
7813    StrokeSidesBuilder {
7814      fbb_: _fbb,
7815      start_: start,
7816    }
7817  }
7818  #[inline]
7819  pub fn finish(self) -> flatbuffers::WIPOffset<StrokeSides<'a>> {
7820    let o = self.fbb_.end_table(self.start_);
7821    flatbuffers::WIPOffset::new(o.value())
7822  }
7823}
7824
7825impl core::fmt::Debug for StrokeSides<'_> {
7826  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7827    let mut ds = f.debug_struct("StrokeSides");
7828      ds.field("preference", &self.preference());
7829      ds.field("values", &self.values());
7830      ds.finish()
7831  }
7832}
7833pub enum ElementStrokeOffset {}
7834#[derive(Copy, Clone, PartialEq)]
7835
7836pub struct ElementStroke<'a> {
7837  pub _tab: flatbuffers::Table<'a>,
7838}
7839
7840impl<'a> flatbuffers::Follow<'a> for ElementStroke<'a> {
7841  type Inner = ElementStroke<'a>;
7842  #[inline]
7843  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
7844    Self { _tab: flatbuffers::Table::new(buf, loc) }
7845  }
7846}
7847
7848impl<'a> ElementStroke<'a> {
7849  pub const VT_CONTENT: flatbuffers::VOffsetT = 4;
7850  pub const VT_WIDTH: flatbuffers::VOffsetT = 6;
7851  pub const VT_STYLE: flatbuffers::VOffsetT = 8;
7852  pub const VT_PLACEMENT: flatbuffers::VOffsetT = 10;
7853  pub const VT_STROKE_SIDES: flatbuffers::VOffsetT = 12;
7854
7855  #[inline]
7856  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
7857    ElementStroke { _tab: table }
7858  }
7859  #[allow(unused_mut)]
7860  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
7861    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
7862    args: &'args ElementStrokeArgs<'args>
7863  ) -> flatbuffers::WIPOffset<ElementStroke<'bldr>> {
7864    let mut builder = ElementStrokeBuilder::new(_fbb);
7865    builder.add_width(args.width);
7866    if let Some(x) = args.stroke_sides { builder.add_stroke_sides(x); }
7867    if let Some(x) = args.style { builder.add_style(x); }
7868    if let Some(x) = args.content { builder.add_content(x); }
7869    if let Some(x) = args.placement { builder.add_placement(x); }
7870    builder.finish()
7871  }
7872
7873
7874  #[inline]
7875  pub fn content(&self) -> Option<ElementContentBase<'a>> {
7876    // Safety:
7877    // Created from valid Table for this object
7878    // which contains a valid value in this slot
7879    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementContentBase>>(ElementStroke::VT_CONTENT, None)}
7880  }
7881  #[inline]
7882  pub fn width(&self) -> f64 {
7883    // Safety:
7884    // Created from valid Table for this object
7885    // which contains a valid value in this slot
7886    unsafe { self._tab.get::<f64>(ElementStroke::VT_WIDTH, Some(0.0)).unwrap()}
7887  }
7888  #[inline]
7889  pub fn style(&self) -> Option<StrokeStyle<'a>> {
7890    // Safety:
7891    // Created from valid Table for this object
7892    // which contains a valid value in this slot
7893    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StrokeStyle>>(ElementStroke::VT_STYLE, None)}
7894  }
7895  #[inline]
7896  pub fn placement(&self) -> Option<STROKE_PLACEMENT> {
7897    // Safety:
7898    // Created from valid Table for this object
7899    // which contains a valid value in this slot
7900    unsafe { self._tab.get::<STROKE_PLACEMENT>(ElementStroke::VT_PLACEMENT, None)}
7901  }
7902  #[inline]
7903  pub fn stroke_sides(&self) -> Option<StrokeSides<'a>> {
7904    // Safety:
7905    // Created from valid Table for this object
7906    // which contains a valid value in this slot
7907    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StrokeSides>>(ElementStroke::VT_STROKE_SIDES, None)}
7908  }
7909}
7910
7911impl flatbuffers::Verifiable for ElementStroke<'_> {
7912  #[inline]
7913  fn run_verifier(
7914    v: &mut flatbuffers::Verifier, pos: usize
7915  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
7916    use self::flatbuffers::Verifiable;
7917    v.visit_table(pos)?
7918     .visit_field::<flatbuffers::ForwardsUOffset<ElementContentBase>>("content", Self::VT_CONTENT, false)?
7919     .visit_field::<f64>("width", Self::VT_WIDTH, false)?
7920     .visit_field::<flatbuffers::ForwardsUOffset<StrokeStyle>>("style", Self::VT_STYLE, false)?
7921     .visit_field::<STROKE_PLACEMENT>("placement", Self::VT_PLACEMENT, false)?
7922     .visit_field::<flatbuffers::ForwardsUOffset<StrokeSides>>("stroke_sides", Self::VT_STROKE_SIDES, false)?
7923     .finish();
7924    Ok(())
7925  }
7926}
7927pub struct ElementStrokeArgs<'a> {
7928    pub content: Option<flatbuffers::WIPOffset<ElementContentBase<'a>>>,
7929    pub width: f64,
7930    pub style: Option<flatbuffers::WIPOffset<StrokeStyle<'a>>>,
7931    pub placement: Option<STROKE_PLACEMENT>,
7932    pub stroke_sides: Option<flatbuffers::WIPOffset<StrokeSides<'a>>>,
7933}
7934impl<'a> Default for ElementStrokeArgs<'a> {
7935  #[inline]
7936  fn default() -> Self {
7937    ElementStrokeArgs {
7938      content: None,
7939      width: 0.0,
7940      style: None,
7941      placement: None,
7942      stroke_sides: None,
7943    }
7944  }
7945}
7946
7947pub struct ElementStrokeBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
7948  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
7949  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
7950}
7951impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ElementStrokeBuilder<'a, 'b, A> {
7952  #[inline]
7953  pub fn add_content(&mut self, content: flatbuffers::WIPOffset<ElementContentBase<'b >>) {
7954    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementContentBase>>(ElementStroke::VT_CONTENT, content);
7955  }
7956  #[inline]
7957  pub fn add_width(&mut self, width: f64) {
7958    self.fbb_.push_slot::<f64>(ElementStroke::VT_WIDTH, width, 0.0);
7959  }
7960  #[inline]
7961  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<StrokeStyle<'b >>) {
7962    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StrokeStyle>>(ElementStroke::VT_STYLE, style);
7963  }
7964  #[inline]
7965  pub fn add_placement(&mut self, placement: STROKE_PLACEMENT) {
7966    self.fbb_.push_slot_always::<STROKE_PLACEMENT>(ElementStroke::VT_PLACEMENT, placement);
7967  }
7968  #[inline]
7969  pub fn add_stroke_sides(&mut self, stroke_sides: flatbuffers::WIPOffset<StrokeSides<'b >>) {
7970    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StrokeSides>>(ElementStroke::VT_STROKE_SIDES, stroke_sides);
7971  }
7972  #[inline]
7973  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ElementStrokeBuilder<'a, 'b, A> {
7974    let start = _fbb.start_table();
7975    ElementStrokeBuilder {
7976      fbb_: _fbb,
7977      start_: start,
7978    }
7979  }
7980  #[inline]
7981  pub fn finish(self) -> flatbuffers::WIPOffset<ElementStroke<'a>> {
7982    let o = self.fbb_.end_table(self.start_);
7983    flatbuffers::WIPOffset::new(o.value())
7984  }
7985}
7986
7987impl core::fmt::Debug for ElementStroke<'_> {
7988  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7989    let mut ds = f.debug_struct("ElementStroke");
7990      ds.field("content", &self.content());
7991      ds.field("width", &self.width());
7992      ds.field("style", &self.style());
7993      ds.field("placement", &self.placement());
7994      ds.field("stroke_sides", &self.stroke_sides());
7995      ds.finish()
7996  }
7997}
7998pub enum ElementBackgroundOffset {}
7999#[derive(Copy, Clone, PartialEq)]
8000
8001pub struct ElementBackground<'a> {
8002  pub _tab: flatbuffers::Table<'a>,
8003}
8004
8005impl<'a> flatbuffers::Follow<'a> for ElementBackground<'a> {
8006  type Inner = ElementBackground<'a>;
8007  #[inline]
8008  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8009    Self { _tab: flatbuffers::Table::new(buf, loc) }
8010  }
8011}
8012
8013impl<'a> ElementBackground<'a> {
8014  pub const VT_CONTENT: flatbuffers::VOffsetT = 4;
8015
8016  #[inline]
8017  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8018    ElementBackground { _tab: table }
8019  }
8020  #[allow(unused_mut)]
8021  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
8022    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
8023    args: &'args ElementBackgroundArgs<'args>
8024  ) -> flatbuffers::WIPOffset<ElementBackground<'bldr>> {
8025    let mut builder = ElementBackgroundBuilder::new(_fbb);
8026    if let Some(x) = args.content { builder.add_content(x); }
8027    builder.finish()
8028  }
8029
8030
8031  #[inline]
8032  pub fn content(&self) -> Option<ElementContentBase<'a>> {
8033    // Safety:
8034    // Created from valid Table for this object
8035    // which contains a valid value in this slot
8036    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementContentBase>>(ElementBackground::VT_CONTENT, None)}
8037  }
8038}
8039
8040impl flatbuffers::Verifiable for ElementBackground<'_> {
8041  #[inline]
8042  fn run_verifier(
8043    v: &mut flatbuffers::Verifier, pos: usize
8044  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8045    use self::flatbuffers::Verifiable;
8046    v.visit_table(pos)?
8047     .visit_field::<flatbuffers::ForwardsUOffset<ElementContentBase>>("content", Self::VT_CONTENT, false)?
8048     .finish();
8049    Ok(())
8050  }
8051}
8052pub struct ElementBackgroundArgs<'a> {
8053    pub content: Option<flatbuffers::WIPOffset<ElementContentBase<'a>>>,
8054}
8055impl<'a> Default for ElementBackgroundArgs<'a> {
8056  #[inline]
8057  fn default() -> Self {
8058    ElementBackgroundArgs {
8059      content: None,
8060    }
8061  }
8062}
8063
8064pub struct ElementBackgroundBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
8065  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
8066  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8067}
8068impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ElementBackgroundBuilder<'a, 'b, A> {
8069  #[inline]
8070  pub fn add_content(&mut self, content: flatbuffers::WIPOffset<ElementContentBase<'b >>) {
8071    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementContentBase>>(ElementBackground::VT_CONTENT, content);
8072  }
8073  #[inline]
8074  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ElementBackgroundBuilder<'a, 'b, A> {
8075    let start = _fbb.start_table();
8076    ElementBackgroundBuilder {
8077      fbb_: _fbb,
8078      start_: start,
8079    }
8080  }
8081  #[inline]
8082  pub fn finish(self) -> flatbuffers::WIPOffset<ElementBackground<'a>> {
8083    let o = self.fbb_.end_table(self.start_);
8084    flatbuffers::WIPOffset::new(o.value())
8085  }
8086}
8087
8088impl core::fmt::Debug for ElementBackground<'_> {
8089  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8090    let mut ds = f.debug_struct("ElementBackground");
8091      ds.field("content", &self.content());
8092      ds.finish()
8093  }
8094}
8095pub enum _DucElementStylesBaseOffset {}
8096#[derive(Copy, Clone, PartialEq)]
8097
8098pub struct _DucElementStylesBase<'a> {
8099  pub _tab: flatbuffers::Table<'a>,
8100}
8101
8102impl<'a> flatbuffers::Follow<'a> for _DucElementStylesBase<'a> {
8103  type Inner = _DucElementStylesBase<'a>;
8104  #[inline]
8105  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8106    Self { _tab: flatbuffers::Table::new(buf, loc) }
8107  }
8108}
8109
8110impl<'a> _DucElementStylesBase<'a> {
8111  pub const VT_ROUNDNESS: flatbuffers::VOffsetT = 4;
8112  pub const VT_BLENDING: flatbuffers::VOffsetT = 6;
8113  pub const VT_BACKGROUND: flatbuffers::VOffsetT = 8;
8114  pub const VT_STROKE: flatbuffers::VOffsetT = 10;
8115  pub const VT_OPACITY: flatbuffers::VOffsetT = 12;
8116
8117  #[inline]
8118  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8119    _DucElementStylesBase { _tab: table }
8120  }
8121  #[allow(unused_mut)]
8122  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
8123    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
8124    args: &'args _DucElementStylesBaseArgs<'args>
8125  ) -> flatbuffers::WIPOffset<_DucElementStylesBase<'bldr>> {
8126    let mut builder = _DucElementStylesBaseBuilder::new(_fbb);
8127    builder.add_opacity(args.opacity);
8128    builder.add_roundness(args.roundness);
8129    if let Some(x) = args.stroke { builder.add_stroke(x); }
8130    if let Some(x) = args.background { builder.add_background(x); }
8131    if let Some(x) = args.blending { builder.add_blending(x); }
8132    builder.finish()
8133  }
8134
8135
8136  #[inline]
8137  pub fn roundness(&self) -> f64 {
8138    // Safety:
8139    // Created from valid Table for this object
8140    // which contains a valid value in this slot
8141    unsafe { self._tab.get::<f64>(_DucElementStylesBase::VT_ROUNDNESS, Some(0.0)).unwrap()}
8142  }
8143  #[inline]
8144  pub fn blending(&self) -> Option<BLENDING> {
8145    // Safety:
8146    // Created from valid Table for this object
8147    // which contains a valid value in this slot
8148    unsafe { self._tab.get::<BLENDING>(_DucElementStylesBase::VT_BLENDING, None)}
8149  }
8150  #[inline]
8151  pub fn background(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementBackground<'a>>>> {
8152    // Safety:
8153    // Created from valid Table for this object
8154    // which contains a valid value in this slot
8155    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementBackground>>>>(_DucElementStylesBase::VT_BACKGROUND, None)}
8156  }
8157  #[inline]
8158  pub fn stroke(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementStroke<'a>>>> {
8159    // Safety:
8160    // Created from valid Table for this object
8161    // which contains a valid value in this slot
8162    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementStroke>>>>(_DucElementStylesBase::VT_STROKE, None)}
8163  }
8164  #[inline]
8165  pub fn opacity(&self) -> f64 {
8166    // Safety:
8167    // Created from valid Table for this object
8168    // which contains a valid value in this slot
8169    unsafe { self._tab.get::<f64>(_DucElementStylesBase::VT_OPACITY, Some(0.0)).unwrap()}
8170  }
8171}
8172
8173impl flatbuffers::Verifiable for _DucElementStylesBase<'_> {
8174  #[inline]
8175  fn run_verifier(
8176    v: &mut flatbuffers::Verifier, pos: usize
8177  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8178    use self::flatbuffers::Verifiable;
8179    v.visit_table(pos)?
8180     .visit_field::<f64>("roundness", Self::VT_ROUNDNESS, false)?
8181     .visit_field::<BLENDING>("blending", Self::VT_BLENDING, false)?
8182     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<ElementBackground>>>>("background", Self::VT_BACKGROUND, false)?
8183     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<ElementStroke>>>>("stroke", Self::VT_STROKE, false)?
8184     .visit_field::<f64>("opacity", Self::VT_OPACITY, false)?
8185     .finish();
8186    Ok(())
8187  }
8188}
8189pub struct _DucElementStylesBaseArgs<'a> {
8190    pub roundness: f64,
8191    pub blending: Option<BLENDING>,
8192    pub background: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementBackground<'a>>>>>,
8193    pub stroke: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementStroke<'a>>>>>,
8194    pub opacity: f64,
8195}
8196impl<'a> Default for _DucElementStylesBaseArgs<'a> {
8197  #[inline]
8198  fn default() -> Self {
8199    _DucElementStylesBaseArgs {
8200      roundness: 0.0,
8201      blending: None,
8202      background: None,
8203      stroke: None,
8204      opacity: 0.0,
8205    }
8206  }
8207}
8208
8209pub struct _DucElementStylesBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
8210  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
8211  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8212}
8213impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _DucElementStylesBaseBuilder<'a, 'b, A> {
8214  #[inline]
8215  pub fn add_roundness(&mut self, roundness: f64) {
8216    self.fbb_.push_slot::<f64>(_DucElementStylesBase::VT_ROUNDNESS, roundness, 0.0);
8217  }
8218  #[inline]
8219  pub fn add_blending(&mut self, blending: BLENDING) {
8220    self.fbb_.push_slot_always::<BLENDING>(_DucElementStylesBase::VT_BLENDING, blending);
8221  }
8222  #[inline]
8223  pub fn add_background(&mut self, background: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<ElementBackground<'b >>>>) {
8224    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementStylesBase::VT_BACKGROUND, background);
8225  }
8226  #[inline]
8227  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<ElementStroke<'b >>>>) {
8228    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementStylesBase::VT_STROKE, stroke);
8229  }
8230  #[inline]
8231  pub fn add_opacity(&mut self, opacity: f64) {
8232    self.fbb_.push_slot::<f64>(_DucElementStylesBase::VT_OPACITY, opacity, 0.0);
8233  }
8234  #[inline]
8235  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _DucElementStylesBaseBuilder<'a, 'b, A> {
8236    let start = _fbb.start_table();
8237    _DucElementStylesBaseBuilder {
8238      fbb_: _fbb,
8239      start_: start,
8240    }
8241  }
8242  #[inline]
8243  pub fn finish(self) -> flatbuffers::WIPOffset<_DucElementStylesBase<'a>> {
8244    let o = self.fbb_.end_table(self.start_);
8245    flatbuffers::WIPOffset::new(o.value())
8246  }
8247}
8248
8249impl core::fmt::Debug for _DucElementStylesBase<'_> {
8250  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8251    let mut ds = f.debug_struct("_DucElementStylesBase");
8252      ds.field("roundness", &self.roundness());
8253      ds.field("blending", &self.blending());
8254      ds.field("background", &self.background());
8255      ds.field("stroke", &self.stroke());
8256      ds.field("opacity", &self.opacity());
8257      ds.finish()
8258  }
8259}
8260pub enum BoundElementOffset {}
8261#[derive(Copy, Clone, PartialEq)]
8262
8263pub struct BoundElement<'a> {
8264  pub _tab: flatbuffers::Table<'a>,
8265}
8266
8267impl<'a> flatbuffers::Follow<'a> for BoundElement<'a> {
8268  type Inner = BoundElement<'a>;
8269  #[inline]
8270  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8271    Self { _tab: flatbuffers::Table::new(buf, loc) }
8272  }
8273}
8274
8275impl<'a> BoundElement<'a> {
8276  pub const VT_ID: flatbuffers::VOffsetT = 4;
8277  pub const VT_TYPE_: flatbuffers::VOffsetT = 6;
8278
8279  #[inline]
8280  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8281    BoundElement { _tab: table }
8282  }
8283  #[allow(unused_mut)]
8284  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
8285    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
8286    args: &'args BoundElementArgs<'args>
8287  ) -> flatbuffers::WIPOffset<BoundElement<'bldr>> {
8288    let mut builder = BoundElementBuilder::new(_fbb);
8289    if let Some(x) = args.type_ { builder.add_type_(x); }
8290    if let Some(x) = args.id { builder.add_id(x); }
8291    builder.finish()
8292  }
8293
8294
8295  #[inline]
8296  pub fn id(&self) -> Option<&'a str> {
8297    // Safety:
8298    // Created from valid Table for this object
8299    // which contains a valid value in this slot
8300    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(BoundElement::VT_ID, None)}
8301  }
8302  #[inline]
8303  pub fn type_(&self) -> Option<&'a str> {
8304    // Safety:
8305    // Created from valid Table for this object
8306    // which contains a valid value in this slot
8307    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(BoundElement::VT_TYPE_, None)}
8308  }
8309}
8310
8311impl flatbuffers::Verifiable for BoundElement<'_> {
8312  #[inline]
8313  fn run_verifier(
8314    v: &mut flatbuffers::Verifier, pos: usize
8315  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8316    use self::flatbuffers::Verifiable;
8317    v.visit_table(pos)?
8318     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
8319     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("type_", Self::VT_TYPE_, false)?
8320     .finish();
8321    Ok(())
8322  }
8323}
8324pub struct BoundElementArgs<'a> {
8325    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
8326    pub type_: Option<flatbuffers::WIPOffset<&'a str>>,
8327}
8328impl<'a> Default for BoundElementArgs<'a> {
8329  #[inline]
8330  fn default() -> Self {
8331    BoundElementArgs {
8332      id: None,
8333      type_: None,
8334    }
8335  }
8336}
8337
8338pub struct BoundElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
8339  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
8340  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8341}
8342impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> BoundElementBuilder<'a, 'b, A> {
8343  #[inline]
8344  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
8345    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(BoundElement::VT_ID, id);
8346  }
8347  #[inline]
8348  pub fn add_type_(&mut self, type_: flatbuffers::WIPOffset<&'b  str>) {
8349    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(BoundElement::VT_TYPE_, type_);
8350  }
8351  #[inline]
8352  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> BoundElementBuilder<'a, 'b, A> {
8353    let start = _fbb.start_table();
8354    BoundElementBuilder {
8355      fbb_: _fbb,
8356      start_: start,
8357    }
8358  }
8359  #[inline]
8360  pub fn finish(self) -> flatbuffers::WIPOffset<BoundElement<'a>> {
8361    let o = self.fbb_.end_table(self.start_);
8362    flatbuffers::WIPOffset::new(o.value())
8363  }
8364}
8365
8366impl core::fmt::Debug for BoundElement<'_> {
8367  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8368    let mut ds = f.debug_struct("BoundElement");
8369      ds.field("id", &self.id());
8370      ds.field("type_", &self.type_());
8371      ds.finish()
8372  }
8373}
8374pub enum _DucElementBaseOffset {}
8375#[derive(Copy, Clone, PartialEq)]
8376
8377pub struct _DucElementBase<'a> {
8378  pub _tab: flatbuffers::Table<'a>,
8379}
8380
8381impl<'a> flatbuffers::Follow<'a> for _DucElementBase<'a> {
8382  type Inner = _DucElementBase<'a>;
8383  #[inline]
8384  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8385    Self { _tab: flatbuffers::Table::new(buf, loc) }
8386  }
8387}
8388
8389impl<'a> _DucElementBase<'a> {
8390  pub const VT_ID: flatbuffers::VOffsetT = 4;
8391  pub const VT_STYLES: flatbuffers::VOffsetT = 6;
8392  pub const VT_X: flatbuffers::VOffsetT = 8;
8393  pub const VT_Y: flatbuffers::VOffsetT = 10;
8394  pub const VT_WIDTH: flatbuffers::VOffsetT = 12;
8395  pub const VT_HEIGHT: flatbuffers::VOffsetT = 14;
8396  pub const VT_ANGLE: flatbuffers::VOffsetT = 16;
8397  pub const VT_SCOPE: flatbuffers::VOffsetT = 18;
8398  pub const VT_LABEL: flatbuffers::VOffsetT = 20;
8399  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 22;
8400  pub const VT_IS_VISIBLE: flatbuffers::VOffsetT = 24;
8401  pub const VT_SEED: flatbuffers::VOffsetT = 26;
8402  pub const VT_VERSION: flatbuffers::VOffsetT = 28;
8403  pub const VT_VERSION_NONCE: flatbuffers::VOffsetT = 30;
8404  pub const VT_UPDATED: flatbuffers::VOffsetT = 32;
8405  pub const VT_INDEX: flatbuffers::VOffsetT = 34;
8406  pub const VT_IS_PLOT: flatbuffers::VOffsetT = 36;
8407  pub const VT_IS_ANNOTATIVE: flatbuffers::VOffsetT = 38;
8408  pub const VT_IS_DELETED: flatbuffers::VOffsetT = 40;
8409  pub const VT_GROUP_IDS: flatbuffers::VOffsetT = 42;
8410  pub const VT_REGION_IDS: flatbuffers::VOffsetT = 44;
8411  pub const VT_LAYER_ID: flatbuffers::VOffsetT = 46;
8412  pub const VT_FRAME_ID: flatbuffers::VOffsetT = 48;
8413  pub const VT_BOUND_ELEMENTS: flatbuffers::VOffsetT = 50;
8414  pub const VT_Z_INDEX: flatbuffers::VOffsetT = 52;
8415  pub const VT_LINK: flatbuffers::VOffsetT = 54;
8416  pub const VT_LOCKED: flatbuffers::VOffsetT = 56;
8417  pub const VT_BLOCK_IDS: flatbuffers::VOffsetT = 60;
8418  pub const VT_INSTANCE_ID: flatbuffers::VOffsetT = 62;
8419  pub const VT_CUSTOM_DATA: flatbuffers::VOffsetT = 64;
8420
8421  #[inline]
8422  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8423    _DucElementBase { _tab: table }
8424  }
8425  #[allow(unused_mut)]
8426  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
8427    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
8428    args: &'args _DucElementBaseArgs<'args>
8429  ) -> flatbuffers::WIPOffset<_DucElementBase<'bldr>> {
8430    let mut builder = _DucElementBaseBuilder::new(_fbb);
8431    builder.add_updated(args.updated);
8432    builder.add_angle(args.angle);
8433    builder.add_height(args.height);
8434    builder.add_width(args.width);
8435    builder.add_y(args.y);
8436    builder.add_x(args.x);
8437    if let Some(x) = args.custom_data { builder.add_custom_data(x); }
8438    if let Some(x) = args.instance_id { builder.add_instance_id(x); }
8439    if let Some(x) = args.block_ids { builder.add_block_ids(x); }
8440    if let Some(x) = args.link { builder.add_link(x); }
8441    builder.add_z_index(args.z_index);
8442    if let Some(x) = args.bound_elements { builder.add_bound_elements(x); }
8443    if let Some(x) = args.frame_id { builder.add_frame_id(x); }
8444    if let Some(x) = args.layer_id { builder.add_layer_id(x); }
8445    if let Some(x) = args.region_ids { builder.add_region_ids(x); }
8446    if let Some(x) = args.group_ids { builder.add_group_ids(x); }
8447    if let Some(x) = args.index { builder.add_index(x); }
8448    builder.add_version_nonce(args.version_nonce);
8449    builder.add_version(args.version);
8450    builder.add_seed(args.seed);
8451    if let Some(x) = args.description { builder.add_description(x); }
8452    if let Some(x) = args.label { builder.add_label(x); }
8453    if let Some(x) = args.scope { builder.add_scope(x); }
8454    if let Some(x) = args.styles { builder.add_styles(x); }
8455    if let Some(x) = args.id { builder.add_id(x); }
8456    builder.add_locked(args.locked);
8457    builder.add_is_deleted(args.is_deleted);
8458    builder.add_is_annotative(args.is_annotative);
8459    builder.add_is_plot(args.is_plot);
8460    builder.add_is_visible(args.is_visible);
8461    builder.finish()
8462  }
8463
8464
8465  #[inline]
8466  pub fn id(&self) -> &'a str {
8467    // Safety:
8468    // Created from valid Table for this object
8469    // which contains a valid value in this slot
8470    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_ID, None).unwrap()}
8471  }
8472  #[inline]
8473  pub fn key_compare_less_than(&self, o: &_DucElementBase) -> bool {
8474    self.id() < o.id()
8475  }
8476
8477  #[inline]
8478  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
8479    let key = self.id();
8480    key.cmp(val)
8481  }
8482  #[inline]
8483  pub fn styles(&self) -> Option<_DucElementStylesBase<'a>> {
8484    // Safety:
8485    // Created from valid Table for this object
8486    // which contains a valid value in this slot
8487    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementStylesBase>>(_DucElementBase::VT_STYLES, None)}
8488  }
8489  #[inline]
8490  pub fn x(&self) -> f64 {
8491    // Safety:
8492    // Created from valid Table for this object
8493    // which contains a valid value in this slot
8494    unsafe { self._tab.get::<f64>(_DucElementBase::VT_X, Some(0.0)).unwrap()}
8495  }
8496  #[inline]
8497  pub fn y(&self) -> f64 {
8498    // Safety:
8499    // Created from valid Table for this object
8500    // which contains a valid value in this slot
8501    unsafe { self._tab.get::<f64>(_DucElementBase::VT_Y, Some(0.0)).unwrap()}
8502  }
8503  #[inline]
8504  pub fn width(&self) -> f64 {
8505    // Safety:
8506    // Created from valid Table for this object
8507    // which contains a valid value in this slot
8508    unsafe { self._tab.get::<f64>(_DucElementBase::VT_WIDTH, Some(0.0)).unwrap()}
8509  }
8510  #[inline]
8511  pub fn height(&self) -> f64 {
8512    // Safety:
8513    // Created from valid Table for this object
8514    // which contains a valid value in this slot
8515    unsafe { self._tab.get::<f64>(_DucElementBase::VT_HEIGHT, Some(0.0)).unwrap()}
8516  }
8517  #[inline]
8518  pub fn angle(&self) -> f64 {
8519    // Safety:
8520    // Created from valid Table for this object
8521    // which contains a valid value in this slot
8522    unsafe { self._tab.get::<f64>(_DucElementBase::VT_ANGLE, Some(0.0)).unwrap()}
8523  }
8524  #[inline]
8525  pub fn scope(&self) -> Option<&'a str> {
8526    // Safety:
8527    // Created from valid Table for this object
8528    // which contains a valid value in this slot
8529    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_SCOPE, None)}
8530  }
8531  #[inline]
8532  pub fn label(&self) -> Option<&'a str> {
8533    // Safety:
8534    // Created from valid Table for this object
8535    // which contains a valid value in this slot
8536    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_LABEL, None)}
8537  }
8538  #[inline]
8539  pub fn description(&self) -> Option<&'a str> {
8540    // Safety:
8541    // Created from valid Table for this object
8542    // which contains a valid value in this slot
8543    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_DESCRIPTION, None)}
8544  }
8545  #[inline]
8546  pub fn is_visible(&self) -> bool {
8547    // Safety:
8548    // Created from valid Table for this object
8549    // which contains a valid value in this slot
8550    unsafe { self._tab.get::<bool>(_DucElementBase::VT_IS_VISIBLE, Some(false)).unwrap()}
8551  }
8552  #[inline]
8553  pub fn seed(&self) -> i32 {
8554    // Safety:
8555    // Created from valid Table for this object
8556    // which contains a valid value in this slot
8557    unsafe { self._tab.get::<i32>(_DucElementBase::VT_SEED, Some(0)).unwrap()}
8558  }
8559  #[inline]
8560  pub fn version(&self) -> i32 {
8561    // Safety:
8562    // Created from valid Table for this object
8563    // which contains a valid value in this slot
8564    unsafe { self._tab.get::<i32>(_DucElementBase::VT_VERSION, Some(0)).unwrap()}
8565  }
8566  #[inline]
8567  pub fn version_nonce(&self) -> i32 {
8568    // Safety:
8569    // Created from valid Table for this object
8570    // which contains a valid value in this slot
8571    unsafe { self._tab.get::<i32>(_DucElementBase::VT_VERSION_NONCE, Some(0)).unwrap()}
8572  }
8573  #[inline]
8574  pub fn updated(&self) -> i64 {
8575    // Safety:
8576    // Created from valid Table for this object
8577    // which contains a valid value in this slot
8578    unsafe { self._tab.get::<i64>(_DucElementBase::VT_UPDATED, Some(0)).unwrap()}
8579  }
8580  #[inline]
8581  pub fn index(&self) -> Option<&'a str> {
8582    // Safety:
8583    // Created from valid Table for this object
8584    // which contains a valid value in this slot
8585    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_INDEX, None)}
8586  }
8587  #[inline]
8588  pub fn is_plot(&self) -> bool {
8589    // Safety:
8590    // Created from valid Table for this object
8591    // which contains a valid value in this slot
8592    unsafe { self._tab.get::<bool>(_DucElementBase::VT_IS_PLOT, Some(false)).unwrap()}
8593  }
8594  #[inline]
8595  pub fn is_annotative(&self) -> bool {
8596    // Safety:
8597    // Created from valid Table for this object
8598    // which contains a valid value in this slot
8599    unsafe { self._tab.get::<bool>(_DucElementBase::VT_IS_ANNOTATIVE, Some(false)).unwrap()}
8600  }
8601  #[inline]
8602  pub fn is_deleted(&self) -> bool {
8603    // Safety:
8604    // Created from valid Table for this object
8605    // which contains a valid value in this slot
8606    unsafe { self._tab.get::<bool>(_DucElementBase::VT_IS_DELETED, Some(false)).unwrap()}
8607  }
8608  #[inline]
8609  pub fn group_ids(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
8610    // Safety:
8611    // Created from valid Table for this object
8612    // which contains a valid value in this slot
8613    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(_DucElementBase::VT_GROUP_IDS, None)}
8614  }
8615  #[inline]
8616  pub fn region_ids(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
8617    // Safety:
8618    // Created from valid Table for this object
8619    // which contains a valid value in this slot
8620    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(_DucElementBase::VT_REGION_IDS, None)}
8621  }
8622  #[inline]
8623  pub fn layer_id(&self) -> Option<&'a str> {
8624    // Safety:
8625    // Created from valid Table for this object
8626    // which contains a valid value in this slot
8627    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_LAYER_ID, None)}
8628  }
8629  #[inline]
8630  pub fn frame_id(&self) -> Option<&'a str> {
8631    // Safety:
8632    // Created from valid Table for this object
8633    // which contains a valid value in this slot
8634    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_FRAME_ID, None)}
8635  }
8636  #[inline]
8637  pub fn bound_elements(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<BoundElement<'a>>>> {
8638    // Safety:
8639    // Created from valid Table for this object
8640    // which contains a valid value in this slot
8641    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<BoundElement>>>>(_DucElementBase::VT_BOUND_ELEMENTS, None)}
8642  }
8643  #[inline]
8644  pub fn z_index(&self) -> f32 {
8645    // Safety:
8646    // Created from valid Table for this object
8647    // which contains a valid value in this slot
8648    unsafe { self._tab.get::<f32>(_DucElementBase::VT_Z_INDEX, Some(0.0)).unwrap()}
8649  }
8650  #[inline]
8651  pub fn link(&self) -> Option<&'a str> {
8652    // Safety:
8653    // Created from valid Table for this object
8654    // which contains a valid value in this slot
8655    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_LINK, None)}
8656  }
8657  #[inline]
8658  pub fn locked(&self) -> bool {
8659    // Safety:
8660    // Created from valid Table for this object
8661    // which contains a valid value in this slot
8662    unsafe { self._tab.get::<bool>(_DucElementBase::VT_LOCKED, Some(false)).unwrap()}
8663  }
8664  #[inline]
8665  pub fn block_ids(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
8666    // Safety:
8667    // Created from valid Table for this object
8668    // which contains a valid value in this slot
8669    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(_DucElementBase::VT_BLOCK_IDS, None)}
8670  }
8671  #[inline]
8672  pub fn instance_id(&self) -> Option<&'a str> {
8673    // Safety:
8674    // Created from valid Table for this object
8675    // which contains a valid value in this slot
8676    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucElementBase::VT_INSTANCE_ID, None)}
8677  }
8678  #[inline]
8679  pub fn custom_data(&self) -> Option<flatbuffers::Vector<'a, u8>> {
8680    // Safety:
8681    // Created from valid Table for this object
8682    // which contains a valid value in this slot
8683    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(_DucElementBase::VT_CUSTOM_DATA, None)}
8684  }
8685}
8686
8687impl flatbuffers::Verifiable for _DucElementBase<'_> {
8688  #[inline]
8689  fn run_verifier(
8690    v: &mut flatbuffers::Verifier, pos: usize
8691  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
8692    use self::flatbuffers::Verifiable;
8693    v.visit_table(pos)?
8694     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
8695     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementStylesBase>>("styles", Self::VT_STYLES, false)?
8696     .visit_field::<f64>("x", Self::VT_X, false)?
8697     .visit_field::<f64>("y", Self::VT_Y, false)?
8698     .visit_field::<f64>("width", Self::VT_WIDTH, false)?
8699     .visit_field::<f64>("height", Self::VT_HEIGHT, false)?
8700     .visit_field::<f64>("angle", Self::VT_ANGLE, false)?
8701     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("scope", Self::VT_SCOPE, false)?
8702     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("label", Self::VT_LABEL, false)?
8703     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
8704     .visit_field::<bool>("is_visible", Self::VT_IS_VISIBLE, false)?
8705     .visit_field::<i32>("seed", Self::VT_SEED, false)?
8706     .visit_field::<i32>("version", Self::VT_VERSION, false)?
8707     .visit_field::<i32>("version_nonce", Self::VT_VERSION_NONCE, false)?
8708     .visit_field::<i64>("updated", Self::VT_UPDATED, false)?
8709     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("index", Self::VT_INDEX, false)?
8710     .visit_field::<bool>("is_plot", Self::VT_IS_PLOT, false)?
8711     .visit_field::<bool>("is_annotative", Self::VT_IS_ANNOTATIVE, false)?
8712     .visit_field::<bool>("is_deleted", Self::VT_IS_DELETED, false)?
8713     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("group_ids", Self::VT_GROUP_IDS, false)?
8714     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("region_ids", Self::VT_REGION_IDS, false)?
8715     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("layer_id", Self::VT_LAYER_ID, false)?
8716     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("frame_id", Self::VT_FRAME_ID, false)?
8717     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<BoundElement>>>>("bound_elements", Self::VT_BOUND_ELEMENTS, false)?
8718     .visit_field::<f32>("z_index", Self::VT_Z_INDEX, false)?
8719     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("link", Self::VT_LINK, false)?
8720     .visit_field::<bool>("locked", Self::VT_LOCKED, false)?
8721     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("block_ids", Self::VT_BLOCK_IDS, false)?
8722     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("instance_id", Self::VT_INSTANCE_ID, false)?
8723     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("custom_data", Self::VT_CUSTOM_DATA, false)?
8724     .finish();
8725    Ok(())
8726  }
8727}
8728pub struct _DucElementBaseArgs<'a> {
8729    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
8730    pub styles: Option<flatbuffers::WIPOffset<_DucElementStylesBase<'a>>>,
8731    pub x: f64,
8732    pub y: f64,
8733    pub width: f64,
8734    pub height: f64,
8735    pub angle: f64,
8736    pub scope: Option<flatbuffers::WIPOffset<&'a str>>,
8737    pub label: Option<flatbuffers::WIPOffset<&'a str>>,
8738    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
8739    pub is_visible: bool,
8740    pub seed: i32,
8741    pub version: i32,
8742    pub version_nonce: i32,
8743    pub updated: i64,
8744    pub index: Option<flatbuffers::WIPOffset<&'a str>>,
8745    pub is_plot: bool,
8746    pub is_annotative: bool,
8747    pub is_deleted: bool,
8748    pub group_ids: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
8749    pub region_ids: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
8750    pub layer_id: Option<flatbuffers::WIPOffset<&'a str>>,
8751    pub frame_id: Option<flatbuffers::WIPOffset<&'a str>>,
8752    pub bound_elements: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<BoundElement<'a>>>>>,
8753    pub z_index: f32,
8754    pub link: Option<flatbuffers::WIPOffset<&'a str>>,
8755    pub locked: bool,
8756    pub block_ids: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
8757    pub instance_id: Option<flatbuffers::WIPOffset<&'a str>>,
8758    pub custom_data: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
8759}
8760impl<'a> Default for _DucElementBaseArgs<'a> {
8761  #[inline]
8762  fn default() -> Self {
8763    _DucElementBaseArgs {
8764      id: None, // required field
8765      styles: None,
8766      x: 0.0,
8767      y: 0.0,
8768      width: 0.0,
8769      height: 0.0,
8770      angle: 0.0,
8771      scope: None,
8772      label: None,
8773      description: None,
8774      is_visible: false,
8775      seed: 0,
8776      version: 0,
8777      version_nonce: 0,
8778      updated: 0,
8779      index: None,
8780      is_plot: false,
8781      is_annotative: false,
8782      is_deleted: false,
8783      group_ids: None,
8784      region_ids: None,
8785      layer_id: None,
8786      frame_id: None,
8787      bound_elements: None,
8788      z_index: 0.0,
8789      link: None,
8790      locked: false,
8791      block_ids: None,
8792      instance_id: None,
8793      custom_data: None,
8794    }
8795  }
8796}
8797
8798pub struct _DucElementBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
8799  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
8800  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
8801}
8802impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _DucElementBaseBuilder<'a, 'b, A> {
8803  #[inline]
8804  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
8805    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_ID, id);
8806  }
8807  #[inline]
8808  pub fn add_styles(&mut self, styles: flatbuffers::WIPOffset<_DucElementStylesBase<'b >>) {
8809    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementStylesBase>>(_DucElementBase::VT_STYLES, styles);
8810  }
8811  #[inline]
8812  pub fn add_x(&mut self, x: f64) {
8813    self.fbb_.push_slot::<f64>(_DucElementBase::VT_X, x, 0.0);
8814  }
8815  #[inline]
8816  pub fn add_y(&mut self, y: f64) {
8817    self.fbb_.push_slot::<f64>(_DucElementBase::VT_Y, y, 0.0);
8818  }
8819  #[inline]
8820  pub fn add_width(&mut self, width: f64) {
8821    self.fbb_.push_slot::<f64>(_DucElementBase::VT_WIDTH, width, 0.0);
8822  }
8823  #[inline]
8824  pub fn add_height(&mut self, height: f64) {
8825    self.fbb_.push_slot::<f64>(_DucElementBase::VT_HEIGHT, height, 0.0);
8826  }
8827  #[inline]
8828  pub fn add_angle(&mut self, angle: f64) {
8829    self.fbb_.push_slot::<f64>(_DucElementBase::VT_ANGLE, angle, 0.0);
8830  }
8831  #[inline]
8832  pub fn add_scope(&mut self, scope: flatbuffers::WIPOffset<&'b  str>) {
8833    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_SCOPE, scope);
8834  }
8835  #[inline]
8836  pub fn add_label(&mut self, label: flatbuffers::WIPOffset<&'b  str>) {
8837    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_LABEL, label);
8838  }
8839  #[inline]
8840  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
8841    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_DESCRIPTION, description);
8842  }
8843  #[inline]
8844  pub fn add_is_visible(&mut self, is_visible: bool) {
8845    self.fbb_.push_slot::<bool>(_DucElementBase::VT_IS_VISIBLE, is_visible, false);
8846  }
8847  #[inline]
8848  pub fn add_seed(&mut self, seed: i32) {
8849    self.fbb_.push_slot::<i32>(_DucElementBase::VT_SEED, seed, 0);
8850  }
8851  #[inline]
8852  pub fn add_version(&mut self, version: i32) {
8853    self.fbb_.push_slot::<i32>(_DucElementBase::VT_VERSION, version, 0);
8854  }
8855  #[inline]
8856  pub fn add_version_nonce(&mut self, version_nonce: i32) {
8857    self.fbb_.push_slot::<i32>(_DucElementBase::VT_VERSION_NONCE, version_nonce, 0);
8858  }
8859  #[inline]
8860  pub fn add_updated(&mut self, updated: i64) {
8861    self.fbb_.push_slot::<i64>(_DucElementBase::VT_UPDATED, updated, 0);
8862  }
8863  #[inline]
8864  pub fn add_index(&mut self, index: flatbuffers::WIPOffset<&'b  str>) {
8865    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_INDEX, index);
8866  }
8867  #[inline]
8868  pub fn add_is_plot(&mut self, is_plot: bool) {
8869    self.fbb_.push_slot::<bool>(_DucElementBase::VT_IS_PLOT, is_plot, false);
8870  }
8871  #[inline]
8872  pub fn add_is_annotative(&mut self, is_annotative: bool) {
8873    self.fbb_.push_slot::<bool>(_DucElementBase::VT_IS_ANNOTATIVE, is_annotative, false);
8874  }
8875  #[inline]
8876  pub fn add_is_deleted(&mut self, is_deleted: bool) {
8877    self.fbb_.push_slot::<bool>(_DucElementBase::VT_IS_DELETED, is_deleted, false);
8878  }
8879  #[inline]
8880  pub fn add_group_ids(&mut self, group_ids: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
8881    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_GROUP_IDS, group_ids);
8882  }
8883  #[inline]
8884  pub fn add_region_ids(&mut self, region_ids: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
8885    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_REGION_IDS, region_ids);
8886  }
8887  #[inline]
8888  pub fn add_layer_id(&mut self, layer_id: flatbuffers::WIPOffset<&'b  str>) {
8889    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_LAYER_ID, layer_id);
8890  }
8891  #[inline]
8892  pub fn add_frame_id(&mut self, frame_id: flatbuffers::WIPOffset<&'b  str>) {
8893    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_FRAME_ID, frame_id);
8894  }
8895  #[inline]
8896  pub fn add_bound_elements(&mut self, bound_elements: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<BoundElement<'b >>>>) {
8897    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_BOUND_ELEMENTS, bound_elements);
8898  }
8899  #[inline]
8900  pub fn add_z_index(&mut self, z_index: f32) {
8901    self.fbb_.push_slot::<f32>(_DucElementBase::VT_Z_INDEX, z_index, 0.0);
8902  }
8903  #[inline]
8904  pub fn add_link(&mut self, link: flatbuffers::WIPOffset<&'b  str>) {
8905    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_LINK, link);
8906  }
8907  #[inline]
8908  pub fn add_locked(&mut self, locked: bool) {
8909    self.fbb_.push_slot::<bool>(_DucElementBase::VT_LOCKED, locked, false);
8910  }
8911  #[inline]
8912  pub fn add_block_ids(&mut self, block_ids: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
8913    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_BLOCK_IDS, block_ids);
8914  }
8915  #[inline]
8916  pub fn add_instance_id(&mut self, instance_id: flatbuffers::WIPOffset<&'b  str>) {
8917    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_INSTANCE_ID, instance_id);
8918  }
8919  #[inline]
8920  pub fn add_custom_data(&mut self, custom_data: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
8921    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucElementBase::VT_CUSTOM_DATA, custom_data);
8922  }
8923  #[inline]
8924  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _DucElementBaseBuilder<'a, 'b, A> {
8925    let start = _fbb.start_table();
8926    _DucElementBaseBuilder {
8927      fbb_: _fbb,
8928      start_: start,
8929    }
8930  }
8931  #[inline]
8932  pub fn finish(self) -> flatbuffers::WIPOffset<_DucElementBase<'a>> {
8933    let o = self.fbb_.end_table(self.start_);
8934    self.fbb_.required(o, _DucElementBase::VT_ID,"id");
8935    flatbuffers::WIPOffset::new(o.value())
8936  }
8937}
8938
8939impl core::fmt::Debug for _DucElementBase<'_> {
8940  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8941    let mut ds = f.debug_struct("_DucElementBase");
8942      ds.field("id", &self.id());
8943      ds.field("styles", &self.styles());
8944      ds.field("x", &self.x());
8945      ds.field("y", &self.y());
8946      ds.field("width", &self.width());
8947      ds.field("height", &self.height());
8948      ds.field("angle", &self.angle());
8949      ds.field("scope", &self.scope());
8950      ds.field("label", &self.label());
8951      ds.field("description", &self.description());
8952      ds.field("is_visible", &self.is_visible());
8953      ds.field("seed", &self.seed());
8954      ds.field("version", &self.version());
8955      ds.field("version_nonce", &self.version_nonce());
8956      ds.field("updated", &self.updated());
8957      ds.field("index", &self.index());
8958      ds.field("is_plot", &self.is_plot());
8959      ds.field("is_annotative", &self.is_annotative());
8960      ds.field("is_deleted", &self.is_deleted());
8961      ds.field("group_ids", &self.group_ids());
8962      ds.field("region_ids", &self.region_ids());
8963      ds.field("layer_id", &self.layer_id());
8964      ds.field("frame_id", &self.frame_id());
8965      ds.field("bound_elements", &self.bound_elements());
8966      ds.field("z_index", &self.z_index());
8967      ds.field("link", &self.link());
8968      ds.field("locked", &self.locked());
8969      ds.field("block_ids", &self.block_ids());
8970      ds.field("instance_id", &self.instance_id());
8971      ds.field("custom_data", &self.custom_data());
8972      ds.finish()
8973  }
8974}
8975pub enum DucPointOffset {}
8976#[derive(Copy, Clone, PartialEq)]
8977
8978pub struct DucPoint<'a> {
8979  pub _tab: flatbuffers::Table<'a>,
8980}
8981
8982impl<'a> flatbuffers::Follow<'a> for DucPoint<'a> {
8983  type Inner = DucPoint<'a>;
8984  #[inline]
8985  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
8986    Self { _tab: flatbuffers::Table::new(buf, loc) }
8987  }
8988}
8989
8990impl<'a> DucPoint<'a> {
8991  pub const VT_X: flatbuffers::VOffsetT = 4;
8992  pub const VT_Y: flatbuffers::VOffsetT = 6;
8993  pub const VT_MIRRORING: flatbuffers::VOffsetT = 8;
8994
8995  #[inline]
8996  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
8997    DucPoint { _tab: table }
8998  }
8999  #[allow(unused_mut)]
9000  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9001    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9002    args: &'args DucPointArgs
9003  ) -> flatbuffers::WIPOffset<DucPoint<'bldr>> {
9004    let mut builder = DucPointBuilder::new(_fbb);
9005    builder.add_y(args.y);
9006    builder.add_x(args.x);
9007    if let Some(x) = args.mirroring { builder.add_mirroring(x); }
9008    builder.finish()
9009  }
9010
9011
9012  #[inline]
9013  pub fn x(&self) -> f64 {
9014    // Safety:
9015    // Created from valid Table for this object
9016    // which contains a valid value in this slot
9017    unsafe { self._tab.get::<f64>(DucPoint::VT_X, Some(0.0)).unwrap()}
9018  }
9019  #[inline]
9020  pub fn y(&self) -> f64 {
9021    // Safety:
9022    // Created from valid Table for this object
9023    // which contains a valid value in this slot
9024    unsafe { self._tab.get::<f64>(DucPoint::VT_Y, Some(0.0)).unwrap()}
9025  }
9026  #[inline]
9027  pub fn mirroring(&self) -> Option<BEZIER_MIRRORING> {
9028    // Safety:
9029    // Created from valid Table for this object
9030    // which contains a valid value in this slot
9031    unsafe { self._tab.get::<BEZIER_MIRRORING>(DucPoint::VT_MIRRORING, None)}
9032  }
9033}
9034
9035impl flatbuffers::Verifiable for DucPoint<'_> {
9036  #[inline]
9037  fn run_verifier(
9038    v: &mut flatbuffers::Verifier, pos: usize
9039  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9040    use self::flatbuffers::Verifiable;
9041    v.visit_table(pos)?
9042     .visit_field::<f64>("x", Self::VT_X, false)?
9043     .visit_field::<f64>("y", Self::VT_Y, false)?
9044     .visit_field::<BEZIER_MIRRORING>("mirroring", Self::VT_MIRRORING, false)?
9045     .finish();
9046    Ok(())
9047  }
9048}
9049pub struct DucPointArgs {
9050    pub x: f64,
9051    pub y: f64,
9052    pub mirroring: Option<BEZIER_MIRRORING>,
9053}
9054impl<'a> Default for DucPointArgs {
9055  #[inline]
9056  fn default() -> Self {
9057    DucPointArgs {
9058      x: 0.0,
9059      y: 0.0,
9060      mirroring: None,
9061    }
9062  }
9063}
9064
9065pub struct DucPointBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9066  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9067  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9068}
9069impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPointBuilder<'a, 'b, A> {
9070  #[inline]
9071  pub fn add_x(&mut self, x: f64) {
9072    self.fbb_.push_slot::<f64>(DucPoint::VT_X, x, 0.0);
9073  }
9074  #[inline]
9075  pub fn add_y(&mut self, y: f64) {
9076    self.fbb_.push_slot::<f64>(DucPoint::VT_Y, y, 0.0);
9077  }
9078  #[inline]
9079  pub fn add_mirroring(&mut self, mirroring: BEZIER_MIRRORING) {
9080    self.fbb_.push_slot_always::<BEZIER_MIRRORING>(DucPoint::VT_MIRRORING, mirroring);
9081  }
9082  #[inline]
9083  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPointBuilder<'a, 'b, A> {
9084    let start = _fbb.start_table();
9085    DucPointBuilder {
9086      fbb_: _fbb,
9087      start_: start,
9088    }
9089  }
9090  #[inline]
9091  pub fn finish(self) -> flatbuffers::WIPOffset<DucPoint<'a>> {
9092    let o = self.fbb_.end_table(self.start_);
9093    flatbuffers::WIPOffset::new(o.value())
9094  }
9095}
9096
9097impl core::fmt::Debug for DucPoint<'_> {
9098  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9099    let mut ds = f.debug_struct("DucPoint");
9100      ds.field("x", &self.x());
9101      ds.field("y", &self.y());
9102      ds.field("mirroring", &self.mirroring());
9103      ds.finish()
9104  }
9105}
9106pub enum DucHeadOffset {}
9107#[derive(Copy, Clone, PartialEq)]
9108
9109pub struct DucHead<'a> {
9110  pub _tab: flatbuffers::Table<'a>,
9111}
9112
9113impl<'a> flatbuffers::Follow<'a> for DucHead<'a> {
9114  type Inner = DucHead<'a>;
9115  #[inline]
9116  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9117    Self { _tab: flatbuffers::Table::new(buf, loc) }
9118  }
9119}
9120
9121impl<'a> DucHead<'a> {
9122  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
9123  pub const VT_BLOCK_ID: flatbuffers::VOffsetT = 6;
9124  pub const VT_SIZE: flatbuffers::VOffsetT = 8;
9125
9126  #[inline]
9127  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9128    DucHead { _tab: table }
9129  }
9130  #[allow(unused_mut)]
9131  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9132    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9133    args: &'args DucHeadArgs<'args>
9134  ) -> flatbuffers::WIPOffset<DucHead<'bldr>> {
9135    let mut builder = DucHeadBuilder::new(_fbb);
9136    builder.add_size(args.size);
9137    if let Some(x) = args.block_id { builder.add_block_id(x); }
9138    if let Some(x) = args.type_ { builder.add_type_(x); }
9139    builder.finish()
9140  }
9141
9142
9143  #[inline]
9144  pub fn type_(&self) -> Option<LINE_HEAD> {
9145    // Safety:
9146    // Created from valid Table for this object
9147    // which contains a valid value in this slot
9148    unsafe { self._tab.get::<LINE_HEAD>(DucHead::VT_TYPE_, None)}
9149  }
9150  #[inline]
9151  pub fn block_id(&self) -> Option<&'a str> {
9152    // Safety:
9153    // Created from valid Table for this object
9154    // which contains a valid value in this slot
9155    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucHead::VT_BLOCK_ID, None)}
9156  }
9157  #[inline]
9158  pub fn size(&self) -> f64 {
9159    // Safety:
9160    // Created from valid Table for this object
9161    // which contains a valid value in this slot
9162    unsafe { self._tab.get::<f64>(DucHead::VT_SIZE, Some(0.0)).unwrap()}
9163  }
9164}
9165
9166impl flatbuffers::Verifiable for DucHead<'_> {
9167  #[inline]
9168  fn run_verifier(
9169    v: &mut flatbuffers::Verifier, pos: usize
9170  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9171    use self::flatbuffers::Verifiable;
9172    v.visit_table(pos)?
9173     .visit_field::<LINE_HEAD>("type_", Self::VT_TYPE_, false)?
9174     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("block_id", Self::VT_BLOCK_ID, false)?
9175     .visit_field::<f64>("size", Self::VT_SIZE, false)?
9176     .finish();
9177    Ok(())
9178  }
9179}
9180pub struct DucHeadArgs<'a> {
9181    pub type_: Option<LINE_HEAD>,
9182    pub block_id: Option<flatbuffers::WIPOffset<&'a str>>,
9183    pub size: f64,
9184}
9185impl<'a> Default for DucHeadArgs<'a> {
9186  #[inline]
9187  fn default() -> Self {
9188    DucHeadArgs {
9189      type_: None,
9190      block_id: None,
9191      size: 0.0,
9192    }
9193  }
9194}
9195
9196pub struct DucHeadBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9197  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9198  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9199}
9200impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucHeadBuilder<'a, 'b, A> {
9201  #[inline]
9202  pub fn add_type_(&mut self, type_: LINE_HEAD) {
9203    self.fbb_.push_slot_always::<LINE_HEAD>(DucHead::VT_TYPE_, type_);
9204  }
9205  #[inline]
9206  pub fn add_block_id(&mut self, block_id: flatbuffers::WIPOffset<&'b  str>) {
9207    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucHead::VT_BLOCK_ID, block_id);
9208  }
9209  #[inline]
9210  pub fn add_size(&mut self, size: f64) {
9211    self.fbb_.push_slot::<f64>(DucHead::VT_SIZE, size, 0.0);
9212  }
9213  #[inline]
9214  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucHeadBuilder<'a, 'b, A> {
9215    let start = _fbb.start_table();
9216    DucHeadBuilder {
9217      fbb_: _fbb,
9218      start_: start,
9219    }
9220  }
9221  #[inline]
9222  pub fn finish(self) -> flatbuffers::WIPOffset<DucHead<'a>> {
9223    let o = self.fbb_.end_table(self.start_);
9224    flatbuffers::WIPOffset::new(o.value())
9225  }
9226}
9227
9228impl core::fmt::Debug for DucHead<'_> {
9229  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9230    let mut ds = f.debug_struct("DucHead");
9231      ds.field("type_", &self.type_());
9232      ds.field("block_id", &self.block_id());
9233      ds.field("size", &self.size());
9234      ds.finish()
9235  }
9236}
9237pub enum PointBindingPointOffset {}
9238#[derive(Copy, Clone, PartialEq)]
9239
9240pub struct PointBindingPoint<'a> {
9241  pub _tab: flatbuffers::Table<'a>,
9242}
9243
9244impl<'a> flatbuffers::Follow<'a> for PointBindingPoint<'a> {
9245  type Inner = PointBindingPoint<'a>;
9246  #[inline]
9247  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9248    Self { _tab: flatbuffers::Table::new(buf, loc) }
9249  }
9250}
9251
9252impl<'a> PointBindingPoint<'a> {
9253  pub const VT_INDEX: flatbuffers::VOffsetT = 4;
9254  pub const VT_OFFSET: flatbuffers::VOffsetT = 6;
9255
9256  #[inline]
9257  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9258    PointBindingPoint { _tab: table }
9259  }
9260  #[allow(unused_mut)]
9261  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9262    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9263    args: &'args PointBindingPointArgs
9264  ) -> flatbuffers::WIPOffset<PointBindingPoint<'bldr>> {
9265    let mut builder = PointBindingPointBuilder::new(_fbb);
9266    builder.add_offset(args.offset);
9267    builder.add_index(args.index);
9268    builder.finish()
9269  }
9270
9271
9272  #[inline]
9273  pub fn index(&self) -> i32 {
9274    // Safety:
9275    // Created from valid Table for this object
9276    // which contains a valid value in this slot
9277    unsafe { self._tab.get::<i32>(PointBindingPoint::VT_INDEX, Some(0)).unwrap()}
9278  }
9279  #[inline]
9280  pub fn offset(&self) -> f64 {
9281    // Safety:
9282    // Created from valid Table for this object
9283    // which contains a valid value in this slot
9284    unsafe { self._tab.get::<f64>(PointBindingPoint::VT_OFFSET, Some(0.0)).unwrap()}
9285  }
9286}
9287
9288impl flatbuffers::Verifiable for PointBindingPoint<'_> {
9289  #[inline]
9290  fn run_verifier(
9291    v: &mut flatbuffers::Verifier, pos: usize
9292  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9293    use self::flatbuffers::Verifiable;
9294    v.visit_table(pos)?
9295     .visit_field::<i32>("index", Self::VT_INDEX, false)?
9296     .visit_field::<f64>("offset", Self::VT_OFFSET, false)?
9297     .finish();
9298    Ok(())
9299  }
9300}
9301pub struct PointBindingPointArgs {
9302    pub index: i32,
9303    pub offset: f64,
9304}
9305impl<'a> Default for PointBindingPointArgs {
9306  #[inline]
9307  fn default() -> Self {
9308    PointBindingPointArgs {
9309      index: 0,
9310      offset: 0.0,
9311    }
9312  }
9313}
9314
9315pub struct PointBindingPointBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9316  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9317  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9318}
9319impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PointBindingPointBuilder<'a, 'b, A> {
9320  #[inline]
9321  pub fn add_index(&mut self, index: i32) {
9322    self.fbb_.push_slot::<i32>(PointBindingPoint::VT_INDEX, index, 0);
9323  }
9324  #[inline]
9325  pub fn add_offset(&mut self, offset: f64) {
9326    self.fbb_.push_slot::<f64>(PointBindingPoint::VT_OFFSET, offset, 0.0);
9327  }
9328  #[inline]
9329  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PointBindingPointBuilder<'a, 'b, A> {
9330    let start = _fbb.start_table();
9331    PointBindingPointBuilder {
9332      fbb_: _fbb,
9333      start_: start,
9334    }
9335  }
9336  #[inline]
9337  pub fn finish(self) -> flatbuffers::WIPOffset<PointBindingPoint<'a>> {
9338    let o = self.fbb_.end_table(self.start_);
9339    flatbuffers::WIPOffset::new(o.value())
9340  }
9341}
9342
9343impl core::fmt::Debug for PointBindingPoint<'_> {
9344  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9345    let mut ds = f.debug_struct("PointBindingPoint");
9346      ds.field("index", &self.index());
9347      ds.field("offset", &self.offset());
9348      ds.finish()
9349  }
9350}
9351pub enum DucPointBindingOffset {}
9352#[derive(Copy, Clone, PartialEq)]
9353
9354pub struct DucPointBinding<'a> {
9355  pub _tab: flatbuffers::Table<'a>,
9356}
9357
9358impl<'a> flatbuffers::Follow<'a> for DucPointBinding<'a> {
9359  type Inner = DucPointBinding<'a>;
9360  #[inline]
9361  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9362    Self { _tab: flatbuffers::Table::new(buf, loc) }
9363  }
9364}
9365
9366impl<'a> DucPointBinding<'a> {
9367  pub const VT_ELEMENT_ID: flatbuffers::VOffsetT = 4;
9368  pub const VT_FOCUS: flatbuffers::VOffsetT = 6;
9369  pub const VT_GAP: flatbuffers::VOffsetT = 8;
9370  pub const VT_FIXED_POINT: flatbuffers::VOffsetT = 10;
9371  pub const VT_POINT: flatbuffers::VOffsetT = 12;
9372  pub const VT_HEAD: flatbuffers::VOffsetT = 14;
9373
9374  #[inline]
9375  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9376    DucPointBinding { _tab: table }
9377  }
9378  #[allow(unused_mut)]
9379  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9380    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9381    args: &'args DucPointBindingArgs<'args>
9382  ) -> flatbuffers::WIPOffset<DucPointBinding<'bldr>> {
9383    let mut builder = DucPointBindingBuilder::new(_fbb);
9384    builder.add_gap(args.gap);
9385    if let Some(x) = args.head { builder.add_head(x); }
9386    if let Some(x) = args.point { builder.add_point(x); }
9387    if let Some(x) = args.fixed_point { builder.add_fixed_point(x); }
9388    builder.add_focus(args.focus);
9389    if let Some(x) = args.element_id { builder.add_element_id(x); }
9390    builder.finish()
9391  }
9392
9393
9394  #[inline]
9395  pub fn element_id(&self) -> Option<&'a str> {
9396    // Safety:
9397    // Created from valid Table for this object
9398    // which contains a valid value in this slot
9399    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucPointBinding::VT_ELEMENT_ID, None)}
9400  }
9401  #[inline]
9402  pub fn focus(&self) -> f32 {
9403    // Safety:
9404    // Created from valid Table for this object
9405    // which contains a valid value in this slot
9406    unsafe { self._tab.get::<f32>(DucPointBinding::VT_FOCUS, Some(0.0)).unwrap()}
9407  }
9408  #[inline]
9409  pub fn gap(&self) -> f64 {
9410    // Safety:
9411    // Created from valid Table for this object
9412    // which contains a valid value in this slot
9413    unsafe { self._tab.get::<f64>(DucPointBinding::VT_GAP, Some(0.0)).unwrap()}
9414  }
9415  #[inline]
9416  pub fn fixed_point(&self) -> Option<&'a GeometricPoint> {
9417    // Safety:
9418    // Created from valid Table for this object
9419    // which contains a valid value in this slot
9420    unsafe { self._tab.get::<GeometricPoint>(DucPointBinding::VT_FIXED_POINT, None)}
9421  }
9422  #[inline]
9423  pub fn point(&self) -> Option<PointBindingPoint<'a>> {
9424    // Safety:
9425    // Created from valid Table for this object
9426    // which contains a valid value in this slot
9427    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PointBindingPoint>>(DucPointBinding::VT_POINT, None)}
9428  }
9429  #[inline]
9430  pub fn head(&self) -> Option<DucHead<'a>> {
9431    // Safety:
9432    // Created from valid Table for this object
9433    // which contains a valid value in this slot
9434    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucHead>>(DucPointBinding::VT_HEAD, None)}
9435  }
9436}
9437
9438impl flatbuffers::Verifiable for DucPointBinding<'_> {
9439  #[inline]
9440  fn run_verifier(
9441    v: &mut flatbuffers::Verifier, pos: usize
9442  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9443    use self::flatbuffers::Verifiable;
9444    v.visit_table(pos)?
9445     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("element_id", Self::VT_ELEMENT_ID, false)?
9446     .visit_field::<f32>("focus", Self::VT_FOCUS, false)?
9447     .visit_field::<f64>("gap", Self::VT_GAP, false)?
9448     .visit_field::<GeometricPoint>("fixed_point", Self::VT_FIXED_POINT, false)?
9449     .visit_field::<flatbuffers::ForwardsUOffset<PointBindingPoint>>("point", Self::VT_POINT, false)?
9450     .visit_field::<flatbuffers::ForwardsUOffset<DucHead>>("head", Self::VT_HEAD, false)?
9451     .finish();
9452    Ok(())
9453  }
9454}
9455pub struct DucPointBindingArgs<'a> {
9456    pub element_id: Option<flatbuffers::WIPOffset<&'a str>>,
9457    pub focus: f32,
9458    pub gap: f64,
9459    pub fixed_point: Option<&'a GeometricPoint>,
9460    pub point: Option<flatbuffers::WIPOffset<PointBindingPoint<'a>>>,
9461    pub head: Option<flatbuffers::WIPOffset<DucHead<'a>>>,
9462}
9463impl<'a> Default for DucPointBindingArgs<'a> {
9464  #[inline]
9465  fn default() -> Self {
9466    DucPointBindingArgs {
9467      element_id: None,
9468      focus: 0.0,
9469      gap: 0.0,
9470      fixed_point: None,
9471      point: None,
9472      head: None,
9473    }
9474  }
9475}
9476
9477pub struct DucPointBindingBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9478  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9479  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9480}
9481impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPointBindingBuilder<'a, 'b, A> {
9482  #[inline]
9483  pub fn add_element_id(&mut self, element_id: flatbuffers::WIPOffset<&'b  str>) {
9484    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucPointBinding::VT_ELEMENT_ID, element_id);
9485  }
9486  #[inline]
9487  pub fn add_focus(&mut self, focus: f32) {
9488    self.fbb_.push_slot::<f32>(DucPointBinding::VT_FOCUS, focus, 0.0);
9489  }
9490  #[inline]
9491  pub fn add_gap(&mut self, gap: f64) {
9492    self.fbb_.push_slot::<f64>(DucPointBinding::VT_GAP, gap, 0.0);
9493  }
9494  #[inline]
9495  pub fn add_fixed_point(&mut self, fixed_point: &GeometricPoint) {
9496    self.fbb_.push_slot_always::<&GeometricPoint>(DucPointBinding::VT_FIXED_POINT, fixed_point);
9497  }
9498  #[inline]
9499  pub fn add_point(&mut self, point: flatbuffers::WIPOffset<PointBindingPoint<'b >>) {
9500    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PointBindingPoint>>(DucPointBinding::VT_POINT, point);
9501  }
9502  #[inline]
9503  pub fn add_head(&mut self, head: flatbuffers::WIPOffset<DucHead<'b >>) {
9504    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucHead>>(DucPointBinding::VT_HEAD, head);
9505  }
9506  #[inline]
9507  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPointBindingBuilder<'a, 'b, A> {
9508    let start = _fbb.start_table();
9509    DucPointBindingBuilder {
9510      fbb_: _fbb,
9511      start_: start,
9512    }
9513  }
9514  #[inline]
9515  pub fn finish(self) -> flatbuffers::WIPOffset<DucPointBinding<'a>> {
9516    let o = self.fbb_.end_table(self.start_);
9517    flatbuffers::WIPOffset::new(o.value())
9518  }
9519}
9520
9521impl core::fmt::Debug for DucPointBinding<'_> {
9522  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9523    let mut ds = f.debug_struct("DucPointBinding");
9524      ds.field("element_id", &self.element_id());
9525      ds.field("focus", &self.focus());
9526      ds.field("gap", &self.gap());
9527      ds.field("fixed_point", &self.fixed_point());
9528      ds.field("point", &self.point());
9529      ds.field("head", &self.head());
9530      ds.finish()
9531  }
9532}
9533pub enum DucLineReferenceOffset {}
9534#[derive(Copy, Clone, PartialEq)]
9535
9536pub struct DucLineReference<'a> {
9537  pub _tab: flatbuffers::Table<'a>,
9538}
9539
9540impl<'a> flatbuffers::Follow<'a> for DucLineReference<'a> {
9541  type Inner = DucLineReference<'a>;
9542  #[inline]
9543  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9544    Self { _tab: flatbuffers::Table::new(buf, loc) }
9545  }
9546}
9547
9548impl<'a> DucLineReference<'a> {
9549  pub const VT_INDEX: flatbuffers::VOffsetT = 4;
9550  pub const VT_HANDLE: flatbuffers::VOffsetT = 6;
9551
9552  #[inline]
9553  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9554    DucLineReference { _tab: table }
9555  }
9556  #[allow(unused_mut)]
9557  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9558    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9559    args: &'args DucLineReferenceArgs<'args>
9560  ) -> flatbuffers::WIPOffset<DucLineReference<'bldr>> {
9561    let mut builder = DucLineReferenceBuilder::new(_fbb);
9562    if let Some(x) = args.handle { builder.add_handle(x); }
9563    builder.add_index(args.index);
9564    builder.finish()
9565  }
9566
9567
9568  #[inline]
9569  pub fn index(&self) -> i32 {
9570    // Safety:
9571    // Created from valid Table for this object
9572    // which contains a valid value in this slot
9573    unsafe { self._tab.get::<i32>(DucLineReference::VT_INDEX, Some(0)).unwrap()}
9574  }
9575  #[inline]
9576  pub fn handle(&self) -> Option<&'a GeometricPoint> {
9577    // Safety:
9578    // Created from valid Table for this object
9579    // which contains a valid value in this slot
9580    unsafe { self._tab.get::<GeometricPoint>(DucLineReference::VT_HANDLE, None)}
9581  }
9582}
9583
9584impl flatbuffers::Verifiable for DucLineReference<'_> {
9585  #[inline]
9586  fn run_verifier(
9587    v: &mut flatbuffers::Verifier, pos: usize
9588  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9589    use self::flatbuffers::Verifiable;
9590    v.visit_table(pos)?
9591     .visit_field::<i32>("index", Self::VT_INDEX, false)?
9592     .visit_field::<GeometricPoint>("handle", Self::VT_HANDLE, false)?
9593     .finish();
9594    Ok(())
9595  }
9596}
9597pub struct DucLineReferenceArgs<'a> {
9598    pub index: i32,
9599    pub handle: Option<&'a GeometricPoint>,
9600}
9601impl<'a> Default for DucLineReferenceArgs<'a> {
9602  #[inline]
9603  fn default() -> Self {
9604    DucLineReferenceArgs {
9605      index: 0,
9606      handle: None,
9607    }
9608  }
9609}
9610
9611pub struct DucLineReferenceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9612  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9613  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9614}
9615impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLineReferenceBuilder<'a, 'b, A> {
9616  #[inline]
9617  pub fn add_index(&mut self, index: i32) {
9618    self.fbb_.push_slot::<i32>(DucLineReference::VT_INDEX, index, 0);
9619  }
9620  #[inline]
9621  pub fn add_handle(&mut self, handle: &GeometricPoint) {
9622    self.fbb_.push_slot_always::<&GeometricPoint>(DucLineReference::VT_HANDLE, handle);
9623  }
9624  #[inline]
9625  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLineReferenceBuilder<'a, 'b, A> {
9626    let start = _fbb.start_table();
9627    DucLineReferenceBuilder {
9628      fbb_: _fbb,
9629      start_: start,
9630    }
9631  }
9632  #[inline]
9633  pub fn finish(self) -> flatbuffers::WIPOffset<DucLineReference<'a>> {
9634    let o = self.fbb_.end_table(self.start_);
9635    flatbuffers::WIPOffset::new(o.value())
9636  }
9637}
9638
9639impl core::fmt::Debug for DucLineReference<'_> {
9640  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9641    let mut ds = f.debug_struct("DucLineReference");
9642      ds.field("index", &self.index());
9643      ds.field("handle", &self.handle());
9644      ds.finish()
9645  }
9646}
9647pub enum DucLineOffset {}
9648#[derive(Copy, Clone, PartialEq)]
9649
9650pub struct DucLine<'a> {
9651  pub _tab: flatbuffers::Table<'a>,
9652}
9653
9654impl<'a> flatbuffers::Follow<'a> for DucLine<'a> {
9655  type Inner = DucLine<'a>;
9656  #[inline]
9657  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9658    Self { _tab: flatbuffers::Table::new(buf, loc) }
9659  }
9660}
9661
9662impl<'a> DucLine<'a> {
9663  pub const VT_START: flatbuffers::VOffsetT = 4;
9664  pub const VT_END: flatbuffers::VOffsetT = 6;
9665
9666  #[inline]
9667  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9668    DucLine { _tab: table }
9669  }
9670  #[allow(unused_mut)]
9671  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9672    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9673    args: &'args DucLineArgs<'args>
9674  ) -> flatbuffers::WIPOffset<DucLine<'bldr>> {
9675    let mut builder = DucLineBuilder::new(_fbb);
9676    if let Some(x) = args.end { builder.add_end(x); }
9677    if let Some(x) = args.start { builder.add_start(x); }
9678    builder.finish()
9679  }
9680
9681
9682  #[inline]
9683  pub fn start(&self) -> Option<DucLineReference<'a>> {
9684    // Safety:
9685    // Created from valid Table for this object
9686    // which contains a valid value in this slot
9687    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLineReference>>(DucLine::VT_START, None)}
9688  }
9689  #[inline]
9690  pub fn end(&self) -> Option<DucLineReference<'a>> {
9691    // Safety:
9692    // Created from valid Table for this object
9693    // which contains a valid value in this slot
9694    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLineReference>>(DucLine::VT_END, None)}
9695  }
9696}
9697
9698impl flatbuffers::Verifiable for DucLine<'_> {
9699  #[inline]
9700  fn run_verifier(
9701    v: &mut flatbuffers::Verifier, pos: usize
9702  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9703    use self::flatbuffers::Verifiable;
9704    v.visit_table(pos)?
9705     .visit_field::<flatbuffers::ForwardsUOffset<DucLineReference>>("start", Self::VT_START, false)?
9706     .visit_field::<flatbuffers::ForwardsUOffset<DucLineReference>>("end", Self::VT_END, false)?
9707     .finish();
9708    Ok(())
9709  }
9710}
9711pub struct DucLineArgs<'a> {
9712    pub start: Option<flatbuffers::WIPOffset<DucLineReference<'a>>>,
9713    pub end: Option<flatbuffers::WIPOffset<DucLineReference<'a>>>,
9714}
9715impl<'a> Default for DucLineArgs<'a> {
9716  #[inline]
9717  fn default() -> Self {
9718    DucLineArgs {
9719      start: None,
9720      end: None,
9721    }
9722  }
9723}
9724
9725pub struct DucLineBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9726  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9727  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9728}
9729impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLineBuilder<'a, 'b, A> {
9730  #[inline]
9731  pub fn add_start(&mut self, start: flatbuffers::WIPOffset<DucLineReference<'b >>) {
9732    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLineReference>>(DucLine::VT_START, start);
9733  }
9734  #[inline]
9735  pub fn add_end(&mut self, end: flatbuffers::WIPOffset<DucLineReference<'b >>) {
9736    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLineReference>>(DucLine::VT_END, end);
9737  }
9738  #[inline]
9739  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLineBuilder<'a, 'b, A> {
9740    let start = _fbb.start_table();
9741    DucLineBuilder {
9742      fbb_: _fbb,
9743      start_: start,
9744    }
9745  }
9746  #[inline]
9747  pub fn finish(self) -> flatbuffers::WIPOffset<DucLine<'a>> {
9748    let o = self.fbb_.end_table(self.start_);
9749    flatbuffers::WIPOffset::new(o.value())
9750  }
9751}
9752
9753impl core::fmt::Debug for DucLine<'_> {
9754  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9755    let mut ds = f.debug_struct("DucLine");
9756      ds.field("start", &self.start());
9757      ds.field("end", &self.end());
9758      ds.finish()
9759  }
9760}
9761pub enum DucPathOffset {}
9762#[derive(Copy, Clone, PartialEq)]
9763
9764pub struct DucPath<'a> {
9765  pub _tab: flatbuffers::Table<'a>,
9766}
9767
9768impl<'a> flatbuffers::Follow<'a> for DucPath<'a> {
9769  type Inner = DucPath<'a>;
9770  #[inline]
9771  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9772    Self { _tab: flatbuffers::Table::new(buf, loc) }
9773  }
9774}
9775
9776impl<'a> DucPath<'a> {
9777  pub const VT_LINE_INDICES: flatbuffers::VOffsetT = 4;
9778  pub const VT_BACKGROUND: flatbuffers::VOffsetT = 6;
9779  pub const VT_STROKE: flatbuffers::VOffsetT = 8;
9780
9781  #[inline]
9782  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9783    DucPath { _tab: table }
9784  }
9785  #[allow(unused_mut)]
9786  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9787    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9788    args: &'args DucPathArgs<'args>
9789  ) -> flatbuffers::WIPOffset<DucPath<'bldr>> {
9790    let mut builder = DucPathBuilder::new(_fbb);
9791    if let Some(x) = args.stroke { builder.add_stroke(x); }
9792    if let Some(x) = args.background { builder.add_background(x); }
9793    if let Some(x) = args.line_indices { builder.add_line_indices(x); }
9794    builder.finish()
9795  }
9796
9797
9798  #[inline]
9799  pub fn line_indices(&self) -> Option<flatbuffers::Vector<'a, i32>> {
9800    // Safety:
9801    // Created from valid Table for this object
9802    // which contains a valid value in this slot
9803    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(DucPath::VT_LINE_INDICES, None)}
9804  }
9805  #[inline]
9806  pub fn background(&self) -> Option<ElementBackground<'a>> {
9807    // Safety:
9808    // Created from valid Table for this object
9809    // which contains a valid value in this slot
9810    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementBackground>>(DucPath::VT_BACKGROUND, None)}
9811  }
9812  #[inline]
9813  pub fn stroke(&self) -> Option<ElementStroke<'a>> {
9814    // Safety:
9815    // Created from valid Table for this object
9816    // which contains a valid value in this slot
9817    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DucPath::VT_STROKE, None)}
9818  }
9819}
9820
9821impl flatbuffers::Verifiable for DucPath<'_> {
9822  #[inline]
9823  fn run_verifier(
9824    v: &mut flatbuffers::Verifier, pos: usize
9825  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9826    use self::flatbuffers::Verifiable;
9827    v.visit_table(pos)?
9828     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("line_indices", Self::VT_LINE_INDICES, false)?
9829     .visit_field::<flatbuffers::ForwardsUOffset<ElementBackground>>("background", Self::VT_BACKGROUND, false)?
9830     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("stroke", Self::VT_STROKE, false)?
9831     .finish();
9832    Ok(())
9833  }
9834}
9835pub struct DucPathArgs<'a> {
9836    pub line_indices: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
9837    pub background: Option<flatbuffers::WIPOffset<ElementBackground<'a>>>,
9838    pub stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
9839}
9840impl<'a> Default for DucPathArgs<'a> {
9841  #[inline]
9842  fn default() -> Self {
9843    DucPathArgs {
9844      line_indices: None,
9845      background: None,
9846      stroke: None,
9847    }
9848  }
9849}
9850
9851pub struct DucPathBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
9852  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
9853  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
9854}
9855impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPathBuilder<'a, 'b, A> {
9856  #[inline]
9857  pub fn add_line_indices(&mut self, line_indices: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
9858    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucPath::VT_LINE_INDICES, line_indices);
9859  }
9860  #[inline]
9861  pub fn add_background(&mut self, background: flatbuffers::WIPOffset<ElementBackground<'b >>) {
9862    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementBackground>>(DucPath::VT_BACKGROUND, background);
9863  }
9864  #[inline]
9865  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
9866    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DucPath::VT_STROKE, stroke);
9867  }
9868  #[inline]
9869  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPathBuilder<'a, 'b, A> {
9870    let start = _fbb.start_table();
9871    DucPathBuilder {
9872      fbb_: _fbb,
9873      start_: start,
9874    }
9875  }
9876  #[inline]
9877  pub fn finish(self) -> flatbuffers::WIPOffset<DucPath<'a>> {
9878    let o = self.fbb_.end_table(self.start_);
9879    flatbuffers::WIPOffset::new(o.value())
9880  }
9881}
9882
9883impl core::fmt::Debug for DucPath<'_> {
9884  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9885    let mut ds = f.debug_struct("DucPath");
9886      ds.field("line_indices", &self.line_indices());
9887      ds.field("background", &self.background());
9888      ds.field("stroke", &self.stroke());
9889      ds.finish()
9890  }
9891}
9892pub enum _DucLinearElementBaseOffset {}
9893#[derive(Copy, Clone, PartialEq)]
9894
9895pub struct _DucLinearElementBase<'a> {
9896  pub _tab: flatbuffers::Table<'a>,
9897}
9898
9899impl<'a> flatbuffers::Follow<'a> for _DucLinearElementBase<'a> {
9900  type Inner = _DucLinearElementBase<'a>;
9901  #[inline]
9902  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
9903    Self { _tab: flatbuffers::Table::new(buf, loc) }
9904  }
9905}
9906
9907impl<'a> _DucLinearElementBase<'a> {
9908  pub const VT_BASE: flatbuffers::VOffsetT = 4;
9909  pub const VT_POINTS: flatbuffers::VOffsetT = 6;
9910  pub const VT_LINES: flatbuffers::VOffsetT = 8;
9911  pub const VT_PATH_OVERRIDES: flatbuffers::VOffsetT = 10;
9912  pub const VT_LAST_COMMITTED_POINT: flatbuffers::VOffsetT = 12;
9913  pub const VT_START_BINDING: flatbuffers::VOffsetT = 14;
9914  pub const VT_END_BINDING: flatbuffers::VOffsetT = 16;
9915
9916  #[inline]
9917  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
9918    _DucLinearElementBase { _tab: table }
9919  }
9920  #[allow(unused_mut)]
9921  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
9922    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
9923    args: &'args _DucLinearElementBaseArgs<'args>
9924  ) -> flatbuffers::WIPOffset<_DucLinearElementBase<'bldr>> {
9925    let mut builder = _DucLinearElementBaseBuilder::new(_fbb);
9926    if let Some(x) = args.end_binding { builder.add_end_binding(x); }
9927    if let Some(x) = args.start_binding { builder.add_start_binding(x); }
9928    if let Some(x) = args.last_committed_point { builder.add_last_committed_point(x); }
9929    if let Some(x) = args.path_overrides { builder.add_path_overrides(x); }
9930    if let Some(x) = args.lines { builder.add_lines(x); }
9931    if let Some(x) = args.points { builder.add_points(x); }
9932    if let Some(x) = args.base { builder.add_base(x); }
9933    builder.finish()
9934  }
9935
9936
9937  #[inline]
9938  pub fn base(&self) -> Option<_DucElementBase<'a>> {
9939    // Safety:
9940    // Created from valid Table for this object
9941    // which contains a valid value in this slot
9942    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(_DucLinearElementBase::VT_BASE, None)}
9943  }
9944  #[inline]
9945  pub fn points(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint<'a>>>> {
9946    // Safety:
9947    // Created from valid Table for this object
9948    // which contains a valid value in this slot
9949    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint>>>>(_DucLinearElementBase::VT_POINTS, None)}
9950  }
9951  #[inline]
9952  pub fn lines(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLine<'a>>>> {
9953    // Safety:
9954    // Created from valid Table for this object
9955    // which contains a valid value in this slot
9956    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLine>>>>(_DucLinearElementBase::VT_LINES, None)}
9957  }
9958  #[inline]
9959  pub fn path_overrides(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPath<'a>>>> {
9960    // Safety:
9961    // Created from valid Table for this object
9962    // which contains a valid value in this slot
9963    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPath>>>>(_DucLinearElementBase::VT_PATH_OVERRIDES, None)}
9964  }
9965  #[inline]
9966  pub fn last_committed_point(&self) -> Option<DucPoint<'a>> {
9967    // Safety:
9968    // Created from valid Table for this object
9969    // which contains a valid value in this slot
9970    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(_DucLinearElementBase::VT_LAST_COMMITTED_POINT, None)}
9971  }
9972  #[inline]
9973  pub fn start_binding(&self) -> Option<DucPointBinding<'a>> {
9974    // Safety:
9975    // Created from valid Table for this object
9976    // which contains a valid value in this slot
9977    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(_DucLinearElementBase::VT_START_BINDING, None)}
9978  }
9979  #[inline]
9980  pub fn end_binding(&self) -> Option<DucPointBinding<'a>> {
9981    // Safety:
9982    // Created from valid Table for this object
9983    // which contains a valid value in this slot
9984    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(_DucLinearElementBase::VT_END_BINDING, None)}
9985  }
9986}
9987
9988impl flatbuffers::Verifiable for _DucLinearElementBase<'_> {
9989  #[inline]
9990  fn run_verifier(
9991    v: &mut flatbuffers::Verifier, pos: usize
9992  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
9993    use self::flatbuffers::Verifiable;
9994    v.visit_table(pos)?
9995     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
9996     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucPoint>>>>("points", Self::VT_POINTS, false)?
9997     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucLine>>>>("lines", Self::VT_LINES, false)?
9998     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucPath>>>>("path_overrides", Self::VT_PATH_OVERRIDES, false)?
9999     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("last_committed_point", Self::VT_LAST_COMMITTED_POINT, false)?
10000     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("start_binding", Self::VT_START_BINDING, false)?
10001     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("end_binding", Self::VT_END_BINDING, false)?
10002     .finish();
10003    Ok(())
10004  }
10005}
10006pub struct _DucLinearElementBaseArgs<'a> {
10007    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
10008    pub points: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint<'a>>>>>,
10009    pub lines: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLine<'a>>>>>,
10010    pub path_overrides: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPath<'a>>>>>,
10011    pub last_committed_point: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
10012    pub start_binding: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
10013    pub end_binding: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
10014}
10015impl<'a> Default for _DucLinearElementBaseArgs<'a> {
10016  #[inline]
10017  fn default() -> Self {
10018    _DucLinearElementBaseArgs {
10019      base: None,
10020      points: None,
10021      lines: None,
10022      path_overrides: None,
10023      last_committed_point: None,
10024      start_binding: None,
10025      end_binding: None,
10026    }
10027  }
10028}
10029
10030pub struct _DucLinearElementBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10031  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10032  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10033}
10034impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _DucLinearElementBaseBuilder<'a, 'b, A> {
10035  #[inline]
10036  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
10037    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(_DucLinearElementBase::VT_BASE, base);
10038  }
10039  #[inline]
10040  pub fn add_points(&mut self, points: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucPoint<'b >>>>) {
10041    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucLinearElementBase::VT_POINTS, points);
10042  }
10043  #[inline]
10044  pub fn add_lines(&mut self, lines: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucLine<'b >>>>) {
10045    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucLinearElementBase::VT_LINES, lines);
10046  }
10047  #[inline]
10048  pub fn add_path_overrides(&mut self, path_overrides: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucPath<'b >>>>) {
10049    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucLinearElementBase::VT_PATH_OVERRIDES, path_overrides);
10050  }
10051  #[inline]
10052  pub fn add_last_committed_point(&mut self, last_committed_point: flatbuffers::WIPOffset<DucPoint<'b >>) {
10053    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(_DucLinearElementBase::VT_LAST_COMMITTED_POINT, last_committed_point);
10054  }
10055  #[inline]
10056  pub fn add_start_binding(&mut self, start_binding: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
10057    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(_DucLinearElementBase::VT_START_BINDING, start_binding);
10058  }
10059  #[inline]
10060  pub fn add_end_binding(&mut self, end_binding: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
10061    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(_DucLinearElementBase::VT_END_BINDING, end_binding);
10062  }
10063  #[inline]
10064  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _DucLinearElementBaseBuilder<'a, 'b, A> {
10065    let start = _fbb.start_table();
10066    _DucLinearElementBaseBuilder {
10067      fbb_: _fbb,
10068      start_: start,
10069    }
10070  }
10071  #[inline]
10072  pub fn finish(self) -> flatbuffers::WIPOffset<_DucLinearElementBase<'a>> {
10073    let o = self.fbb_.end_table(self.start_);
10074    flatbuffers::WIPOffset::new(o.value())
10075  }
10076}
10077
10078impl core::fmt::Debug for _DucLinearElementBase<'_> {
10079  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10080    let mut ds = f.debug_struct("_DucLinearElementBase");
10081      ds.field("base", &self.base());
10082      ds.field("points", &self.points());
10083      ds.field("lines", &self.lines());
10084      ds.field("path_overrides", &self.path_overrides());
10085      ds.field("last_committed_point", &self.last_committed_point());
10086      ds.field("start_binding", &self.start_binding());
10087      ds.field("end_binding", &self.end_binding());
10088      ds.finish()
10089  }
10090}
10091pub enum DucStackLikeStylesOffset {}
10092#[derive(Copy, Clone, PartialEq)]
10093
10094pub struct DucStackLikeStyles<'a> {
10095  pub _tab: flatbuffers::Table<'a>,
10096}
10097
10098impl<'a> flatbuffers::Follow<'a> for DucStackLikeStyles<'a> {
10099  type Inner = DucStackLikeStyles<'a>;
10100  #[inline]
10101  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10102    Self { _tab: flatbuffers::Table::new(buf, loc) }
10103  }
10104}
10105
10106impl<'a> DucStackLikeStyles<'a> {
10107  pub const VT_OPACITY: flatbuffers::VOffsetT = 4;
10108  pub const VT_LABELING_COLOR: flatbuffers::VOffsetT = 6;
10109
10110  #[inline]
10111  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10112    DucStackLikeStyles { _tab: table }
10113  }
10114  #[allow(unused_mut)]
10115  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
10116    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
10117    args: &'args DucStackLikeStylesArgs<'args>
10118  ) -> flatbuffers::WIPOffset<DucStackLikeStyles<'bldr>> {
10119    let mut builder = DucStackLikeStylesBuilder::new(_fbb);
10120    builder.add_opacity(args.opacity);
10121    if let Some(x) = args.labeling_color { builder.add_labeling_color(x); }
10122    builder.finish()
10123  }
10124
10125
10126  #[inline]
10127  pub fn opacity(&self) -> f64 {
10128    // Safety:
10129    // Created from valid Table for this object
10130    // which contains a valid value in this slot
10131    unsafe { self._tab.get::<f64>(DucStackLikeStyles::VT_OPACITY, Some(0.0)).unwrap()}
10132  }
10133  #[inline]
10134  pub fn labeling_color(&self) -> Option<&'a str> {
10135    // Safety:
10136    // Created from valid Table for this object
10137    // which contains a valid value in this slot
10138    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucStackLikeStyles::VT_LABELING_COLOR, None)}
10139  }
10140}
10141
10142impl flatbuffers::Verifiable for DucStackLikeStyles<'_> {
10143  #[inline]
10144  fn run_verifier(
10145    v: &mut flatbuffers::Verifier, pos: usize
10146  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10147    use self::flatbuffers::Verifiable;
10148    v.visit_table(pos)?
10149     .visit_field::<f64>("opacity", Self::VT_OPACITY, false)?
10150     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("labeling_color", Self::VT_LABELING_COLOR, false)?
10151     .finish();
10152    Ok(())
10153  }
10154}
10155pub struct DucStackLikeStylesArgs<'a> {
10156    pub opacity: f64,
10157    pub labeling_color: Option<flatbuffers::WIPOffset<&'a str>>,
10158}
10159impl<'a> Default for DucStackLikeStylesArgs<'a> {
10160  #[inline]
10161  fn default() -> Self {
10162    DucStackLikeStylesArgs {
10163      opacity: 0.0,
10164      labeling_color: None,
10165    }
10166  }
10167}
10168
10169pub struct DucStackLikeStylesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10170  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10171  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10172}
10173impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucStackLikeStylesBuilder<'a, 'b, A> {
10174  #[inline]
10175  pub fn add_opacity(&mut self, opacity: f64) {
10176    self.fbb_.push_slot::<f64>(DucStackLikeStyles::VT_OPACITY, opacity, 0.0);
10177  }
10178  #[inline]
10179  pub fn add_labeling_color(&mut self, labeling_color: flatbuffers::WIPOffset<&'b  str>) {
10180    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucStackLikeStyles::VT_LABELING_COLOR, labeling_color);
10181  }
10182  #[inline]
10183  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucStackLikeStylesBuilder<'a, 'b, A> {
10184    let start = _fbb.start_table();
10185    DucStackLikeStylesBuilder {
10186      fbb_: _fbb,
10187      start_: start,
10188    }
10189  }
10190  #[inline]
10191  pub fn finish(self) -> flatbuffers::WIPOffset<DucStackLikeStyles<'a>> {
10192    let o = self.fbb_.end_table(self.start_);
10193    flatbuffers::WIPOffset::new(o.value())
10194  }
10195}
10196
10197impl core::fmt::Debug for DucStackLikeStyles<'_> {
10198  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10199    let mut ds = f.debug_struct("DucStackLikeStyles");
10200      ds.field("opacity", &self.opacity());
10201      ds.field("labeling_color", &self.labeling_color());
10202      ds.finish()
10203  }
10204}
10205pub enum _DucStackBaseOffset {}
10206#[derive(Copy, Clone, PartialEq)]
10207
10208pub struct _DucStackBase<'a> {
10209  pub _tab: flatbuffers::Table<'a>,
10210}
10211
10212impl<'a> flatbuffers::Follow<'a> for _DucStackBase<'a> {
10213  type Inner = _DucStackBase<'a>;
10214  #[inline]
10215  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10216    Self { _tab: flatbuffers::Table::new(buf, loc) }
10217  }
10218}
10219
10220impl<'a> _DucStackBase<'a> {
10221  pub const VT_LABEL: flatbuffers::VOffsetT = 4;
10222  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 6;
10223  pub const VT_IS_COLLAPSED: flatbuffers::VOffsetT = 8;
10224  pub const VT_IS_PLOT: flatbuffers::VOffsetT = 10;
10225  pub const VT_IS_VISIBLE: flatbuffers::VOffsetT = 12;
10226  pub const VT_LOCKED: flatbuffers::VOffsetT = 14;
10227  pub const VT_STYLES: flatbuffers::VOffsetT = 16;
10228
10229  #[inline]
10230  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10231    _DucStackBase { _tab: table }
10232  }
10233  #[allow(unused_mut)]
10234  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
10235    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
10236    args: &'args _DucStackBaseArgs<'args>
10237  ) -> flatbuffers::WIPOffset<_DucStackBase<'bldr>> {
10238    let mut builder = _DucStackBaseBuilder::new(_fbb);
10239    if let Some(x) = args.styles { builder.add_styles(x); }
10240    if let Some(x) = args.description { builder.add_description(x); }
10241    if let Some(x) = args.label { builder.add_label(x); }
10242    builder.add_locked(args.locked);
10243    builder.add_is_visible(args.is_visible);
10244    builder.add_is_plot(args.is_plot);
10245    builder.add_is_collapsed(args.is_collapsed);
10246    builder.finish()
10247  }
10248
10249
10250  #[inline]
10251  pub fn label(&self) -> Option<&'a str> {
10252    // Safety:
10253    // Created from valid Table for this object
10254    // which contains a valid value in this slot
10255    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucStackBase::VT_LABEL, None)}
10256  }
10257  #[inline]
10258  pub fn description(&self) -> Option<&'a str> {
10259    // Safety:
10260    // Created from valid Table for this object
10261    // which contains a valid value in this slot
10262    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucStackBase::VT_DESCRIPTION, None)}
10263  }
10264  #[inline]
10265  pub fn is_collapsed(&self) -> bool {
10266    // Safety:
10267    // Created from valid Table for this object
10268    // which contains a valid value in this slot
10269    unsafe { self._tab.get::<bool>(_DucStackBase::VT_IS_COLLAPSED, Some(false)).unwrap()}
10270  }
10271  #[inline]
10272  pub fn is_plot(&self) -> bool {
10273    // Safety:
10274    // Created from valid Table for this object
10275    // which contains a valid value in this slot
10276    unsafe { self._tab.get::<bool>(_DucStackBase::VT_IS_PLOT, Some(false)).unwrap()}
10277  }
10278  #[inline]
10279  pub fn is_visible(&self) -> bool {
10280    // Safety:
10281    // Created from valid Table for this object
10282    // which contains a valid value in this slot
10283    unsafe { self._tab.get::<bool>(_DucStackBase::VT_IS_VISIBLE, Some(false)).unwrap()}
10284  }
10285  #[inline]
10286  pub fn locked(&self) -> bool {
10287    // Safety:
10288    // Created from valid Table for this object
10289    // which contains a valid value in this slot
10290    unsafe { self._tab.get::<bool>(_DucStackBase::VT_LOCKED, Some(false)).unwrap()}
10291  }
10292  #[inline]
10293  pub fn styles(&self) -> Option<DucStackLikeStyles<'a>> {
10294    // Safety:
10295    // Created from valid Table for this object
10296    // which contains a valid value in this slot
10297    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucStackLikeStyles>>(_DucStackBase::VT_STYLES, None)}
10298  }
10299}
10300
10301impl flatbuffers::Verifiable for _DucStackBase<'_> {
10302  #[inline]
10303  fn run_verifier(
10304    v: &mut flatbuffers::Verifier, pos: usize
10305  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10306    use self::flatbuffers::Verifiable;
10307    v.visit_table(pos)?
10308     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("label", Self::VT_LABEL, false)?
10309     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
10310     .visit_field::<bool>("is_collapsed", Self::VT_IS_COLLAPSED, false)?
10311     .visit_field::<bool>("is_plot", Self::VT_IS_PLOT, false)?
10312     .visit_field::<bool>("is_visible", Self::VT_IS_VISIBLE, false)?
10313     .visit_field::<bool>("locked", Self::VT_LOCKED, false)?
10314     .visit_field::<flatbuffers::ForwardsUOffset<DucStackLikeStyles>>("styles", Self::VT_STYLES, false)?
10315     .finish();
10316    Ok(())
10317  }
10318}
10319pub struct _DucStackBaseArgs<'a> {
10320    pub label: Option<flatbuffers::WIPOffset<&'a str>>,
10321    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
10322    pub is_collapsed: bool,
10323    pub is_plot: bool,
10324    pub is_visible: bool,
10325    pub locked: bool,
10326    pub styles: Option<flatbuffers::WIPOffset<DucStackLikeStyles<'a>>>,
10327}
10328impl<'a> Default for _DucStackBaseArgs<'a> {
10329  #[inline]
10330  fn default() -> Self {
10331    _DucStackBaseArgs {
10332      label: None,
10333      description: None,
10334      is_collapsed: false,
10335      is_plot: false,
10336      is_visible: false,
10337      locked: false,
10338      styles: None,
10339    }
10340  }
10341}
10342
10343pub struct _DucStackBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10344  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10345  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10346}
10347impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _DucStackBaseBuilder<'a, 'b, A> {
10348  #[inline]
10349  pub fn add_label(&mut self, label: flatbuffers::WIPOffset<&'b  str>) {
10350    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucStackBase::VT_LABEL, label);
10351  }
10352  #[inline]
10353  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
10354    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucStackBase::VT_DESCRIPTION, description);
10355  }
10356  #[inline]
10357  pub fn add_is_collapsed(&mut self, is_collapsed: bool) {
10358    self.fbb_.push_slot::<bool>(_DucStackBase::VT_IS_COLLAPSED, is_collapsed, false);
10359  }
10360  #[inline]
10361  pub fn add_is_plot(&mut self, is_plot: bool) {
10362    self.fbb_.push_slot::<bool>(_DucStackBase::VT_IS_PLOT, is_plot, false);
10363  }
10364  #[inline]
10365  pub fn add_is_visible(&mut self, is_visible: bool) {
10366    self.fbb_.push_slot::<bool>(_DucStackBase::VT_IS_VISIBLE, is_visible, false);
10367  }
10368  #[inline]
10369  pub fn add_locked(&mut self, locked: bool) {
10370    self.fbb_.push_slot::<bool>(_DucStackBase::VT_LOCKED, locked, false);
10371  }
10372  #[inline]
10373  pub fn add_styles(&mut self, styles: flatbuffers::WIPOffset<DucStackLikeStyles<'b >>) {
10374    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucStackLikeStyles>>(_DucStackBase::VT_STYLES, styles);
10375  }
10376  #[inline]
10377  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _DucStackBaseBuilder<'a, 'b, A> {
10378    let start = _fbb.start_table();
10379    _DucStackBaseBuilder {
10380      fbb_: _fbb,
10381      start_: start,
10382    }
10383  }
10384  #[inline]
10385  pub fn finish(self) -> flatbuffers::WIPOffset<_DucStackBase<'a>> {
10386    let o = self.fbb_.end_table(self.start_);
10387    flatbuffers::WIPOffset::new(o.value())
10388  }
10389}
10390
10391impl core::fmt::Debug for _DucStackBase<'_> {
10392  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10393    let mut ds = f.debug_struct("_DucStackBase");
10394      ds.field("label", &self.label());
10395      ds.field("description", &self.description());
10396      ds.field("is_collapsed", &self.is_collapsed());
10397      ds.field("is_plot", &self.is_plot());
10398      ds.field("is_visible", &self.is_visible());
10399      ds.field("locked", &self.locked());
10400      ds.field("styles", &self.styles());
10401      ds.finish()
10402  }
10403}
10404pub enum _DucStackElementBaseOffset {}
10405#[derive(Copy, Clone, PartialEq)]
10406
10407pub struct _DucStackElementBase<'a> {
10408  pub _tab: flatbuffers::Table<'a>,
10409}
10410
10411impl<'a> flatbuffers::Follow<'a> for _DucStackElementBase<'a> {
10412  type Inner = _DucStackElementBase<'a>;
10413  #[inline]
10414  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10415    Self { _tab: flatbuffers::Table::new(buf, loc) }
10416  }
10417}
10418
10419impl<'a> _DucStackElementBase<'a> {
10420  pub const VT_BASE: flatbuffers::VOffsetT = 4;
10421  pub const VT_STACK_BASE: flatbuffers::VOffsetT = 6;
10422  pub const VT_CLIP: flatbuffers::VOffsetT = 8;
10423  pub const VT_LABEL_VISIBLE: flatbuffers::VOffsetT = 10;
10424  pub const VT_STANDARD_OVERRIDE: flatbuffers::VOffsetT = 12;
10425
10426  #[inline]
10427  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10428    _DucStackElementBase { _tab: table }
10429  }
10430  #[allow(unused_mut)]
10431  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
10432    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
10433    args: &'args _DucStackElementBaseArgs<'args>
10434  ) -> flatbuffers::WIPOffset<_DucStackElementBase<'bldr>> {
10435    let mut builder = _DucStackElementBaseBuilder::new(_fbb);
10436    if let Some(x) = args.standard_override { builder.add_standard_override(x); }
10437    if let Some(x) = args.stack_base { builder.add_stack_base(x); }
10438    if let Some(x) = args.base { builder.add_base(x); }
10439    builder.add_label_visible(args.label_visible);
10440    builder.add_clip(args.clip);
10441    builder.finish()
10442  }
10443
10444
10445  #[inline]
10446  pub fn base(&self) -> Option<_DucElementBase<'a>> {
10447    // Safety:
10448    // Created from valid Table for this object
10449    // which contains a valid value in this slot
10450    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(_DucStackElementBase::VT_BASE, None)}
10451  }
10452  #[inline]
10453  pub fn stack_base(&self) -> Option<_DucStackBase<'a>> {
10454    // Safety:
10455    // Created from valid Table for this object
10456    // which contains a valid value in this slot
10457    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackBase>>(_DucStackElementBase::VT_STACK_BASE, None)}
10458  }
10459  #[inline]
10460  pub fn clip(&self) -> bool {
10461    // Safety:
10462    // Created from valid Table for this object
10463    // which contains a valid value in this slot
10464    unsafe { self._tab.get::<bool>(_DucStackElementBase::VT_CLIP, Some(false)).unwrap()}
10465  }
10466  #[inline]
10467  pub fn label_visible(&self) -> bool {
10468    // Safety:
10469    // Created from valid Table for this object
10470    // which contains a valid value in this slot
10471    unsafe { self._tab.get::<bool>(_DucStackElementBase::VT_LABEL_VISIBLE, Some(false)).unwrap()}
10472  }
10473  #[inline]
10474  pub fn standard_override(&self) -> Option<&'a str> {
10475    // Safety:
10476    // Created from valid Table for this object
10477    // which contains a valid value in this slot
10478    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(_DucStackElementBase::VT_STANDARD_OVERRIDE, None)}
10479  }
10480}
10481
10482impl flatbuffers::Verifiable for _DucStackElementBase<'_> {
10483  #[inline]
10484  fn run_verifier(
10485    v: &mut flatbuffers::Verifier, pos: usize
10486  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10487    use self::flatbuffers::Verifiable;
10488    v.visit_table(pos)?
10489     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
10490     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackBase>>("stack_base", Self::VT_STACK_BASE, false)?
10491     .visit_field::<bool>("clip", Self::VT_CLIP, false)?
10492     .visit_field::<bool>("label_visible", Self::VT_LABEL_VISIBLE, false)?
10493     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("standard_override", Self::VT_STANDARD_OVERRIDE, false)?
10494     .finish();
10495    Ok(())
10496  }
10497}
10498pub struct _DucStackElementBaseArgs<'a> {
10499    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
10500    pub stack_base: Option<flatbuffers::WIPOffset<_DucStackBase<'a>>>,
10501    pub clip: bool,
10502    pub label_visible: bool,
10503    pub standard_override: Option<flatbuffers::WIPOffset<&'a str>>,
10504}
10505impl<'a> Default for _DucStackElementBaseArgs<'a> {
10506  #[inline]
10507  fn default() -> Self {
10508    _DucStackElementBaseArgs {
10509      base: None,
10510      stack_base: None,
10511      clip: false,
10512      label_visible: false,
10513      standard_override: None,
10514    }
10515  }
10516}
10517
10518pub struct _DucStackElementBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10519  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10520  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10521}
10522impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _DucStackElementBaseBuilder<'a, 'b, A> {
10523  #[inline]
10524  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
10525    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(_DucStackElementBase::VT_BASE, base);
10526  }
10527  #[inline]
10528  pub fn add_stack_base(&mut self, stack_base: flatbuffers::WIPOffset<_DucStackBase<'b >>) {
10529    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackBase>>(_DucStackElementBase::VT_STACK_BASE, stack_base);
10530  }
10531  #[inline]
10532  pub fn add_clip(&mut self, clip: bool) {
10533    self.fbb_.push_slot::<bool>(_DucStackElementBase::VT_CLIP, clip, false);
10534  }
10535  #[inline]
10536  pub fn add_label_visible(&mut self, label_visible: bool) {
10537    self.fbb_.push_slot::<bool>(_DucStackElementBase::VT_LABEL_VISIBLE, label_visible, false);
10538  }
10539  #[inline]
10540  pub fn add_standard_override(&mut self, standard_override: flatbuffers::WIPOffset<&'b  str>) {
10541    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(_DucStackElementBase::VT_STANDARD_OVERRIDE, standard_override);
10542  }
10543  #[inline]
10544  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _DucStackElementBaseBuilder<'a, 'b, A> {
10545    let start = _fbb.start_table();
10546    _DucStackElementBaseBuilder {
10547      fbb_: _fbb,
10548      start_: start,
10549    }
10550  }
10551  #[inline]
10552  pub fn finish(self) -> flatbuffers::WIPOffset<_DucStackElementBase<'a>> {
10553    let o = self.fbb_.end_table(self.start_);
10554    flatbuffers::WIPOffset::new(o.value())
10555  }
10556}
10557
10558impl core::fmt::Debug for _DucStackElementBase<'_> {
10559  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10560    let mut ds = f.debug_struct("_DucStackElementBase");
10561      ds.field("base", &self.base());
10562      ds.field("stack_base", &self.stack_base());
10563      ds.field("clip", &self.clip());
10564      ds.field("label_visible", &self.label_visible());
10565      ds.field("standard_override", &self.standard_override());
10566      ds.finish()
10567  }
10568}
10569pub enum LineSpacingOffset {}
10570#[derive(Copy, Clone, PartialEq)]
10571
10572pub struct LineSpacing<'a> {
10573  pub _tab: flatbuffers::Table<'a>,
10574}
10575
10576impl<'a> flatbuffers::Follow<'a> for LineSpacing<'a> {
10577  type Inner = LineSpacing<'a>;
10578  #[inline]
10579  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10580    Self { _tab: flatbuffers::Table::new(buf, loc) }
10581  }
10582}
10583
10584impl<'a> LineSpacing<'a> {
10585  pub const VT_VALUE: flatbuffers::VOffsetT = 4;
10586  pub const VT_TYPE_: flatbuffers::VOffsetT = 6;
10587
10588  #[inline]
10589  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10590    LineSpacing { _tab: table }
10591  }
10592  #[allow(unused_mut)]
10593  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
10594    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
10595    args: &'args LineSpacingArgs
10596  ) -> flatbuffers::WIPOffset<LineSpacing<'bldr>> {
10597    let mut builder = LineSpacingBuilder::new(_fbb);
10598    builder.add_value(args.value);
10599    if let Some(x) = args.type_ { builder.add_type_(x); }
10600    builder.finish()
10601  }
10602
10603
10604  #[inline]
10605  pub fn value(&self) -> f64 {
10606    // Safety:
10607    // Created from valid Table for this object
10608    // which contains a valid value in this slot
10609    unsafe { self._tab.get::<f64>(LineSpacing::VT_VALUE, Some(0.0)).unwrap()}
10610  }
10611  #[inline]
10612  pub fn type_(&self) -> Option<LINE_SPACING_TYPE> {
10613    // Safety:
10614    // Created from valid Table for this object
10615    // which contains a valid value in this slot
10616    unsafe { self._tab.get::<LINE_SPACING_TYPE>(LineSpacing::VT_TYPE_, None)}
10617  }
10618}
10619
10620impl flatbuffers::Verifiable for LineSpacing<'_> {
10621  #[inline]
10622  fn run_verifier(
10623    v: &mut flatbuffers::Verifier, pos: usize
10624  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10625    use self::flatbuffers::Verifiable;
10626    v.visit_table(pos)?
10627     .visit_field::<f64>("value", Self::VT_VALUE, false)?
10628     .visit_field::<LINE_SPACING_TYPE>("type_", Self::VT_TYPE_, false)?
10629     .finish();
10630    Ok(())
10631  }
10632}
10633pub struct LineSpacingArgs {
10634    pub value: f64,
10635    pub type_: Option<LINE_SPACING_TYPE>,
10636}
10637impl<'a> Default for LineSpacingArgs {
10638  #[inline]
10639  fn default() -> Self {
10640    LineSpacingArgs {
10641      value: 0.0,
10642      type_: None,
10643    }
10644  }
10645}
10646
10647pub struct LineSpacingBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10648  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10649  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10650}
10651impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LineSpacingBuilder<'a, 'b, A> {
10652  #[inline]
10653  pub fn add_value(&mut self, value: f64) {
10654    self.fbb_.push_slot::<f64>(LineSpacing::VT_VALUE, value, 0.0);
10655  }
10656  #[inline]
10657  pub fn add_type_(&mut self, type_: LINE_SPACING_TYPE) {
10658    self.fbb_.push_slot_always::<LINE_SPACING_TYPE>(LineSpacing::VT_TYPE_, type_);
10659  }
10660  #[inline]
10661  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LineSpacingBuilder<'a, 'b, A> {
10662    let start = _fbb.start_table();
10663    LineSpacingBuilder {
10664      fbb_: _fbb,
10665      start_: start,
10666    }
10667  }
10668  #[inline]
10669  pub fn finish(self) -> flatbuffers::WIPOffset<LineSpacing<'a>> {
10670    let o = self.fbb_.end_table(self.start_);
10671    flatbuffers::WIPOffset::new(o.value())
10672  }
10673}
10674
10675impl core::fmt::Debug for LineSpacing<'_> {
10676  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10677    let mut ds = f.debug_struct("LineSpacing");
10678      ds.field("value", &self.value());
10679      ds.field("type_", &self.type_());
10680      ds.finish()
10681  }
10682}
10683pub enum DucTextStyleOffset {}
10684#[derive(Copy, Clone, PartialEq)]
10685
10686pub struct DucTextStyle<'a> {
10687  pub _tab: flatbuffers::Table<'a>,
10688}
10689
10690impl<'a> flatbuffers::Follow<'a> for DucTextStyle<'a> {
10691  type Inner = DucTextStyle<'a>;
10692  #[inline]
10693  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10694    Self { _tab: flatbuffers::Table::new(buf, loc) }
10695  }
10696}
10697
10698impl<'a> DucTextStyle<'a> {
10699  pub const VT_IS_LTR: flatbuffers::VOffsetT = 6;
10700  pub const VT_FONT_FAMILY: flatbuffers::VOffsetT = 8;
10701  pub const VT_BIG_FONT_FAMILY: flatbuffers::VOffsetT = 10;
10702  pub const VT_TEXT_ALIGN: flatbuffers::VOffsetT = 12;
10703  pub const VT_VERTICAL_ALIGN: flatbuffers::VOffsetT = 14;
10704  pub const VT_LINE_HEIGHT: flatbuffers::VOffsetT = 16;
10705  pub const VT_LINE_SPACING: flatbuffers::VOffsetT = 18;
10706  pub const VT_OBLIQUE_ANGLE: flatbuffers::VOffsetT = 20;
10707  pub const VT_FONT_SIZE: flatbuffers::VOffsetT = 22;
10708  pub const VT_PAPER_TEXT_HEIGHT: flatbuffers::VOffsetT = 24;
10709  pub const VT_WIDTH_FACTOR: flatbuffers::VOffsetT = 26;
10710  pub const VT_IS_UPSIDE_DOWN: flatbuffers::VOffsetT = 28;
10711  pub const VT_IS_BACKWARDS: flatbuffers::VOffsetT = 30;
10712
10713  #[inline]
10714  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
10715    DucTextStyle { _tab: table }
10716  }
10717  #[allow(unused_mut)]
10718  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
10719    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
10720    args: &'args DucTextStyleArgs<'args>
10721  ) -> flatbuffers::WIPOffset<DucTextStyle<'bldr>> {
10722    let mut builder = DucTextStyleBuilder::new(_fbb);
10723    builder.add_paper_text_height(args.paper_text_height);
10724    builder.add_font_size(args.font_size);
10725    builder.add_oblique_angle(args.oblique_angle);
10726    builder.add_width_factor(args.width_factor);
10727    if let Some(x) = args.line_spacing { builder.add_line_spacing(x); }
10728    builder.add_line_height(args.line_height);
10729    if let Some(x) = args.big_font_family { builder.add_big_font_family(x); }
10730    if let Some(x) = args.font_family { builder.add_font_family(x); }
10731    builder.add_is_backwards(args.is_backwards);
10732    builder.add_is_upside_down(args.is_upside_down);
10733    if let Some(x) = args.vertical_align { builder.add_vertical_align(x); }
10734    if let Some(x) = args.text_align { builder.add_text_align(x); }
10735    builder.add_is_ltr(args.is_ltr);
10736    builder.finish()
10737  }
10738
10739
10740  #[inline]
10741  pub fn is_ltr(&self) -> bool {
10742    // Safety:
10743    // Created from valid Table for this object
10744    // which contains a valid value in this slot
10745    unsafe { self._tab.get::<bool>(DucTextStyle::VT_IS_LTR, Some(false)).unwrap()}
10746  }
10747  #[inline]
10748  pub fn font_family(&self) -> Option<&'a str> {
10749    // Safety:
10750    // Created from valid Table for this object
10751    // which contains a valid value in this slot
10752    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextStyle::VT_FONT_FAMILY, None)}
10753  }
10754  #[inline]
10755  pub fn big_font_family(&self) -> Option<&'a str> {
10756    // Safety:
10757    // Created from valid Table for this object
10758    // which contains a valid value in this slot
10759    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextStyle::VT_BIG_FONT_FAMILY, None)}
10760  }
10761  #[inline]
10762  pub fn text_align(&self) -> Option<TEXT_ALIGN> {
10763    // Safety:
10764    // Created from valid Table for this object
10765    // which contains a valid value in this slot
10766    unsafe { self._tab.get::<TEXT_ALIGN>(DucTextStyle::VT_TEXT_ALIGN, None)}
10767  }
10768  #[inline]
10769  pub fn vertical_align(&self) -> Option<VERTICAL_ALIGN> {
10770    // Safety:
10771    // Created from valid Table for this object
10772    // which contains a valid value in this slot
10773    unsafe { self._tab.get::<VERTICAL_ALIGN>(DucTextStyle::VT_VERTICAL_ALIGN, None)}
10774  }
10775  #[inline]
10776  pub fn line_height(&self) -> f32 {
10777    // Safety:
10778    // Created from valid Table for this object
10779    // which contains a valid value in this slot
10780    unsafe { self._tab.get::<f32>(DucTextStyle::VT_LINE_HEIGHT, Some(0.0)).unwrap()}
10781  }
10782  #[inline]
10783  pub fn line_spacing(&self) -> Option<LineSpacing<'a>> {
10784    // Safety:
10785    // Created from valid Table for this object
10786    // which contains a valid value in this slot
10787    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<LineSpacing>>(DucTextStyle::VT_LINE_SPACING, None)}
10788  }
10789  #[inline]
10790  pub fn oblique_angle(&self) -> f64 {
10791    // Safety:
10792    // Created from valid Table for this object
10793    // which contains a valid value in this slot
10794    unsafe { self._tab.get::<f64>(DucTextStyle::VT_OBLIQUE_ANGLE, Some(0.0)).unwrap()}
10795  }
10796  #[inline]
10797  pub fn font_size(&self) -> f64 {
10798    // Safety:
10799    // Created from valid Table for this object
10800    // which contains a valid value in this slot
10801    unsafe { self._tab.get::<f64>(DucTextStyle::VT_FONT_SIZE, Some(0.0)).unwrap()}
10802  }
10803  #[inline]
10804  pub fn paper_text_height(&self) -> f64 {
10805    // Safety:
10806    // Created from valid Table for this object
10807    // which contains a valid value in this slot
10808    unsafe { self._tab.get::<f64>(DucTextStyle::VT_PAPER_TEXT_HEIGHT, Some(0.0)).unwrap()}
10809  }
10810  #[inline]
10811  pub fn width_factor(&self) -> f32 {
10812    // Safety:
10813    // Created from valid Table for this object
10814    // which contains a valid value in this slot
10815    unsafe { self._tab.get::<f32>(DucTextStyle::VT_WIDTH_FACTOR, Some(0.0)).unwrap()}
10816  }
10817  #[inline]
10818  pub fn is_upside_down(&self) -> bool {
10819    // Safety:
10820    // Created from valid Table for this object
10821    // which contains a valid value in this slot
10822    unsafe { self._tab.get::<bool>(DucTextStyle::VT_IS_UPSIDE_DOWN, Some(false)).unwrap()}
10823  }
10824  #[inline]
10825  pub fn is_backwards(&self) -> bool {
10826    // Safety:
10827    // Created from valid Table for this object
10828    // which contains a valid value in this slot
10829    unsafe { self._tab.get::<bool>(DucTextStyle::VT_IS_BACKWARDS, Some(false)).unwrap()}
10830  }
10831}
10832
10833impl flatbuffers::Verifiable for DucTextStyle<'_> {
10834  #[inline]
10835  fn run_verifier(
10836    v: &mut flatbuffers::Verifier, pos: usize
10837  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
10838    use self::flatbuffers::Verifiable;
10839    v.visit_table(pos)?
10840     .visit_field::<bool>("is_ltr", Self::VT_IS_LTR, false)?
10841     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("font_family", Self::VT_FONT_FAMILY, false)?
10842     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("big_font_family", Self::VT_BIG_FONT_FAMILY, false)?
10843     .visit_field::<TEXT_ALIGN>("text_align", Self::VT_TEXT_ALIGN, false)?
10844     .visit_field::<VERTICAL_ALIGN>("vertical_align", Self::VT_VERTICAL_ALIGN, false)?
10845     .visit_field::<f32>("line_height", Self::VT_LINE_HEIGHT, false)?
10846     .visit_field::<flatbuffers::ForwardsUOffset<LineSpacing>>("line_spacing", Self::VT_LINE_SPACING, false)?
10847     .visit_field::<f64>("oblique_angle", Self::VT_OBLIQUE_ANGLE, false)?
10848     .visit_field::<f64>("font_size", Self::VT_FONT_SIZE, false)?
10849     .visit_field::<f64>("paper_text_height", Self::VT_PAPER_TEXT_HEIGHT, false)?
10850     .visit_field::<f32>("width_factor", Self::VT_WIDTH_FACTOR, false)?
10851     .visit_field::<bool>("is_upside_down", Self::VT_IS_UPSIDE_DOWN, false)?
10852     .visit_field::<bool>("is_backwards", Self::VT_IS_BACKWARDS, false)?
10853     .finish();
10854    Ok(())
10855  }
10856}
10857pub struct DucTextStyleArgs<'a> {
10858    pub is_ltr: bool,
10859    pub font_family: Option<flatbuffers::WIPOffset<&'a str>>,
10860    pub big_font_family: Option<flatbuffers::WIPOffset<&'a str>>,
10861    pub text_align: Option<TEXT_ALIGN>,
10862    pub vertical_align: Option<VERTICAL_ALIGN>,
10863    pub line_height: f32,
10864    pub line_spacing: Option<flatbuffers::WIPOffset<LineSpacing<'a>>>,
10865    pub oblique_angle: f64,
10866    pub font_size: f64,
10867    pub paper_text_height: f64,
10868    pub width_factor: f32,
10869    pub is_upside_down: bool,
10870    pub is_backwards: bool,
10871}
10872impl<'a> Default for DucTextStyleArgs<'a> {
10873  #[inline]
10874  fn default() -> Self {
10875    DucTextStyleArgs {
10876      is_ltr: false,
10877      font_family: None,
10878      big_font_family: None,
10879      text_align: None,
10880      vertical_align: None,
10881      line_height: 0.0,
10882      line_spacing: None,
10883      oblique_angle: 0.0,
10884      font_size: 0.0,
10885      paper_text_height: 0.0,
10886      width_factor: 0.0,
10887      is_upside_down: false,
10888      is_backwards: false,
10889    }
10890  }
10891}
10892
10893pub struct DucTextStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
10894  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
10895  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
10896}
10897impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextStyleBuilder<'a, 'b, A> {
10898  #[inline]
10899  pub fn add_is_ltr(&mut self, is_ltr: bool) {
10900    self.fbb_.push_slot::<bool>(DucTextStyle::VT_IS_LTR, is_ltr, false);
10901  }
10902  #[inline]
10903  pub fn add_font_family(&mut self, font_family: flatbuffers::WIPOffset<&'b  str>) {
10904    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextStyle::VT_FONT_FAMILY, font_family);
10905  }
10906  #[inline]
10907  pub fn add_big_font_family(&mut self, big_font_family: flatbuffers::WIPOffset<&'b  str>) {
10908    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextStyle::VT_BIG_FONT_FAMILY, big_font_family);
10909  }
10910  #[inline]
10911  pub fn add_text_align(&mut self, text_align: TEXT_ALIGN) {
10912    self.fbb_.push_slot_always::<TEXT_ALIGN>(DucTextStyle::VT_TEXT_ALIGN, text_align);
10913  }
10914  #[inline]
10915  pub fn add_vertical_align(&mut self, vertical_align: VERTICAL_ALIGN) {
10916    self.fbb_.push_slot_always::<VERTICAL_ALIGN>(DucTextStyle::VT_VERTICAL_ALIGN, vertical_align);
10917  }
10918  #[inline]
10919  pub fn add_line_height(&mut self, line_height: f32) {
10920    self.fbb_.push_slot::<f32>(DucTextStyle::VT_LINE_HEIGHT, line_height, 0.0);
10921  }
10922  #[inline]
10923  pub fn add_line_spacing(&mut self, line_spacing: flatbuffers::WIPOffset<LineSpacing<'b >>) {
10924    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<LineSpacing>>(DucTextStyle::VT_LINE_SPACING, line_spacing);
10925  }
10926  #[inline]
10927  pub fn add_oblique_angle(&mut self, oblique_angle: f64) {
10928    self.fbb_.push_slot::<f64>(DucTextStyle::VT_OBLIQUE_ANGLE, oblique_angle, 0.0);
10929  }
10930  #[inline]
10931  pub fn add_font_size(&mut self, font_size: f64) {
10932    self.fbb_.push_slot::<f64>(DucTextStyle::VT_FONT_SIZE, font_size, 0.0);
10933  }
10934  #[inline]
10935  pub fn add_paper_text_height(&mut self, paper_text_height: f64) {
10936    self.fbb_.push_slot::<f64>(DucTextStyle::VT_PAPER_TEXT_HEIGHT, paper_text_height, 0.0);
10937  }
10938  #[inline]
10939  pub fn add_width_factor(&mut self, width_factor: f32) {
10940    self.fbb_.push_slot::<f32>(DucTextStyle::VT_WIDTH_FACTOR, width_factor, 0.0);
10941  }
10942  #[inline]
10943  pub fn add_is_upside_down(&mut self, is_upside_down: bool) {
10944    self.fbb_.push_slot::<bool>(DucTextStyle::VT_IS_UPSIDE_DOWN, is_upside_down, false);
10945  }
10946  #[inline]
10947  pub fn add_is_backwards(&mut self, is_backwards: bool) {
10948    self.fbb_.push_slot::<bool>(DucTextStyle::VT_IS_BACKWARDS, is_backwards, false);
10949  }
10950  #[inline]
10951  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextStyleBuilder<'a, 'b, A> {
10952    let start = _fbb.start_table();
10953    DucTextStyleBuilder {
10954      fbb_: _fbb,
10955      start_: start,
10956    }
10957  }
10958  #[inline]
10959  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextStyle<'a>> {
10960    let o = self.fbb_.end_table(self.start_);
10961    flatbuffers::WIPOffset::new(o.value())
10962  }
10963}
10964
10965impl core::fmt::Debug for DucTextStyle<'_> {
10966  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10967    let mut ds = f.debug_struct("DucTextStyle");
10968      ds.field("is_ltr", &self.is_ltr());
10969      ds.field("font_family", &self.font_family());
10970      ds.field("big_font_family", &self.big_font_family());
10971      ds.field("text_align", &self.text_align());
10972      ds.field("vertical_align", &self.vertical_align());
10973      ds.field("line_height", &self.line_height());
10974      ds.field("line_spacing", &self.line_spacing());
10975      ds.field("oblique_angle", &self.oblique_angle());
10976      ds.field("font_size", &self.font_size());
10977      ds.field("paper_text_height", &self.paper_text_height());
10978      ds.field("width_factor", &self.width_factor());
10979      ds.field("is_upside_down", &self.is_upside_down());
10980      ds.field("is_backwards", &self.is_backwards());
10981      ds.finish()
10982  }
10983}
10984pub enum DucTableCellStyleOffset {}
10985#[derive(Copy, Clone, PartialEq)]
10986
10987pub struct DucTableCellStyle<'a> {
10988  pub _tab: flatbuffers::Table<'a>,
10989}
10990
10991impl<'a> flatbuffers::Follow<'a> for DucTableCellStyle<'a> {
10992  type Inner = DucTableCellStyle<'a>;
10993  #[inline]
10994  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
10995    Self { _tab: flatbuffers::Table::new(buf, loc) }
10996  }
10997}
10998
10999impl<'a> DucTableCellStyle<'a> {
11000  pub const VT_BASE_STYLE: flatbuffers::VOffsetT = 4;
11001  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 6;
11002  pub const VT_MARGINS: flatbuffers::VOffsetT = 8;
11003  pub const VT_ALIGNMENT: flatbuffers::VOffsetT = 10;
11004
11005  #[inline]
11006  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11007    DucTableCellStyle { _tab: table }
11008  }
11009  #[allow(unused_mut)]
11010  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11011    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11012    args: &'args DucTableCellStyleArgs<'args>
11013  ) -> flatbuffers::WIPOffset<DucTableCellStyle<'bldr>> {
11014    let mut builder = DucTableCellStyleBuilder::new(_fbb);
11015    if let Some(x) = args.margins { builder.add_margins(x); }
11016    if let Some(x) = args.text_style { builder.add_text_style(x); }
11017    if let Some(x) = args.base_style { builder.add_base_style(x); }
11018    if let Some(x) = args.alignment { builder.add_alignment(x); }
11019    builder.finish()
11020  }
11021
11022
11023  #[inline]
11024  pub fn base_style(&self) -> Option<_DucElementStylesBase<'a>> {
11025    // Safety:
11026    // Created from valid Table for this object
11027    // which contains a valid value in this slot
11028    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementStylesBase>>(DucTableCellStyle::VT_BASE_STYLE, None)}
11029  }
11030  #[inline]
11031  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
11032    // Safety:
11033    // Created from valid Table for this object
11034    // which contains a valid value in this slot
11035    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucTableCellStyle::VT_TEXT_STYLE, None)}
11036  }
11037  #[inline]
11038  pub fn margins(&self) -> Option<Margins<'a>> {
11039    // Safety:
11040    // Created from valid Table for this object
11041    // which contains a valid value in this slot
11042    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Margins>>(DucTableCellStyle::VT_MARGINS, None)}
11043  }
11044  #[inline]
11045  pub fn alignment(&self) -> Option<TABLE_CELL_ALIGNMENT> {
11046    // Safety:
11047    // Created from valid Table for this object
11048    // which contains a valid value in this slot
11049    unsafe { self._tab.get::<TABLE_CELL_ALIGNMENT>(DucTableCellStyle::VT_ALIGNMENT, None)}
11050  }
11051}
11052
11053impl flatbuffers::Verifiable for DucTableCellStyle<'_> {
11054  #[inline]
11055  fn run_verifier(
11056    v: &mut flatbuffers::Verifier, pos: usize
11057  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11058    use self::flatbuffers::Verifiable;
11059    v.visit_table(pos)?
11060     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementStylesBase>>("base_style", Self::VT_BASE_STYLE, false)?
11061     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
11062     .visit_field::<flatbuffers::ForwardsUOffset<Margins>>("margins", Self::VT_MARGINS, false)?
11063     .visit_field::<TABLE_CELL_ALIGNMENT>("alignment", Self::VT_ALIGNMENT, false)?
11064     .finish();
11065    Ok(())
11066  }
11067}
11068pub struct DucTableCellStyleArgs<'a> {
11069    pub base_style: Option<flatbuffers::WIPOffset<_DucElementStylesBase<'a>>>,
11070    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
11071    pub margins: Option<flatbuffers::WIPOffset<Margins<'a>>>,
11072    pub alignment: Option<TABLE_CELL_ALIGNMENT>,
11073}
11074impl<'a> Default for DucTableCellStyleArgs<'a> {
11075  #[inline]
11076  fn default() -> Self {
11077    DucTableCellStyleArgs {
11078      base_style: None,
11079      text_style: None,
11080      margins: None,
11081      alignment: None,
11082    }
11083  }
11084}
11085
11086pub struct DucTableCellStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11087  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11088  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11089}
11090impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableCellStyleBuilder<'a, 'b, A> {
11091  #[inline]
11092  pub fn add_base_style(&mut self, base_style: flatbuffers::WIPOffset<_DucElementStylesBase<'b >>) {
11093    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementStylesBase>>(DucTableCellStyle::VT_BASE_STYLE, base_style);
11094  }
11095  #[inline]
11096  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
11097    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucTableCellStyle::VT_TEXT_STYLE, text_style);
11098  }
11099  #[inline]
11100  pub fn add_margins(&mut self, margins: flatbuffers::WIPOffset<Margins<'b >>) {
11101    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Margins>>(DucTableCellStyle::VT_MARGINS, margins);
11102  }
11103  #[inline]
11104  pub fn add_alignment(&mut self, alignment: TABLE_CELL_ALIGNMENT) {
11105    self.fbb_.push_slot_always::<TABLE_CELL_ALIGNMENT>(DucTableCellStyle::VT_ALIGNMENT, alignment);
11106  }
11107  #[inline]
11108  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableCellStyleBuilder<'a, 'b, A> {
11109    let start = _fbb.start_table();
11110    DucTableCellStyleBuilder {
11111      fbb_: _fbb,
11112      start_: start,
11113    }
11114  }
11115  #[inline]
11116  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableCellStyle<'a>> {
11117    let o = self.fbb_.end_table(self.start_);
11118    flatbuffers::WIPOffset::new(o.value())
11119  }
11120}
11121
11122impl core::fmt::Debug for DucTableCellStyle<'_> {
11123  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11124    let mut ds = f.debug_struct("DucTableCellStyle");
11125      ds.field("base_style", &self.base_style());
11126      ds.field("text_style", &self.text_style());
11127      ds.field("margins", &self.margins());
11128      ds.field("alignment", &self.alignment());
11129      ds.finish()
11130  }
11131}
11132pub enum DucTableStyleOffset {}
11133#[derive(Copy, Clone, PartialEq)]
11134
11135pub struct DucTableStyle<'a> {
11136  pub _tab: flatbuffers::Table<'a>,
11137}
11138
11139impl<'a> flatbuffers::Follow<'a> for DucTableStyle<'a> {
11140  type Inner = DucTableStyle<'a>;
11141  #[inline]
11142  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11143    Self { _tab: flatbuffers::Table::new(buf, loc) }
11144  }
11145}
11146
11147impl<'a> DucTableStyle<'a> {
11148  pub const VT_FLOW_DIRECTION: flatbuffers::VOffsetT = 6;
11149  pub const VT_HEADER_ROW_STYLE: flatbuffers::VOffsetT = 8;
11150  pub const VT_DATA_ROW_STYLE: flatbuffers::VOffsetT = 10;
11151  pub const VT_DATA_COLUMN_STYLE: flatbuffers::VOffsetT = 12;
11152
11153  #[inline]
11154  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11155    DucTableStyle { _tab: table }
11156  }
11157  #[allow(unused_mut)]
11158  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11159    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11160    args: &'args DucTableStyleArgs<'args>
11161  ) -> flatbuffers::WIPOffset<DucTableStyle<'bldr>> {
11162    let mut builder = DucTableStyleBuilder::new(_fbb);
11163    if let Some(x) = args.data_column_style { builder.add_data_column_style(x); }
11164    if let Some(x) = args.data_row_style { builder.add_data_row_style(x); }
11165    if let Some(x) = args.header_row_style { builder.add_header_row_style(x); }
11166    if let Some(x) = args.flow_direction { builder.add_flow_direction(x); }
11167    builder.finish()
11168  }
11169
11170
11171  #[inline]
11172  pub fn flow_direction(&self) -> Option<TABLE_FLOW_DIRECTION> {
11173    // Safety:
11174    // Created from valid Table for this object
11175    // which contains a valid value in this slot
11176    unsafe { self._tab.get::<TABLE_FLOW_DIRECTION>(DucTableStyle::VT_FLOW_DIRECTION, None)}
11177  }
11178  #[inline]
11179  pub fn header_row_style(&self) -> Option<DucTableCellStyle<'a>> {
11180    // Safety:
11181    // Created from valid Table for this object
11182    // which contains a valid value in this slot
11183    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableStyle::VT_HEADER_ROW_STYLE, None)}
11184  }
11185  #[inline]
11186  pub fn data_row_style(&self) -> Option<DucTableCellStyle<'a>> {
11187    // Safety:
11188    // Created from valid Table for this object
11189    // which contains a valid value in this slot
11190    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableStyle::VT_DATA_ROW_STYLE, None)}
11191  }
11192  #[inline]
11193  pub fn data_column_style(&self) -> Option<DucTableCellStyle<'a>> {
11194    // Safety:
11195    // Created from valid Table for this object
11196    // which contains a valid value in this slot
11197    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableStyle::VT_DATA_COLUMN_STYLE, None)}
11198  }
11199}
11200
11201impl flatbuffers::Verifiable for DucTableStyle<'_> {
11202  #[inline]
11203  fn run_verifier(
11204    v: &mut flatbuffers::Verifier, pos: usize
11205  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11206    use self::flatbuffers::Verifiable;
11207    v.visit_table(pos)?
11208     .visit_field::<TABLE_FLOW_DIRECTION>("flow_direction", Self::VT_FLOW_DIRECTION, false)?
11209     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("header_row_style", Self::VT_HEADER_ROW_STYLE, false)?
11210     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("data_row_style", Self::VT_DATA_ROW_STYLE, false)?
11211     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("data_column_style", Self::VT_DATA_COLUMN_STYLE, false)?
11212     .finish();
11213    Ok(())
11214  }
11215}
11216pub struct DucTableStyleArgs<'a> {
11217    pub flow_direction: Option<TABLE_FLOW_DIRECTION>,
11218    pub header_row_style: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
11219    pub data_row_style: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
11220    pub data_column_style: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
11221}
11222impl<'a> Default for DucTableStyleArgs<'a> {
11223  #[inline]
11224  fn default() -> Self {
11225    DucTableStyleArgs {
11226      flow_direction: None,
11227      header_row_style: None,
11228      data_row_style: None,
11229      data_column_style: None,
11230    }
11231  }
11232}
11233
11234pub struct DucTableStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11235  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11236  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11237}
11238impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableStyleBuilder<'a, 'b, A> {
11239  #[inline]
11240  pub fn add_flow_direction(&mut self, flow_direction: TABLE_FLOW_DIRECTION) {
11241    self.fbb_.push_slot_always::<TABLE_FLOW_DIRECTION>(DucTableStyle::VT_FLOW_DIRECTION, flow_direction);
11242  }
11243  #[inline]
11244  pub fn add_header_row_style(&mut self, header_row_style: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
11245    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableStyle::VT_HEADER_ROW_STYLE, header_row_style);
11246  }
11247  #[inline]
11248  pub fn add_data_row_style(&mut self, data_row_style: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
11249    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableStyle::VT_DATA_ROW_STYLE, data_row_style);
11250  }
11251  #[inline]
11252  pub fn add_data_column_style(&mut self, data_column_style: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
11253    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableStyle::VT_DATA_COLUMN_STYLE, data_column_style);
11254  }
11255  #[inline]
11256  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableStyleBuilder<'a, 'b, A> {
11257    let start = _fbb.start_table();
11258    DucTableStyleBuilder {
11259      fbb_: _fbb,
11260      start_: start,
11261    }
11262  }
11263  #[inline]
11264  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableStyle<'a>> {
11265    let o = self.fbb_.end_table(self.start_);
11266    flatbuffers::WIPOffset::new(o.value())
11267  }
11268}
11269
11270impl core::fmt::Debug for DucTableStyle<'_> {
11271  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11272    let mut ds = f.debug_struct("DucTableStyle");
11273      ds.field("flow_direction", &self.flow_direction());
11274      ds.field("header_row_style", &self.header_row_style());
11275      ds.field("data_row_style", &self.data_row_style());
11276      ds.field("data_column_style", &self.data_column_style());
11277      ds.finish()
11278  }
11279}
11280pub enum DucLeaderStyleOffset {}
11281#[derive(Copy, Clone, PartialEq)]
11282
11283pub struct DucLeaderStyle<'a> {
11284  pub _tab: flatbuffers::Table<'a>,
11285}
11286
11287impl<'a> flatbuffers::Follow<'a> for DucLeaderStyle<'a> {
11288  type Inner = DucLeaderStyle<'a>;
11289  #[inline]
11290  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11291    Self { _tab: flatbuffers::Table::new(buf, loc) }
11292  }
11293}
11294
11295impl<'a> DucLeaderStyle<'a> {
11296  pub const VT_HEADS_OVERRIDE: flatbuffers::VOffsetT = 6;
11297  pub const VT_DOGLEG: flatbuffers::VOffsetT = 8;
11298  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 10;
11299  pub const VT_TEXT_ATTACHMENT: flatbuffers::VOffsetT = 12;
11300  pub const VT_BLOCK_ATTACHMENT: flatbuffers::VOffsetT = 14;
11301
11302  #[inline]
11303  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11304    DucLeaderStyle { _tab: table }
11305  }
11306  #[allow(unused_mut)]
11307  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11308    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11309    args: &'args DucLeaderStyleArgs<'args>
11310  ) -> flatbuffers::WIPOffset<DucLeaderStyle<'bldr>> {
11311    let mut builder = DucLeaderStyleBuilder::new(_fbb);
11312    builder.add_dogleg(args.dogleg);
11313    if let Some(x) = args.text_style { builder.add_text_style(x); }
11314    if let Some(x) = args.heads_override { builder.add_heads_override(x); }
11315    if let Some(x) = args.block_attachment { builder.add_block_attachment(x); }
11316    if let Some(x) = args.text_attachment { builder.add_text_attachment(x); }
11317    builder.finish()
11318  }
11319
11320
11321  #[inline]
11322  pub fn heads_override(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead<'a>>>> {
11323    // Safety:
11324    // Created from valid Table for this object
11325    // which contains a valid value in this slot
11326    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead>>>>(DucLeaderStyle::VT_HEADS_OVERRIDE, None)}
11327  }
11328  #[inline]
11329  pub fn dogleg(&self) -> f64 {
11330    // Safety:
11331    // Created from valid Table for this object
11332    // which contains a valid value in this slot
11333    unsafe { self._tab.get::<f64>(DucLeaderStyle::VT_DOGLEG, Some(0.0)).unwrap()}
11334  }
11335  #[inline]
11336  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
11337    // Safety:
11338    // Created from valid Table for this object
11339    // which contains a valid value in this slot
11340    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucLeaderStyle::VT_TEXT_STYLE, None)}
11341  }
11342  #[inline]
11343  pub fn text_attachment(&self) -> Option<VERTICAL_ALIGN> {
11344    // Safety:
11345    // Created from valid Table for this object
11346    // which contains a valid value in this slot
11347    unsafe { self._tab.get::<VERTICAL_ALIGN>(DucLeaderStyle::VT_TEXT_ATTACHMENT, None)}
11348  }
11349  #[inline]
11350  pub fn block_attachment(&self) -> Option<BLOCK_ATTACHMENT> {
11351    // Safety:
11352    // Created from valid Table for this object
11353    // which contains a valid value in this slot
11354    unsafe { self._tab.get::<BLOCK_ATTACHMENT>(DucLeaderStyle::VT_BLOCK_ATTACHMENT, None)}
11355  }
11356}
11357
11358impl flatbuffers::Verifiable for DucLeaderStyle<'_> {
11359  #[inline]
11360  fn run_verifier(
11361    v: &mut flatbuffers::Verifier, pos: usize
11362  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11363    use self::flatbuffers::Verifiable;
11364    v.visit_table(pos)?
11365     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucHead>>>>("heads_override", Self::VT_HEADS_OVERRIDE, false)?
11366     .visit_field::<f64>("dogleg", Self::VT_DOGLEG, false)?
11367     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
11368     .visit_field::<VERTICAL_ALIGN>("text_attachment", Self::VT_TEXT_ATTACHMENT, false)?
11369     .visit_field::<BLOCK_ATTACHMENT>("block_attachment", Self::VT_BLOCK_ATTACHMENT, false)?
11370     .finish();
11371    Ok(())
11372  }
11373}
11374pub struct DucLeaderStyleArgs<'a> {
11375    pub heads_override: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead<'a>>>>>,
11376    pub dogleg: f64,
11377    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
11378    pub text_attachment: Option<VERTICAL_ALIGN>,
11379    pub block_attachment: Option<BLOCK_ATTACHMENT>,
11380}
11381impl<'a> Default for DucLeaderStyleArgs<'a> {
11382  #[inline]
11383  fn default() -> Self {
11384    DucLeaderStyleArgs {
11385      heads_override: None,
11386      dogleg: 0.0,
11387      text_style: None,
11388      text_attachment: None,
11389      block_attachment: None,
11390    }
11391  }
11392}
11393
11394pub struct DucLeaderStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11395  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11396  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11397}
11398impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLeaderStyleBuilder<'a, 'b, A> {
11399  #[inline]
11400  pub fn add_heads_override(&mut self, heads_override: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucHead<'b >>>>) {
11401    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLeaderStyle::VT_HEADS_OVERRIDE, heads_override);
11402  }
11403  #[inline]
11404  pub fn add_dogleg(&mut self, dogleg: f64) {
11405    self.fbb_.push_slot::<f64>(DucLeaderStyle::VT_DOGLEG, dogleg, 0.0);
11406  }
11407  #[inline]
11408  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
11409    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucLeaderStyle::VT_TEXT_STYLE, text_style);
11410  }
11411  #[inline]
11412  pub fn add_text_attachment(&mut self, text_attachment: VERTICAL_ALIGN) {
11413    self.fbb_.push_slot_always::<VERTICAL_ALIGN>(DucLeaderStyle::VT_TEXT_ATTACHMENT, text_attachment);
11414  }
11415  #[inline]
11416  pub fn add_block_attachment(&mut self, block_attachment: BLOCK_ATTACHMENT) {
11417    self.fbb_.push_slot_always::<BLOCK_ATTACHMENT>(DucLeaderStyle::VT_BLOCK_ATTACHMENT, block_attachment);
11418  }
11419  #[inline]
11420  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLeaderStyleBuilder<'a, 'b, A> {
11421    let start = _fbb.start_table();
11422    DucLeaderStyleBuilder {
11423      fbb_: _fbb,
11424      start_: start,
11425    }
11426  }
11427  #[inline]
11428  pub fn finish(self) -> flatbuffers::WIPOffset<DucLeaderStyle<'a>> {
11429    let o = self.fbb_.end_table(self.start_);
11430    flatbuffers::WIPOffset::new(o.value())
11431  }
11432}
11433
11434impl core::fmt::Debug for DucLeaderStyle<'_> {
11435  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11436    let mut ds = f.debug_struct("DucLeaderStyle");
11437      ds.field("heads_override", &self.heads_override());
11438      ds.field("dogleg", &self.dogleg());
11439      ds.field("text_style", &self.text_style());
11440      ds.field("text_attachment", &self.text_attachment());
11441      ds.field("block_attachment", &self.block_attachment());
11442      ds.finish()
11443  }
11444}
11445pub enum DimensionToleranceStyleOffset {}
11446#[derive(Copy, Clone, PartialEq)]
11447
11448pub struct DimensionToleranceStyle<'a> {
11449  pub _tab: flatbuffers::Table<'a>,
11450}
11451
11452impl<'a> flatbuffers::Follow<'a> for DimensionToleranceStyle<'a> {
11453  type Inner = DimensionToleranceStyle<'a>;
11454  #[inline]
11455  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11456    Self { _tab: flatbuffers::Table::new(buf, loc) }
11457  }
11458}
11459
11460impl<'a> DimensionToleranceStyle<'a> {
11461  pub const VT_ENABLED: flatbuffers::VOffsetT = 4;
11462  pub const VT_DISPLAY_METHOD: flatbuffers::VOffsetT = 6;
11463  pub const VT_UPPER_VALUE: flatbuffers::VOffsetT = 8;
11464  pub const VT_LOWER_VALUE: flatbuffers::VOffsetT = 10;
11465  pub const VT_PRECISION: flatbuffers::VOffsetT = 12;
11466  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 14;
11467
11468  #[inline]
11469  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11470    DimensionToleranceStyle { _tab: table }
11471  }
11472  #[allow(unused_mut)]
11473  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11474    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11475    args: &'args DimensionToleranceStyleArgs<'args>
11476  ) -> flatbuffers::WIPOffset<DimensionToleranceStyle<'bldr>> {
11477    let mut builder = DimensionToleranceStyleBuilder::new(_fbb);
11478    builder.add_lower_value(args.lower_value);
11479    builder.add_upper_value(args.upper_value);
11480    if let Some(x) = args.text_style { builder.add_text_style(x); }
11481    builder.add_precision(args.precision);
11482    if let Some(x) = args.display_method { builder.add_display_method(x); }
11483    builder.add_enabled(args.enabled);
11484    builder.finish()
11485  }
11486
11487
11488  #[inline]
11489  pub fn enabled(&self) -> bool {
11490    // Safety:
11491    // Created from valid Table for this object
11492    // which contains a valid value in this slot
11493    unsafe { self._tab.get::<bool>(DimensionToleranceStyle::VT_ENABLED, Some(false)).unwrap()}
11494  }
11495  #[inline]
11496  pub fn display_method(&self) -> Option<TOLERANCE_DISPLAY> {
11497    // Safety:
11498    // Created from valid Table for this object
11499    // which contains a valid value in this slot
11500    unsafe { self._tab.get::<TOLERANCE_DISPLAY>(DimensionToleranceStyle::VT_DISPLAY_METHOD, None)}
11501  }
11502  #[inline]
11503  pub fn upper_value(&self) -> f64 {
11504    // Safety:
11505    // Created from valid Table for this object
11506    // which contains a valid value in this slot
11507    unsafe { self._tab.get::<f64>(DimensionToleranceStyle::VT_UPPER_VALUE, Some(0.0)).unwrap()}
11508  }
11509  #[inline]
11510  pub fn lower_value(&self) -> f64 {
11511    // Safety:
11512    // Created from valid Table for this object
11513    // which contains a valid value in this slot
11514    unsafe { self._tab.get::<f64>(DimensionToleranceStyle::VT_LOWER_VALUE, Some(0.0)).unwrap()}
11515  }
11516  #[inline]
11517  pub fn precision(&self) -> i32 {
11518    // Safety:
11519    // Created from valid Table for this object
11520    // which contains a valid value in this slot
11521    unsafe { self._tab.get::<i32>(DimensionToleranceStyle::VT_PRECISION, Some(0)).unwrap()}
11522  }
11523  #[inline]
11524  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
11525    // Safety:
11526    // Created from valid Table for this object
11527    // which contains a valid value in this slot
11528    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DimensionToleranceStyle::VT_TEXT_STYLE, None)}
11529  }
11530}
11531
11532impl flatbuffers::Verifiable for DimensionToleranceStyle<'_> {
11533  #[inline]
11534  fn run_verifier(
11535    v: &mut flatbuffers::Verifier, pos: usize
11536  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11537    use self::flatbuffers::Verifiable;
11538    v.visit_table(pos)?
11539     .visit_field::<bool>("enabled", Self::VT_ENABLED, false)?
11540     .visit_field::<TOLERANCE_DISPLAY>("display_method", Self::VT_DISPLAY_METHOD, false)?
11541     .visit_field::<f64>("upper_value", Self::VT_UPPER_VALUE, false)?
11542     .visit_field::<f64>("lower_value", Self::VT_LOWER_VALUE, false)?
11543     .visit_field::<i32>("precision", Self::VT_PRECISION, false)?
11544     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
11545     .finish();
11546    Ok(())
11547  }
11548}
11549pub struct DimensionToleranceStyleArgs<'a> {
11550    pub enabled: bool,
11551    pub display_method: Option<TOLERANCE_DISPLAY>,
11552    pub upper_value: f64,
11553    pub lower_value: f64,
11554    pub precision: i32,
11555    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
11556}
11557impl<'a> Default for DimensionToleranceStyleArgs<'a> {
11558  #[inline]
11559  fn default() -> Self {
11560    DimensionToleranceStyleArgs {
11561      enabled: false,
11562      display_method: None,
11563      upper_value: 0.0,
11564      lower_value: 0.0,
11565      precision: 0,
11566      text_style: None,
11567    }
11568  }
11569}
11570
11571pub struct DimensionToleranceStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11572  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11573  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11574}
11575impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionToleranceStyleBuilder<'a, 'b, A> {
11576  #[inline]
11577  pub fn add_enabled(&mut self, enabled: bool) {
11578    self.fbb_.push_slot::<bool>(DimensionToleranceStyle::VT_ENABLED, enabled, false);
11579  }
11580  #[inline]
11581  pub fn add_display_method(&mut self, display_method: TOLERANCE_DISPLAY) {
11582    self.fbb_.push_slot_always::<TOLERANCE_DISPLAY>(DimensionToleranceStyle::VT_DISPLAY_METHOD, display_method);
11583  }
11584  #[inline]
11585  pub fn add_upper_value(&mut self, upper_value: f64) {
11586    self.fbb_.push_slot::<f64>(DimensionToleranceStyle::VT_UPPER_VALUE, upper_value, 0.0);
11587  }
11588  #[inline]
11589  pub fn add_lower_value(&mut self, lower_value: f64) {
11590    self.fbb_.push_slot::<f64>(DimensionToleranceStyle::VT_LOWER_VALUE, lower_value, 0.0);
11591  }
11592  #[inline]
11593  pub fn add_precision(&mut self, precision: i32) {
11594    self.fbb_.push_slot::<i32>(DimensionToleranceStyle::VT_PRECISION, precision, 0);
11595  }
11596  #[inline]
11597  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
11598    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DimensionToleranceStyle::VT_TEXT_STYLE, text_style);
11599  }
11600  #[inline]
11601  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionToleranceStyleBuilder<'a, 'b, A> {
11602    let start = _fbb.start_table();
11603    DimensionToleranceStyleBuilder {
11604      fbb_: _fbb,
11605      start_: start,
11606    }
11607  }
11608  #[inline]
11609  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionToleranceStyle<'a>> {
11610    let o = self.fbb_.end_table(self.start_);
11611    flatbuffers::WIPOffset::new(o.value())
11612  }
11613}
11614
11615impl core::fmt::Debug for DimensionToleranceStyle<'_> {
11616  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11617    let mut ds = f.debug_struct("DimensionToleranceStyle");
11618      ds.field("enabled", &self.enabled());
11619      ds.field("display_method", &self.display_method());
11620      ds.field("upper_value", &self.upper_value());
11621      ds.field("lower_value", &self.lower_value());
11622      ds.field("precision", &self.precision());
11623      ds.field("text_style", &self.text_style());
11624      ds.finish()
11625  }
11626}
11627pub enum DimensionFitStyleOffset {}
11628#[derive(Copy, Clone, PartialEq)]
11629
11630pub struct DimensionFitStyle<'a> {
11631  pub _tab: flatbuffers::Table<'a>,
11632}
11633
11634impl<'a> flatbuffers::Follow<'a> for DimensionFitStyle<'a> {
11635  type Inner = DimensionFitStyle<'a>;
11636  #[inline]
11637  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11638    Self { _tab: flatbuffers::Table::new(buf, loc) }
11639  }
11640}
11641
11642impl<'a> DimensionFitStyle<'a> {
11643  pub const VT_RULE: flatbuffers::VOffsetT = 4;
11644  pub const VT_TEXT_PLACEMENT: flatbuffers::VOffsetT = 6;
11645  pub const VT_FORCE_TEXT_INSIDE: flatbuffers::VOffsetT = 8;
11646
11647  #[inline]
11648  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11649    DimensionFitStyle { _tab: table }
11650  }
11651  #[allow(unused_mut)]
11652  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11653    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11654    args: &'args DimensionFitStyleArgs
11655  ) -> flatbuffers::WIPOffset<DimensionFitStyle<'bldr>> {
11656    let mut builder = DimensionFitStyleBuilder::new(_fbb);
11657    builder.add_force_text_inside(args.force_text_inside);
11658    if let Some(x) = args.text_placement { builder.add_text_placement(x); }
11659    if let Some(x) = args.rule { builder.add_rule(x); }
11660    builder.finish()
11661  }
11662
11663
11664  #[inline]
11665  pub fn rule(&self) -> Option<DIMENSION_FIT_RULE> {
11666    // Safety:
11667    // Created from valid Table for this object
11668    // which contains a valid value in this slot
11669    unsafe { self._tab.get::<DIMENSION_FIT_RULE>(DimensionFitStyle::VT_RULE, None)}
11670  }
11671  #[inline]
11672  pub fn text_placement(&self) -> Option<DIMENSION_TEXT_PLACEMENT> {
11673    // Safety:
11674    // Created from valid Table for this object
11675    // which contains a valid value in this slot
11676    unsafe { self._tab.get::<DIMENSION_TEXT_PLACEMENT>(DimensionFitStyle::VT_TEXT_PLACEMENT, None)}
11677  }
11678  #[inline]
11679  pub fn force_text_inside(&self) -> bool {
11680    // Safety:
11681    // Created from valid Table for this object
11682    // which contains a valid value in this slot
11683    unsafe { self._tab.get::<bool>(DimensionFitStyle::VT_FORCE_TEXT_INSIDE, Some(false)).unwrap()}
11684  }
11685}
11686
11687impl flatbuffers::Verifiable for DimensionFitStyle<'_> {
11688  #[inline]
11689  fn run_verifier(
11690    v: &mut flatbuffers::Verifier, pos: usize
11691  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11692    use self::flatbuffers::Verifiable;
11693    v.visit_table(pos)?
11694     .visit_field::<DIMENSION_FIT_RULE>("rule", Self::VT_RULE, false)?
11695     .visit_field::<DIMENSION_TEXT_PLACEMENT>("text_placement", Self::VT_TEXT_PLACEMENT, false)?
11696     .visit_field::<bool>("force_text_inside", Self::VT_FORCE_TEXT_INSIDE, false)?
11697     .finish();
11698    Ok(())
11699  }
11700}
11701pub struct DimensionFitStyleArgs {
11702    pub rule: Option<DIMENSION_FIT_RULE>,
11703    pub text_placement: Option<DIMENSION_TEXT_PLACEMENT>,
11704    pub force_text_inside: bool,
11705}
11706impl<'a> Default for DimensionFitStyleArgs {
11707  #[inline]
11708  fn default() -> Self {
11709    DimensionFitStyleArgs {
11710      rule: None,
11711      text_placement: None,
11712      force_text_inside: false,
11713    }
11714  }
11715}
11716
11717pub struct DimensionFitStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11718  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11719  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11720}
11721impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionFitStyleBuilder<'a, 'b, A> {
11722  #[inline]
11723  pub fn add_rule(&mut self, rule: DIMENSION_FIT_RULE) {
11724    self.fbb_.push_slot_always::<DIMENSION_FIT_RULE>(DimensionFitStyle::VT_RULE, rule);
11725  }
11726  #[inline]
11727  pub fn add_text_placement(&mut self, text_placement: DIMENSION_TEXT_PLACEMENT) {
11728    self.fbb_.push_slot_always::<DIMENSION_TEXT_PLACEMENT>(DimensionFitStyle::VT_TEXT_PLACEMENT, text_placement);
11729  }
11730  #[inline]
11731  pub fn add_force_text_inside(&mut self, force_text_inside: bool) {
11732    self.fbb_.push_slot::<bool>(DimensionFitStyle::VT_FORCE_TEXT_INSIDE, force_text_inside, false);
11733  }
11734  #[inline]
11735  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionFitStyleBuilder<'a, 'b, A> {
11736    let start = _fbb.start_table();
11737    DimensionFitStyleBuilder {
11738      fbb_: _fbb,
11739      start_: start,
11740    }
11741  }
11742  #[inline]
11743  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionFitStyle<'a>> {
11744    let o = self.fbb_.end_table(self.start_);
11745    flatbuffers::WIPOffset::new(o.value())
11746  }
11747}
11748
11749impl core::fmt::Debug for DimensionFitStyle<'_> {
11750  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11751    let mut ds = f.debug_struct("DimensionFitStyle");
11752      ds.field("rule", &self.rule());
11753      ds.field("text_placement", &self.text_placement());
11754      ds.field("force_text_inside", &self.force_text_inside());
11755      ds.finish()
11756  }
11757}
11758pub enum DimensionLineStyleOffset {}
11759#[derive(Copy, Clone, PartialEq)]
11760
11761pub struct DimensionLineStyle<'a> {
11762  pub _tab: flatbuffers::Table<'a>,
11763}
11764
11765impl<'a> flatbuffers::Follow<'a> for DimensionLineStyle<'a> {
11766  type Inner = DimensionLineStyle<'a>;
11767  #[inline]
11768  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11769    Self { _tab: flatbuffers::Table::new(buf, loc) }
11770  }
11771}
11772
11773impl<'a> DimensionLineStyle<'a> {
11774  pub const VT_STROKE: flatbuffers::VOffsetT = 4;
11775  pub const VT_TEXT_GAP: flatbuffers::VOffsetT = 6;
11776
11777  #[inline]
11778  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11779    DimensionLineStyle { _tab: table }
11780  }
11781  #[allow(unused_mut)]
11782  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11783    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11784    args: &'args DimensionLineStyleArgs<'args>
11785  ) -> flatbuffers::WIPOffset<DimensionLineStyle<'bldr>> {
11786    let mut builder = DimensionLineStyleBuilder::new(_fbb);
11787    builder.add_text_gap(args.text_gap);
11788    if let Some(x) = args.stroke { builder.add_stroke(x); }
11789    builder.finish()
11790  }
11791
11792
11793  #[inline]
11794  pub fn stroke(&self) -> Option<ElementStroke<'a>> {
11795    // Safety:
11796    // Created from valid Table for this object
11797    // which contains a valid value in this slot
11798    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DimensionLineStyle::VT_STROKE, None)}
11799  }
11800  #[inline]
11801  pub fn text_gap(&self) -> f64 {
11802    // Safety:
11803    // Created from valid Table for this object
11804    // which contains a valid value in this slot
11805    unsafe { self._tab.get::<f64>(DimensionLineStyle::VT_TEXT_GAP, Some(0.0)).unwrap()}
11806  }
11807}
11808
11809impl flatbuffers::Verifiable for DimensionLineStyle<'_> {
11810  #[inline]
11811  fn run_verifier(
11812    v: &mut flatbuffers::Verifier, pos: usize
11813  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11814    use self::flatbuffers::Verifiable;
11815    v.visit_table(pos)?
11816     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("stroke", Self::VT_STROKE, false)?
11817     .visit_field::<f64>("text_gap", Self::VT_TEXT_GAP, false)?
11818     .finish();
11819    Ok(())
11820  }
11821}
11822pub struct DimensionLineStyleArgs<'a> {
11823    pub stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
11824    pub text_gap: f64,
11825}
11826impl<'a> Default for DimensionLineStyleArgs<'a> {
11827  #[inline]
11828  fn default() -> Self {
11829    DimensionLineStyleArgs {
11830      stroke: None,
11831      text_gap: 0.0,
11832    }
11833  }
11834}
11835
11836pub struct DimensionLineStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11837  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11838  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11839}
11840impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionLineStyleBuilder<'a, 'b, A> {
11841  #[inline]
11842  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
11843    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DimensionLineStyle::VT_STROKE, stroke);
11844  }
11845  #[inline]
11846  pub fn add_text_gap(&mut self, text_gap: f64) {
11847    self.fbb_.push_slot::<f64>(DimensionLineStyle::VT_TEXT_GAP, text_gap, 0.0);
11848  }
11849  #[inline]
11850  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionLineStyleBuilder<'a, 'b, A> {
11851    let start = _fbb.start_table();
11852    DimensionLineStyleBuilder {
11853      fbb_: _fbb,
11854      start_: start,
11855    }
11856  }
11857  #[inline]
11858  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionLineStyle<'a>> {
11859    let o = self.fbb_.end_table(self.start_);
11860    flatbuffers::WIPOffset::new(o.value())
11861  }
11862}
11863
11864impl core::fmt::Debug for DimensionLineStyle<'_> {
11865  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11866    let mut ds = f.debug_struct("DimensionLineStyle");
11867      ds.field("stroke", &self.stroke());
11868      ds.field("text_gap", &self.text_gap());
11869      ds.finish()
11870  }
11871}
11872pub enum DimensionExtLineStyleOffset {}
11873#[derive(Copy, Clone, PartialEq)]
11874
11875pub struct DimensionExtLineStyle<'a> {
11876  pub _tab: flatbuffers::Table<'a>,
11877}
11878
11879impl<'a> flatbuffers::Follow<'a> for DimensionExtLineStyle<'a> {
11880  type Inner = DimensionExtLineStyle<'a>;
11881  #[inline]
11882  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
11883    Self { _tab: flatbuffers::Table::new(buf, loc) }
11884  }
11885}
11886
11887impl<'a> DimensionExtLineStyle<'a> {
11888  pub const VT_STROKE: flatbuffers::VOffsetT = 4;
11889  pub const VT_OVERSHOOT: flatbuffers::VOffsetT = 6;
11890  pub const VT_OFFSET: flatbuffers::VOffsetT = 8;
11891
11892  #[inline]
11893  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
11894    DimensionExtLineStyle { _tab: table }
11895  }
11896  #[allow(unused_mut)]
11897  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
11898    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
11899    args: &'args DimensionExtLineStyleArgs<'args>
11900  ) -> flatbuffers::WIPOffset<DimensionExtLineStyle<'bldr>> {
11901    let mut builder = DimensionExtLineStyleBuilder::new(_fbb);
11902    builder.add_offset(args.offset);
11903    builder.add_overshoot(args.overshoot);
11904    if let Some(x) = args.stroke { builder.add_stroke(x); }
11905    builder.finish()
11906  }
11907
11908
11909  #[inline]
11910  pub fn stroke(&self) -> Option<ElementStroke<'a>> {
11911    // Safety:
11912    // Created from valid Table for this object
11913    // which contains a valid value in this slot
11914    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DimensionExtLineStyle::VT_STROKE, None)}
11915  }
11916  #[inline]
11917  pub fn overshoot(&self) -> f64 {
11918    // Safety:
11919    // Created from valid Table for this object
11920    // which contains a valid value in this slot
11921    unsafe { self._tab.get::<f64>(DimensionExtLineStyle::VT_OVERSHOOT, Some(0.0)).unwrap()}
11922  }
11923  #[inline]
11924  pub fn offset(&self) -> f64 {
11925    // Safety:
11926    // Created from valid Table for this object
11927    // which contains a valid value in this slot
11928    unsafe { self._tab.get::<f64>(DimensionExtLineStyle::VT_OFFSET, Some(0.0)).unwrap()}
11929  }
11930}
11931
11932impl flatbuffers::Verifiable for DimensionExtLineStyle<'_> {
11933  #[inline]
11934  fn run_verifier(
11935    v: &mut flatbuffers::Verifier, pos: usize
11936  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
11937    use self::flatbuffers::Verifiable;
11938    v.visit_table(pos)?
11939     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("stroke", Self::VT_STROKE, false)?
11940     .visit_field::<f64>("overshoot", Self::VT_OVERSHOOT, false)?
11941     .visit_field::<f64>("offset", Self::VT_OFFSET, false)?
11942     .finish();
11943    Ok(())
11944  }
11945}
11946pub struct DimensionExtLineStyleArgs<'a> {
11947    pub stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
11948    pub overshoot: f64,
11949    pub offset: f64,
11950}
11951impl<'a> Default for DimensionExtLineStyleArgs<'a> {
11952  #[inline]
11953  fn default() -> Self {
11954    DimensionExtLineStyleArgs {
11955      stroke: None,
11956      overshoot: 0.0,
11957      offset: 0.0,
11958    }
11959  }
11960}
11961
11962pub struct DimensionExtLineStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
11963  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
11964  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
11965}
11966impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionExtLineStyleBuilder<'a, 'b, A> {
11967  #[inline]
11968  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
11969    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DimensionExtLineStyle::VT_STROKE, stroke);
11970  }
11971  #[inline]
11972  pub fn add_overshoot(&mut self, overshoot: f64) {
11973    self.fbb_.push_slot::<f64>(DimensionExtLineStyle::VT_OVERSHOOT, overshoot, 0.0);
11974  }
11975  #[inline]
11976  pub fn add_offset(&mut self, offset: f64) {
11977    self.fbb_.push_slot::<f64>(DimensionExtLineStyle::VT_OFFSET, offset, 0.0);
11978  }
11979  #[inline]
11980  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionExtLineStyleBuilder<'a, 'b, A> {
11981    let start = _fbb.start_table();
11982    DimensionExtLineStyleBuilder {
11983      fbb_: _fbb,
11984      start_: start,
11985    }
11986  }
11987  #[inline]
11988  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionExtLineStyle<'a>> {
11989    let o = self.fbb_.end_table(self.start_);
11990    flatbuffers::WIPOffset::new(o.value())
11991  }
11992}
11993
11994impl core::fmt::Debug for DimensionExtLineStyle<'_> {
11995  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11996    let mut ds = f.debug_struct("DimensionExtLineStyle");
11997      ds.field("stroke", &self.stroke());
11998      ds.field("overshoot", &self.overshoot());
11999      ds.field("offset", &self.offset());
12000      ds.finish()
12001  }
12002}
12003pub enum DimensionSymbolStyleOffset {}
12004#[derive(Copy, Clone, PartialEq)]
12005
12006pub struct DimensionSymbolStyle<'a> {
12007  pub _tab: flatbuffers::Table<'a>,
12008}
12009
12010impl<'a> flatbuffers::Follow<'a> for DimensionSymbolStyle<'a> {
12011  type Inner = DimensionSymbolStyle<'a>;
12012  #[inline]
12013  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12014    Self { _tab: flatbuffers::Table::new(buf, loc) }
12015  }
12016}
12017
12018impl<'a> DimensionSymbolStyle<'a> {
12019  pub const VT_HEADS_OVERRIDE: flatbuffers::VOffsetT = 4;
12020  pub const VT_CENTER_MARK_TYPE: flatbuffers::VOffsetT = 6;
12021  pub const VT_CENTER_MARK_SIZE: flatbuffers::VOffsetT = 8;
12022
12023  #[inline]
12024  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12025    DimensionSymbolStyle { _tab: table }
12026  }
12027  #[allow(unused_mut)]
12028  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12029    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12030    args: &'args DimensionSymbolStyleArgs<'args>
12031  ) -> flatbuffers::WIPOffset<DimensionSymbolStyle<'bldr>> {
12032    let mut builder = DimensionSymbolStyleBuilder::new(_fbb);
12033    builder.add_center_mark_size(args.center_mark_size);
12034    if let Some(x) = args.heads_override { builder.add_heads_override(x); }
12035    if let Some(x) = args.center_mark_type { builder.add_center_mark_type(x); }
12036    builder.finish()
12037  }
12038
12039
12040  #[inline]
12041  pub fn heads_override(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead<'a>>>> {
12042    // Safety:
12043    // Created from valid Table for this object
12044    // which contains a valid value in this slot
12045    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead>>>>(DimensionSymbolStyle::VT_HEADS_OVERRIDE, None)}
12046  }
12047  #[inline]
12048  pub fn center_mark_type(&self) -> Option<MARK_ELLIPSE_CENTER> {
12049    // Safety:
12050    // Created from valid Table for this object
12051    // which contains a valid value in this slot
12052    unsafe { self._tab.get::<MARK_ELLIPSE_CENTER>(DimensionSymbolStyle::VT_CENTER_MARK_TYPE, None)}
12053  }
12054  #[inline]
12055  pub fn center_mark_size(&self) -> f64 {
12056    // Safety:
12057    // Created from valid Table for this object
12058    // which contains a valid value in this slot
12059    unsafe { self._tab.get::<f64>(DimensionSymbolStyle::VT_CENTER_MARK_SIZE, Some(0.0)).unwrap()}
12060  }
12061}
12062
12063impl flatbuffers::Verifiable for DimensionSymbolStyle<'_> {
12064  #[inline]
12065  fn run_verifier(
12066    v: &mut flatbuffers::Verifier, pos: usize
12067  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12068    use self::flatbuffers::Verifiable;
12069    v.visit_table(pos)?
12070     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucHead>>>>("heads_override", Self::VT_HEADS_OVERRIDE, false)?
12071     .visit_field::<MARK_ELLIPSE_CENTER>("center_mark_type", Self::VT_CENTER_MARK_TYPE, false)?
12072     .visit_field::<f64>("center_mark_size", Self::VT_CENTER_MARK_SIZE, false)?
12073     .finish();
12074    Ok(())
12075  }
12076}
12077pub struct DimensionSymbolStyleArgs<'a> {
12078    pub heads_override: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucHead<'a>>>>>,
12079    pub center_mark_type: Option<MARK_ELLIPSE_CENTER>,
12080    pub center_mark_size: f64,
12081}
12082impl<'a> Default for DimensionSymbolStyleArgs<'a> {
12083  #[inline]
12084  fn default() -> Self {
12085    DimensionSymbolStyleArgs {
12086      heads_override: None,
12087      center_mark_type: None,
12088      center_mark_size: 0.0,
12089    }
12090  }
12091}
12092
12093pub struct DimensionSymbolStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12094  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12095  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12096}
12097impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionSymbolStyleBuilder<'a, 'b, A> {
12098  #[inline]
12099  pub fn add_heads_override(&mut self, heads_override: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucHead<'b >>>>) {
12100    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionSymbolStyle::VT_HEADS_OVERRIDE, heads_override);
12101  }
12102  #[inline]
12103  pub fn add_center_mark_type(&mut self, center_mark_type: MARK_ELLIPSE_CENTER) {
12104    self.fbb_.push_slot_always::<MARK_ELLIPSE_CENTER>(DimensionSymbolStyle::VT_CENTER_MARK_TYPE, center_mark_type);
12105  }
12106  #[inline]
12107  pub fn add_center_mark_size(&mut self, center_mark_size: f64) {
12108    self.fbb_.push_slot::<f64>(DimensionSymbolStyle::VT_CENTER_MARK_SIZE, center_mark_size, 0.0);
12109  }
12110  #[inline]
12111  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionSymbolStyleBuilder<'a, 'b, A> {
12112    let start = _fbb.start_table();
12113    DimensionSymbolStyleBuilder {
12114      fbb_: _fbb,
12115      start_: start,
12116    }
12117  }
12118  #[inline]
12119  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionSymbolStyle<'a>> {
12120    let o = self.fbb_.end_table(self.start_);
12121    flatbuffers::WIPOffset::new(o.value())
12122  }
12123}
12124
12125impl core::fmt::Debug for DimensionSymbolStyle<'_> {
12126  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12127    let mut ds = f.debug_struct("DimensionSymbolStyle");
12128      ds.field("heads_override", &self.heads_override());
12129      ds.field("center_mark_type", &self.center_mark_type());
12130      ds.field("center_mark_size", &self.center_mark_size());
12131      ds.finish()
12132  }
12133}
12134pub enum DucDimensionStyleOffset {}
12135#[derive(Copy, Clone, PartialEq)]
12136
12137pub struct DucDimensionStyle<'a> {
12138  pub _tab: flatbuffers::Table<'a>,
12139}
12140
12141impl<'a> flatbuffers::Follow<'a> for DucDimensionStyle<'a> {
12142  type Inner = DucDimensionStyle<'a>;
12143  #[inline]
12144  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12145    Self { _tab: flatbuffers::Table::new(buf, loc) }
12146  }
12147}
12148
12149impl<'a> DucDimensionStyle<'a> {
12150  pub const VT_DIM_LINE: flatbuffers::VOffsetT = 4;
12151  pub const VT_EXT_LINE: flatbuffers::VOffsetT = 6;
12152  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 8;
12153  pub const VT_SYMBOLS: flatbuffers::VOffsetT = 10;
12154  pub const VT_TOLERANCE: flatbuffers::VOffsetT = 12;
12155  pub const VT_FIT: flatbuffers::VOffsetT = 14;
12156
12157  #[inline]
12158  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12159    DucDimensionStyle { _tab: table }
12160  }
12161  #[allow(unused_mut)]
12162  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12163    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12164    args: &'args DucDimensionStyleArgs<'args>
12165  ) -> flatbuffers::WIPOffset<DucDimensionStyle<'bldr>> {
12166    let mut builder = DucDimensionStyleBuilder::new(_fbb);
12167    if let Some(x) = args.fit { builder.add_fit(x); }
12168    if let Some(x) = args.tolerance { builder.add_tolerance(x); }
12169    if let Some(x) = args.symbols { builder.add_symbols(x); }
12170    if let Some(x) = args.text_style { builder.add_text_style(x); }
12171    if let Some(x) = args.ext_line { builder.add_ext_line(x); }
12172    if let Some(x) = args.dim_line { builder.add_dim_line(x); }
12173    builder.finish()
12174  }
12175
12176
12177  #[inline]
12178  pub fn dim_line(&self) -> Option<DimensionLineStyle<'a>> {
12179    // Safety:
12180    // Created from valid Table for this object
12181    // which contains a valid value in this slot
12182    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionLineStyle>>(DucDimensionStyle::VT_DIM_LINE, None)}
12183  }
12184  #[inline]
12185  pub fn ext_line(&self) -> Option<DimensionExtLineStyle<'a>> {
12186    // Safety:
12187    // Created from valid Table for this object
12188    // which contains a valid value in this slot
12189    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionExtLineStyle>>(DucDimensionStyle::VT_EXT_LINE, None)}
12190  }
12191  #[inline]
12192  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
12193    // Safety:
12194    // Created from valid Table for this object
12195    // which contains a valid value in this slot
12196    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucDimensionStyle::VT_TEXT_STYLE, None)}
12197  }
12198  #[inline]
12199  pub fn symbols(&self) -> Option<DimensionSymbolStyle<'a>> {
12200    // Safety:
12201    // Created from valid Table for this object
12202    // which contains a valid value in this slot
12203    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionSymbolStyle>>(DucDimensionStyle::VT_SYMBOLS, None)}
12204  }
12205  #[inline]
12206  pub fn tolerance(&self) -> Option<DimensionToleranceStyle<'a>> {
12207    // Safety:
12208    // Created from valid Table for this object
12209    // which contains a valid value in this slot
12210    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionToleranceStyle>>(DucDimensionStyle::VT_TOLERANCE, None)}
12211  }
12212  #[inline]
12213  pub fn fit(&self) -> Option<DimensionFitStyle<'a>> {
12214    // Safety:
12215    // Created from valid Table for this object
12216    // which contains a valid value in this slot
12217    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionFitStyle>>(DucDimensionStyle::VT_FIT, None)}
12218  }
12219}
12220
12221impl flatbuffers::Verifiable for DucDimensionStyle<'_> {
12222  #[inline]
12223  fn run_verifier(
12224    v: &mut flatbuffers::Verifier, pos: usize
12225  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12226    use self::flatbuffers::Verifiable;
12227    v.visit_table(pos)?
12228     .visit_field::<flatbuffers::ForwardsUOffset<DimensionLineStyle>>("dim_line", Self::VT_DIM_LINE, false)?
12229     .visit_field::<flatbuffers::ForwardsUOffset<DimensionExtLineStyle>>("ext_line", Self::VT_EXT_LINE, false)?
12230     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
12231     .visit_field::<flatbuffers::ForwardsUOffset<DimensionSymbolStyle>>("symbols", Self::VT_SYMBOLS, false)?
12232     .visit_field::<flatbuffers::ForwardsUOffset<DimensionToleranceStyle>>("tolerance", Self::VT_TOLERANCE, false)?
12233     .visit_field::<flatbuffers::ForwardsUOffset<DimensionFitStyle>>("fit", Self::VT_FIT, false)?
12234     .finish();
12235    Ok(())
12236  }
12237}
12238pub struct DucDimensionStyleArgs<'a> {
12239    pub dim_line: Option<flatbuffers::WIPOffset<DimensionLineStyle<'a>>>,
12240    pub ext_line: Option<flatbuffers::WIPOffset<DimensionExtLineStyle<'a>>>,
12241    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
12242    pub symbols: Option<flatbuffers::WIPOffset<DimensionSymbolStyle<'a>>>,
12243    pub tolerance: Option<flatbuffers::WIPOffset<DimensionToleranceStyle<'a>>>,
12244    pub fit: Option<flatbuffers::WIPOffset<DimensionFitStyle<'a>>>,
12245}
12246impl<'a> Default for DucDimensionStyleArgs<'a> {
12247  #[inline]
12248  fn default() -> Self {
12249    DucDimensionStyleArgs {
12250      dim_line: None,
12251      ext_line: None,
12252      text_style: None,
12253      symbols: None,
12254      tolerance: None,
12255      fit: None,
12256    }
12257  }
12258}
12259
12260pub struct DucDimensionStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12261  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12262  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12263}
12264impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucDimensionStyleBuilder<'a, 'b, A> {
12265  #[inline]
12266  pub fn add_dim_line(&mut self, dim_line: flatbuffers::WIPOffset<DimensionLineStyle<'b >>) {
12267    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionLineStyle>>(DucDimensionStyle::VT_DIM_LINE, dim_line);
12268  }
12269  #[inline]
12270  pub fn add_ext_line(&mut self, ext_line: flatbuffers::WIPOffset<DimensionExtLineStyle<'b >>) {
12271    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionExtLineStyle>>(DucDimensionStyle::VT_EXT_LINE, ext_line);
12272  }
12273  #[inline]
12274  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
12275    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucDimensionStyle::VT_TEXT_STYLE, text_style);
12276  }
12277  #[inline]
12278  pub fn add_symbols(&mut self, symbols: flatbuffers::WIPOffset<DimensionSymbolStyle<'b >>) {
12279    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionSymbolStyle>>(DucDimensionStyle::VT_SYMBOLS, symbols);
12280  }
12281  #[inline]
12282  pub fn add_tolerance(&mut self, tolerance: flatbuffers::WIPOffset<DimensionToleranceStyle<'b >>) {
12283    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionToleranceStyle>>(DucDimensionStyle::VT_TOLERANCE, tolerance);
12284  }
12285  #[inline]
12286  pub fn add_fit(&mut self, fit: flatbuffers::WIPOffset<DimensionFitStyle<'b >>) {
12287    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionFitStyle>>(DucDimensionStyle::VT_FIT, fit);
12288  }
12289  #[inline]
12290  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucDimensionStyleBuilder<'a, 'b, A> {
12291    let start = _fbb.start_table();
12292    DucDimensionStyleBuilder {
12293      fbb_: _fbb,
12294      start_: start,
12295    }
12296  }
12297  #[inline]
12298  pub fn finish(self) -> flatbuffers::WIPOffset<DucDimensionStyle<'a>> {
12299    let o = self.fbb_.end_table(self.start_);
12300    flatbuffers::WIPOffset::new(o.value())
12301  }
12302}
12303
12304impl core::fmt::Debug for DucDimensionStyle<'_> {
12305  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12306    let mut ds = f.debug_struct("DucDimensionStyle");
12307      ds.field("dim_line", &self.dim_line());
12308      ds.field("ext_line", &self.ext_line());
12309      ds.field("text_style", &self.text_style());
12310      ds.field("symbols", &self.symbols());
12311      ds.field("tolerance", &self.tolerance());
12312      ds.field("fit", &self.fit());
12313      ds.finish()
12314  }
12315}
12316pub enum FCFLayoutStyleOffset {}
12317#[derive(Copy, Clone, PartialEq)]
12318
12319pub struct FCFLayoutStyle<'a> {
12320  pub _tab: flatbuffers::Table<'a>,
12321}
12322
12323impl<'a> flatbuffers::Follow<'a> for FCFLayoutStyle<'a> {
12324  type Inner = FCFLayoutStyle<'a>;
12325  #[inline]
12326  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12327    Self { _tab: flatbuffers::Table::new(buf, loc) }
12328  }
12329}
12330
12331impl<'a> FCFLayoutStyle<'a> {
12332  pub const VT_PADDING: flatbuffers::VOffsetT = 4;
12333  pub const VT_SEGMENT_SPACING: flatbuffers::VOffsetT = 6;
12334  pub const VT_ROW_SPACING: flatbuffers::VOffsetT = 8;
12335
12336  #[inline]
12337  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12338    FCFLayoutStyle { _tab: table }
12339  }
12340  #[allow(unused_mut)]
12341  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12342    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12343    args: &'args FCFLayoutStyleArgs
12344  ) -> flatbuffers::WIPOffset<FCFLayoutStyle<'bldr>> {
12345    let mut builder = FCFLayoutStyleBuilder::new(_fbb);
12346    builder.add_row_spacing(args.row_spacing);
12347    builder.add_segment_spacing(args.segment_spacing);
12348    builder.add_padding(args.padding);
12349    builder.finish()
12350  }
12351
12352
12353  #[inline]
12354  pub fn padding(&self) -> f64 {
12355    // Safety:
12356    // Created from valid Table for this object
12357    // which contains a valid value in this slot
12358    unsafe { self._tab.get::<f64>(FCFLayoutStyle::VT_PADDING, Some(0.0)).unwrap()}
12359  }
12360  #[inline]
12361  pub fn segment_spacing(&self) -> f64 {
12362    // Safety:
12363    // Created from valid Table for this object
12364    // which contains a valid value in this slot
12365    unsafe { self._tab.get::<f64>(FCFLayoutStyle::VT_SEGMENT_SPACING, Some(0.0)).unwrap()}
12366  }
12367  #[inline]
12368  pub fn row_spacing(&self) -> f64 {
12369    // Safety:
12370    // Created from valid Table for this object
12371    // which contains a valid value in this slot
12372    unsafe { self._tab.get::<f64>(FCFLayoutStyle::VT_ROW_SPACING, Some(0.0)).unwrap()}
12373  }
12374}
12375
12376impl flatbuffers::Verifiable for FCFLayoutStyle<'_> {
12377  #[inline]
12378  fn run_verifier(
12379    v: &mut flatbuffers::Verifier, pos: usize
12380  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12381    use self::flatbuffers::Verifiable;
12382    v.visit_table(pos)?
12383     .visit_field::<f64>("padding", Self::VT_PADDING, false)?
12384     .visit_field::<f64>("segment_spacing", Self::VT_SEGMENT_SPACING, false)?
12385     .visit_field::<f64>("row_spacing", Self::VT_ROW_SPACING, false)?
12386     .finish();
12387    Ok(())
12388  }
12389}
12390pub struct FCFLayoutStyleArgs {
12391    pub padding: f64,
12392    pub segment_spacing: f64,
12393    pub row_spacing: f64,
12394}
12395impl<'a> Default for FCFLayoutStyleArgs {
12396  #[inline]
12397  fn default() -> Self {
12398    FCFLayoutStyleArgs {
12399      padding: 0.0,
12400      segment_spacing: 0.0,
12401      row_spacing: 0.0,
12402    }
12403  }
12404}
12405
12406pub struct FCFLayoutStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12407  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12408  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12409}
12410impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFLayoutStyleBuilder<'a, 'b, A> {
12411  #[inline]
12412  pub fn add_padding(&mut self, padding: f64) {
12413    self.fbb_.push_slot::<f64>(FCFLayoutStyle::VT_PADDING, padding, 0.0);
12414  }
12415  #[inline]
12416  pub fn add_segment_spacing(&mut self, segment_spacing: f64) {
12417    self.fbb_.push_slot::<f64>(FCFLayoutStyle::VT_SEGMENT_SPACING, segment_spacing, 0.0);
12418  }
12419  #[inline]
12420  pub fn add_row_spacing(&mut self, row_spacing: f64) {
12421    self.fbb_.push_slot::<f64>(FCFLayoutStyle::VT_ROW_SPACING, row_spacing, 0.0);
12422  }
12423  #[inline]
12424  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFLayoutStyleBuilder<'a, 'b, A> {
12425    let start = _fbb.start_table();
12426    FCFLayoutStyleBuilder {
12427      fbb_: _fbb,
12428      start_: start,
12429    }
12430  }
12431  #[inline]
12432  pub fn finish(self) -> flatbuffers::WIPOffset<FCFLayoutStyle<'a>> {
12433    let o = self.fbb_.end_table(self.start_);
12434    flatbuffers::WIPOffset::new(o.value())
12435  }
12436}
12437
12438impl core::fmt::Debug for FCFLayoutStyle<'_> {
12439  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12440    let mut ds = f.debug_struct("FCFLayoutStyle");
12441      ds.field("padding", &self.padding());
12442      ds.field("segment_spacing", &self.segment_spacing());
12443      ds.field("row_spacing", &self.row_spacing());
12444      ds.finish()
12445  }
12446}
12447pub enum FCFSymbolStyleOffset {}
12448#[derive(Copy, Clone, PartialEq)]
12449
12450pub struct FCFSymbolStyle<'a> {
12451  pub _tab: flatbuffers::Table<'a>,
12452}
12453
12454impl<'a> flatbuffers::Follow<'a> for FCFSymbolStyle<'a> {
12455  type Inner = FCFSymbolStyle<'a>;
12456  #[inline]
12457  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12458    Self { _tab: flatbuffers::Table::new(buf, loc) }
12459  }
12460}
12461
12462impl<'a> FCFSymbolStyle<'a> {
12463  pub const VT_SCALE: flatbuffers::VOffsetT = 4;
12464
12465  #[inline]
12466  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12467    FCFSymbolStyle { _tab: table }
12468  }
12469  #[allow(unused_mut)]
12470  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12471    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12472    args: &'args FCFSymbolStyleArgs
12473  ) -> flatbuffers::WIPOffset<FCFSymbolStyle<'bldr>> {
12474    let mut builder = FCFSymbolStyleBuilder::new(_fbb);
12475    builder.add_scale(args.scale);
12476    builder.finish()
12477  }
12478
12479
12480  #[inline]
12481  pub fn scale(&self) -> f32 {
12482    // Safety:
12483    // Created from valid Table for this object
12484    // which contains a valid value in this slot
12485    unsafe { self._tab.get::<f32>(FCFSymbolStyle::VT_SCALE, Some(0.0)).unwrap()}
12486  }
12487}
12488
12489impl flatbuffers::Verifiable for FCFSymbolStyle<'_> {
12490  #[inline]
12491  fn run_verifier(
12492    v: &mut flatbuffers::Verifier, pos: usize
12493  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12494    use self::flatbuffers::Verifiable;
12495    v.visit_table(pos)?
12496     .visit_field::<f32>("scale", Self::VT_SCALE, false)?
12497     .finish();
12498    Ok(())
12499  }
12500}
12501pub struct FCFSymbolStyleArgs {
12502    pub scale: f32,
12503}
12504impl<'a> Default for FCFSymbolStyleArgs {
12505  #[inline]
12506  fn default() -> Self {
12507    FCFSymbolStyleArgs {
12508      scale: 0.0,
12509    }
12510  }
12511}
12512
12513pub struct FCFSymbolStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12514  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12515  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12516}
12517impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFSymbolStyleBuilder<'a, 'b, A> {
12518  #[inline]
12519  pub fn add_scale(&mut self, scale: f32) {
12520    self.fbb_.push_slot::<f32>(FCFSymbolStyle::VT_SCALE, scale, 0.0);
12521  }
12522  #[inline]
12523  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFSymbolStyleBuilder<'a, 'b, A> {
12524    let start = _fbb.start_table();
12525    FCFSymbolStyleBuilder {
12526      fbb_: _fbb,
12527      start_: start,
12528    }
12529  }
12530  #[inline]
12531  pub fn finish(self) -> flatbuffers::WIPOffset<FCFSymbolStyle<'a>> {
12532    let o = self.fbb_.end_table(self.start_);
12533    flatbuffers::WIPOffset::new(o.value())
12534  }
12535}
12536
12537impl core::fmt::Debug for FCFSymbolStyle<'_> {
12538  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12539    let mut ds = f.debug_struct("FCFSymbolStyle");
12540      ds.field("scale", &self.scale());
12541      ds.finish()
12542  }
12543}
12544pub enum FCFDatumStyleOffset {}
12545#[derive(Copy, Clone, PartialEq)]
12546
12547pub struct FCFDatumStyle<'a> {
12548  pub _tab: flatbuffers::Table<'a>,
12549}
12550
12551impl<'a> flatbuffers::Follow<'a> for FCFDatumStyle<'a> {
12552  type Inner = FCFDatumStyle<'a>;
12553  #[inline]
12554  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12555    Self { _tab: flatbuffers::Table::new(buf, loc) }
12556  }
12557}
12558
12559impl<'a> FCFDatumStyle<'a> {
12560  pub const VT_BRACKET_STYLE: flatbuffers::VOffsetT = 4;
12561
12562  #[inline]
12563  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12564    FCFDatumStyle { _tab: table }
12565  }
12566  #[allow(unused_mut)]
12567  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12568    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12569    args: &'args FCFDatumStyleArgs
12570  ) -> flatbuffers::WIPOffset<FCFDatumStyle<'bldr>> {
12571    let mut builder = FCFDatumStyleBuilder::new(_fbb);
12572    if let Some(x) = args.bracket_style { builder.add_bracket_style(x); }
12573    builder.finish()
12574  }
12575
12576
12577  #[inline]
12578  pub fn bracket_style(&self) -> Option<DATUM_BRACKET_STYLE> {
12579    // Safety:
12580    // Created from valid Table for this object
12581    // which contains a valid value in this slot
12582    unsafe { self._tab.get::<DATUM_BRACKET_STYLE>(FCFDatumStyle::VT_BRACKET_STYLE, None)}
12583  }
12584}
12585
12586impl flatbuffers::Verifiable for FCFDatumStyle<'_> {
12587  #[inline]
12588  fn run_verifier(
12589    v: &mut flatbuffers::Verifier, pos: usize
12590  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12591    use self::flatbuffers::Verifiable;
12592    v.visit_table(pos)?
12593     .visit_field::<DATUM_BRACKET_STYLE>("bracket_style", Self::VT_BRACKET_STYLE, false)?
12594     .finish();
12595    Ok(())
12596  }
12597}
12598pub struct FCFDatumStyleArgs {
12599    pub bracket_style: Option<DATUM_BRACKET_STYLE>,
12600}
12601impl<'a> Default for FCFDatumStyleArgs {
12602  #[inline]
12603  fn default() -> Self {
12604    FCFDatumStyleArgs {
12605      bracket_style: None,
12606    }
12607  }
12608}
12609
12610pub struct FCFDatumStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12611  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12612  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12613}
12614impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFDatumStyleBuilder<'a, 'b, A> {
12615  #[inline]
12616  pub fn add_bracket_style(&mut self, bracket_style: DATUM_BRACKET_STYLE) {
12617    self.fbb_.push_slot_always::<DATUM_BRACKET_STYLE>(FCFDatumStyle::VT_BRACKET_STYLE, bracket_style);
12618  }
12619  #[inline]
12620  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFDatumStyleBuilder<'a, 'b, A> {
12621    let start = _fbb.start_table();
12622    FCFDatumStyleBuilder {
12623      fbb_: _fbb,
12624      start_: start,
12625    }
12626  }
12627  #[inline]
12628  pub fn finish(self) -> flatbuffers::WIPOffset<FCFDatumStyle<'a>> {
12629    let o = self.fbb_.end_table(self.start_);
12630    flatbuffers::WIPOffset::new(o.value())
12631  }
12632}
12633
12634impl core::fmt::Debug for FCFDatumStyle<'_> {
12635  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12636    let mut ds = f.debug_struct("FCFDatumStyle");
12637      ds.field("bracket_style", &self.bracket_style());
12638      ds.finish()
12639  }
12640}
12641pub enum DucFeatureControlFrameStyleOffset {}
12642#[derive(Copy, Clone, PartialEq)]
12643
12644pub struct DucFeatureControlFrameStyle<'a> {
12645  pub _tab: flatbuffers::Table<'a>,
12646}
12647
12648impl<'a> flatbuffers::Follow<'a> for DucFeatureControlFrameStyle<'a> {
12649  type Inner = DucFeatureControlFrameStyle<'a>;
12650  #[inline]
12651  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12652    Self { _tab: flatbuffers::Table::new(buf, loc) }
12653  }
12654}
12655
12656impl<'a> DucFeatureControlFrameStyle<'a> {
12657  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 6;
12658  pub const VT_LAYOUT: flatbuffers::VOffsetT = 8;
12659  pub const VT_SYMBOLS: flatbuffers::VOffsetT = 10;
12660  pub const VT_DATUM_STYLE: flatbuffers::VOffsetT = 12;
12661
12662  #[inline]
12663  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12664    DucFeatureControlFrameStyle { _tab: table }
12665  }
12666  #[allow(unused_mut)]
12667  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12668    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12669    args: &'args DucFeatureControlFrameStyleArgs<'args>
12670  ) -> flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'bldr>> {
12671    let mut builder = DucFeatureControlFrameStyleBuilder::new(_fbb);
12672    if let Some(x) = args.datum_style { builder.add_datum_style(x); }
12673    if let Some(x) = args.symbols { builder.add_symbols(x); }
12674    if let Some(x) = args.layout { builder.add_layout(x); }
12675    if let Some(x) = args.text_style { builder.add_text_style(x); }
12676    builder.finish()
12677  }
12678
12679
12680  #[inline]
12681  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
12682    // Safety:
12683    // Created from valid Table for this object
12684    // which contains a valid value in this slot
12685    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucFeatureControlFrameStyle::VT_TEXT_STYLE, None)}
12686  }
12687  #[inline]
12688  pub fn layout(&self) -> Option<FCFLayoutStyle<'a>> {
12689    // Safety:
12690    // Created from valid Table for this object
12691    // which contains a valid value in this slot
12692    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFLayoutStyle>>(DucFeatureControlFrameStyle::VT_LAYOUT, None)}
12693  }
12694  #[inline]
12695  pub fn symbols(&self) -> Option<FCFSymbolStyle<'a>> {
12696    // Safety:
12697    // Created from valid Table for this object
12698    // which contains a valid value in this slot
12699    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFSymbolStyle>>(DucFeatureControlFrameStyle::VT_SYMBOLS, None)}
12700  }
12701  #[inline]
12702  pub fn datum_style(&self) -> Option<FCFDatumStyle<'a>> {
12703    // Safety:
12704    // Created from valid Table for this object
12705    // which contains a valid value in this slot
12706    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFDatumStyle>>(DucFeatureControlFrameStyle::VT_DATUM_STYLE, None)}
12707  }
12708}
12709
12710impl flatbuffers::Verifiable for DucFeatureControlFrameStyle<'_> {
12711  #[inline]
12712  fn run_verifier(
12713    v: &mut flatbuffers::Verifier, pos: usize
12714  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12715    use self::flatbuffers::Verifiable;
12716    v.visit_table(pos)?
12717     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
12718     .visit_field::<flatbuffers::ForwardsUOffset<FCFLayoutStyle>>("layout", Self::VT_LAYOUT, false)?
12719     .visit_field::<flatbuffers::ForwardsUOffset<FCFSymbolStyle>>("symbols", Self::VT_SYMBOLS, false)?
12720     .visit_field::<flatbuffers::ForwardsUOffset<FCFDatumStyle>>("datum_style", Self::VT_DATUM_STYLE, false)?
12721     .finish();
12722    Ok(())
12723  }
12724}
12725pub struct DucFeatureControlFrameStyleArgs<'a> {
12726    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
12727    pub layout: Option<flatbuffers::WIPOffset<FCFLayoutStyle<'a>>>,
12728    pub symbols: Option<flatbuffers::WIPOffset<FCFSymbolStyle<'a>>>,
12729    pub datum_style: Option<flatbuffers::WIPOffset<FCFDatumStyle<'a>>>,
12730}
12731impl<'a> Default for DucFeatureControlFrameStyleArgs<'a> {
12732  #[inline]
12733  fn default() -> Self {
12734    DucFeatureControlFrameStyleArgs {
12735      text_style: None,
12736      layout: None,
12737      symbols: None,
12738      datum_style: None,
12739    }
12740  }
12741}
12742
12743pub struct DucFeatureControlFrameStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12744  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12745  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12746}
12747impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucFeatureControlFrameStyleBuilder<'a, 'b, A> {
12748  #[inline]
12749  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
12750    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucFeatureControlFrameStyle::VT_TEXT_STYLE, text_style);
12751  }
12752  #[inline]
12753  pub fn add_layout(&mut self, layout: flatbuffers::WIPOffset<FCFLayoutStyle<'b >>) {
12754    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFLayoutStyle>>(DucFeatureControlFrameStyle::VT_LAYOUT, layout);
12755  }
12756  #[inline]
12757  pub fn add_symbols(&mut self, symbols: flatbuffers::WIPOffset<FCFSymbolStyle<'b >>) {
12758    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFSymbolStyle>>(DucFeatureControlFrameStyle::VT_SYMBOLS, symbols);
12759  }
12760  #[inline]
12761  pub fn add_datum_style(&mut self, datum_style: flatbuffers::WIPOffset<FCFDatumStyle<'b >>) {
12762    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFDatumStyle>>(DucFeatureControlFrameStyle::VT_DATUM_STYLE, datum_style);
12763  }
12764  #[inline]
12765  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucFeatureControlFrameStyleBuilder<'a, 'b, A> {
12766    let start = _fbb.start_table();
12767    DucFeatureControlFrameStyleBuilder {
12768      fbb_: _fbb,
12769      start_: start,
12770    }
12771  }
12772  #[inline]
12773  pub fn finish(self) -> flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'a>> {
12774    let o = self.fbb_.end_table(self.start_);
12775    flatbuffers::WIPOffset::new(o.value())
12776  }
12777}
12778
12779impl core::fmt::Debug for DucFeatureControlFrameStyle<'_> {
12780  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12781    let mut ds = f.debug_struct("DucFeatureControlFrameStyle");
12782      ds.field("text_style", &self.text_style());
12783      ds.field("layout", &self.layout());
12784      ds.field("symbols", &self.symbols());
12785      ds.field("datum_style", &self.datum_style());
12786      ds.finish()
12787  }
12788}
12789pub enum ParagraphFormattingOffset {}
12790#[derive(Copy, Clone, PartialEq)]
12791
12792pub struct ParagraphFormatting<'a> {
12793  pub _tab: flatbuffers::Table<'a>,
12794}
12795
12796impl<'a> flatbuffers::Follow<'a> for ParagraphFormatting<'a> {
12797  type Inner = ParagraphFormatting<'a>;
12798  #[inline]
12799  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12800    Self { _tab: flatbuffers::Table::new(buf, loc) }
12801  }
12802}
12803
12804impl<'a> ParagraphFormatting<'a> {
12805  pub const VT_FIRST_LINE_INDENT: flatbuffers::VOffsetT = 4;
12806  pub const VT_HANGING_INDENT: flatbuffers::VOffsetT = 6;
12807  pub const VT_LEFT_INDENT: flatbuffers::VOffsetT = 8;
12808  pub const VT_RIGHT_INDENT: flatbuffers::VOffsetT = 10;
12809  pub const VT_SPACE_BEFORE: flatbuffers::VOffsetT = 12;
12810  pub const VT_SPACE_AFTER: flatbuffers::VOffsetT = 14;
12811  pub const VT_TAB_STOPS: flatbuffers::VOffsetT = 16;
12812
12813  #[inline]
12814  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
12815    ParagraphFormatting { _tab: table }
12816  }
12817  #[allow(unused_mut)]
12818  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
12819    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
12820    args: &'args ParagraphFormattingArgs<'args>
12821  ) -> flatbuffers::WIPOffset<ParagraphFormatting<'bldr>> {
12822    let mut builder = ParagraphFormattingBuilder::new(_fbb);
12823    builder.add_space_after(args.space_after);
12824    builder.add_space_before(args.space_before);
12825    builder.add_right_indent(args.right_indent);
12826    builder.add_left_indent(args.left_indent);
12827    builder.add_hanging_indent(args.hanging_indent);
12828    builder.add_first_line_indent(args.first_line_indent);
12829    if let Some(x) = args.tab_stops { builder.add_tab_stops(x); }
12830    builder.finish()
12831  }
12832
12833
12834  #[inline]
12835  pub fn first_line_indent(&self) -> f64 {
12836    // Safety:
12837    // Created from valid Table for this object
12838    // which contains a valid value in this slot
12839    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_FIRST_LINE_INDENT, Some(0.0)).unwrap()}
12840  }
12841  #[inline]
12842  pub fn hanging_indent(&self) -> f64 {
12843    // Safety:
12844    // Created from valid Table for this object
12845    // which contains a valid value in this slot
12846    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_HANGING_INDENT, Some(0.0)).unwrap()}
12847  }
12848  #[inline]
12849  pub fn left_indent(&self) -> f64 {
12850    // Safety:
12851    // Created from valid Table for this object
12852    // which contains a valid value in this slot
12853    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_LEFT_INDENT, Some(0.0)).unwrap()}
12854  }
12855  #[inline]
12856  pub fn right_indent(&self) -> f64 {
12857    // Safety:
12858    // Created from valid Table for this object
12859    // which contains a valid value in this slot
12860    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_RIGHT_INDENT, Some(0.0)).unwrap()}
12861  }
12862  #[inline]
12863  pub fn space_before(&self) -> f64 {
12864    // Safety:
12865    // Created from valid Table for this object
12866    // which contains a valid value in this slot
12867    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_SPACE_BEFORE, Some(0.0)).unwrap()}
12868  }
12869  #[inline]
12870  pub fn space_after(&self) -> f64 {
12871    // Safety:
12872    // Created from valid Table for this object
12873    // which contains a valid value in this slot
12874    unsafe { self._tab.get::<f64>(ParagraphFormatting::VT_SPACE_AFTER, Some(0.0)).unwrap()}
12875  }
12876  #[inline]
12877  pub fn tab_stops(&self) -> Option<flatbuffers::Vector<'a, f64>> {
12878    // Safety:
12879    // Created from valid Table for this object
12880    // which contains a valid value in this slot
12881    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(ParagraphFormatting::VT_TAB_STOPS, None)}
12882  }
12883}
12884
12885impl flatbuffers::Verifiable for ParagraphFormatting<'_> {
12886  #[inline]
12887  fn run_verifier(
12888    v: &mut flatbuffers::Verifier, pos: usize
12889  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
12890    use self::flatbuffers::Verifiable;
12891    v.visit_table(pos)?
12892     .visit_field::<f64>("first_line_indent", Self::VT_FIRST_LINE_INDENT, false)?
12893     .visit_field::<f64>("hanging_indent", Self::VT_HANGING_INDENT, false)?
12894     .visit_field::<f64>("left_indent", Self::VT_LEFT_INDENT, false)?
12895     .visit_field::<f64>("right_indent", Self::VT_RIGHT_INDENT, false)?
12896     .visit_field::<f64>("space_before", Self::VT_SPACE_BEFORE, false)?
12897     .visit_field::<f64>("space_after", Self::VT_SPACE_AFTER, false)?
12898     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("tab_stops", Self::VT_TAB_STOPS, false)?
12899     .finish();
12900    Ok(())
12901  }
12902}
12903pub struct ParagraphFormattingArgs<'a> {
12904    pub first_line_indent: f64,
12905    pub hanging_indent: f64,
12906    pub left_indent: f64,
12907    pub right_indent: f64,
12908    pub space_before: f64,
12909    pub space_after: f64,
12910    pub tab_stops: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
12911}
12912impl<'a> Default for ParagraphFormattingArgs<'a> {
12913  #[inline]
12914  fn default() -> Self {
12915    ParagraphFormattingArgs {
12916      first_line_indent: 0.0,
12917      hanging_indent: 0.0,
12918      left_indent: 0.0,
12919      right_indent: 0.0,
12920      space_before: 0.0,
12921      space_after: 0.0,
12922      tab_stops: None,
12923    }
12924  }
12925}
12926
12927pub struct ParagraphFormattingBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
12928  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
12929  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
12930}
12931impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ParagraphFormattingBuilder<'a, 'b, A> {
12932  #[inline]
12933  pub fn add_first_line_indent(&mut self, first_line_indent: f64) {
12934    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_FIRST_LINE_INDENT, first_line_indent, 0.0);
12935  }
12936  #[inline]
12937  pub fn add_hanging_indent(&mut self, hanging_indent: f64) {
12938    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_HANGING_INDENT, hanging_indent, 0.0);
12939  }
12940  #[inline]
12941  pub fn add_left_indent(&mut self, left_indent: f64) {
12942    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_LEFT_INDENT, left_indent, 0.0);
12943  }
12944  #[inline]
12945  pub fn add_right_indent(&mut self, right_indent: f64) {
12946    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_RIGHT_INDENT, right_indent, 0.0);
12947  }
12948  #[inline]
12949  pub fn add_space_before(&mut self, space_before: f64) {
12950    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_SPACE_BEFORE, space_before, 0.0);
12951  }
12952  #[inline]
12953  pub fn add_space_after(&mut self, space_after: f64) {
12954    self.fbb_.push_slot::<f64>(ParagraphFormatting::VT_SPACE_AFTER, space_after, 0.0);
12955  }
12956  #[inline]
12957  pub fn add_tab_stops(&mut self, tab_stops: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
12958    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ParagraphFormatting::VT_TAB_STOPS, tab_stops);
12959  }
12960  #[inline]
12961  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ParagraphFormattingBuilder<'a, 'b, A> {
12962    let start = _fbb.start_table();
12963    ParagraphFormattingBuilder {
12964      fbb_: _fbb,
12965      start_: start,
12966    }
12967  }
12968  #[inline]
12969  pub fn finish(self) -> flatbuffers::WIPOffset<ParagraphFormatting<'a>> {
12970    let o = self.fbb_.end_table(self.start_);
12971    flatbuffers::WIPOffset::new(o.value())
12972  }
12973}
12974
12975impl core::fmt::Debug for ParagraphFormatting<'_> {
12976  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12977    let mut ds = f.debug_struct("ParagraphFormatting");
12978      ds.field("first_line_indent", &self.first_line_indent());
12979      ds.field("hanging_indent", &self.hanging_indent());
12980      ds.field("left_indent", &self.left_indent());
12981      ds.field("right_indent", &self.right_indent());
12982      ds.field("space_before", &self.space_before());
12983      ds.field("space_after", &self.space_after());
12984      ds.field("tab_stops", &self.tab_stops());
12985      ds.finish()
12986  }
12987}
12988pub enum StackFormatPropertiesOffset {}
12989#[derive(Copy, Clone, PartialEq)]
12990
12991pub struct StackFormatProperties<'a> {
12992  pub _tab: flatbuffers::Table<'a>,
12993}
12994
12995impl<'a> flatbuffers::Follow<'a> for StackFormatProperties<'a> {
12996  type Inner = StackFormatProperties<'a>;
12997  #[inline]
12998  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
12999    Self { _tab: flatbuffers::Table::new(buf, loc) }
13000  }
13001}
13002
13003impl<'a> StackFormatProperties<'a> {
13004  pub const VT_UPPER_SCALE: flatbuffers::VOffsetT = 4;
13005  pub const VT_LOWER_SCALE: flatbuffers::VOffsetT = 6;
13006  pub const VT_ALIGNMENT: flatbuffers::VOffsetT = 8;
13007
13008  #[inline]
13009  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13010    StackFormatProperties { _tab: table }
13011  }
13012  #[allow(unused_mut)]
13013  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13014    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13015    args: &'args StackFormatPropertiesArgs
13016  ) -> flatbuffers::WIPOffset<StackFormatProperties<'bldr>> {
13017    let mut builder = StackFormatPropertiesBuilder::new(_fbb);
13018    builder.add_lower_scale(args.lower_scale);
13019    builder.add_upper_scale(args.upper_scale);
13020    if let Some(x) = args.alignment { builder.add_alignment(x); }
13021    builder.finish()
13022  }
13023
13024
13025  #[inline]
13026  pub fn upper_scale(&self) -> f64 {
13027    // Safety:
13028    // Created from valid Table for this object
13029    // which contains a valid value in this slot
13030    unsafe { self._tab.get::<f64>(StackFormatProperties::VT_UPPER_SCALE, Some(0.0)).unwrap()}
13031  }
13032  #[inline]
13033  pub fn lower_scale(&self) -> f64 {
13034    // Safety:
13035    // Created from valid Table for this object
13036    // which contains a valid value in this slot
13037    unsafe { self._tab.get::<f64>(StackFormatProperties::VT_LOWER_SCALE, Some(0.0)).unwrap()}
13038  }
13039  #[inline]
13040  pub fn alignment(&self) -> Option<STACKED_TEXT_ALIGN> {
13041    // Safety:
13042    // Created from valid Table for this object
13043    // which contains a valid value in this slot
13044    unsafe { self._tab.get::<STACKED_TEXT_ALIGN>(StackFormatProperties::VT_ALIGNMENT, None)}
13045  }
13046}
13047
13048impl flatbuffers::Verifiable for StackFormatProperties<'_> {
13049  #[inline]
13050  fn run_verifier(
13051    v: &mut flatbuffers::Verifier, pos: usize
13052  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13053    use self::flatbuffers::Verifiable;
13054    v.visit_table(pos)?
13055     .visit_field::<f64>("upper_scale", Self::VT_UPPER_SCALE, false)?
13056     .visit_field::<f64>("lower_scale", Self::VT_LOWER_SCALE, false)?
13057     .visit_field::<STACKED_TEXT_ALIGN>("alignment", Self::VT_ALIGNMENT, false)?
13058     .finish();
13059    Ok(())
13060  }
13061}
13062pub struct StackFormatPropertiesArgs {
13063    pub upper_scale: f64,
13064    pub lower_scale: f64,
13065    pub alignment: Option<STACKED_TEXT_ALIGN>,
13066}
13067impl<'a> Default for StackFormatPropertiesArgs {
13068  #[inline]
13069  fn default() -> Self {
13070    StackFormatPropertiesArgs {
13071      upper_scale: 0.0,
13072      lower_scale: 0.0,
13073      alignment: None,
13074    }
13075  }
13076}
13077
13078pub struct StackFormatPropertiesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13079  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13080  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13081}
13082impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StackFormatPropertiesBuilder<'a, 'b, A> {
13083  #[inline]
13084  pub fn add_upper_scale(&mut self, upper_scale: f64) {
13085    self.fbb_.push_slot::<f64>(StackFormatProperties::VT_UPPER_SCALE, upper_scale, 0.0);
13086  }
13087  #[inline]
13088  pub fn add_lower_scale(&mut self, lower_scale: f64) {
13089    self.fbb_.push_slot::<f64>(StackFormatProperties::VT_LOWER_SCALE, lower_scale, 0.0);
13090  }
13091  #[inline]
13092  pub fn add_alignment(&mut self, alignment: STACKED_TEXT_ALIGN) {
13093    self.fbb_.push_slot_always::<STACKED_TEXT_ALIGN>(StackFormatProperties::VT_ALIGNMENT, alignment);
13094  }
13095  #[inline]
13096  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StackFormatPropertiesBuilder<'a, 'b, A> {
13097    let start = _fbb.start_table();
13098    StackFormatPropertiesBuilder {
13099      fbb_: _fbb,
13100      start_: start,
13101    }
13102  }
13103  #[inline]
13104  pub fn finish(self) -> flatbuffers::WIPOffset<StackFormatProperties<'a>> {
13105    let o = self.fbb_.end_table(self.start_);
13106    flatbuffers::WIPOffset::new(o.value())
13107  }
13108}
13109
13110impl core::fmt::Debug for StackFormatProperties<'_> {
13111  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13112    let mut ds = f.debug_struct("StackFormatProperties");
13113      ds.field("upper_scale", &self.upper_scale());
13114      ds.field("lower_scale", &self.lower_scale());
13115      ds.field("alignment", &self.alignment());
13116      ds.finish()
13117  }
13118}
13119pub enum StackFormatOffset {}
13120#[derive(Copy, Clone, PartialEq)]
13121
13122pub struct StackFormat<'a> {
13123  pub _tab: flatbuffers::Table<'a>,
13124}
13125
13126impl<'a> flatbuffers::Follow<'a> for StackFormat<'a> {
13127  type Inner = StackFormat<'a>;
13128  #[inline]
13129  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13130    Self { _tab: flatbuffers::Table::new(buf, loc) }
13131  }
13132}
13133
13134impl<'a> StackFormat<'a> {
13135  pub const VT_AUTO_STACK: flatbuffers::VOffsetT = 4;
13136  pub const VT_STACK_CHARS: flatbuffers::VOffsetT = 6;
13137  pub const VT_PROPERTIES: flatbuffers::VOffsetT = 8;
13138
13139  #[inline]
13140  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13141    StackFormat { _tab: table }
13142  }
13143  #[allow(unused_mut)]
13144  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13145    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13146    args: &'args StackFormatArgs<'args>
13147  ) -> flatbuffers::WIPOffset<StackFormat<'bldr>> {
13148    let mut builder = StackFormatBuilder::new(_fbb);
13149    if let Some(x) = args.properties { builder.add_properties(x); }
13150    if let Some(x) = args.stack_chars { builder.add_stack_chars(x); }
13151    builder.add_auto_stack(args.auto_stack);
13152    builder.finish()
13153  }
13154
13155
13156  #[inline]
13157  pub fn auto_stack(&self) -> bool {
13158    // Safety:
13159    // Created from valid Table for this object
13160    // which contains a valid value in this slot
13161    unsafe { self._tab.get::<bool>(StackFormat::VT_AUTO_STACK, Some(false)).unwrap()}
13162  }
13163  #[inline]
13164  pub fn stack_chars(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
13165    // Safety:
13166    // Created from valid Table for this object
13167    // which contains a valid value in this slot
13168    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(StackFormat::VT_STACK_CHARS, None)}
13169  }
13170  #[inline]
13171  pub fn properties(&self) -> Option<StackFormatProperties<'a>> {
13172    // Safety:
13173    // Created from valid Table for this object
13174    // which contains a valid value in this slot
13175    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StackFormatProperties>>(StackFormat::VT_PROPERTIES, None)}
13176  }
13177}
13178
13179impl flatbuffers::Verifiable for StackFormat<'_> {
13180  #[inline]
13181  fn run_verifier(
13182    v: &mut flatbuffers::Verifier, pos: usize
13183  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13184    use self::flatbuffers::Verifiable;
13185    v.visit_table(pos)?
13186     .visit_field::<bool>("auto_stack", Self::VT_AUTO_STACK, false)?
13187     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("stack_chars", Self::VT_STACK_CHARS, false)?
13188     .visit_field::<flatbuffers::ForwardsUOffset<StackFormatProperties>>("properties", Self::VT_PROPERTIES, false)?
13189     .finish();
13190    Ok(())
13191  }
13192}
13193pub struct StackFormatArgs<'a> {
13194    pub auto_stack: bool,
13195    pub stack_chars: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
13196    pub properties: Option<flatbuffers::WIPOffset<StackFormatProperties<'a>>>,
13197}
13198impl<'a> Default for StackFormatArgs<'a> {
13199  #[inline]
13200  fn default() -> Self {
13201    StackFormatArgs {
13202      auto_stack: false,
13203      stack_chars: None,
13204      properties: None,
13205    }
13206  }
13207}
13208
13209pub struct StackFormatBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13210  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13211  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13212}
13213impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StackFormatBuilder<'a, 'b, A> {
13214  #[inline]
13215  pub fn add_auto_stack(&mut self, auto_stack: bool) {
13216    self.fbb_.push_slot::<bool>(StackFormat::VT_AUTO_STACK, auto_stack, false);
13217  }
13218  #[inline]
13219  pub fn add_stack_chars(&mut self, stack_chars: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
13220    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StackFormat::VT_STACK_CHARS, stack_chars);
13221  }
13222  #[inline]
13223  pub fn add_properties(&mut self, properties: flatbuffers::WIPOffset<StackFormatProperties<'b >>) {
13224    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StackFormatProperties>>(StackFormat::VT_PROPERTIES, properties);
13225  }
13226  #[inline]
13227  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StackFormatBuilder<'a, 'b, A> {
13228    let start = _fbb.start_table();
13229    StackFormatBuilder {
13230      fbb_: _fbb,
13231      start_: start,
13232    }
13233  }
13234  #[inline]
13235  pub fn finish(self) -> flatbuffers::WIPOffset<StackFormat<'a>> {
13236    let o = self.fbb_.end_table(self.start_);
13237    flatbuffers::WIPOffset::new(o.value())
13238  }
13239}
13240
13241impl core::fmt::Debug for StackFormat<'_> {
13242  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13243    let mut ds = f.debug_struct("StackFormat");
13244      ds.field("auto_stack", &self.auto_stack());
13245      ds.field("stack_chars", &self.stack_chars());
13246      ds.field("properties", &self.properties());
13247      ds.finish()
13248  }
13249}
13250pub enum DucDocStyleOffset {}
13251#[derive(Copy, Clone, PartialEq)]
13252
13253pub struct DucDocStyle<'a> {
13254  pub _tab: flatbuffers::Table<'a>,
13255}
13256
13257impl<'a> flatbuffers::Follow<'a> for DucDocStyle<'a> {
13258  type Inner = DucDocStyle<'a>;
13259  #[inline]
13260  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13261    Self { _tab: flatbuffers::Table::new(buf, loc) }
13262  }
13263}
13264
13265impl<'a> DucDocStyle<'a> {
13266  pub const VT_TEXT_STYLE: flatbuffers::VOffsetT = 4;
13267  pub const VT_PARAGRAPH: flatbuffers::VOffsetT = 6;
13268  pub const VT_STACK_FORMAT: flatbuffers::VOffsetT = 8;
13269
13270  #[inline]
13271  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13272    DucDocStyle { _tab: table }
13273  }
13274  #[allow(unused_mut)]
13275  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13276    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13277    args: &'args DucDocStyleArgs<'args>
13278  ) -> flatbuffers::WIPOffset<DucDocStyle<'bldr>> {
13279    let mut builder = DucDocStyleBuilder::new(_fbb);
13280    if let Some(x) = args.stack_format { builder.add_stack_format(x); }
13281    if let Some(x) = args.paragraph { builder.add_paragraph(x); }
13282    if let Some(x) = args.text_style { builder.add_text_style(x); }
13283    builder.finish()
13284  }
13285
13286
13287  #[inline]
13288  pub fn text_style(&self) -> Option<DucTextStyle<'a>> {
13289    // Safety:
13290    // Created from valid Table for this object
13291    // which contains a valid value in this slot
13292    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucDocStyle::VT_TEXT_STYLE, None)}
13293  }
13294  #[inline]
13295  pub fn paragraph(&self) -> Option<ParagraphFormatting<'a>> {
13296    // Safety:
13297    // Created from valid Table for this object
13298    // which contains a valid value in this slot
13299    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ParagraphFormatting>>(DucDocStyle::VT_PARAGRAPH, None)}
13300  }
13301  #[inline]
13302  pub fn stack_format(&self) -> Option<StackFormat<'a>> {
13303    // Safety:
13304    // Created from valid Table for this object
13305    // which contains a valid value in this slot
13306    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StackFormat>>(DucDocStyle::VT_STACK_FORMAT, None)}
13307  }
13308}
13309
13310impl flatbuffers::Verifiable for DucDocStyle<'_> {
13311  #[inline]
13312  fn run_verifier(
13313    v: &mut flatbuffers::Verifier, pos: usize
13314  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13315    use self::flatbuffers::Verifiable;
13316    v.visit_table(pos)?
13317     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("text_style", Self::VT_TEXT_STYLE, false)?
13318     .visit_field::<flatbuffers::ForwardsUOffset<ParagraphFormatting>>("paragraph", Self::VT_PARAGRAPH, false)?
13319     .visit_field::<flatbuffers::ForwardsUOffset<StackFormat>>("stack_format", Self::VT_STACK_FORMAT, false)?
13320     .finish();
13321    Ok(())
13322  }
13323}
13324pub struct DucDocStyleArgs<'a> {
13325    pub text_style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
13326    pub paragraph: Option<flatbuffers::WIPOffset<ParagraphFormatting<'a>>>,
13327    pub stack_format: Option<flatbuffers::WIPOffset<StackFormat<'a>>>,
13328}
13329impl<'a> Default for DucDocStyleArgs<'a> {
13330  #[inline]
13331  fn default() -> Self {
13332    DucDocStyleArgs {
13333      text_style: None,
13334      paragraph: None,
13335      stack_format: None,
13336    }
13337  }
13338}
13339
13340pub struct DucDocStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13341  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13342  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13343}
13344impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucDocStyleBuilder<'a, 'b, A> {
13345  #[inline]
13346  pub fn add_text_style(&mut self, text_style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
13347    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucDocStyle::VT_TEXT_STYLE, text_style);
13348  }
13349  #[inline]
13350  pub fn add_paragraph(&mut self, paragraph: flatbuffers::WIPOffset<ParagraphFormatting<'b >>) {
13351    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ParagraphFormatting>>(DucDocStyle::VT_PARAGRAPH, paragraph);
13352  }
13353  #[inline]
13354  pub fn add_stack_format(&mut self, stack_format: flatbuffers::WIPOffset<StackFormat<'b >>) {
13355    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StackFormat>>(DucDocStyle::VT_STACK_FORMAT, stack_format);
13356  }
13357  #[inline]
13358  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucDocStyleBuilder<'a, 'b, A> {
13359    let start = _fbb.start_table();
13360    DucDocStyleBuilder {
13361      fbb_: _fbb,
13362      start_: start,
13363    }
13364  }
13365  #[inline]
13366  pub fn finish(self) -> flatbuffers::WIPOffset<DucDocStyle<'a>> {
13367    let o = self.fbb_.end_table(self.start_);
13368    flatbuffers::WIPOffset::new(o.value())
13369  }
13370}
13371
13372impl core::fmt::Debug for DucDocStyle<'_> {
13373  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13374    let mut ds = f.debug_struct("DucDocStyle");
13375      ds.field("text_style", &self.text_style());
13376      ds.field("paragraph", &self.paragraph());
13377      ds.field("stack_format", &self.stack_format());
13378      ds.finish()
13379  }
13380}
13381pub enum DucViewportStyleOffset {}
13382#[derive(Copy, Clone, PartialEq)]
13383
13384pub struct DucViewportStyle<'a> {
13385  pub _tab: flatbuffers::Table<'a>,
13386}
13387
13388impl<'a> flatbuffers::Follow<'a> for DucViewportStyle<'a> {
13389  type Inner = DucViewportStyle<'a>;
13390  #[inline]
13391  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13392    Self { _tab: flatbuffers::Table::new(buf, loc) }
13393  }
13394}
13395
13396impl<'a> DucViewportStyle<'a> {
13397  pub const VT_SCALE_INDICATOR_VISIBLE: flatbuffers::VOffsetT = 6;
13398
13399  #[inline]
13400  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13401    DucViewportStyle { _tab: table }
13402  }
13403  #[allow(unused_mut)]
13404  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13405    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13406    args: &'args DucViewportStyleArgs
13407  ) -> flatbuffers::WIPOffset<DucViewportStyle<'bldr>> {
13408    let mut builder = DucViewportStyleBuilder::new(_fbb);
13409    builder.add_scale_indicator_visible(args.scale_indicator_visible);
13410    builder.finish()
13411  }
13412
13413
13414  #[inline]
13415  pub fn scale_indicator_visible(&self) -> bool {
13416    // Safety:
13417    // Created from valid Table for this object
13418    // which contains a valid value in this slot
13419    unsafe { self._tab.get::<bool>(DucViewportStyle::VT_SCALE_INDICATOR_VISIBLE, Some(false)).unwrap()}
13420  }
13421}
13422
13423impl flatbuffers::Verifiable for DucViewportStyle<'_> {
13424  #[inline]
13425  fn run_verifier(
13426    v: &mut flatbuffers::Verifier, pos: usize
13427  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13428    use self::flatbuffers::Verifiable;
13429    v.visit_table(pos)?
13430     .visit_field::<bool>("scale_indicator_visible", Self::VT_SCALE_INDICATOR_VISIBLE, false)?
13431     .finish();
13432    Ok(())
13433  }
13434}
13435pub struct DucViewportStyleArgs {
13436    pub scale_indicator_visible: bool,
13437}
13438impl<'a> Default for DucViewportStyleArgs {
13439  #[inline]
13440  fn default() -> Self {
13441    DucViewportStyleArgs {
13442      scale_indicator_visible: false,
13443    }
13444  }
13445}
13446
13447pub struct DucViewportStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13448  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13449  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13450}
13451impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucViewportStyleBuilder<'a, 'b, A> {
13452  #[inline]
13453  pub fn add_scale_indicator_visible(&mut self, scale_indicator_visible: bool) {
13454    self.fbb_.push_slot::<bool>(DucViewportStyle::VT_SCALE_INDICATOR_VISIBLE, scale_indicator_visible, false);
13455  }
13456  #[inline]
13457  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucViewportStyleBuilder<'a, 'b, A> {
13458    let start = _fbb.start_table();
13459    DucViewportStyleBuilder {
13460      fbb_: _fbb,
13461      start_: start,
13462    }
13463  }
13464  #[inline]
13465  pub fn finish(self) -> flatbuffers::WIPOffset<DucViewportStyle<'a>> {
13466    let o = self.fbb_.end_table(self.start_);
13467    flatbuffers::WIPOffset::new(o.value())
13468  }
13469}
13470
13471impl core::fmt::Debug for DucViewportStyle<'_> {
13472  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13473    let mut ds = f.debug_struct("DucViewportStyle");
13474      ds.field("scale_indicator_visible", &self.scale_indicator_visible());
13475      ds.finish()
13476  }
13477}
13478pub enum DucPlotStyleOffset {}
13479#[derive(Copy, Clone, PartialEq)]
13480
13481pub struct DucPlotStyle<'a> {
13482  pub _tab: flatbuffers::Table<'a>,
13483}
13484
13485impl<'a> flatbuffers::Follow<'a> for DucPlotStyle<'a> {
13486  type Inner = DucPlotStyle<'a>;
13487  #[inline]
13488  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13489    Self { _tab: flatbuffers::Table::new(buf, loc) }
13490  }
13491}
13492
13493impl<'a> DucPlotStyle<'a> {
13494
13495  #[inline]
13496  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13497    DucPlotStyle { _tab: table }
13498  }
13499  #[allow(unused_mut)]
13500  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13501    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13502    args: &'args DucPlotStyleArgs
13503  ) -> flatbuffers::WIPOffset<DucPlotStyle<'bldr>> {
13504    let mut builder = DucPlotStyleBuilder::new(_fbb);
13505    builder.finish()
13506  }
13507
13508
13509}
13510
13511impl flatbuffers::Verifiable for DucPlotStyle<'_> {
13512  #[inline]
13513  fn run_verifier(
13514    v: &mut flatbuffers::Verifier, pos: usize
13515  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13516    use self::flatbuffers::Verifiable;
13517    v.visit_table(pos)?
13518     .finish();
13519    Ok(())
13520  }
13521}
13522pub struct DucPlotStyleArgs {
13523}
13524impl<'a> Default for DucPlotStyleArgs {
13525  #[inline]
13526  fn default() -> Self {
13527    DucPlotStyleArgs {
13528    }
13529  }
13530}
13531
13532pub struct DucPlotStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13533  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13534  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13535}
13536impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPlotStyleBuilder<'a, 'b, A> {
13537  #[inline]
13538  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPlotStyleBuilder<'a, 'b, A> {
13539    let start = _fbb.start_table();
13540    DucPlotStyleBuilder {
13541      fbb_: _fbb,
13542      start_: start,
13543    }
13544  }
13545  #[inline]
13546  pub fn finish(self) -> flatbuffers::WIPOffset<DucPlotStyle<'a>> {
13547    let o = self.fbb_.end_table(self.start_);
13548    flatbuffers::WIPOffset::new(o.value())
13549  }
13550}
13551
13552impl core::fmt::Debug for DucPlotStyle<'_> {
13553  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13554    let mut ds = f.debug_struct("DucPlotStyle");
13555      ds.finish()
13556  }
13557}
13558pub enum DucXRayStyleOffset {}
13559#[derive(Copy, Clone, PartialEq)]
13560
13561pub struct DucXRayStyle<'a> {
13562  pub _tab: flatbuffers::Table<'a>,
13563}
13564
13565impl<'a> flatbuffers::Follow<'a> for DucXRayStyle<'a> {
13566  type Inner = DucXRayStyle<'a>;
13567  #[inline]
13568  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13569    Self { _tab: flatbuffers::Table::new(buf, loc) }
13570  }
13571}
13572
13573impl<'a> DucXRayStyle<'a> {
13574  pub const VT_COLOR: flatbuffers::VOffsetT = 6;
13575
13576  #[inline]
13577  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13578    DucXRayStyle { _tab: table }
13579  }
13580  #[allow(unused_mut)]
13581  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13582    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13583    args: &'args DucXRayStyleArgs<'args>
13584  ) -> flatbuffers::WIPOffset<DucXRayStyle<'bldr>> {
13585    let mut builder = DucXRayStyleBuilder::new(_fbb);
13586    if let Some(x) = args.color { builder.add_color(x); }
13587    builder.finish()
13588  }
13589
13590
13591  #[inline]
13592  pub fn color(&self) -> Option<&'a str> {
13593    // Safety:
13594    // Created from valid Table for this object
13595    // which contains a valid value in this slot
13596    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucXRayStyle::VT_COLOR, None)}
13597  }
13598}
13599
13600impl flatbuffers::Verifiable for DucXRayStyle<'_> {
13601  #[inline]
13602  fn run_verifier(
13603    v: &mut flatbuffers::Verifier, pos: usize
13604  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13605    use self::flatbuffers::Verifiable;
13606    v.visit_table(pos)?
13607     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("color", Self::VT_COLOR, false)?
13608     .finish();
13609    Ok(())
13610  }
13611}
13612pub struct DucXRayStyleArgs<'a> {
13613    pub color: Option<flatbuffers::WIPOffset<&'a str>>,
13614}
13615impl<'a> Default for DucXRayStyleArgs<'a> {
13616  #[inline]
13617  fn default() -> Self {
13618    DucXRayStyleArgs {
13619      color: None,
13620    }
13621  }
13622}
13623
13624pub struct DucXRayStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13625  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13626  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13627}
13628impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucXRayStyleBuilder<'a, 'b, A> {
13629  #[inline]
13630  pub fn add_color(&mut self, color: flatbuffers::WIPOffset<&'b  str>) {
13631    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucXRayStyle::VT_COLOR, color);
13632  }
13633  #[inline]
13634  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucXRayStyleBuilder<'a, 'b, A> {
13635    let start = _fbb.start_table();
13636    DucXRayStyleBuilder {
13637      fbb_: _fbb,
13638      start_: start,
13639    }
13640  }
13641  #[inline]
13642  pub fn finish(self) -> flatbuffers::WIPOffset<DucXRayStyle<'a>> {
13643    let o = self.fbb_.end_table(self.start_);
13644    flatbuffers::WIPOffset::new(o.value())
13645  }
13646}
13647
13648impl core::fmt::Debug for DucXRayStyle<'_> {
13649  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13650    let mut ds = f.debug_struct("DucXRayStyle");
13651      ds.field("color", &self.color());
13652      ds.finish()
13653  }
13654}
13655pub enum DucRectangleElementOffset {}
13656#[derive(Copy, Clone, PartialEq)]
13657
13658pub struct DucRectangleElement<'a> {
13659  pub _tab: flatbuffers::Table<'a>,
13660}
13661
13662impl<'a> flatbuffers::Follow<'a> for DucRectangleElement<'a> {
13663  type Inner = DucRectangleElement<'a>;
13664  #[inline]
13665  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13666    Self { _tab: flatbuffers::Table::new(buf, loc) }
13667  }
13668}
13669
13670impl<'a> DucRectangleElement<'a> {
13671  pub const VT_BASE: flatbuffers::VOffsetT = 4;
13672
13673  #[inline]
13674  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13675    DucRectangleElement { _tab: table }
13676  }
13677  #[allow(unused_mut)]
13678  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13679    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13680    args: &'args DucRectangleElementArgs<'args>
13681  ) -> flatbuffers::WIPOffset<DucRectangleElement<'bldr>> {
13682    let mut builder = DucRectangleElementBuilder::new(_fbb);
13683    if let Some(x) = args.base { builder.add_base(x); }
13684    builder.finish()
13685  }
13686
13687
13688  #[inline]
13689  pub fn base(&self) -> Option<_DucElementBase<'a>> {
13690    // Safety:
13691    // Created from valid Table for this object
13692    // which contains a valid value in this slot
13693    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucRectangleElement::VT_BASE, None)}
13694  }
13695}
13696
13697impl flatbuffers::Verifiable for DucRectangleElement<'_> {
13698  #[inline]
13699  fn run_verifier(
13700    v: &mut flatbuffers::Verifier, pos: usize
13701  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13702    use self::flatbuffers::Verifiable;
13703    v.visit_table(pos)?
13704     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
13705     .finish();
13706    Ok(())
13707  }
13708}
13709pub struct DucRectangleElementArgs<'a> {
13710    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
13711}
13712impl<'a> Default for DucRectangleElementArgs<'a> {
13713  #[inline]
13714  fn default() -> Self {
13715    DucRectangleElementArgs {
13716      base: None,
13717    }
13718  }
13719}
13720
13721pub struct DucRectangleElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13722  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13723  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13724}
13725impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucRectangleElementBuilder<'a, 'b, A> {
13726  #[inline]
13727  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
13728    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucRectangleElement::VT_BASE, base);
13729  }
13730  #[inline]
13731  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucRectangleElementBuilder<'a, 'b, A> {
13732    let start = _fbb.start_table();
13733    DucRectangleElementBuilder {
13734      fbb_: _fbb,
13735      start_: start,
13736    }
13737  }
13738  #[inline]
13739  pub fn finish(self) -> flatbuffers::WIPOffset<DucRectangleElement<'a>> {
13740    let o = self.fbb_.end_table(self.start_);
13741    flatbuffers::WIPOffset::new(o.value())
13742  }
13743}
13744
13745impl core::fmt::Debug for DucRectangleElement<'_> {
13746  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13747    let mut ds = f.debug_struct("DucRectangleElement");
13748      ds.field("base", &self.base());
13749      ds.finish()
13750  }
13751}
13752pub enum DucPolygonElementOffset {}
13753#[derive(Copy, Clone, PartialEq)]
13754
13755pub struct DucPolygonElement<'a> {
13756  pub _tab: flatbuffers::Table<'a>,
13757}
13758
13759impl<'a> flatbuffers::Follow<'a> for DucPolygonElement<'a> {
13760  type Inner = DucPolygonElement<'a>;
13761  #[inline]
13762  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13763    Self { _tab: flatbuffers::Table::new(buf, loc) }
13764  }
13765}
13766
13767impl<'a> DucPolygonElement<'a> {
13768  pub const VT_BASE: flatbuffers::VOffsetT = 4;
13769  pub const VT_SIDES: flatbuffers::VOffsetT = 6;
13770
13771  #[inline]
13772  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13773    DucPolygonElement { _tab: table }
13774  }
13775  #[allow(unused_mut)]
13776  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13777    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13778    args: &'args DucPolygonElementArgs<'args>
13779  ) -> flatbuffers::WIPOffset<DucPolygonElement<'bldr>> {
13780    let mut builder = DucPolygonElementBuilder::new(_fbb);
13781    builder.add_sides(args.sides);
13782    if let Some(x) = args.base { builder.add_base(x); }
13783    builder.finish()
13784  }
13785
13786
13787  #[inline]
13788  pub fn base(&self) -> Option<_DucElementBase<'a>> {
13789    // Safety:
13790    // Created from valid Table for this object
13791    // which contains a valid value in this slot
13792    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucPolygonElement::VT_BASE, None)}
13793  }
13794  #[inline]
13795  pub fn sides(&self) -> i32 {
13796    // Safety:
13797    // Created from valid Table for this object
13798    // which contains a valid value in this slot
13799    unsafe { self._tab.get::<i32>(DucPolygonElement::VT_SIDES, Some(0)).unwrap()}
13800  }
13801}
13802
13803impl flatbuffers::Verifiable for DucPolygonElement<'_> {
13804  #[inline]
13805  fn run_verifier(
13806    v: &mut flatbuffers::Verifier, pos: usize
13807  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13808    use self::flatbuffers::Verifiable;
13809    v.visit_table(pos)?
13810     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
13811     .visit_field::<i32>("sides", Self::VT_SIDES, false)?
13812     .finish();
13813    Ok(())
13814  }
13815}
13816pub struct DucPolygonElementArgs<'a> {
13817    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
13818    pub sides: i32,
13819}
13820impl<'a> Default for DucPolygonElementArgs<'a> {
13821  #[inline]
13822  fn default() -> Self {
13823    DucPolygonElementArgs {
13824      base: None,
13825      sides: 0,
13826    }
13827  }
13828}
13829
13830pub struct DucPolygonElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13831  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13832  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13833}
13834impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPolygonElementBuilder<'a, 'b, A> {
13835  #[inline]
13836  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
13837    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucPolygonElement::VT_BASE, base);
13838  }
13839  #[inline]
13840  pub fn add_sides(&mut self, sides: i32) {
13841    self.fbb_.push_slot::<i32>(DucPolygonElement::VT_SIDES, sides, 0);
13842  }
13843  #[inline]
13844  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPolygonElementBuilder<'a, 'b, A> {
13845    let start = _fbb.start_table();
13846    DucPolygonElementBuilder {
13847      fbb_: _fbb,
13848      start_: start,
13849    }
13850  }
13851  #[inline]
13852  pub fn finish(self) -> flatbuffers::WIPOffset<DucPolygonElement<'a>> {
13853    let o = self.fbb_.end_table(self.start_);
13854    flatbuffers::WIPOffset::new(o.value())
13855  }
13856}
13857
13858impl core::fmt::Debug for DucPolygonElement<'_> {
13859  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13860    let mut ds = f.debug_struct("DucPolygonElement");
13861      ds.field("base", &self.base());
13862      ds.field("sides", &self.sides());
13863      ds.finish()
13864  }
13865}
13866pub enum DucEllipseElementOffset {}
13867#[derive(Copy, Clone, PartialEq)]
13868
13869pub struct DucEllipseElement<'a> {
13870  pub _tab: flatbuffers::Table<'a>,
13871}
13872
13873impl<'a> flatbuffers::Follow<'a> for DucEllipseElement<'a> {
13874  type Inner = DucEllipseElement<'a>;
13875  #[inline]
13876  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
13877    Self { _tab: flatbuffers::Table::new(buf, loc) }
13878  }
13879}
13880
13881impl<'a> DucEllipseElement<'a> {
13882  pub const VT_BASE: flatbuffers::VOffsetT = 4;
13883  pub const VT_RATIO: flatbuffers::VOffsetT = 6;
13884  pub const VT_START_ANGLE: flatbuffers::VOffsetT = 8;
13885  pub const VT_END_ANGLE: flatbuffers::VOffsetT = 10;
13886  pub const VT_SHOW_AUX_CROSSHAIR: flatbuffers::VOffsetT = 12;
13887
13888  #[inline]
13889  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
13890    DucEllipseElement { _tab: table }
13891  }
13892  #[allow(unused_mut)]
13893  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
13894    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
13895    args: &'args DucEllipseElementArgs<'args>
13896  ) -> flatbuffers::WIPOffset<DucEllipseElement<'bldr>> {
13897    let mut builder = DucEllipseElementBuilder::new(_fbb);
13898    builder.add_end_angle(args.end_angle);
13899    builder.add_start_angle(args.start_angle);
13900    builder.add_ratio(args.ratio);
13901    if let Some(x) = args.base { builder.add_base(x); }
13902    builder.add_show_aux_crosshair(args.show_aux_crosshair);
13903    builder.finish()
13904  }
13905
13906
13907  #[inline]
13908  pub fn base(&self) -> Option<_DucElementBase<'a>> {
13909    // Safety:
13910    // Created from valid Table for this object
13911    // which contains a valid value in this slot
13912    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucEllipseElement::VT_BASE, None)}
13913  }
13914  #[inline]
13915  pub fn ratio(&self) -> f32 {
13916    // Safety:
13917    // Created from valid Table for this object
13918    // which contains a valid value in this slot
13919    unsafe { self._tab.get::<f32>(DucEllipseElement::VT_RATIO, Some(0.0)).unwrap()}
13920  }
13921  #[inline]
13922  pub fn start_angle(&self) -> f64 {
13923    // Safety:
13924    // Created from valid Table for this object
13925    // which contains a valid value in this slot
13926    unsafe { self._tab.get::<f64>(DucEllipseElement::VT_START_ANGLE, Some(0.0)).unwrap()}
13927  }
13928  #[inline]
13929  pub fn end_angle(&self) -> f64 {
13930    // Safety:
13931    // Created from valid Table for this object
13932    // which contains a valid value in this slot
13933    unsafe { self._tab.get::<f64>(DucEllipseElement::VT_END_ANGLE, Some(0.0)).unwrap()}
13934  }
13935  #[inline]
13936  pub fn show_aux_crosshair(&self) -> bool {
13937    // Safety:
13938    // Created from valid Table for this object
13939    // which contains a valid value in this slot
13940    unsafe { self._tab.get::<bool>(DucEllipseElement::VT_SHOW_AUX_CROSSHAIR, Some(false)).unwrap()}
13941  }
13942}
13943
13944impl flatbuffers::Verifiable for DucEllipseElement<'_> {
13945  #[inline]
13946  fn run_verifier(
13947    v: &mut flatbuffers::Verifier, pos: usize
13948  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
13949    use self::flatbuffers::Verifiable;
13950    v.visit_table(pos)?
13951     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
13952     .visit_field::<f32>("ratio", Self::VT_RATIO, false)?
13953     .visit_field::<f64>("start_angle", Self::VT_START_ANGLE, false)?
13954     .visit_field::<f64>("end_angle", Self::VT_END_ANGLE, false)?
13955     .visit_field::<bool>("show_aux_crosshair", Self::VT_SHOW_AUX_CROSSHAIR, false)?
13956     .finish();
13957    Ok(())
13958  }
13959}
13960pub struct DucEllipseElementArgs<'a> {
13961    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
13962    pub ratio: f32,
13963    pub start_angle: f64,
13964    pub end_angle: f64,
13965    pub show_aux_crosshair: bool,
13966}
13967impl<'a> Default for DucEllipseElementArgs<'a> {
13968  #[inline]
13969  fn default() -> Self {
13970    DucEllipseElementArgs {
13971      base: None,
13972      ratio: 0.0,
13973      start_angle: 0.0,
13974      end_angle: 0.0,
13975      show_aux_crosshair: false,
13976    }
13977  }
13978}
13979
13980pub struct DucEllipseElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
13981  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
13982  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
13983}
13984impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucEllipseElementBuilder<'a, 'b, A> {
13985  #[inline]
13986  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
13987    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucEllipseElement::VT_BASE, base);
13988  }
13989  #[inline]
13990  pub fn add_ratio(&mut self, ratio: f32) {
13991    self.fbb_.push_slot::<f32>(DucEllipseElement::VT_RATIO, ratio, 0.0);
13992  }
13993  #[inline]
13994  pub fn add_start_angle(&mut self, start_angle: f64) {
13995    self.fbb_.push_slot::<f64>(DucEllipseElement::VT_START_ANGLE, start_angle, 0.0);
13996  }
13997  #[inline]
13998  pub fn add_end_angle(&mut self, end_angle: f64) {
13999    self.fbb_.push_slot::<f64>(DucEllipseElement::VT_END_ANGLE, end_angle, 0.0);
14000  }
14001  #[inline]
14002  pub fn add_show_aux_crosshair(&mut self, show_aux_crosshair: bool) {
14003    self.fbb_.push_slot::<bool>(DucEllipseElement::VT_SHOW_AUX_CROSSHAIR, show_aux_crosshair, false);
14004  }
14005  #[inline]
14006  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucEllipseElementBuilder<'a, 'b, A> {
14007    let start = _fbb.start_table();
14008    DucEllipseElementBuilder {
14009      fbb_: _fbb,
14010      start_: start,
14011    }
14012  }
14013  #[inline]
14014  pub fn finish(self) -> flatbuffers::WIPOffset<DucEllipseElement<'a>> {
14015    let o = self.fbb_.end_table(self.start_);
14016    flatbuffers::WIPOffset::new(o.value())
14017  }
14018}
14019
14020impl core::fmt::Debug for DucEllipseElement<'_> {
14021  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14022    let mut ds = f.debug_struct("DucEllipseElement");
14023      ds.field("base", &self.base());
14024      ds.field("ratio", &self.ratio());
14025      ds.field("start_angle", &self.start_angle());
14026      ds.field("end_angle", &self.end_angle());
14027      ds.field("show_aux_crosshair", &self.show_aux_crosshair());
14028      ds.finish()
14029  }
14030}
14031pub enum DucEmbeddableElementOffset {}
14032#[derive(Copy, Clone, PartialEq)]
14033
14034pub struct DucEmbeddableElement<'a> {
14035  pub _tab: flatbuffers::Table<'a>,
14036}
14037
14038impl<'a> flatbuffers::Follow<'a> for DucEmbeddableElement<'a> {
14039  type Inner = DucEmbeddableElement<'a>;
14040  #[inline]
14041  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14042    Self { _tab: flatbuffers::Table::new(buf, loc) }
14043  }
14044}
14045
14046impl<'a> DucEmbeddableElement<'a> {
14047  pub const VT_BASE: flatbuffers::VOffsetT = 4;
14048
14049  #[inline]
14050  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14051    DucEmbeddableElement { _tab: table }
14052  }
14053  #[allow(unused_mut)]
14054  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14055    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14056    args: &'args DucEmbeddableElementArgs<'args>
14057  ) -> flatbuffers::WIPOffset<DucEmbeddableElement<'bldr>> {
14058    let mut builder = DucEmbeddableElementBuilder::new(_fbb);
14059    if let Some(x) = args.base { builder.add_base(x); }
14060    builder.finish()
14061  }
14062
14063
14064  #[inline]
14065  pub fn base(&self) -> Option<_DucElementBase<'a>> {
14066    // Safety:
14067    // Created from valid Table for this object
14068    // which contains a valid value in this slot
14069    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucEmbeddableElement::VT_BASE, None)}
14070  }
14071}
14072
14073impl flatbuffers::Verifiable for DucEmbeddableElement<'_> {
14074  #[inline]
14075  fn run_verifier(
14076    v: &mut flatbuffers::Verifier, pos: usize
14077  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14078    use self::flatbuffers::Verifiable;
14079    v.visit_table(pos)?
14080     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
14081     .finish();
14082    Ok(())
14083  }
14084}
14085pub struct DucEmbeddableElementArgs<'a> {
14086    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
14087}
14088impl<'a> Default for DucEmbeddableElementArgs<'a> {
14089  #[inline]
14090  fn default() -> Self {
14091    DucEmbeddableElementArgs {
14092      base: None,
14093    }
14094  }
14095}
14096
14097pub struct DucEmbeddableElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14098  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14099  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14100}
14101impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucEmbeddableElementBuilder<'a, 'b, A> {
14102  #[inline]
14103  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
14104    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucEmbeddableElement::VT_BASE, base);
14105  }
14106  #[inline]
14107  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucEmbeddableElementBuilder<'a, 'b, A> {
14108    let start = _fbb.start_table();
14109    DucEmbeddableElementBuilder {
14110      fbb_: _fbb,
14111      start_: start,
14112    }
14113  }
14114  #[inline]
14115  pub fn finish(self) -> flatbuffers::WIPOffset<DucEmbeddableElement<'a>> {
14116    let o = self.fbb_.end_table(self.start_);
14117    flatbuffers::WIPOffset::new(o.value())
14118  }
14119}
14120
14121impl core::fmt::Debug for DucEmbeddableElement<'_> {
14122  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14123    let mut ds = f.debug_struct("DucEmbeddableElement");
14124      ds.field("base", &self.base());
14125      ds.finish()
14126  }
14127}
14128pub enum DocumentGridConfigOffset {}
14129#[derive(Copy, Clone, PartialEq)]
14130
14131pub struct DocumentGridConfig<'a> {
14132  pub _tab: flatbuffers::Table<'a>,
14133}
14134
14135impl<'a> flatbuffers::Follow<'a> for DocumentGridConfig<'a> {
14136  type Inner = DocumentGridConfig<'a>;
14137  #[inline]
14138  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14139    Self { _tab: flatbuffers::Table::new(buf, loc) }
14140  }
14141}
14142
14143impl<'a> DocumentGridConfig<'a> {
14144  pub const VT_COLUMNS: flatbuffers::VOffsetT = 4;
14145  pub const VT_GAP_X: flatbuffers::VOffsetT = 6;
14146  pub const VT_GAP_Y: flatbuffers::VOffsetT = 8;
14147  pub const VT_ALIGN_ITEMS: flatbuffers::VOffsetT = 10;
14148  pub const VT_FIRST_PAGE_ALONE: flatbuffers::VOffsetT = 12;
14149
14150  #[inline]
14151  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14152    DocumentGridConfig { _tab: table }
14153  }
14154  #[allow(unused_mut)]
14155  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14156    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14157    args: &'args DocumentGridConfigArgs
14158  ) -> flatbuffers::WIPOffset<DocumentGridConfig<'bldr>> {
14159    let mut builder = DocumentGridConfigBuilder::new(_fbb);
14160    builder.add_gap_y(args.gap_y);
14161    builder.add_gap_x(args.gap_x);
14162    builder.add_columns(args.columns);
14163    builder.add_first_page_alone(args.first_page_alone);
14164    if let Some(x) = args.align_items { builder.add_align_items(x); }
14165    builder.finish()
14166  }
14167
14168
14169  #[inline]
14170  pub fn columns(&self) -> i32 {
14171    // Safety:
14172    // Created from valid Table for this object
14173    // which contains a valid value in this slot
14174    unsafe { self._tab.get::<i32>(DocumentGridConfig::VT_COLUMNS, Some(0)).unwrap()}
14175  }
14176  #[inline]
14177  pub fn gap_x(&self) -> f64 {
14178    // Safety:
14179    // Created from valid Table for this object
14180    // which contains a valid value in this slot
14181    unsafe { self._tab.get::<f64>(DocumentGridConfig::VT_GAP_X, Some(0.0)).unwrap()}
14182  }
14183  #[inline]
14184  pub fn gap_y(&self) -> f64 {
14185    // Safety:
14186    // Created from valid Table for this object
14187    // which contains a valid value in this slot
14188    unsafe { self._tab.get::<f64>(DocumentGridConfig::VT_GAP_Y, Some(0.0)).unwrap()}
14189  }
14190  #[inline]
14191  pub fn align_items(&self) -> Option<DOCUMENT_GRID_ALIGN_ITEMS> {
14192    // Safety:
14193    // Created from valid Table for this object
14194    // which contains a valid value in this slot
14195    unsafe { self._tab.get::<DOCUMENT_GRID_ALIGN_ITEMS>(DocumentGridConfig::VT_ALIGN_ITEMS, None)}
14196  }
14197  #[inline]
14198  pub fn first_page_alone(&self) -> bool {
14199    // Safety:
14200    // Created from valid Table for this object
14201    // which contains a valid value in this slot
14202    unsafe { self._tab.get::<bool>(DocumentGridConfig::VT_FIRST_PAGE_ALONE, Some(false)).unwrap()}
14203  }
14204}
14205
14206impl flatbuffers::Verifiable for DocumentGridConfig<'_> {
14207  #[inline]
14208  fn run_verifier(
14209    v: &mut flatbuffers::Verifier, pos: usize
14210  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14211    use self::flatbuffers::Verifiable;
14212    v.visit_table(pos)?
14213     .visit_field::<i32>("columns", Self::VT_COLUMNS, false)?
14214     .visit_field::<f64>("gap_x", Self::VT_GAP_X, false)?
14215     .visit_field::<f64>("gap_y", Self::VT_GAP_Y, false)?
14216     .visit_field::<DOCUMENT_GRID_ALIGN_ITEMS>("align_items", Self::VT_ALIGN_ITEMS, false)?
14217     .visit_field::<bool>("first_page_alone", Self::VT_FIRST_PAGE_ALONE, false)?
14218     .finish();
14219    Ok(())
14220  }
14221}
14222pub struct DocumentGridConfigArgs {
14223    pub columns: i32,
14224    pub gap_x: f64,
14225    pub gap_y: f64,
14226    pub align_items: Option<DOCUMENT_GRID_ALIGN_ITEMS>,
14227    pub first_page_alone: bool,
14228}
14229impl<'a> Default for DocumentGridConfigArgs {
14230  #[inline]
14231  fn default() -> Self {
14232    DocumentGridConfigArgs {
14233      columns: 0,
14234      gap_x: 0.0,
14235      gap_y: 0.0,
14236      align_items: None,
14237      first_page_alone: false,
14238    }
14239  }
14240}
14241
14242pub struct DocumentGridConfigBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14243  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14244  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14245}
14246impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DocumentGridConfigBuilder<'a, 'b, A> {
14247  #[inline]
14248  pub fn add_columns(&mut self, columns: i32) {
14249    self.fbb_.push_slot::<i32>(DocumentGridConfig::VT_COLUMNS, columns, 0);
14250  }
14251  #[inline]
14252  pub fn add_gap_x(&mut self, gap_x: f64) {
14253    self.fbb_.push_slot::<f64>(DocumentGridConfig::VT_GAP_X, gap_x, 0.0);
14254  }
14255  #[inline]
14256  pub fn add_gap_y(&mut self, gap_y: f64) {
14257    self.fbb_.push_slot::<f64>(DocumentGridConfig::VT_GAP_Y, gap_y, 0.0);
14258  }
14259  #[inline]
14260  pub fn add_align_items(&mut self, align_items: DOCUMENT_GRID_ALIGN_ITEMS) {
14261    self.fbb_.push_slot_always::<DOCUMENT_GRID_ALIGN_ITEMS>(DocumentGridConfig::VT_ALIGN_ITEMS, align_items);
14262  }
14263  #[inline]
14264  pub fn add_first_page_alone(&mut self, first_page_alone: bool) {
14265    self.fbb_.push_slot::<bool>(DocumentGridConfig::VT_FIRST_PAGE_ALONE, first_page_alone, false);
14266  }
14267  #[inline]
14268  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DocumentGridConfigBuilder<'a, 'b, A> {
14269    let start = _fbb.start_table();
14270    DocumentGridConfigBuilder {
14271      fbb_: _fbb,
14272      start_: start,
14273    }
14274  }
14275  #[inline]
14276  pub fn finish(self) -> flatbuffers::WIPOffset<DocumentGridConfig<'a>> {
14277    let o = self.fbb_.end_table(self.start_);
14278    flatbuffers::WIPOffset::new(o.value())
14279  }
14280}
14281
14282impl core::fmt::Debug for DocumentGridConfig<'_> {
14283  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14284    let mut ds = f.debug_struct("DocumentGridConfig");
14285      ds.field("columns", &self.columns());
14286      ds.field("gap_x", &self.gap_x());
14287      ds.field("gap_y", &self.gap_y());
14288      ds.field("align_items", &self.align_items());
14289      ds.field("first_page_alone", &self.first_page_alone());
14290      ds.finish()
14291  }
14292}
14293pub enum DucPdfElementOffset {}
14294#[derive(Copy, Clone, PartialEq)]
14295
14296pub struct DucPdfElement<'a> {
14297  pub _tab: flatbuffers::Table<'a>,
14298}
14299
14300impl<'a> flatbuffers::Follow<'a> for DucPdfElement<'a> {
14301  type Inner = DucPdfElement<'a>;
14302  #[inline]
14303  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14304    Self { _tab: flatbuffers::Table::new(buf, loc) }
14305  }
14306}
14307
14308impl<'a> DucPdfElement<'a> {
14309  pub const VT_BASE: flatbuffers::VOffsetT = 4;
14310  pub const VT_FILE_ID: flatbuffers::VOffsetT = 6;
14311  pub const VT_GRID_CONFIG: flatbuffers::VOffsetT = 8;
14312
14313  #[inline]
14314  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14315    DucPdfElement { _tab: table }
14316  }
14317  #[allow(unused_mut)]
14318  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14319    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14320    args: &'args DucPdfElementArgs<'args>
14321  ) -> flatbuffers::WIPOffset<DucPdfElement<'bldr>> {
14322    let mut builder = DucPdfElementBuilder::new(_fbb);
14323    if let Some(x) = args.grid_config { builder.add_grid_config(x); }
14324    if let Some(x) = args.file_id { builder.add_file_id(x); }
14325    if let Some(x) = args.base { builder.add_base(x); }
14326    builder.finish()
14327  }
14328
14329
14330  #[inline]
14331  pub fn base(&self) -> Option<_DucElementBase<'a>> {
14332    // Safety:
14333    // Created from valid Table for this object
14334    // which contains a valid value in this slot
14335    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucPdfElement::VT_BASE, None)}
14336  }
14337  #[inline]
14338  pub fn file_id(&self) -> Option<&'a str> {
14339    // Safety:
14340    // Created from valid Table for this object
14341    // which contains a valid value in this slot
14342    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucPdfElement::VT_FILE_ID, None)}
14343  }
14344  #[inline]
14345  pub fn grid_config(&self) -> Option<DocumentGridConfig<'a>> {
14346    // Safety:
14347    // Created from valid Table for this object
14348    // which contains a valid value in this slot
14349    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DocumentGridConfig>>(DucPdfElement::VT_GRID_CONFIG, None)}
14350  }
14351}
14352
14353impl flatbuffers::Verifiable for DucPdfElement<'_> {
14354  #[inline]
14355  fn run_verifier(
14356    v: &mut flatbuffers::Verifier, pos: usize
14357  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14358    use self::flatbuffers::Verifiable;
14359    v.visit_table(pos)?
14360     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
14361     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("file_id", Self::VT_FILE_ID, false)?
14362     .visit_field::<flatbuffers::ForwardsUOffset<DocumentGridConfig>>("grid_config", Self::VT_GRID_CONFIG, false)?
14363     .finish();
14364    Ok(())
14365  }
14366}
14367pub struct DucPdfElementArgs<'a> {
14368    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
14369    pub file_id: Option<flatbuffers::WIPOffset<&'a str>>,
14370    pub grid_config: Option<flatbuffers::WIPOffset<DocumentGridConfig<'a>>>,
14371}
14372impl<'a> Default for DucPdfElementArgs<'a> {
14373  #[inline]
14374  fn default() -> Self {
14375    DucPdfElementArgs {
14376      base: None,
14377      file_id: None,
14378      grid_config: None,
14379    }
14380  }
14381}
14382
14383pub struct DucPdfElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14384  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14385  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14386}
14387impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPdfElementBuilder<'a, 'b, A> {
14388  #[inline]
14389  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
14390    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucPdfElement::VT_BASE, base);
14391  }
14392  #[inline]
14393  pub fn add_file_id(&mut self, file_id: flatbuffers::WIPOffset<&'b  str>) {
14394    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucPdfElement::VT_FILE_ID, file_id);
14395  }
14396  #[inline]
14397  pub fn add_grid_config(&mut self, grid_config: flatbuffers::WIPOffset<DocumentGridConfig<'b >>) {
14398    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DocumentGridConfig>>(DucPdfElement::VT_GRID_CONFIG, grid_config);
14399  }
14400  #[inline]
14401  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPdfElementBuilder<'a, 'b, A> {
14402    let start = _fbb.start_table();
14403    DucPdfElementBuilder {
14404      fbb_: _fbb,
14405      start_: start,
14406    }
14407  }
14408  #[inline]
14409  pub fn finish(self) -> flatbuffers::WIPOffset<DucPdfElement<'a>> {
14410    let o = self.fbb_.end_table(self.start_);
14411    flatbuffers::WIPOffset::new(o.value())
14412  }
14413}
14414
14415impl core::fmt::Debug for DucPdfElement<'_> {
14416  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14417    let mut ds = f.debug_struct("DucPdfElement");
14418      ds.field("base", &self.base());
14419      ds.field("file_id", &self.file_id());
14420      ds.field("grid_config", &self.grid_config());
14421      ds.finish()
14422  }
14423}
14424pub enum DucMermaidElementOffset {}
14425#[derive(Copy, Clone, PartialEq)]
14426
14427pub struct DucMermaidElement<'a> {
14428  pub _tab: flatbuffers::Table<'a>,
14429}
14430
14431impl<'a> flatbuffers::Follow<'a> for DucMermaidElement<'a> {
14432  type Inner = DucMermaidElement<'a>;
14433  #[inline]
14434  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14435    Self { _tab: flatbuffers::Table::new(buf, loc) }
14436  }
14437}
14438
14439impl<'a> DucMermaidElement<'a> {
14440  pub const VT_BASE: flatbuffers::VOffsetT = 4;
14441  pub const VT_SOURCE: flatbuffers::VOffsetT = 6;
14442  pub const VT_THEME: flatbuffers::VOffsetT = 8;
14443  pub const VT_SVG_PATH: flatbuffers::VOffsetT = 10;
14444
14445  #[inline]
14446  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14447    DucMermaidElement { _tab: table }
14448  }
14449  #[allow(unused_mut)]
14450  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14451    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14452    args: &'args DucMermaidElementArgs<'args>
14453  ) -> flatbuffers::WIPOffset<DucMermaidElement<'bldr>> {
14454    let mut builder = DucMermaidElementBuilder::new(_fbb);
14455    if let Some(x) = args.svg_path { builder.add_svg_path(x); }
14456    if let Some(x) = args.theme { builder.add_theme(x); }
14457    if let Some(x) = args.source { builder.add_source(x); }
14458    if let Some(x) = args.base { builder.add_base(x); }
14459    builder.finish()
14460  }
14461
14462
14463  #[inline]
14464  pub fn base(&self) -> Option<_DucElementBase<'a>> {
14465    // Safety:
14466    // Created from valid Table for this object
14467    // which contains a valid value in this slot
14468    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucMermaidElement::VT_BASE, None)}
14469  }
14470  #[inline]
14471  pub fn source(&self) -> Option<&'a str> {
14472    // Safety:
14473    // Created from valid Table for this object
14474    // which contains a valid value in this slot
14475    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucMermaidElement::VT_SOURCE, None)}
14476  }
14477  #[inline]
14478  pub fn theme(&self) -> Option<&'a str> {
14479    // Safety:
14480    // Created from valid Table for this object
14481    // which contains a valid value in this slot
14482    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucMermaidElement::VT_THEME, None)}
14483  }
14484  #[inline]
14485  pub fn svg_path(&self) -> Option<&'a str> {
14486    // Safety:
14487    // Created from valid Table for this object
14488    // which contains a valid value in this slot
14489    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucMermaidElement::VT_SVG_PATH, None)}
14490  }
14491}
14492
14493impl flatbuffers::Verifiable for DucMermaidElement<'_> {
14494  #[inline]
14495  fn run_verifier(
14496    v: &mut flatbuffers::Verifier, pos: usize
14497  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14498    use self::flatbuffers::Verifiable;
14499    v.visit_table(pos)?
14500     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
14501     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("source", Self::VT_SOURCE, false)?
14502     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("theme", Self::VT_THEME, false)?
14503     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("svg_path", Self::VT_SVG_PATH, false)?
14504     .finish();
14505    Ok(())
14506  }
14507}
14508pub struct DucMermaidElementArgs<'a> {
14509    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
14510    pub source: Option<flatbuffers::WIPOffset<&'a str>>,
14511    pub theme: Option<flatbuffers::WIPOffset<&'a str>>,
14512    pub svg_path: Option<flatbuffers::WIPOffset<&'a str>>,
14513}
14514impl<'a> Default for DucMermaidElementArgs<'a> {
14515  #[inline]
14516  fn default() -> Self {
14517    DucMermaidElementArgs {
14518      base: None,
14519      source: None,
14520      theme: None,
14521      svg_path: None,
14522    }
14523  }
14524}
14525
14526pub struct DucMermaidElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14527  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14528  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14529}
14530impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucMermaidElementBuilder<'a, 'b, A> {
14531  #[inline]
14532  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
14533    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucMermaidElement::VT_BASE, base);
14534  }
14535  #[inline]
14536  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<&'b  str>) {
14537    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucMermaidElement::VT_SOURCE, source);
14538  }
14539  #[inline]
14540  pub fn add_theme(&mut self, theme: flatbuffers::WIPOffset<&'b  str>) {
14541    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucMermaidElement::VT_THEME, theme);
14542  }
14543  #[inline]
14544  pub fn add_svg_path(&mut self, svg_path: flatbuffers::WIPOffset<&'b  str>) {
14545    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucMermaidElement::VT_SVG_PATH, svg_path);
14546  }
14547  #[inline]
14548  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucMermaidElementBuilder<'a, 'b, A> {
14549    let start = _fbb.start_table();
14550    DucMermaidElementBuilder {
14551      fbb_: _fbb,
14552      start_: start,
14553    }
14554  }
14555  #[inline]
14556  pub fn finish(self) -> flatbuffers::WIPOffset<DucMermaidElement<'a>> {
14557    let o = self.fbb_.end_table(self.start_);
14558    flatbuffers::WIPOffset::new(o.value())
14559  }
14560}
14561
14562impl core::fmt::Debug for DucMermaidElement<'_> {
14563  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14564    let mut ds = f.debug_struct("DucMermaidElement");
14565      ds.field("base", &self.base());
14566      ds.field("source", &self.source());
14567      ds.field("theme", &self.theme());
14568      ds.field("svg_path", &self.svg_path());
14569      ds.finish()
14570  }
14571}
14572pub enum DucTableColumnOffset {}
14573#[derive(Copy, Clone, PartialEq)]
14574
14575pub struct DucTableColumn<'a> {
14576  pub _tab: flatbuffers::Table<'a>,
14577}
14578
14579impl<'a> flatbuffers::Follow<'a> for DucTableColumn<'a> {
14580  type Inner = DucTableColumn<'a>;
14581  #[inline]
14582  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14583    Self { _tab: flatbuffers::Table::new(buf, loc) }
14584  }
14585}
14586
14587impl<'a> DucTableColumn<'a> {
14588  pub const VT_ID: flatbuffers::VOffsetT = 4;
14589  pub const VT_WIDTH: flatbuffers::VOffsetT = 6;
14590  pub const VT_STYLE_OVERRIDES: flatbuffers::VOffsetT = 8;
14591
14592  #[inline]
14593  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14594    DucTableColumn { _tab: table }
14595  }
14596  #[allow(unused_mut)]
14597  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14598    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14599    args: &'args DucTableColumnArgs<'args>
14600  ) -> flatbuffers::WIPOffset<DucTableColumn<'bldr>> {
14601    let mut builder = DucTableColumnBuilder::new(_fbb);
14602    builder.add_width(args.width);
14603    if let Some(x) = args.style_overrides { builder.add_style_overrides(x); }
14604    if let Some(x) = args.id { builder.add_id(x); }
14605    builder.finish()
14606  }
14607
14608
14609  #[inline]
14610  pub fn id(&self) -> &'a str {
14611    // Safety:
14612    // Created from valid Table for this object
14613    // which contains a valid value in this slot
14614    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableColumn::VT_ID, None).unwrap()}
14615  }
14616  #[inline]
14617  pub fn key_compare_less_than(&self, o: &DucTableColumn) -> bool {
14618    self.id() < o.id()
14619  }
14620
14621  #[inline]
14622  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
14623    let key = self.id();
14624    key.cmp(val)
14625  }
14626  #[inline]
14627  pub fn width(&self) -> f64 {
14628    // Safety:
14629    // Created from valid Table for this object
14630    // which contains a valid value in this slot
14631    unsafe { self._tab.get::<f64>(DucTableColumn::VT_WIDTH, Some(0.0)).unwrap()}
14632  }
14633  #[inline]
14634  pub fn style_overrides(&self) -> Option<DucTableCellStyle<'a>> {
14635    // Safety:
14636    // Created from valid Table for this object
14637    // which contains a valid value in this slot
14638    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableColumn::VT_STYLE_OVERRIDES, None)}
14639  }
14640}
14641
14642impl flatbuffers::Verifiable for DucTableColumn<'_> {
14643  #[inline]
14644  fn run_verifier(
14645    v: &mut flatbuffers::Verifier, pos: usize
14646  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14647    use self::flatbuffers::Verifiable;
14648    v.visit_table(pos)?
14649     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
14650     .visit_field::<f64>("width", Self::VT_WIDTH, false)?
14651     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("style_overrides", Self::VT_STYLE_OVERRIDES, false)?
14652     .finish();
14653    Ok(())
14654  }
14655}
14656pub struct DucTableColumnArgs<'a> {
14657    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
14658    pub width: f64,
14659    pub style_overrides: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
14660}
14661impl<'a> Default for DucTableColumnArgs<'a> {
14662  #[inline]
14663  fn default() -> Self {
14664    DucTableColumnArgs {
14665      id: None, // required field
14666      width: 0.0,
14667      style_overrides: None,
14668    }
14669  }
14670}
14671
14672pub struct DucTableColumnBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14673  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14674  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14675}
14676impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableColumnBuilder<'a, 'b, A> {
14677  #[inline]
14678  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
14679    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableColumn::VT_ID, id);
14680  }
14681  #[inline]
14682  pub fn add_width(&mut self, width: f64) {
14683    self.fbb_.push_slot::<f64>(DucTableColumn::VT_WIDTH, width, 0.0);
14684  }
14685  #[inline]
14686  pub fn add_style_overrides(&mut self, style_overrides: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
14687    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableColumn::VT_STYLE_OVERRIDES, style_overrides);
14688  }
14689  #[inline]
14690  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableColumnBuilder<'a, 'b, A> {
14691    let start = _fbb.start_table();
14692    DucTableColumnBuilder {
14693      fbb_: _fbb,
14694      start_: start,
14695    }
14696  }
14697  #[inline]
14698  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableColumn<'a>> {
14699    let o = self.fbb_.end_table(self.start_);
14700    self.fbb_.required(o, DucTableColumn::VT_ID,"id");
14701    flatbuffers::WIPOffset::new(o.value())
14702  }
14703}
14704
14705impl core::fmt::Debug for DucTableColumn<'_> {
14706  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14707    let mut ds = f.debug_struct("DucTableColumn");
14708      ds.field("id", &self.id());
14709      ds.field("width", &self.width());
14710      ds.field("style_overrides", &self.style_overrides());
14711      ds.finish()
14712  }
14713}
14714pub enum DucTableRowOffset {}
14715#[derive(Copy, Clone, PartialEq)]
14716
14717pub struct DucTableRow<'a> {
14718  pub _tab: flatbuffers::Table<'a>,
14719}
14720
14721impl<'a> flatbuffers::Follow<'a> for DucTableRow<'a> {
14722  type Inner = DucTableRow<'a>;
14723  #[inline]
14724  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14725    Self { _tab: flatbuffers::Table::new(buf, loc) }
14726  }
14727}
14728
14729impl<'a> DucTableRow<'a> {
14730  pub const VT_ID: flatbuffers::VOffsetT = 4;
14731  pub const VT_HEIGHT: flatbuffers::VOffsetT = 6;
14732  pub const VT_STYLE_OVERRIDES: flatbuffers::VOffsetT = 8;
14733
14734  #[inline]
14735  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14736    DucTableRow { _tab: table }
14737  }
14738  #[allow(unused_mut)]
14739  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14740    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14741    args: &'args DucTableRowArgs<'args>
14742  ) -> flatbuffers::WIPOffset<DucTableRow<'bldr>> {
14743    let mut builder = DucTableRowBuilder::new(_fbb);
14744    builder.add_height(args.height);
14745    if let Some(x) = args.style_overrides { builder.add_style_overrides(x); }
14746    if let Some(x) = args.id { builder.add_id(x); }
14747    builder.finish()
14748  }
14749
14750
14751  #[inline]
14752  pub fn id(&self) -> &'a str {
14753    // Safety:
14754    // Created from valid Table for this object
14755    // which contains a valid value in this slot
14756    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableRow::VT_ID, None).unwrap()}
14757  }
14758  #[inline]
14759  pub fn key_compare_less_than(&self, o: &DucTableRow) -> bool {
14760    self.id() < o.id()
14761  }
14762
14763  #[inline]
14764  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
14765    let key = self.id();
14766    key.cmp(val)
14767  }
14768  #[inline]
14769  pub fn height(&self) -> f64 {
14770    // Safety:
14771    // Created from valid Table for this object
14772    // which contains a valid value in this slot
14773    unsafe { self._tab.get::<f64>(DucTableRow::VT_HEIGHT, Some(0.0)).unwrap()}
14774  }
14775  #[inline]
14776  pub fn style_overrides(&self) -> Option<DucTableCellStyle<'a>> {
14777    // Safety:
14778    // Created from valid Table for this object
14779    // which contains a valid value in this slot
14780    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableRow::VT_STYLE_OVERRIDES, None)}
14781  }
14782}
14783
14784impl flatbuffers::Verifiable for DucTableRow<'_> {
14785  #[inline]
14786  fn run_verifier(
14787    v: &mut flatbuffers::Verifier, pos: usize
14788  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14789    use self::flatbuffers::Verifiable;
14790    v.visit_table(pos)?
14791     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
14792     .visit_field::<f64>("height", Self::VT_HEIGHT, false)?
14793     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("style_overrides", Self::VT_STYLE_OVERRIDES, false)?
14794     .finish();
14795    Ok(())
14796  }
14797}
14798pub struct DucTableRowArgs<'a> {
14799    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
14800    pub height: f64,
14801    pub style_overrides: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
14802}
14803impl<'a> Default for DucTableRowArgs<'a> {
14804  #[inline]
14805  fn default() -> Self {
14806    DucTableRowArgs {
14807      id: None, // required field
14808      height: 0.0,
14809      style_overrides: None,
14810    }
14811  }
14812}
14813
14814pub struct DucTableRowBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14815  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14816  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14817}
14818impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableRowBuilder<'a, 'b, A> {
14819  #[inline]
14820  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
14821    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableRow::VT_ID, id);
14822  }
14823  #[inline]
14824  pub fn add_height(&mut self, height: f64) {
14825    self.fbb_.push_slot::<f64>(DucTableRow::VT_HEIGHT, height, 0.0);
14826  }
14827  #[inline]
14828  pub fn add_style_overrides(&mut self, style_overrides: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
14829    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableRow::VT_STYLE_OVERRIDES, style_overrides);
14830  }
14831  #[inline]
14832  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableRowBuilder<'a, 'b, A> {
14833    let start = _fbb.start_table();
14834    DucTableRowBuilder {
14835      fbb_: _fbb,
14836      start_: start,
14837    }
14838  }
14839  #[inline]
14840  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableRow<'a>> {
14841    let o = self.fbb_.end_table(self.start_);
14842    self.fbb_.required(o, DucTableRow::VT_ID,"id");
14843    flatbuffers::WIPOffset::new(o.value())
14844  }
14845}
14846
14847impl core::fmt::Debug for DucTableRow<'_> {
14848  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14849    let mut ds = f.debug_struct("DucTableRow");
14850      ds.field("id", &self.id());
14851      ds.field("height", &self.height());
14852      ds.field("style_overrides", &self.style_overrides());
14853      ds.finish()
14854  }
14855}
14856pub enum DucTableCellSpanOffset {}
14857#[derive(Copy, Clone, PartialEq)]
14858
14859pub struct DucTableCellSpan<'a> {
14860  pub _tab: flatbuffers::Table<'a>,
14861}
14862
14863impl<'a> flatbuffers::Follow<'a> for DucTableCellSpan<'a> {
14864  type Inner = DucTableCellSpan<'a>;
14865  #[inline]
14866  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14867    Self { _tab: flatbuffers::Table::new(buf, loc) }
14868  }
14869}
14870
14871impl<'a> DucTableCellSpan<'a> {
14872  pub const VT_COLUMNS: flatbuffers::VOffsetT = 4;
14873  pub const VT_ROWS: flatbuffers::VOffsetT = 6;
14874
14875  #[inline]
14876  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14877    DucTableCellSpan { _tab: table }
14878  }
14879  #[allow(unused_mut)]
14880  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14881    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
14882    args: &'args DucTableCellSpanArgs
14883  ) -> flatbuffers::WIPOffset<DucTableCellSpan<'bldr>> {
14884    let mut builder = DucTableCellSpanBuilder::new(_fbb);
14885    builder.add_rows(args.rows);
14886    builder.add_columns(args.columns);
14887    builder.finish()
14888  }
14889
14890
14891  #[inline]
14892  pub fn columns(&self) -> i32 {
14893    // Safety:
14894    // Created from valid Table for this object
14895    // which contains a valid value in this slot
14896    unsafe { self._tab.get::<i32>(DucTableCellSpan::VT_COLUMNS, Some(0)).unwrap()}
14897  }
14898  #[inline]
14899  pub fn rows(&self) -> i32 {
14900    // Safety:
14901    // Created from valid Table for this object
14902    // which contains a valid value in this slot
14903    unsafe { self._tab.get::<i32>(DucTableCellSpan::VT_ROWS, Some(0)).unwrap()}
14904  }
14905}
14906
14907impl flatbuffers::Verifiable for DucTableCellSpan<'_> {
14908  #[inline]
14909  fn run_verifier(
14910    v: &mut flatbuffers::Verifier, pos: usize
14911  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
14912    use self::flatbuffers::Verifiable;
14913    v.visit_table(pos)?
14914     .visit_field::<i32>("columns", Self::VT_COLUMNS, false)?
14915     .visit_field::<i32>("rows", Self::VT_ROWS, false)?
14916     .finish();
14917    Ok(())
14918  }
14919}
14920pub struct DucTableCellSpanArgs {
14921    pub columns: i32,
14922    pub rows: i32,
14923}
14924impl<'a> Default for DucTableCellSpanArgs {
14925  #[inline]
14926  fn default() -> Self {
14927    DucTableCellSpanArgs {
14928      columns: 0,
14929      rows: 0,
14930    }
14931  }
14932}
14933
14934pub struct DucTableCellSpanBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
14935  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
14936  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
14937}
14938impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableCellSpanBuilder<'a, 'b, A> {
14939  #[inline]
14940  pub fn add_columns(&mut self, columns: i32) {
14941    self.fbb_.push_slot::<i32>(DucTableCellSpan::VT_COLUMNS, columns, 0);
14942  }
14943  #[inline]
14944  pub fn add_rows(&mut self, rows: i32) {
14945    self.fbb_.push_slot::<i32>(DucTableCellSpan::VT_ROWS, rows, 0);
14946  }
14947  #[inline]
14948  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableCellSpanBuilder<'a, 'b, A> {
14949    let start = _fbb.start_table();
14950    DucTableCellSpanBuilder {
14951      fbb_: _fbb,
14952      start_: start,
14953    }
14954  }
14955  #[inline]
14956  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableCellSpan<'a>> {
14957    let o = self.fbb_.end_table(self.start_);
14958    flatbuffers::WIPOffset::new(o.value())
14959  }
14960}
14961
14962impl core::fmt::Debug for DucTableCellSpan<'_> {
14963  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14964    let mut ds = f.debug_struct("DucTableCellSpan");
14965      ds.field("columns", &self.columns());
14966      ds.field("rows", &self.rows());
14967      ds.finish()
14968  }
14969}
14970pub enum DucTableCellOffset {}
14971#[derive(Copy, Clone, PartialEq)]
14972
14973pub struct DucTableCell<'a> {
14974  pub _tab: flatbuffers::Table<'a>,
14975}
14976
14977impl<'a> flatbuffers::Follow<'a> for DucTableCell<'a> {
14978  type Inner = DucTableCell<'a>;
14979  #[inline]
14980  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
14981    Self { _tab: flatbuffers::Table::new(buf, loc) }
14982  }
14983}
14984
14985impl<'a> DucTableCell<'a> {
14986  pub const VT_ROW_ID: flatbuffers::VOffsetT = 4;
14987  pub const VT_COLUMN_ID: flatbuffers::VOffsetT = 6;
14988  pub const VT_DATA: flatbuffers::VOffsetT = 8;
14989  pub const VT_SPAN: flatbuffers::VOffsetT = 10;
14990  pub const VT_LOCKED: flatbuffers::VOffsetT = 12;
14991  pub const VT_STYLE_OVERRIDES: flatbuffers::VOffsetT = 14;
14992
14993  #[inline]
14994  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
14995    DucTableCell { _tab: table }
14996  }
14997  #[allow(unused_mut)]
14998  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
14999    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15000    args: &'args DucTableCellArgs<'args>
15001  ) -> flatbuffers::WIPOffset<DucTableCell<'bldr>> {
15002    let mut builder = DucTableCellBuilder::new(_fbb);
15003    if let Some(x) = args.style_overrides { builder.add_style_overrides(x); }
15004    if let Some(x) = args.span { builder.add_span(x); }
15005    if let Some(x) = args.data { builder.add_data(x); }
15006    if let Some(x) = args.column_id { builder.add_column_id(x); }
15007    if let Some(x) = args.row_id { builder.add_row_id(x); }
15008    builder.add_locked(args.locked);
15009    builder.finish()
15010  }
15011
15012
15013  #[inline]
15014  pub fn row_id(&self) -> Option<&'a str> {
15015    // Safety:
15016    // Created from valid Table for this object
15017    // which contains a valid value in this slot
15018    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableCell::VT_ROW_ID, None)}
15019  }
15020  #[inline]
15021  pub fn column_id(&self) -> Option<&'a str> {
15022    // Safety:
15023    // Created from valid Table for this object
15024    // which contains a valid value in this slot
15025    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableCell::VT_COLUMN_ID, None)}
15026  }
15027  #[inline]
15028  pub fn data(&self) -> Option<&'a str> {
15029    // Safety:
15030    // Created from valid Table for this object
15031    // which contains a valid value in this slot
15032    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableCell::VT_DATA, None)}
15033  }
15034  #[inline]
15035  pub fn span(&self) -> Option<DucTableCellSpan<'a>> {
15036    // Safety:
15037    // Created from valid Table for this object
15038    // which contains a valid value in this slot
15039    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellSpan>>(DucTableCell::VT_SPAN, None)}
15040  }
15041  #[inline]
15042  pub fn locked(&self) -> bool {
15043    // Safety:
15044    // Created from valid Table for this object
15045    // which contains a valid value in this slot
15046    unsafe { self._tab.get::<bool>(DucTableCell::VT_LOCKED, Some(false)).unwrap()}
15047  }
15048  #[inline]
15049  pub fn style_overrides(&self) -> Option<DucTableCellStyle<'a>> {
15050    // Safety:
15051    // Created from valid Table for this object
15052    // which contains a valid value in this slot
15053    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>(DucTableCell::VT_STYLE_OVERRIDES, None)}
15054  }
15055}
15056
15057impl flatbuffers::Verifiable for DucTableCell<'_> {
15058  #[inline]
15059  fn run_verifier(
15060    v: &mut flatbuffers::Verifier, pos: usize
15061  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15062    use self::flatbuffers::Verifiable;
15063    v.visit_table(pos)?
15064     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("row_id", Self::VT_ROW_ID, false)?
15065     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("column_id", Self::VT_COLUMN_ID, false)?
15066     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("data", Self::VT_DATA, false)?
15067     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellSpan>>("span", Self::VT_SPAN, false)?
15068     .visit_field::<bool>("locked", Self::VT_LOCKED, false)?
15069     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCellStyle>>("style_overrides", Self::VT_STYLE_OVERRIDES, false)?
15070     .finish();
15071    Ok(())
15072  }
15073}
15074pub struct DucTableCellArgs<'a> {
15075    pub row_id: Option<flatbuffers::WIPOffset<&'a str>>,
15076    pub column_id: Option<flatbuffers::WIPOffset<&'a str>>,
15077    pub data: Option<flatbuffers::WIPOffset<&'a str>>,
15078    pub span: Option<flatbuffers::WIPOffset<DucTableCellSpan<'a>>>,
15079    pub locked: bool,
15080    pub style_overrides: Option<flatbuffers::WIPOffset<DucTableCellStyle<'a>>>,
15081}
15082impl<'a> Default for DucTableCellArgs<'a> {
15083  #[inline]
15084  fn default() -> Self {
15085    DucTableCellArgs {
15086      row_id: None,
15087      column_id: None,
15088      data: None,
15089      span: None,
15090      locked: false,
15091      style_overrides: None,
15092    }
15093  }
15094}
15095
15096pub struct DucTableCellBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15097  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15098  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15099}
15100impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableCellBuilder<'a, 'b, A> {
15101  #[inline]
15102  pub fn add_row_id(&mut self, row_id: flatbuffers::WIPOffset<&'b  str>) {
15103    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableCell::VT_ROW_ID, row_id);
15104  }
15105  #[inline]
15106  pub fn add_column_id(&mut self, column_id: flatbuffers::WIPOffset<&'b  str>) {
15107    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableCell::VT_COLUMN_ID, column_id);
15108  }
15109  #[inline]
15110  pub fn add_data(&mut self, data: flatbuffers::WIPOffset<&'b  str>) {
15111    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableCell::VT_DATA, data);
15112  }
15113  #[inline]
15114  pub fn add_span(&mut self, span: flatbuffers::WIPOffset<DucTableCellSpan<'b >>) {
15115    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellSpan>>(DucTableCell::VT_SPAN, span);
15116  }
15117  #[inline]
15118  pub fn add_locked(&mut self, locked: bool) {
15119    self.fbb_.push_slot::<bool>(DucTableCell::VT_LOCKED, locked, false);
15120  }
15121  #[inline]
15122  pub fn add_style_overrides(&mut self, style_overrides: flatbuffers::WIPOffset<DucTableCellStyle<'b >>) {
15123    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCellStyle>>(DucTableCell::VT_STYLE_OVERRIDES, style_overrides);
15124  }
15125  #[inline]
15126  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableCellBuilder<'a, 'b, A> {
15127    let start = _fbb.start_table();
15128    DucTableCellBuilder {
15129      fbb_: _fbb,
15130      start_: start,
15131    }
15132  }
15133  #[inline]
15134  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableCell<'a>> {
15135    let o = self.fbb_.end_table(self.start_);
15136    flatbuffers::WIPOffset::new(o.value())
15137  }
15138}
15139
15140impl core::fmt::Debug for DucTableCell<'_> {
15141  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15142    let mut ds = f.debug_struct("DucTableCell");
15143      ds.field("row_id", &self.row_id());
15144      ds.field("column_id", &self.column_id());
15145      ds.field("data", &self.data());
15146      ds.field("span", &self.span());
15147      ds.field("locked", &self.locked());
15148      ds.field("style_overrides", &self.style_overrides());
15149      ds.finish()
15150  }
15151}
15152pub enum DucTableColumnEntryOffset {}
15153#[derive(Copy, Clone, PartialEq)]
15154
15155pub struct DucTableColumnEntry<'a> {
15156  pub _tab: flatbuffers::Table<'a>,
15157}
15158
15159impl<'a> flatbuffers::Follow<'a> for DucTableColumnEntry<'a> {
15160  type Inner = DucTableColumnEntry<'a>;
15161  #[inline]
15162  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15163    Self { _tab: flatbuffers::Table::new(buf, loc) }
15164  }
15165}
15166
15167impl<'a> DucTableColumnEntry<'a> {
15168  pub const VT_KEY: flatbuffers::VOffsetT = 4;
15169  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
15170
15171  #[inline]
15172  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15173    DucTableColumnEntry { _tab: table }
15174  }
15175  #[allow(unused_mut)]
15176  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15177    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15178    args: &'args DucTableColumnEntryArgs<'args>
15179  ) -> flatbuffers::WIPOffset<DucTableColumnEntry<'bldr>> {
15180    let mut builder = DucTableColumnEntryBuilder::new(_fbb);
15181    if let Some(x) = args.value { builder.add_value(x); }
15182    if let Some(x) = args.key { builder.add_key(x); }
15183    builder.finish()
15184  }
15185
15186
15187  #[inline]
15188  pub fn key(&self) -> &'a str {
15189    // Safety:
15190    // Created from valid Table for this object
15191    // which contains a valid value in this slot
15192    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableColumnEntry::VT_KEY, None).unwrap()}
15193  }
15194  #[inline]
15195  pub fn key_compare_less_than(&self, o: &DucTableColumnEntry) -> bool {
15196    self.key() < o.key()
15197  }
15198
15199  #[inline]
15200  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
15201    let key = self.key();
15202    key.cmp(val)
15203  }
15204  #[inline]
15205  pub fn value(&self) -> Option<DucTableColumn<'a>> {
15206    // Safety:
15207    // Created from valid Table for this object
15208    // which contains a valid value in this slot
15209    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableColumn>>(DucTableColumnEntry::VT_VALUE, None)}
15210  }
15211}
15212
15213impl flatbuffers::Verifiable for DucTableColumnEntry<'_> {
15214  #[inline]
15215  fn run_verifier(
15216    v: &mut flatbuffers::Verifier, pos: usize
15217  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15218    use self::flatbuffers::Verifiable;
15219    v.visit_table(pos)?
15220     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
15221     .visit_field::<flatbuffers::ForwardsUOffset<DucTableColumn>>("value", Self::VT_VALUE, false)?
15222     .finish();
15223    Ok(())
15224  }
15225}
15226pub struct DucTableColumnEntryArgs<'a> {
15227    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
15228    pub value: Option<flatbuffers::WIPOffset<DucTableColumn<'a>>>,
15229}
15230impl<'a> Default for DucTableColumnEntryArgs<'a> {
15231  #[inline]
15232  fn default() -> Self {
15233    DucTableColumnEntryArgs {
15234      key: None, // required field
15235      value: None,
15236    }
15237  }
15238}
15239
15240pub struct DucTableColumnEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15241  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15242  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15243}
15244impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableColumnEntryBuilder<'a, 'b, A> {
15245  #[inline]
15246  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
15247    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableColumnEntry::VT_KEY, key);
15248  }
15249  #[inline]
15250  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<DucTableColumn<'b >>) {
15251    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableColumn>>(DucTableColumnEntry::VT_VALUE, value);
15252  }
15253  #[inline]
15254  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableColumnEntryBuilder<'a, 'b, A> {
15255    let start = _fbb.start_table();
15256    DucTableColumnEntryBuilder {
15257      fbb_: _fbb,
15258      start_: start,
15259    }
15260  }
15261  #[inline]
15262  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableColumnEntry<'a>> {
15263    let o = self.fbb_.end_table(self.start_);
15264    self.fbb_.required(o, DucTableColumnEntry::VT_KEY,"key");
15265    flatbuffers::WIPOffset::new(o.value())
15266  }
15267}
15268
15269impl core::fmt::Debug for DucTableColumnEntry<'_> {
15270  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15271    let mut ds = f.debug_struct("DucTableColumnEntry");
15272      ds.field("key", &self.key());
15273      ds.field("value", &self.value());
15274      ds.finish()
15275  }
15276}
15277pub enum DucTableRowEntryOffset {}
15278#[derive(Copy, Clone, PartialEq)]
15279
15280pub struct DucTableRowEntry<'a> {
15281  pub _tab: flatbuffers::Table<'a>,
15282}
15283
15284impl<'a> flatbuffers::Follow<'a> for DucTableRowEntry<'a> {
15285  type Inner = DucTableRowEntry<'a>;
15286  #[inline]
15287  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15288    Self { _tab: flatbuffers::Table::new(buf, loc) }
15289  }
15290}
15291
15292impl<'a> DucTableRowEntry<'a> {
15293  pub const VT_KEY: flatbuffers::VOffsetT = 4;
15294  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
15295
15296  #[inline]
15297  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15298    DucTableRowEntry { _tab: table }
15299  }
15300  #[allow(unused_mut)]
15301  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15302    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15303    args: &'args DucTableRowEntryArgs<'args>
15304  ) -> flatbuffers::WIPOffset<DucTableRowEntry<'bldr>> {
15305    let mut builder = DucTableRowEntryBuilder::new(_fbb);
15306    if let Some(x) = args.value { builder.add_value(x); }
15307    if let Some(x) = args.key { builder.add_key(x); }
15308    builder.finish()
15309  }
15310
15311
15312  #[inline]
15313  pub fn key(&self) -> &'a str {
15314    // Safety:
15315    // Created from valid Table for this object
15316    // which contains a valid value in this slot
15317    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableRowEntry::VT_KEY, None).unwrap()}
15318  }
15319  #[inline]
15320  pub fn key_compare_less_than(&self, o: &DucTableRowEntry) -> bool {
15321    self.key() < o.key()
15322  }
15323
15324  #[inline]
15325  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
15326    let key = self.key();
15327    key.cmp(val)
15328  }
15329  #[inline]
15330  pub fn value(&self) -> Option<DucTableRow<'a>> {
15331    // Safety:
15332    // Created from valid Table for this object
15333    // which contains a valid value in this slot
15334    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableRow>>(DucTableRowEntry::VT_VALUE, None)}
15335  }
15336}
15337
15338impl flatbuffers::Verifiable for DucTableRowEntry<'_> {
15339  #[inline]
15340  fn run_verifier(
15341    v: &mut flatbuffers::Verifier, pos: usize
15342  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15343    use self::flatbuffers::Verifiable;
15344    v.visit_table(pos)?
15345     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
15346     .visit_field::<flatbuffers::ForwardsUOffset<DucTableRow>>("value", Self::VT_VALUE, false)?
15347     .finish();
15348    Ok(())
15349  }
15350}
15351pub struct DucTableRowEntryArgs<'a> {
15352    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
15353    pub value: Option<flatbuffers::WIPOffset<DucTableRow<'a>>>,
15354}
15355impl<'a> Default for DucTableRowEntryArgs<'a> {
15356  #[inline]
15357  fn default() -> Self {
15358    DucTableRowEntryArgs {
15359      key: None, // required field
15360      value: None,
15361    }
15362  }
15363}
15364
15365pub struct DucTableRowEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15366  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15367  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15368}
15369impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableRowEntryBuilder<'a, 'b, A> {
15370  #[inline]
15371  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
15372    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableRowEntry::VT_KEY, key);
15373  }
15374  #[inline]
15375  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<DucTableRow<'b >>) {
15376    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableRow>>(DucTableRowEntry::VT_VALUE, value);
15377  }
15378  #[inline]
15379  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableRowEntryBuilder<'a, 'b, A> {
15380    let start = _fbb.start_table();
15381    DucTableRowEntryBuilder {
15382      fbb_: _fbb,
15383      start_: start,
15384    }
15385  }
15386  #[inline]
15387  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableRowEntry<'a>> {
15388    let o = self.fbb_.end_table(self.start_);
15389    self.fbb_.required(o, DucTableRowEntry::VT_KEY,"key");
15390    flatbuffers::WIPOffset::new(o.value())
15391  }
15392}
15393
15394impl core::fmt::Debug for DucTableRowEntry<'_> {
15395  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15396    let mut ds = f.debug_struct("DucTableRowEntry");
15397      ds.field("key", &self.key());
15398      ds.field("value", &self.value());
15399      ds.finish()
15400  }
15401}
15402pub enum DucTableCellEntryOffset {}
15403#[derive(Copy, Clone, PartialEq)]
15404
15405pub struct DucTableCellEntry<'a> {
15406  pub _tab: flatbuffers::Table<'a>,
15407}
15408
15409impl<'a> flatbuffers::Follow<'a> for DucTableCellEntry<'a> {
15410  type Inner = DucTableCellEntry<'a>;
15411  #[inline]
15412  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15413    Self { _tab: flatbuffers::Table::new(buf, loc) }
15414  }
15415}
15416
15417impl<'a> DucTableCellEntry<'a> {
15418  pub const VT_KEY: flatbuffers::VOffsetT = 4;
15419  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
15420
15421  #[inline]
15422  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15423    DucTableCellEntry { _tab: table }
15424  }
15425  #[allow(unused_mut)]
15426  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15427    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15428    args: &'args DucTableCellEntryArgs<'args>
15429  ) -> flatbuffers::WIPOffset<DucTableCellEntry<'bldr>> {
15430    let mut builder = DucTableCellEntryBuilder::new(_fbb);
15431    if let Some(x) = args.value { builder.add_value(x); }
15432    if let Some(x) = args.key { builder.add_key(x); }
15433    builder.finish()
15434  }
15435
15436
15437  #[inline]
15438  pub fn key(&self) -> &'a str {
15439    // Safety:
15440    // Created from valid Table for this object
15441    // which contains a valid value in this slot
15442    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTableCellEntry::VT_KEY, None).unwrap()}
15443  }
15444  #[inline]
15445  pub fn key_compare_less_than(&self, o: &DucTableCellEntry) -> bool {
15446    self.key() < o.key()
15447  }
15448
15449  #[inline]
15450  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
15451    let key = self.key();
15452    key.cmp(val)
15453  }
15454  #[inline]
15455  pub fn value(&self) -> Option<DucTableCell<'a>> {
15456    // Safety:
15457    // Created from valid Table for this object
15458    // which contains a valid value in this slot
15459    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableCell>>(DucTableCellEntry::VT_VALUE, None)}
15460  }
15461}
15462
15463impl flatbuffers::Verifiable for DucTableCellEntry<'_> {
15464  #[inline]
15465  fn run_verifier(
15466    v: &mut flatbuffers::Verifier, pos: usize
15467  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15468    use self::flatbuffers::Verifiable;
15469    v.visit_table(pos)?
15470     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
15471     .visit_field::<flatbuffers::ForwardsUOffset<DucTableCell>>("value", Self::VT_VALUE, false)?
15472     .finish();
15473    Ok(())
15474  }
15475}
15476pub struct DucTableCellEntryArgs<'a> {
15477    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
15478    pub value: Option<flatbuffers::WIPOffset<DucTableCell<'a>>>,
15479}
15480impl<'a> Default for DucTableCellEntryArgs<'a> {
15481  #[inline]
15482  fn default() -> Self {
15483    DucTableCellEntryArgs {
15484      key: None, // required field
15485      value: None,
15486    }
15487  }
15488}
15489
15490pub struct DucTableCellEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15491  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15492  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15493}
15494impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableCellEntryBuilder<'a, 'b, A> {
15495  #[inline]
15496  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
15497    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableCellEntry::VT_KEY, key);
15498  }
15499  #[inline]
15500  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<DucTableCell<'b >>) {
15501    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableCell>>(DucTableCellEntry::VT_VALUE, value);
15502  }
15503  #[inline]
15504  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableCellEntryBuilder<'a, 'b, A> {
15505    let start = _fbb.start_table();
15506    DucTableCellEntryBuilder {
15507      fbb_: _fbb,
15508      start_: start,
15509    }
15510  }
15511  #[inline]
15512  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableCellEntry<'a>> {
15513    let o = self.fbb_.end_table(self.start_);
15514    self.fbb_.required(o, DucTableCellEntry::VT_KEY,"key");
15515    flatbuffers::WIPOffset::new(o.value())
15516  }
15517}
15518
15519impl core::fmt::Debug for DucTableCellEntry<'_> {
15520  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15521    let mut ds = f.debug_struct("DucTableCellEntry");
15522      ds.field("key", &self.key());
15523      ds.field("value", &self.value());
15524      ds.finish()
15525  }
15526}
15527pub enum DucTableAutoSizeOffset {}
15528#[derive(Copy, Clone, PartialEq)]
15529
15530pub struct DucTableAutoSize<'a> {
15531  pub _tab: flatbuffers::Table<'a>,
15532}
15533
15534impl<'a> flatbuffers::Follow<'a> for DucTableAutoSize<'a> {
15535  type Inner = DucTableAutoSize<'a>;
15536  #[inline]
15537  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15538    Self { _tab: flatbuffers::Table::new(buf, loc) }
15539  }
15540}
15541
15542impl<'a> DucTableAutoSize<'a> {
15543  pub const VT_COLUMNS: flatbuffers::VOffsetT = 4;
15544  pub const VT_ROWS: flatbuffers::VOffsetT = 6;
15545
15546  #[inline]
15547  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15548    DucTableAutoSize { _tab: table }
15549  }
15550  #[allow(unused_mut)]
15551  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15552    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15553    args: &'args DucTableAutoSizeArgs
15554  ) -> flatbuffers::WIPOffset<DucTableAutoSize<'bldr>> {
15555    let mut builder = DucTableAutoSizeBuilder::new(_fbb);
15556    builder.add_rows(args.rows);
15557    builder.add_columns(args.columns);
15558    builder.finish()
15559  }
15560
15561
15562  #[inline]
15563  pub fn columns(&self) -> bool {
15564    // Safety:
15565    // Created from valid Table for this object
15566    // which contains a valid value in this slot
15567    unsafe { self._tab.get::<bool>(DucTableAutoSize::VT_COLUMNS, Some(false)).unwrap()}
15568  }
15569  #[inline]
15570  pub fn rows(&self) -> bool {
15571    // Safety:
15572    // Created from valid Table for this object
15573    // which contains a valid value in this slot
15574    unsafe { self._tab.get::<bool>(DucTableAutoSize::VT_ROWS, Some(false)).unwrap()}
15575  }
15576}
15577
15578impl flatbuffers::Verifiable for DucTableAutoSize<'_> {
15579  #[inline]
15580  fn run_verifier(
15581    v: &mut flatbuffers::Verifier, pos: usize
15582  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15583    use self::flatbuffers::Verifiable;
15584    v.visit_table(pos)?
15585     .visit_field::<bool>("columns", Self::VT_COLUMNS, false)?
15586     .visit_field::<bool>("rows", Self::VT_ROWS, false)?
15587     .finish();
15588    Ok(())
15589  }
15590}
15591pub struct DucTableAutoSizeArgs {
15592    pub columns: bool,
15593    pub rows: bool,
15594}
15595impl<'a> Default for DucTableAutoSizeArgs {
15596  #[inline]
15597  fn default() -> Self {
15598    DucTableAutoSizeArgs {
15599      columns: false,
15600      rows: false,
15601    }
15602  }
15603}
15604
15605pub struct DucTableAutoSizeBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15606  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15607  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15608}
15609impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableAutoSizeBuilder<'a, 'b, A> {
15610  #[inline]
15611  pub fn add_columns(&mut self, columns: bool) {
15612    self.fbb_.push_slot::<bool>(DucTableAutoSize::VT_COLUMNS, columns, false);
15613  }
15614  #[inline]
15615  pub fn add_rows(&mut self, rows: bool) {
15616    self.fbb_.push_slot::<bool>(DucTableAutoSize::VT_ROWS, rows, false);
15617  }
15618  #[inline]
15619  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableAutoSizeBuilder<'a, 'b, A> {
15620    let start = _fbb.start_table();
15621    DucTableAutoSizeBuilder {
15622      fbb_: _fbb,
15623      start_: start,
15624    }
15625  }
15626  #[inline]
15627  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableAutoSize<'a>> {
15628    let o = self.fbb_.end_table(self.start_);
15629    flatbuffers::WIPOffset::new(o.value())
15630  }
15631}
15632
15633impl core::fmt::Debug for DucTableAutoSize<'_> {
15634  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15635    let mut ds = f.debug_struct("DucTableAutoSize");
15636      ds.field("columns", &self.columns());
15637      ds.field("rows", &self.rows());
15638      ds.finish()
15639  }
15640}
15641pub enum DucTableElementOffset {}
15642#[derive(Copy, Clone, PartialEq)]
15643
15644pub struct DucTableElement<'a> {
15645  pub _tab: flatbuffers::Table<'a>,
15646}
15647
15648impl<'a> flatbuffers::Follow<'a> for DucTableElement<'a> {
15649  type Inner = DucTableElement<'a>;
15650  #[inline]
15651  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15652    Self { _tab: flatbuffers::Table::new(buf, loc) }
15653  }
15654}
15655
15656impl<'a> DucTableElement<'a> {
15657  pub const VT_BASE: flatbuffers::VOffsetT = 4;
15658  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
15659  pub const VT_COLUMN_ORDER: flatbuffers::VOffsetT = 8;
15660  pub const VT_ROW_ORDER: flatbuffers::VOffsetT = 10;
15661  pub const VT_COLUMNS: flatbuffers::VOffsetT = 12;
15662  pub const VT_ROWS: flatbuffers::VOffsetT = 14;
15663  pub const VT_CELLS: flatbuffers::VOffsetT = 16;
15664  pub const VT_HEADER_ROW_COUNT: flatbuffers::VOffsetT = 18;
15665  pub const VT_AUTO_SIZE: flatbuffers::VOffsetT = 20;
15666
15667  #[inline]
15668  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15669    DucTableElement { _tab: table }
15670  }
15671  #[allow(unused_mut)]
15672  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15673    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15674    args: &'args DucTableElementArgs<'args>
15675  ) -> flatbuffers::WIPOffset<DucTableElement<'bldr>> {
15676    let mut builder = DucTableElementBuilder::new(_fbb);
15677    if let Some(x) = args.auto_size { builder.add_auto_size(x); }
15678    builder.add_header_row_count(args.header_row_count);
15679    if let Some(x) = args.cells { builder.add_cells(x); }
15680    if let Some(x) = args.rows { builder.add_rows(x); }
15681    if let Some(x) = args.columns { builder.add_columns(x); }
15682    if let Some(x) = args.row_order { builder.add_row_order(x); }
15683    if let Some(x) = args.column_order { builder.add_column_order(x); }
15684    if let Some(x) = args.style { builder.add_style(x); }
15685    if let Some(x) = args.base { builder.add_base(x); }
15686    builder.finish()
15687  }
15688
15689
15690  #[inline]
15691  pub fn base(&self) -> Option<_DucElementBase<'a>> {
15692    // Safety:
15693    // Created from valid Table for this object
15694    // which contains a valid value in this slot
15695    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucTableElement::VT_BASE, None)}
15696  }
15697  #[inline]
15698  pub fn style(&self) -> Option<DucTableStyle<'a>> {
15699    // Safety:
15700    // Created from valid Table for this object
15701    // which contains a valid value in this slot
15702    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableStyle>>(DucTableElement::VT_STYLE, None)}
15703  }
15704  #[inline]
15705  pub fn column_order(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
15706    // Safety:
15707    // Created from valid Table for this object
15708    // which contains a valid value in this slot
15709    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(DucTableElement::VT_COLUMN_ORDER, None)}
15710  }
15711  #[inline]
15712  pub fn row_order(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
15713    // Safety:
15714    // Created from valid Table for this object
15715    // which contains a valid value in this slot
15716    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(DucTableElement::VT_ROW_ORDER, None)}
15717  }
15718  #[inline]
15719  pub fn columns(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableColumnEntry<'a>>>> {
15720    // Safety:
15721    // Created from valid Table for this object
15722    // which contains a valid value in this slot
15723    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableColumnEntry>>>>(DucTableElement::VT_COLUMNS, None)}
15724  }
15725  #[inline]
15726  pub fn rows(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableRowEntry<'a>>>> {
15727    // Safety:
15728    // Created from valid Table for this object
15729    // which contains a valid value in this slot
15730    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableRowEntry>>>>(DucTableElement::VT_ROWS, None)}
15731  }
15732  #[inline]
15733  pub fn cells(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableCellEntry<'a>>>> {
15734    // Safety:
15735    // Created from valid Table for this object
15736    // which contains a valid value in this slot
15737    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableCellEntry>>>>(DucTableElement::VT_CELLS, None)}
15738  }
15739  #[inline]
15740  pub fn header_row_count(&self) -> i32 {
15741    // Safety:
15742    // Created from valid Table for this object
15743    // which contains a valid value in this slot
15744    unsafe { self._tab.get::<i32>(DucTableElement::VT_HEADER_ROW_COUNT, Some(0)).unwrap()}
15745  }
15746  #[inline]
15747  pub fn auto_size(&self) -> Option<DucTableAutoSize<'a>> {
15748    // Safety:
15749    // Created from valid Table for this object
15750    // which contains a valid value in this slot
15751    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableAutoSize>>(DucTableElement::VT_AUTO_SIZE, None)}
15752  }
15753}
15754
15755impl flatbuffers::Verifiable for DucTableElement<'_> {
15756  #[inline]
15757  fn run_verifier(
15758    v: &mut flatbuffers::Verifier, pos: usize
15759  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15760    use self::flatbuffers::Verifiable;
15761    v.visit_table(pos)?
15762     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
15763     .visit_field::<flatbuffers::ForwardsUOffset<DucTableStyle>>("style", Self::VT_STYLE, false)?
15764     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("column_order", Self::VT_COLUMN_ORDER, false)?
15765     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("row_order", Self::VT_ROW_ORDER, false)?
15766     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucTableColumnEntry>>>>("columns", Self::VT_COLUMNS, false)?
15767     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucTableRowEntry>>>>("rows", Self::VT_ROWS, false)?
15768     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucTableCellEntry>>>>("cells", Self::VT_CELLS, false)?
15769     .visit_field::<i32>("header_row_count", Self::VT_HEADER_ROW_COUNT, false)?
15770     .visit_field::<flatbuffers::ForwardsUOffset<DucTableAutoSize>>("auto_size", Self::VT_AUTO_SIZE, false)?
15771     .finish();
15772    Ok(())
15773  }
15774}
15775pub struct DucTableElementArgs<'a> {
15776    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
15777    pub style: Option<flatbuffers::WIPOffset<DucTableStyle<'a>>>,
15778    pub column_order: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
15779    pub row_order: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
15780    pub columns: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableColumnEntry<'a>>>>>,
15781    pub rows: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableRowEntry<'a>>>>>,
15782    pub cells: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTableCellEntry<'a>>>>>,
15783    pub header_row_count: i32,
15784    pub auto_size: Option<flatbuffers::WIPOffset<DucTableAutoSize<'a>>>,
15785}
15786impl<'a> Default for DucTableElementArgs<'a> {
15787  #[inline]
15788  fn default() -> Self {
15789    DucTableElementArgs {
15790      base: None,
15791      style: None,
15792      column_order: None,
15793      row_order: None,
15794      columns: None,
15795      rows: None,
15796      cells: None,
15797      header_row_count: 0,
15798      auto_size: None,
15799    }
15800  }
15801}
15802
15803pub struct DucTableElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
15804  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
15805  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
15806}
15807impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTableElementBuilder<'a, 'b, A> {
15808  #[inline]
15809  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
15810    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucTableElement::VT_BASE, base);
15811  }
15812  #[inline]
15813  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucTableStyle<'b >>) {
15814    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableStyle>>(DucTableElement::VT_STYLE, style);
15815  }
15816  #[inline]
15817  pub fn add_column_order(&mut self, column_order: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
15818    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableElement::VT_COLUMN_ORDER, column_order);
15819  }
15820  #[inline]
15821  pub fn add_row_order(&mut self, row_order: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
15822    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableElement::VT_ROW_ORDER, row_order);
15823  }
15824  #[inline]
15825  pub fn add_columns(&mut self, columns: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucTableColumnEntry<'b >>>>) {
15826    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableElement::VT_COLUMNS, columns);
15827  }
15828  #[inline]
15829  pub fn add_rows(&mut self, rows: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucTableRowEntry<'b >>>>) {
15830    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableElement::VT_ROWS, rows);
15831  }
15832  #[inline]
15833  pub fn add_cells(&mut self, cells: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucTableCellEntry<'b >>>>) {
15834    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTableElement::VT_CELLS, cells);
15835  }
15836  #[inline]
15837  pub fn add_header_row_count(&mut self, header_row_count: i32) {
15838    self.fbb_.push_slot::<i32>(DucTableElement::VT_HEADER_ROW_COUNT, header_row_count, 0);
15839  }
15840  #[inline]
15841  pub fn add_auto_size(&mut self, auto_size: flatbuffers::WIPOffset<DucTableAutoSize<'b >>) {
15842    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableAutoSize>>(DucTableElement::VT_AUTO_SIZE, auto_size);
15843  }
15844  #[inline]
15845  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTableElementBuilder<'a, 'b, A> {
15846    let start = _fbb.start_table();
15847    DucTableElementBuilder {
15848      fbb_: _fbb,
15849      start_: start,
15850    }
15851  }
15852  #[inline]
15853  pub fn finish(self) -> flatbuffers::WIPOffset<DucTableElement<'a>> {
15854    let o = self.fbb_.end_table(self.start_);
15855    flatbuffers::WIPOffset::new(o.value())
15856  }
15857}
15858
15859impl core::fmt::Debug for DucTableElement<'_> {
15860  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15861    let mut ds = f.debug_struct("DucTableElement");
15862      ds.field("base", &self.base());
15863      ds.field("style", &self.style());
15864      ds.field("column_order", &self.column_order());
15865      ds.field("row_order", &self.row_order());
15866      ds.field("columns", &self.columns());
15867      ds.field("rows", &self.rows());
15868      ds.field("cells", &self.cells());
15869      ds.field("header_row_count", &self.header_row_count());
15870      ds.field("auto_size", &self.auto_size());
15871      ds.finish()
15872  }
15873}
15874pub enum ImageCropOffset {}
15875#[derive(Copy, Clone, PartialEq)]
15876
15877pub struct ImageCrop<'a> {
15878  pub _tab: flatbuffers::Table<'a>,
15879}
15880
15881impl<'a> flatbuffers::Follow<'a> for ImageCrop<'a> {
15882  type Inner = ImageCrop<'a>;
15883  #[inline]
15884  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
15885    Self { _tab: flatbuffers::Table::new(buf, loc) }
15886  }
15887}
15888
15889impl<'a> ImageCrop<'a> {
15890  pub const VT_X: flatbuffers::VOffsetT = 4;
15891  pub const VT_Y: flatbuffers::VOffsetT = 6;
15892  pub const VT_WIDTH: flatbuffers::VOffsetT = 8;
15893  pub const VT_HEIGHT: flatbuffers::VOffsetT = 10;
15894  pub const VT_NATURAL_WIDTH: flatbuffers::VOffsetT = 12;
15895  pub const VT_NATURAL_HEIGHT: flatbuffers::VOffsetT = 14;
15896
15897  #[inline]
15898  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
15899    ImageCrop { _tab: table }
15900  }
15901  #[allow(unused_mut)]
15902  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
15903    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
15904    args: &'args ImageCropArgs
15905  ) -> flatbuffers::WIPOffset<ImageCrop<'bldr>> {
15906    let mut builder = ImageCropBuilder::new(_fbb);
15907    builder.add_natural_height(args.natural_height);
15908    builder.add_natural_width(args.natural_width);
15909    builder.add_height(args.height);
15910    builder.add_width(args.width);
15911    builder.add_y(args.y);
15912    builder.add_x(args.x);
15913    builder.finish()
15914  }
15915
15916
15917  #[inline]
15918  pub fn x(&self) -> f64 {
15919    // Safety:
15920    // Created from valid Table for this object
15921    // which contains a valid value in this slot
15922    unsafe { self._tab.get::<f64>(ImageCrop::VT_X, Some(0.0)).unwrap()}
15923  }
15924  #[inline]
15925  pub fn y(&self) -> f64 {
15926    // Safety:
15927    // Created from valid Table for this object
15928    // which contains a valid value in this slot
15929    unsafe { self._tab.get::<f64>(ImageCrop::VT_Y, Some(0.0)).unwrap()}
15930  }
15931  #[inline]
15932  pub fn width(&self) -> f64 {
15933    // Safety:
15934    // Created from valid Table for this object
15935    // which contains a valid value in this slot
15936    unsafe { self._tab.get::<f64>(ImageCrop::VT_WIDTH, Some(0.0)).unwrap()}
15937  }
15938  #[inline]
15939  pub fn height(&self) -> f64 {
15940    // Safety:
15941    // Created from valid Table for this object
15942    // which contains a valid value in this slot
15943    unsafe { self._tab.get::<f64>(ImageCrop::VT_HEIGHT, Some(0.0)).unwrap()}
15944  }
15945  #[inline]
15946  pub fn natural_width(&self) -> f64 {
15947    // Safety:
15948    // Created from valid Table for this object
15949    // which contains a valid value in this slot
15950    unsafe { self._tab.get::<f64>(ImageCrop::VT_NATURAL_WIDTH, Some(0.0)).unwrap()}
15951  }
15952  #[inline]
15953  pub fn natural_height(&self) -> f64 {
15954    // Safety:
15955    // Created from valid Table for this object
15956    // which contains a valid value in this slot
15957    unsafe { self._tab.get::<f64>(ImageCrop::VT_NATURAL_HEIGHT, Some(0.0)).unwrap()}
15958  }
15959}
15960
15961impl flatbuffers::Verifiable for ImageCrop<'_> {
15962  #[inline]
15963  fn run_verifier(
15964    v: &mut flatbuffers::Verifier, pos: usize
15965  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
15966    use self::flatbuffers::Verifiable;
15967    v.visit_table(pos)?
15968     .visit_field::<f64>("x", Self::VT_X, false)?
15969     .visit_field::<f64>("y", Self::VT_Y, false)?
15970     .visit_field::<f64>("width", Self::VT_WIDTH, false)?
15971     .visit_field::<f64>("height", Self::VT_HEIGHT, false)?
15972     .visit_field::<f64>("natural_width", Self::VT_NATURAL_WIDTH, false)?
15973     .visit_field::<f64>("natural_height", Self::VT_NATURAL_HEIGHT, false)?
15974     .finish();
15975    Ok(())
15976  }
15977}
15978pub struct ImageCropArgs {
15979    pub x: f64,
15980    pub y: f64,
15981    pub width: f64,
15982    pub height: f64,
15983    pub natural_width: f64,
15984    pub natural_height: f64,
15985}
15986impl<'a> Default for ImageCropArgs {
15987  #[inline]
15988  fn default() -> Self {
15989    ImageCropArgs {
15990      x: 0.0,
15991      y: 0.0,
15992      width: 0.0,
15993      height: 0.0,
15994      natural_width: 0.0,
15995      natural_height: 0.0,
15996    }
15997  }
15998}
15999
16000pub struct ImageCropBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16001  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16002  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16003}
16004impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ImageCropBuilder<'a, 'b, A> {
16005  #[inline]
16006  pub fn add_x(&mut self, x: f64) {
16007    self.fbb_.push_slot::<f64>(ImageCrop::VT_X, x, 0.0);
16008  }
16009  #[inline]
16010  pub fn add_y(&mut self, y: f64) {
16011    self.fbb_.push_slot::<f64>(ImageCrop::VT_Y, y, 0.0);
16012  }
16013  #[inline]
16014  pub fn add_width(&mut self, width: f64) {
16015    self.fbb_.push_slot::<f64>(ImageCrop::VT_WIDTH, width, 0.0);
16016  }
16017  #[inline]
16018  pub fn add_height(&mut self, height: f64) {
16019    self.fbb_.push_slot::<f64>(ImageCrop::VT_HEIGHT, height, 0.0);
16020  }
16021  #[inline]
16022  pub fn add_natural_width(&mut self, natural_width: f64) {
16023    self.fbb_.push_slot::<f64>(ImageCrop::VT_NATURAL_WIDTH, natural_width, 0.0);
16024  }
16025  #[inline]
16026  pub fn add_natural_height(&mut self, natural_height: f64) {
16027    self.fbb_.push_slot::<f64>(ImageCrop::VT_NATURAL_HEIGHT, natural_height, 0.0);
16028  }
16029  #[inline]
16030  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ImageCropBuilder<'a, 'b, A> {
16031    let start = _fbb.start_table();
16032    ImageCropBuilder {
16033      fbb_: _fbb,
16034      start_: start,
16035    }
16036  }
16037  #[inline]
16038  pub fn finish(self) -> flatbuffers::WIPOffset<ImageCrop<'a>> {
16039    let o = self.fbb_.end_table(self.start_);
16040    flatbuffers::WIPOffset::new(o.value())
16041  }
16042}
16043
16044impl core::fmt::Debug for ImageCrop<'_> {
16045  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16046    let mut ds = f.debug_struct("ImageCrop");
16047      ds.field("x", &self.x());
16048      ds.field("y", &self.y());
16049      ds.field("width", &self.width());
16050      ds.field("height", &self.height());
16051      ds.field("natural_width", &self.natural_width());
16052      ds.field("natural_height", &self.natural_height());
16053      ds.finish()
16054  }
16055}
16056pub enum DucImageElementOffset {}
16057#[derive(Copy, Clone, PartialEq)]
16058
16059pub struct DucImageElement<'a> {
16060  pub _tab: flatbuffers::Table<'a>,
16061}
16062
16063impl<'a> flatbuffers::Follow<'a> for DucImageElement<'a> {
16064  type Inner = DucImageElement<'a>;
16065  #[inline]
16066  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16067    Self { _tab: flatbuffers::Table::new(buf, loc) }
16068  }
16069}
16070
16071impl<'a> DucImageElement<'a> {
16072  pub const VT_BASE: flatbuffers::VOffsetT = 4;
16073  pub const VT_FILE_ID: flatbuffers::VOffsetT = 6;
16074  pub const VT_STATUS: flatbuffers::VOffsetT = 8;
16075  pub const VT_SCALE: flatbuffers::VOffsetT = 10;
16076  pub const VT_CROP: flatbuffers::VOffsetT = 12;
16077  pub const VT_FILTER: flatbuffers::VOffsetT = 14;
16078
16079  #[inline]
16080  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16081    DucImageElement { _tab: table }
16082  }
16083  #[allow(unused_mut)]
16084  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16085    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16086    args: &'args DucImageElementArgs<'args>
16087  ) -> flatbuffers::WIPOffset<DucImageElement<'bldr>> {
16088    let mut builder = DucImageElementBuilder::new(_fbb);
16089    if let Some(x) = args.filter { builder.add_filter(x); }
16090    if let Some(x) = args.crop { builder.add_crop(x); }
16091    if let Some(x) = args.scale { builder.add_scale(x); }
16092    if let Some(x) = args.file_id { builder.add_file_id(x); }
16093    if let Some(x) = args.base { builder.add_base(x); }
16094    if let Some(x) = args.status { builder.add_status(x); }
16095    builder.finish()
16096  }
16097
16098
16099  #[inline]
16100  pub fn base(&self) -> Option<_DucElementBase<'a>> {
16101    // Safety:
16102    // Created from valid Table for this object
16103    // which contains a valid value in this slot
16104    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucImageElement::VT_BASE, None)}
16105  }
16106  #[inline]
16107  pub fn file_id(&self) -> Option<&'a str> {
16108    // Safety:
16109    // Created from valid Table for this object
16110    // which contains a valid value in this slot
16111    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucImageElement::VT_FILE_ID, None)}
16112  }
16113  #[inline]
16114  pub fn status(&self) -> Option<IMAGE_STATUS> {
16115    // Safety:
16116    // Created from valid Table for this object
16117    // which contains a valid value in this slot
16118    unsafe { self._tab.get::<IMAGE_STATUS>(DucImageElement::VT_STATUS, None)}
16119  }
16120  #[inline]
16121  pub fn scale(&self) -> Option<flatbuffers::Vector<'a, f64>> {
16122    // Safety:
16123    // Created from valid Table for this object
16124    // which contains a valid value in this slot
16125    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(DucImageElement::VT_SCALE, None)}
16126  }
16127  #[inline]
16128  pub fn crop(&self) -> Option<ImageCrop<'a>> {
16129    // Safety:
16130    // Created from valid Table for this object
16131    // which contains a valid value in this slot
16132    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ImageCrop>>(DucImageElement::VT_CROP, None)}
16133  }
16134  #[inline]
16135  pub fn filter(&self) -> Option<DucImageFilter<'a>> {
16136    // Safety:
16137    // Created from valid Table for this object
16138    // which contains a valid value in this slot
16139    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucImageFilter>>(DucImageElement::VT_FILTER, None)}
16140  }
16141}
16142
16143impl flatbuffers::Verifiable for DucImageElement<'_> {
16144  #[inline]
16145  fn run_verifier(
16146    v: &mut flatbuffers::Verifier, pos: usize
16147  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16148    use self::flatbuffers::Verifiable;
16149    v.visit_table(pos)?
16150     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
16151     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("file_id", Self::VT_FILE_ID, false)?
16152     .visit_field::<IMAGE_STATUS>("status", Self::VT_STATUS, false)?
16153     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("scale", Self::VT_SCALE, false)?
16154     .visit_field::<flatbuffers::ForwardsUOffset<ImageCrop>>("crop", Self::VT_CROP, false)?
16155     .visit_field::<flatbuffers::ForwardsUOffset<DucImageFilter>>("filter", Self::VT_FILTER, false)?
16156     .finish();
16157    Ok(())
16158  }
16159}
16160pub struct DucImageElementArgs<'a> {
16161    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
16162    pub file_id: Option<flatbuffers::WIPOffset<&'a str>>,
16163    pub status: Option<IMAGE_STATUS>,
16164    pub scale: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
16165    pub crop: Option<flatbuffers::WIPOffset<ImageCrop<'a>>>,
16166    pub filter: Option<flatbuffers::WIPOffset<DucImageFilter<'a>>>,
16167}
16168impl<'a> Default for DucImageElementArgs<'a> {
16169  #[inline]
16170  fn default() -> Self {
16171    DucImageElementArgs {
16172      base: None,
16173      file_id: None,
16174      status: None,
16175      scale: None,
16176      crop: None,
16177      filter: None,
16178    }
16179  }
16180}
16181
16182pub struct DucImageElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16183  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16184  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16185}
16186impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucImageElementBuilder<'a, 'b, A> {
16187  #[inline]
16188  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
16189    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucImageElement::VT_BASE, base);
16190  }
16191  #[inline]
16192  pub fn add_file_id(&mut self, file_id: flatbuffers::WIPOffset<&'b  str>) {
16193    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucImageElement::VT_FILE_ID, file_id);
16194  }
16195  #[inline]
16196  pub fn add_status(&mut self, status: IMAGE_STATUS) {
16197    self.fbb_.push_slot_always::<IMAGE_STATUS>(DucImageElement::VT_STATUS, status);
16198  }
16199  #[inline]
16200  pub fn add_scale(&mut self, scale: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
16201    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucImageElement::VT_SCALE, scale);
16202  }
16203  #[inline]
16204  pub fn add_crop(&mut self, crop: flatbuffers::WIPOffset<ImageCrop<'b >>) {
16205    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ImageCrop>>(DucImageElement::VT_CROP, crop);
16206  }
16207  #[inline]
16208  pub fn add_filter(&mut self, filter: flatbuffers::WIPOffset<DucImageFilter<'b >>) {
16209    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucImageFilter>>(DucImageElement::VT_FILTER, filter);
16210  }
16211  #[inline]
16212  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucImageElementBuilder<'a, 'b, A> {
16213    let start = _fbb.start_table();
16214    DucImageElementBuilder {
16215      fbb_: _fbb,
16216      start_: start,
16217    }
16218  }
16219  #[inline]
16220  pub fn finish(self) -> flatbuffers::WIPOffset<DucImageElement<'a>> {
16221    let o = self.fbb_.end_table(self.start_);
16222    flatbuffers::WIPOffset::new(o.value())
16223  }
16224}
16225
16226impl core::fmt::Debug for DucImageElement<'_> {
16227  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16228    let mut ds = f.debug_struct("DucImageElement");
16229      ds.field("base", &self.base());
16230      ds.field("file_id", &self.file_id());
16231      ds.field("status", &self.status());
16232      ds.field("scale", &self.scale());
16233      ds.field("crop", &self.crop());
16234      ds.field("filter", &self.filter());
16235      ds.finish()
16236  }
16237}
16238pub enum DucTextDynamicElementSourceOffset {}
16239#[derive(Copy, Clone, PartialEq)]
16240
16241pub struct DucTextDynamicElementSource<'a> {
16242  pub _tab: flatbuffers::Table<'a>,
16243}
16244
16245impl<'a> flatbuffers::Follow<'a> for DucTextDynamicElementSource<'a> {
16246  type Inner = DucTextDynamicElementSource<'a>;
16247  #[inline]
16248  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16249    Self { _tab: flatbuffers::Table::new(buf, loc) }
16250  }
16251}
16252
16253impl<'a> DucTextDynamicElementSource<'a> {
16254  pub const VT_ELEMENT_ID: flatbuffers::VOffsetT = 4;
16255  pub const VT_PROPERTY: flatbuffers::VOffsetT = 6;
16256
16257  #[inline]
16258  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16259    DucTextDynamicElementSource { _tab: table }
16260  }
16261  #[allow(unused_mut)]
16262  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16263    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16264    args: &'args DucTextDynamicElementSourceArgs<'args>
16265  ) -> flatbuffers::WIPOffset<DucTextDynamicElementSource<'bldr>> {
16266    let mut builder = DucTextDynamicElementSourceBuilder::new(_fbb);
16267    if let Some(x) = args.element_id { builder.add_element_id(x); }
16268    if let Some(x) = args.property { builder.add_property(x); }
16269    builder.finish()
16270  }
16271
16272
16273  #[inline]
16274  pub fn element_id(&self) -> Option<&'a str> {
16275    // Safety:
16276    // Created from valid Table for this object
16277    // which contains a valid value in this slot
16278    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextDynamicElementSource::VT_ELEMENT_ID, None)}
16279  }
16280  #[inline]
16281  pub fn property(&self) -> Option<TEXT_FIELD_SOURCE_PROPERTY> {
16282    // Safety:
16283    // Created from valid Table for this object
16284    // which contains a valid value in this slot
16285    unsafe { self._tab.get::<TEXT_FIELD_SOURCE_PROPERTY>(DucTextDynamicElementSource::VT_PROPERTY, None)}
16286  }
16287}
16288
16289impl flatbuffers::Verifiable for DucTextDynamicElementSource<'_> {
16290  #[inline]
16291  fn run_verifier(
16292    v: &mut flatbuffers::Verifier, pos: usize
16293  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16294    use self::flatbuffers::Verifiable;
16295    v.visit_table(pos)?
16296     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("element_id", Self::VT_ELEMENT_ID, false)?
16297     .visit_field::<TEXT_FIELD_SOURCE_PROPERTY>("property", Self::VT_PROPERTY, false)?
16298     .finish();
16299    Ok(())
16300  }
16301}
16302pub struct DucTextDynamicElementSourceArgs<'a> {
16303    pub element_id: Option<flatbuffers::WIPOffset<&'a str>>,
16304    pub property: Option<TEXT_FIELD_SOURCE_PROPERTY>,
16305}
16306impl<'a> Default for DucTextDynamicElementSourceArgs<'a> {
16307  #[inline]
16308  fn default() -> Self {
16309    DucTextDynamicElementSourceArgs {
16310      element_id: None,
16311      property: None,
16312    }
16313  }
16314}
16315
16316pub struct DucTextDynamicElementSourceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16317  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16318  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16319}
16320impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextDynamicElementSourceBuilder<'a, 'b, A> {
16321  #[inline]
16322  pub fn add_element_id(&mut self, element_id: flatbuffers::WIPOffset<&'b  str>) {
16323    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextDynamicElementSource::VT_ELEMENT_ID, element_id);
16324  }
16325  #[inline]
16326  pub fn add_property(&mut self, property: TEXT_FIELD_SOURCE_PROPERTY) {
16327    self.fbb_.push_slot_always::<TEXT_FIELD_SOURCE_PROPERTY>(DucTextDynamicElementSource::VT_PROPERTY, property);
16328  }
16329  #[inline]
16330  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextDynamicElementSourceBuilder<'a, 'b, A> {
16331    let start = _fbb.start_table();
16332    DucTextDynamicElementSourceBuilder {
16333      fbb_: _fbb,
16334      start_: start,
16335    }
16336  }
16337  #[inline]
16338  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextDynamicElementSource<'a>> {
16339    let o = self.fbb_.end_table(self.start_);
16340    flatbuffers::WIPOffset::new(o.value())
16341  }
16342}
16343
16344impl core::fmt::Debug for DucTextDynamicElementSource<'_> {
16345  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16346    let mut ds = f.debug_struct("DucTextDynamicElementSource");
16347      ds.field("element_id", &self.element_id());
16348      ds.field("property", &self.property());
16349      ds.finish()
16350  }
16351}
16352pub enum DucTextDynamicDictionarySourceOffset {}
16353#[derive(Copy, Clone, PartialEq)]
16354
16355pub struct DucTextDynamicDictionarySource<'a> {
16356  pub _tab: flatbuffers::Table<'a>,
16357}
16358
16359impl<'a> flatbuffers::Follow<'a> for DucTextDynamicDictionarySource<'a> {
16360  type Inner = DucTextDynamicDictionarySource<'a>;
16361  #[inline]
16362  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16363    Self { _tab: flatbuffers::Table::new(buf, loc) }
16364  }
16365}
16366
16367impl<'a> DucTextDynamicDictionarySource<'a> {
16368  pub const VT_KEY: flatbuffers::VOffsetT = 4;
16369
16370  #[inline]
16371  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16372    DucTextDynamicDictionarySource { _tab: table }
16373  }
16374  #[allow(unused_mut)]
16375  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16376    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16377    args: &'args DucTextDynamicDictionarySourceArgs<'args>
16378  ) -> flatbuffers::WIPOffset<DucTextDynamicDictionarySource<'bldr>> {
16379    let mut builder = DucTextDynamicDictionarySourceBuilder::new(_fbb);
16380    if let Some(x) = args.key { builder.add_key(x); }
16381    builder.finish()
16382  }
16383
16384
16385  #[inline]
16386  pub fn key(&self) -> Option<&'a str> {
16387    // Safety:
16388    // Created from valid Table for this object
16389    // which contains a valid value in this slot
16390    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextDynamicDictionarySource::VT_KEY, None)}
16391  }
16392}
16393
16394impl flatbuffers::Verifiable for DucTextDynamicDictionarySource<'_> {
16395  #[inline]
16396  fn run_verifier(
16397    v: &mut flatbuffers::Verifier, pos: usize
16398  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16399    use self::flatbuffers::Verifiable;
16400    v.visit_table(pos)?
16401     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
16402     .finish();
16403    Ok(())
16404  }
16405}
16406pub struct DucTextDynamicDictionarySourceArgs<'a> {
16407    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
16408}
16409impl<'a> Default for DucTextDynamicDictionarySourceArgs<'a> {
16410  #[inline]
16411  fn default() -> Self {
16412    DucTextDynamicDictionarySourceArgs {
16413      key: None,
16414    }
16415  }
16416}
16417
16418pub struct DucTextDynamicDictionarySourceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16419  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16420  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16421}
16422impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextDynamicDictionarySourceBuilder<'a, 'b, A> {
16423  #[inline]
16424  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
16425    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextDynamicDictionarySource::VT_KEY, key);
16426  }
16427  #[inline]
16428  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextDynamicDictionarySourceBuilder<'a, 'b, A> {
16429    let start = _fbb.start_table();
16430    DucTextDynamicDictionarySourceBuilder {
16431      fbb_: _fbb,
16432      start_: start,
16433    }
16434  }
16435  #[inline]
16436  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextDynamicDictionarySource<'a>> {
16437    let o = self.fbb_.end_table(self.start_);
16438    flatbuffers::WIPOffset::new(o.value())
16439  }
16440}
16441
16442impl core::fmt::Debug for DucTextDynamicDictionarySource<'_> {
16443  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16444    let mut ds = f.debug_struct("DucTextDynamicDictionarySource");
16445      ds.field("key", &self.key());
16446      ds.finish()
16447  }
16448}
16449pub enum DucTextDynamicSourceOffset {}
16450#[derive(Copy, Clone, PartialEq)]
16451
16452pub struct DucTextDynamicSource<'a> {
16453  pub _tab: flatbuffers::Table<'a>,
16454}
16455
16456impl<'a> flatbuffers::Follow<'a> for DucTextDynamicSource<'a> {
16457  type Inner = DucTextDynamicSource<'a>;
16458  #[inline]
16459  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16460    Self { _tab: flatbuffers::Table::new(buf, loc) }
16461  }
16462}
16463
16464impl<'a> DucTextDynamicSource<'a> {
16465  pub const VT_TEXT_SOURCE_TYPE: flatbuffers::VOffsetT = 4;
16466  pub const VT_SOURCE_TYPE: flatbuffers::VOffsetT = 6;
16467  pub const VT_SOURCE: flatbuffers::VOffsetT = 8;
16468
16469  #[inline]
16470  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16471    DucTextDynamicSource { _tab: table }
16472  }
16473  #[allow(unused_mut)]
16474  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16475    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16476    args: &'args DucTextDynamicSourceArgs
16477  ) -> flatbuffers::WIPOffset<DucTextDynamicSource<'bldr>> {
16478    let mut builder = DucTextDynamicSourceBuilder::new(_fbb);
16479    if let Some(x) = args.source { builder.add_source(x); }
16480    builder.add_source_type(args.source_type);
16481    if let Some(x) = args.text_source_type { builder.add_text_source_type(x); }
16482    builder.finish()
16483  }
16484
16485
16486  #[inline]
16487  pub fn text_source_type(&self) -> Option<TEXT_FIELD_SOURCE_TYPE> {
16488    // Safety:
16489    // Created from valid Table for this object
16490    // which contains a valid value in this slot
16491    unsafe { self._tab.get::<TEXT_FIELD_SOURCE_TYPE>(DucTextDynamicSource::VT_TEXT_SOURCE_TYPE, None)}
16492  }
16493  #[inline]
16494  pub fn source_type(&self) -> DucTextDynamicSourceData {
16495    // Safety:
16496    // Created from valid Table for this object
16497    // which contains a valid value in this slot
16498    unsafe { self._tab.get::<DucTextDynamicSourceData>(DucTextDynamicSource::VT_SOURCE_TYPE, Some(DucTextDynamicSourceData::NONE)).unwrap()}
16499  }
16500  #[inline]
16501  pub fn source(&self) -> Option<flatbuffers::Table<'a>> {
16502    // Safety:
16503    // Created from valid Table for this object
16504    // which contains a valid value in this slot
16505    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(DucTextDynamicSource::VT_SOURCE, None)}
16506  }
16507  #[inline]
16508  #[allow(non_snake_case)]
16509  pub fn source_as_duc_text_dynamic_element_source(&self) -> Option<DucTextDynamicElementSource<'a>> {
16510    if self.source_type() == DucTextDynamicSourceData::DucTextDynamicElementSource {
16511      self.source().map(|t| {
16512       // Safety:
16513       // Created from a valid Table for this object
16514       // Which contains a valid union in this slot
16515       unsafe { DucTextDynamicElementSource::init_from_table(t) }
16516     })
16517    } else {
16518      None
16519    }
16520  }
16521
16522  #[inline]
16523  #[allow(non_snake_case)]
16524  pub fn source_as_duc_text_dynamic_dictionary_source(&self) -> Option<DucTextDynamicDictionarySource<'a>> {
16525    if self.source_type() == DucTextDynamicSourceData::DucTextDynamicDictionarySource {
16526      self.source().map(|t| {
16527       // Safety:
16528       // Created from a valid Table for this object
16529       // Which contains a valid union in this slot
16530       unsafe { DucTextDynamicDictionarySource::init_from_table(t) }
16531     })
16532    } else {
16533      None
16534    }
16535  }
16536
16537}
16538
16539impl flatbuffers::Verifiable for DucTextDynamicSource<'_> {
16540  #[inline]
16541  fn run_verifier(
16542    v: &mut flatbuffers::Verifier, pos: usize
16543  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16544    use self::flatbuffers::Verifiable;
16545    v.visit_table(pos)?
16546     .visit_field::<TEXT_FIELD_SOURCE_TYPE>("text_source_type", Self::VT_TEXT_SOURCE_TYPE, false)?
16547     .visit_union::<DucTextDynamicSourceData, _>("source_type", Self::VT_SOURCE_TYPE, "source", Self::VT_SOURCE, false, |key, v, pos| {
16548        match key {
16549          DucTextDynamicSourceData::DucTextDynamicElementSource => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucTextDynamicElementSource>>("DucTextDynamicSourceData::DucTextDynamicElementSource", pos),
16550          DucTextDynamicSourceData::DucTextDynamicDictionarySource => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucTextDynamicDictionarySource>>("DucTextDynamicSourceData::DucTextDynamicDictionarySource", pos),
16551          _ => Ok(()),
16552        }
16553     })?
16554     .finish();
16555    Ok(())
16556  }
16557}
16558pub struct DucTextDynamicSourceArgs {
16559    pub text_source_type: Option<TEXT_FIELD_SOURCE_TYPE>,
16560    pub source_type: DucTextDynamicSourceData,
16561    pub source: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
16562}
16563impl<'a> Default for DucTextDynamicSourceArgs {
16564  #[inline]
16565  fn default() -> Self {
16566    DucTextDynamicSourceArgs {
16567      text_source_type: None,
16568      source_type: DucTextDynamicSourceData::NONE,
16569      source: None,
16570    }
16571  }
16572}
16573
16574pub struct DucTextDynamicSourceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16575  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16576  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16577}
16578impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextDynamicSourceBuilder<'a, 'b, A> {
16579  #[inline]
16580  pub fn add_text_source_type(&mut self, text_source_type: TEXT_FIELD_SOURCE_TYPE) {
16581    self.fbb_.push_slot_always::<TEXT_FIELD_SOURCE_TYPE>(DucTextDynamicSource::VT_TEXT_SOURCE_TYPE, text_source_type);
16582  }
16583  #[inline]
16584  pub fn add_source_type(&mut self, source_type: DucTextDynamicSourceData) {
16585    self.fbb_.push_slot::<DucTextDynamicSourceData>(DucTextDynamicSource::VT_SOURCE_TYPE, source_type, DucTextDynamicSourceData::NONE);
16586  }
16587  #[inline]
16588  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
16589    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextDynamicSource::VT_SOURCE, source);
16590  }
16591  #[inline]
16592  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextDynamicSourceBuilder<'a, 'b, A> {
16593    let start = _fbb.start_table();
16594    DucTextDynamicSourceBuilder {
16595      fbb_: _fbb,
16596      start_: start,
16597    }
16598  }
16599  #[inline]
16600  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextDynamicSource<'a>> {
16601    let o = self.fbb_.end_table(self.start_);
16602    flatbuffers::WIPOffset::new(o.value())
16603  }
16604}
16605
16606impl core::fmt::Debug for DucTextDynamicSource<'_> {
16607  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16608    let mut ds = f.debug_struct("DucTextDynamicSource");
16609      ds.field("text_source_type", &self.text_source_type());
16610      ds.field("source_type", &self.source_type());
16611      match self.source_type() {
16612        DucTextDynamicSourceData::DucTextDynamicElementSource => {
16613          if let Some(x) = self.source_as_duc_text_dynamic_element_source() {
16614            ds.field("source", &x)
16615          } else {
16616            ds.field("source", &"InvalidFlatbuffer: Union discriminant does not match value.")
16617          }
16618        },
16619        DucTextDynamicSourceData::DucTextDynamicDictionarySource => {
16620          if let Some(x) = self.source_as_duc_text_dynamic_dictionary_source() {
16621            ds.field("source", &x)
16622          } else {
16623            ds.field("source", &"InvalidFlatbuffer: Union discriminant does not match value.")
16624          }
16625        },
16626        _ => {
16627          let x: Option<()> = None;
16628          ds.field("source", &x)
16629        },
16630      };
16631      ds.finish()
16632  }
16633}
16634pub enum DucTextDynamicPartOffset {}
16635#[derive(Copy, Clone, PartialEq)]
16636
16637pub struct DucTextDynamicPart<'a> {
16638  pub _tab: flatbuffers::Table<'a>,
16639}
16640
16641impl<'a> flatbuffers::Follow<'a> for DucTextDynamicPart<'a> {
16642  type Inner = DucTextDynamicPart<'a>;
16643  #[inline]
16644  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16645    Self { _tab: flatbuffers::Table::new(buf, loc) }
16646  }
16647}
16648
16649impl<'a> DucTextDynamicPart<'a> {
16650  pub const VT_TAG: flatbuffers::VOffsetT = 4;
16651  pub const VT_SOURCE: flatbuffers::VOffsetT = 6;
16652  pub const VT_FORMATTING: flatbuffers::VOffsetT = 8;
16653  pub const VT_CACHED_VALUE: flatbuffers::VOffsetT = 10;
16654
16655  #[inline]
16656  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16657    DucTextDynamicPart { _tab: table }
16658  }
16659  #[allow(unused_mut)]
16660  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16661    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16662    args: &'args DucTextDynamicPartArgs<'args>
16663  ) -> flatbuffers::WIPOffset<DucTextDynamicPart<'bldr>> {
16664    let mut builder = DucTextDynamicPartBuilder::new(_fbb);
16665    if let Some(x) = args.cached_value { builder.add_cached_value(x); }
16666    if let Some(x) = args.formatting { builder.add_formatting(x); }
16667    if let Some(x) = args.source { builder.add_source(x); }
16668    if let Some(x) = args.tag { builder.add_tag(x); }
16669    builder.finish()
16670  }
16671
16672
16673  #[inline]
16674  pub fn tag(&self) -> Option<&'a str> {
16675    // Safety:
16676    // Created from valid Table for this object
16677    // which contains a valid value in this slot
16678    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextDynamicPart::VT_TAG, None)}
16679  }
16680  #[inline]
16681  pub fn source(&self) -> Option<DucTextDynamicSource<'a>> {
16682    // Safety:
16683    // Created from valid Table for this object
16684    // which contains a valid value in this slot
16685    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextDynamicSource>>(DucTextDynamicPart::VT_SOURCE, None)}
16686  }
16687  #[inline]
16688  pub fn formatting(&self) -> Option<PrimaryUnits<'a>> {
16689    // Safety:
16690    // Created from valid Table for this object
16691    // which contains a valid value in this slot
16692    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PrimaryUnits>>(DucTextDynamicPart::VT_FORMATTING, None)}
16693  }
16694  #[inline]
16695  pub fn cached_value(&self) -> Option<&'a str> {
16696    // Safety:
16697    // Created from valid Table for this object
16698    // which contains a valid value in this slot
16699    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextDynamicPart::VT_CACHED_VALUE, None)}
16700  }
16701}
16702
16703impl flatbuffers::Verifiable for DucTextDynamicPart<'_> {
16704  #[inline]
16705  fn run_verifier(
16706    v: &mut flatbuffers::Verifier, pos: usize
16707  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16708    use self::flatbuffers::Verifiable;
16709    v.visit_table(pos)?
16710     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("tag", Self::VT_TAG, false)?
16711     .visit_field::<flatbuffers::ForwardsUOffset<DucTextDynamicSource>>("source", Self::VT_SOURCE, false)?
16712     .visit_field::<flatbuffers::ForwardsUOffset<PrimaryUnits>>("formatting", Self::VT_FORMATTING, false)?
16713     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("cached_value", Self::VT_CACHED_VALUE, false)?
16714     .finish();
16715    Ok(())
16716  }
16717}
16718pub struct DucTextDynamicPartArgs<'a> {
16719    pub tag: Option<flatbuffers::WIPOffset<&'a str>>,
16720    pub source: Option<flatbuffers::WIPOffset<DucTextDynamicSource<'a>>>,
16721    pub formatting: Option<flatbuffers::WIPOffset<PrimaryUnits<'a>>>,
16722    pub cached_value: Option<flatbuffers::WIPOffset<&'a str>>,
16723}
16724impl<'a> Default for DucTextDynamicPartArgs<'a> {
16725  #[inline]
16726  fn default() -> Self {
16727    DucTextDynamicPartArgs {
16728      tag: None,
16729      source: None,
16730      formatting: None,
16731      cached_value: None,
16732    }
16733  }
16734}
16735
16736pub struct DucTextDynamicPartBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16737  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16738  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16739}
16740impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextDynamicPartBuilder<'a, 'b, A> {
16741  #[inline]
16742  pub fn add_tag(&mut self, tag: flatbuffers::WIPOffset<&'b  str>) {
16743    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextDynamicPart::VT_TAG, tag);
16744  }
16745  #[inline]
16746  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<DucTextDynamicSource<'b >>) {
16747    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextDynamicSource>>(DucTextDynamicPart::VT_SOURCE, source);
16748  }
16749  #[inline]
16750  pub fn add_formatting(&mut self, formatting: flatbuffers::WIPOffset<PrimaryUnits<'b >>) {
16751    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PrimaryUnits>>(DucTextDynamicPart::VT_FORMATTING, formatting);
16752  }
16753  #[inline]
16754  pub fn add_cached_value(&mut self, cached_value: flatbuffers::WIPOffset<&'b  str>) {
16755    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextDynamicPart::VT_CACHED_VALUE, cached_value);
16756  }
16757  #[inline]
16758  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextDynamicPartBuilder<'a, 'b, A> {
16759    let start = _fbb.start_table();
16760    DucTextDynamicPartBuilder {
16761      fbb_: _fbb,
16762      start_: start,
16763    }
16764  }
16765  #[inline]
16766  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextDynamicPart<'a>> {
16767    let o = self.fbb_.end_table(self.start_);
16768    flatbuffers::WIPOffset::new(o.value())
16769  }
16770}
16771
16772impl core::fmt::Debug for DucTextDynamicPart<'_> {
16773  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16774    let mut ds = f.debug_struct("DucTextDynamicPart");
16775      ds.field("tag", &self.tag());
16776      ds.field("source", &self.source());
16777      ds.field("formatting", &self.formatting());
16778      ds.field("cached_value", &self.cached_value());
16779      ds.finish()
16780  }
16781}
16782pub enum DucTextElementOffset {}
16783#[derive(Copy, Clone, PartialEq)]
16784
16785pub struct DucTextElement<'a> {
16786  pub _tab: flatbuffers::Table<'a>,
16787}
16788
16789impl<'a> flatbuffers::Follow<'a> for DucTextElement<'a> {
16790  type Inner = DucTextElement<'a>;
16791  #[inline]
16792  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16793    Self { _tab: flatbuffers::Table::new(buf, loc) }
16794  }
16795}
16796
16797impl<'a> DucTextElement<'a> {
16798  pub const VT_BASE: flatbuffers::VOffsetT = 4;
16799  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
16800  pub const VT_TEXT: flatbuffers::VOffsetT = 8;
16801  pub const VT_DYNAMIC: flatbuffers::VOffsetT = 10;
16802  pub const VT_AUTO_RESIZE: flatbuffers::VOffsetT = 12;
16803  pub const VT_CONTAINER_ID: flatbuffers::VOffsetT = 14;
16804  pub const VT_ORIGINAL_TEXT: flatbuffers::VOffsetT = 16;
16805
16806  #[inline]
16807  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
16808    DucTextElement { _tab: table }
16809  }
16810  #[allow(unused_mut)]
16811  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
16812    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
16813    args: &'args DucTextElementArgs<'args>
16814  ) -> flatbuffers::WIPOffset<DucTextElement<'bldr>> {
16815    let mut builder = DucTextElementBuilder::new(_fbb);
16816    if let Some(x) = args.original_text { builder.add_original_text(x); }
16817    if let Some(x) = args.container_id { builder.add_container_id(x); }
16818    if let Some(x) = args.dynamic { builder.add_dynamic(x); }
16819    if let Some(x) = args.text { builder.add_text(x); }
16820    if let Some(x) = args.style { builder.add_style(x); }
16821    if let Some(x) = args.base { builder.add_base(x); }
16822    builder.add_auto_resize(args.auto_resize);
16823    builder.finish()
16824  }
16825
16826
16827  #[inline]
16828  pub fn base(&self) -> Option<_DucElementBase<'a>> {
16829    // Safety:
16830    // Created from valid Table for this object
16831    // which contains a valid value in this slot
16832    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucTextElement::VT_BASE, None)}
16833  }
16834  #[inline]
16835  pub fn style(&self) -> Option<DucTextStyle<'a>> {
16836    // Safety:
16837    // Created from valid Table for this object
16838    // which contains a valid value in this slot
16839    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(DucTextElement::VT_STYLE, None)}
16840  }
16841  #[inline]
16842  pub fn text(&self) -> Option<&'a str> {
16843    // Safety:
16844    // Created from valid Table for this object
16845    // which contains a valid value in this slot
16846    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextElement::VT_TEXT, None)}
16847  }
16848  #[inline]
16849  pub fn dynamic(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart<'a>>>> {
16850    // Safety:
16851    // Created from valid Table for this object
16852    // which contains a valid value in this slot
16853    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart>>>>(DucTextElement::VT_DYNAMIC, None)}
16854  }
16855  #[inline]
16856  pub fn auto_resize(&self) -> bool {
16857    // Safety:
16858    // Created from valid Table for this object
16859    // which contains a valid value in this slot
16860    unsafe { self._tab.get::<bool>(DucTextElement::VT_AUTO_RESIZE, Some(false)).unwrap()}
16861  }
16862  #[inline]
16863  pub fn container_id(&self) -> Option<&'a str> {
16864    // Safety:
16865    // Created from valid Table for this object
16866    // which contains a valid value in this slot
16867    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextElement::VT_CONTAINER_ID, None)}
16868  }
16869  #[inline]
16870  pub fn original_text(&self) -> Option<&'a str> {
16871    // Safety:
16872    // Created from valid Table for this object
16873    // which contains a valid value in this slot
16874    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucTextElement::VT_ORIGINAL_TEXT, None)}
16875  }
16876}
16877
16878impl flatbuffers::Verifiable for DucTextElement<'_> {
16879  #[inline]
16880  fn run_verifier(
16881    v: &mut flatbuffers::Verifier, pos: usize
16882  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
16883    use self::flatbuffers::Verifiable;
16884    v.visit_table(pos)?
16885     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
16886     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("style", Self::VT_STYLE, false)?
16887     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("text", Self::VT_TEXT, false)?
16888     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucTextDynamicPart>>>>("dynamic", Self::VT_DYNAMIC, false)?
16889     .visit_field::<bool>("auto_resize", Self::VT_AUTO_RESIZE, false)?
16890     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("container_id", Self::VT_CONTAINER_ID, false)?
16891     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("original_text", Self::VT_ORIGINAL_TEXT, false)?
16892     .finish();
16893    Ok(())
16894  }
16895}
16896pub struct DucTextElementArgs<'a> {
16897    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
16898    pub style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
16899    pub text: Option<flatbuffers::WIPOffset<&'a str>>,
16900    pub dynamic: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart<'a>>>>>,
16901    pub auto_resize: bool,
16902    pub container_id: Option<flatbuffers::WIPOffset<&'a str>>,
16903    pub original_text: Option<flatbuffers::WIPOffset<&'a str>>,
16904}
16905impl<'a> Default for DucTextElementArgs<'a> {
16906  #[inline]
16907  fn default() -> Self {
16908    DucTextElementArgs {
16909      base: None,
16910      style: None,
16911      text: None,
16912      dynamic: None,
16913      auto_resize: false,
16914      container_id: None,
16915      original_text: None,
16916    }
16917  }
16918}
16919
16920pub struct DucTextElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
16921  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
16922  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
16923}
16924impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucTextElementBuilder<'a, 'b, A> {
16925  #[inline]
16926  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
16927    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucTextElement::VT_BASE, base);
16928  }
16929  #[inline]
16930  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
16931    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(DucTextElement::VT_STYLE, style);
16932  }
16933  #[inline]
16934  pub fn add_text(&mut self, text: flatbuffers::WIPOffset<&'b  str>) {
16935    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextElement::VT_TEXT, text);
16936  }
16937  #[inline]
16938  pub fn add_dynamic(&mut self, dynamic: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucTextDynamicPart<'b >>>>) {
16939    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextElement::VT_DYNAMIC, dynamic);
16940  }
16941  #[inline]
16942  pub fn add_auto_resize(&mut self, auto_resize: bool) {
16943    self.fbb_.push_slot::<bool>(DucTextElement::VT_AUTO_RESIZE, auto_resize, false);
16944  }
16945  #[inline]
16946  pub fn add_container_id(&mut self, container_id: flatbuffers::WIPOffset<&'b  str>) {
16947    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextElement::VT_CONTAINER_ID, container_id);
16948  }
16949  #[inline]
16950  pub fn add_original_text(&mut self, original_text: flatbuffers::WIPOffset<&'b  str>) {
16951    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucTextElement::VT_ORIGINAL_TEXT, original_text);
16952  }
16953  #[inline]
16954  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucTextElementBuilder<'a, 'b, A> {
16955    let start = _fbb.start_table();
16956    DucTextElementBuilder {
16957      fbb_: _fbb,
16958      start_: start,
16959    }
16960  }
16961  #[inline]
16962  pub fn finish(self) -> flatbuffers::WIPOffset<DucTextElement<'a>> {
16963    let o = self.fbb_.end_table(self.start_);
16964    flatbuffers::WIPOffset::new(o.value())
16965  }
16966}
16967
16968impl core::fmt::Debug for DucTextElement<'_> {
16969  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16970    let mut ds = f.debug_struct("DucTextElement");
16971      ds.field("base", &self.base());
16972      ds.field("style", &self.style());
16973      ds.field("text", &self.text());
16974      ds.field("dynamic", &self.dynamic());
16975      ds.field("auto_resize", &self.auto_resize());
16976      ds.field("container_id", &self.container_id());
16977      ds.field("original_text", &self.original_text());
16978      ds.finish()
16979  }
16980}
16981pub enum DucLinearElementOffset {}
16982#[derive(Copy, Clone, PartialEq)]
16983
16984pub struct DucLinearElement<'a> {
16985  pub _tab: flatbuffers::Table<'a>,
16986}
16987
16988impl<'a> flatbuffers::Follow<'a> for DucLinearElement<'a> {
16989  type Inner = DucLinearElement<'a>;
16990  #[inline]
16991  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
16992    Self { _tab: flatbuffers::Table::new(buf, loc) }
16993  }
16994}
16995
16996impl<'a> DucLinearElement<'a> {
16997  pub const VT_LINEAR_BASE: flatbuffers::VOffsetT = 4;
16998  pub const VT_WIPEOUT_BELOW: flatbuffers::VOffsetT = 6;
16999
17000  #[inline]
17001  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17002    DucLinearElement { _tab: table }
17003  }
17004  #[allow(unused_mut)]
17005  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17006    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17007    args: &'args DucLinearElementArgs<'args>
17008  ) -> flatbuffers::WIPOffset<DucLinearElement<'bldr>> {
17009    let mut builder = DucLinearElementBuilder::new(_fbb);
17010    if let Some(x) = args.linear_base { builder.add_linear_base(x); }
17011    builder.add_wipeout_below(args.wipeout_below);
17012    builder.finish()
17013  }
17014
17015
17016  #[inline]
17017  pub fn linear_base(&self) -> Option<_DucLinearElementBase<'a>> {
17018    // Safety:
17019    // Created from valid Table for this object
17020    // which contains a valid value in this slot
17021    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>(DucLinearElement::VT_LINEAR_BASE, None)}
17022  }
17023  #[inline]
17024  pub fn wipeout_below(&self) -> bool {
17025    // Safety:
17026    // Created from valid Table for this object
17027    // which contains a valid value in this slot
17028    unsafe { self._tab.get::<bool>(DucLinearElement::VT_WIPEOUT_BELOW, Some(false)).unwrap()}
17029  }
17030}
17031
17032impl flatbuffers::Verifiable for DucLinearElement<'_> {
17033  #[inline]
17034  fn run_verifier(
17035    v: &mut flatbuffers::Verifier, pos: usize
17036  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17037    use self::flatbuffers::Verifiable;
17038    v.visit_table(pos)?
17039     .visit_field::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>("linear_base", Self::VT_LINEAR_BASE, false)?
17040     .visit_field::<bool>("wipeout_below", Self::VT_WIPEOUT_BELOW, false)?
17041     .finish();
17042    Ok(())
17043  }
17044}
17045pub struct DucLinearElementArgs<'a> {
17046    pub linear_base: Option<flatbuffers::WIPOffset<_DucLinearElementBase<'a>>>,
17047    pub wipeout_below: bool,
17048}
17049impl<'a> Default for DucLinearElementArgs<'a> {
17050  #[inline]
17051  fn default() -> Self {
17052    DucLinearElementArgs {
17053      linear_base: None,
17054      wipeout_below: false,
17055    }
17056  }
17057}
17058
17059pub struct DucLinearElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17060  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17061  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17062}
17063impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLinearElementBuilder<'a, 'b, A> {
17064  #[inline]
17065  pub fn add_linear_base(&mut self, linear_base: flatbuffers::WIPOffset<_DucLinearElementBase<'b >>) {
17066    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucLinearElementBase>>(DucLinearElement::VT_LINEAR_BASE, linear_base);
17067  }
17068  #[inline]
17069  pub fn add_wipeout_below(&mut self, wipeout_below: bool) {
17070    self.fbb_.push_slot::<bool>(DucLinearElement::VT_WIPEOUT_BELOW, wipeout_below, false);
17071  }
17072  #[inline]
17073  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLinearElementBuilder<'a, 'b, A> {
17074    let start = _fbb.start_table();
17075    DucLinearElementBuilder {
17076      fbb_: _fbb,
17077      start_: start,
17078    }
17079  }
17080  #[inline]
17081  pub fn finish(self) -> flatbuffers::WIPOffset<DucLinearElement<'a>> {
17082    let o = self.fbb_.end_table(self.start_);
17083    flatbuffers::WIPOffset::new(o.value())
17084  }
17085}
17086
17087impl core::fmt::Debug for DucLinearElement<'_> {
17088  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17089    let mut ds = f.debug_struct("DucLinearElement");
17090      ds.field("linear_base", &self.linear_base());
17091      ds.field("wipeout_below", &self.wipeout_below());
17092      ds.finish()
17093  }
17094}
17095pub enum DucArrowElementOffset {}
17096#[derive(Copy, Clone, PartialEq)]
17097
17098pub struct DucArrowElement<'a> {
17099  pub _tab: flatbuffers::Table<'a>,
17100}
17101
17102impl<'a> flatbuffers::Follow<'a> for DucArrowElement<'a> {
17103  type Inner = DucArrowElement<'a>;
17104  #[inline]
17105  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17106    Self { _tab: flatbuffers::Table::new(buf, loc) }
17107  }
17108}
17109
17110impl<'a> DucArrowElement<'a> {
17111  pub const VT_LINEAR_BASE: flatbuffers::VOffsetT = 4;
17112  pub const VT_ELBOWED: flatbuffers::VOffsetT = 6;
17113
17114  #[inline]
17115  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17116    DucArrowElement { _tab: table }
17117  }
17118  #[allow(unused_mut)]
17119  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17120    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17121    args: &'args DucArrowElementArgs<'args>
17122  ) -> flatbuffers::WIPOffset<DucArrowElement<'bldr>> {
17123    let mut builder = DucArrowElementBuilder::new(_fbb);
17124    if let Some(x) = args.linear_base { builder.add_linear_base(x); }
17125    builder.add_elbowed(args.elbowed);
17126    builder.finish()
17127  }
17128
17129
17130  #[inline]
17131  pub fn linear_base(&self) -> Option<_DucLinearElementBase<'a>> {
17132    // Safety:
17133    // Created from valid Table for this object
17134    // which contains a valid value in this slot
17135    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>(DucArrowElement::VT_LINEAR_BASE, None)}
17136  }
17137  #[inline]
17138  pub fn elbowed(&self) -> bool {
17139    // Safety:
17140    // Created from valid Table for this object
17141    // which contains a valid value in this slot
17142    unsafe { self._tab.get::<bool>(DucArrowElement::VT_ELBOWED, Some(false)).unwrap()}
17143  }
17144}
17145
17146impl flatbuffers::Verifiable for DucArrowElement<'_> {
17147  #[inline]
17148  fn run_verifier(
17149    v: &mut flatbuffers::Verifier, pos: usize
17150  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17151    use self::flatbuffers::Verifiable;
17152    v.visit_table(pos)?
17153     .visit_field::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>("linear_base", Self::VT_LINEAR_BASE, false)?
17154     .visit_field::<bool>("elbowed", Self::VT_ELBOWED, false)?
17155     .finish();
17156    Ok(())
17157  }
17158}
17159pub struct DucArrowElementArgs<'a> {
17160    pub linear_base: Option<flatbuffers::WIPOffset<_DucLinearElementBase<'a>>>,
17161    pub elbowed: bool,
17162}
17163impl<'a> Default for DucArrowElementArgs<'a> {
17164  #[inline]
17165  fn default() -> Self {
17166    DucArrowElementArgs {
17167      linear_base: None,
17168      elbowed: false,
17169    }
17170  }
17171}
17172
17173pub struct DucArrowElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17174  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17175  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17176}
17177impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucArrowElementBuilder<'a, 'b, A> {
17178  #[inline]
17179  pub fn add_linear_base(&mut self, linear_base: flatbuffers::WIPOffset<_DucLinearElementBase<'b >>) {
17180    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucLinearElementBase>>(DucArrowElement::VT_LINEAR_BASE, linear_base);
17181  }
17182  #[inline]
17183  pub fn add_elbowed(&mut self, elbowed: bool) {
17184    self.fbb_.push_slot::<bool>(DucArrowElement::VT_ELBOWED, elbowed, false);
17185  }
17186  #[inline]
17187  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucArrowElementBuilder<'a, 'b, A> {
17188    let start = _fbb.start_table();
17189    DucArrowElementBuilder {
17190      fbb_: _fbb,
17191      start_: start,
17192    }
17193  }
17194  #[inline]
17195  pub fn finish(self) -> flatbuffers::WIPOffset<DucArrowElement<'a>> {
17196    let o = self.fbb_.end_table(self.start_);
17197    flatbuffers::WIPOffset::new(o.value())
17198  }
17199}
17200
17201impl core::fmt::Debug for DucArrowElement<'_> {
17202  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17203    let mut ds = f.debug_struct("DucArrowElement");
17204      ds.field("linear_base", &self.linear_base());
17205      ds.field("elbowed", &self.elbowed());
17206      ds.finish()
17207  }
17208}
17209pub enum DucFreeDrawEndsOffset {}
17210#[derive(Copy, Clone, PartialEq)]
17211
17212pub struct DucFreeDrawEnds<'a> {
17213  pub _tab: flatbuffers::Table<'a>,
17214}
17215
17216impl<'a> flatbuffers::Follow<'a> for DucFreeDrawEnds<'a> {
17217  type Inner = DucFreeDrawEnds<'a>;
17218  #[inline]
17219  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17220    Self { _tab: flatbuffers::Table::new(buf, loc) }
17221  }
17222}
17223
17224impl<'a> DucFreeDrawEnds<'a> {
17225  pub const VT_CAP: flatbuffers::VOffsetT = 4;
17226  pub const VT_TAPER: flatbuffers::VOffsetT = 6;
17227  pub const VT_EASING: flatbuffers::VOffsetT = 8;
17228
17229  #[inline]
17230  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17231    DucFreeDrawEnds { _tab: table }
17232  }
17233  #[allow(unused_mut)]
17234  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17235    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17236    args: &'args DucFreeDrawEndsArgs<'args>
17237  ) -> flatbuffers::WIPOffset<DucFreeDrawEnds<'bldr>> {
17238    let mut builder = DucFreeDrawEndsBuilder::new(_fbb);
17239    if let Some(x) = args.easing { builder.add_easing(x); }
17240    builder.add_taper(args.taper);
17241    builder.add_cap(args.cap);
17242    builder.finish()
17243  }
17244
17245
17246  #[inline]
17247  pub fn cap(&self) -> bool {
17248    // Safety:
17249    // Created from valid Table for this object
17250    // which contains a valid value in this slot
17251    unsafe { self._tab.get::<bool>(DucFreeDrawEnds::VT_CAP, Some(false)).unwrap()}
17252  }
17253  #[inline]
17254  pub fn taper(&self) -> f32 {
17255    // Safety:
17256    // Created from valid Table for this object
17257    // which contains a valid value in this slot
17258    unsafe { self._tab.get::<f32>(DucFreeDrawEnds::VT_TAPER, Some(0.0)).unwrap()}
17259  }
17260  #[inline]
17261  pub fn easing(&self) -> Option<&'a str> {
17262    // Safety:
17263    // Created from valid Table for this object
17264    // which contains a valid value in this slot
17265    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucFreeDrawEnds::VT_EASING, None)}
17266  }
17267}
17268
17269impl flatbuffers::Verifiable for DucFreeDrawEnds<'_> {
17270  #[inline]
17271  fn run_verifier(
17272    v: &mut flatbuffers::Verifier, pos: usize
17273  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17274    use self::flatbuffers::Verifiable;
17275    v.visit_table(pos)?
17276     .visit_field::<bool>("cap", Self::VT_CAP, false)?
17277     .visit_field::<f32>("taper", Self::VT_TAPER, false)?
17278     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("easing", Self::VT_EASING, false)?
17279     .finish();
17280    Ok(())
17281  }
17282}
17283pub struct DucFreeDrawEndsArgs<'a> {
17284    pub cap: bool,
17285    pub taper: f32,
17286    pub easing: Option<flatbuffers::WIPOffset<&'a str>>,
17287}
17288impl<'a> Default for DucFreeDrawEndsArgs<'a> {
17289  #[inline]
17290  fn default() -> Self {
17291    DucFreeDrawEndsArgs {
17292      cap: false,
17293      taper: 0.0,
17294      easing: None,
17295    }
17296  }
17297}
17298
17299pub struct DucFreeDrawEndsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17300  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17301  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17302}
17303impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucFreeDrawEndsBuilder<'a, 'b, A> {
17304  #[inline]
17305  pub fn add_cap(&mut self, cap: bool) {
17306    self.fbb_.push_slot::<bool>(DucFreeDrawEnds::VT_CAP, cap, false);
17307  }
17308  #[inline]
17309  pub fn add_taper(&mut self, taper: f32) {
17310    self.fbb_.push_slot::<f32>(DucFreeDrawEnds::VT_TAPER, taper, 0.0);
17311  }
17312  #[inline]
17313  pub fn add_easing(&mut self, easing: flatbuffers::WIPOffset<&'b  str>) {
17314    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFreeDrawEnds::VT_EASING, easing);
17315  }
17316  #[inline]
17317  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucFreeDrawEndsBuilder<'a, 'b, A> {
17318    let start = _fbb.start_table();
17319    DucFreeDrawEndsBuilder {
17320      fbb_: _fbb,
17321      start_: start,
17322    }
17323  }
17324  #[inline]
17325  pub fn finish(self) -> flatbuffers::WIPOffset<DucFreeDrawEnds<'a>> {
17326    let o = self.fbb_.end_table(self.start_);
17327    flatbuffers::WIPOffset::new(o.value())
17328  }
17329}
17330
17331impl core::fmt::Debug for DucFreeDrawEnds<'_> {
17332  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17333    let mut ds = f.debug_struct("DucFreeDrawEnds");
17334      ds.field("cap", &self.cap());
17335      ds.field("taper", &self.taper());
17336      ds.field("easing", &self.easing());
17337      ds.finish()
17338  }
17339}
17340pub enum DucFreeDrawElementOffset {}
17341#[derive(Copy, Clone, PartialEq)]
17342
17343pub struct DucFreeDrawElement<'a> {
17344  pub _tab: flatbuffers::Table<'a>,
17345}
17346
17347impl<'a> flatbuffers::Follow<'a> for DucFreeDrawElement<'a> {
17348  type Inner = DucFreeDrawElement<'a>;
17349  #[inline]
17350  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17351    Self { _tab: flatbuffers::Table::new(buf, loc) }
17352  }
17353}
17354
17355impl<'a> DucFreeDrawElement<'a> {
17356  pub const VT_BASE: flatbuffers::VOffsetT = 4;
17357  pub const VT_POINTS: flatbuffers::VOffsetT = 6;
17358  pub const VT_SIZE: flatbuffers::VOffsetT = 8;
17359  pub const VT_THINNING: flatbuffers::VOffsetT = 10;
17360  pub const VT_SMOOTHING: flatbuffers::VOffsetT = 12;
17361  pub const VT_STREAMLINE: flatbuffers::VOffsetT = 14;
17362  pub const VT_EASING: flatbuffers::VOffsetT = 16;
17363  pub const VT_START: flatbuffers::VOffsetT = 18;
17364  pub const VT_END: flatbuffers::VOffsetT = 20;
17365  pub const VT_PRESSURES: flatbuffers::VOffsetT = 22;
17366  pub const VT_SIMULATE_PRESSURE: flatbuffers::VOffsetT = 24;
17367  pub const VT_LAST_COMMITTED_POINT: flatbuffers::VOffsetT = 26;
17368  pub const VT_SVG_PATH: flatbuffers::VOffsetT = 28;
17369
17370  #[inline]
17371  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17372    DucFreeDrawElement { _tab: table }
17373  }
17374  #[allow(unused_mut)]
17375  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17376    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17377    args: &'args DucFreeDrawElementArgs<'args>
17378  ) -> flatbuffers::WIPOffset<DucFreeDrawElement<'bldr>> {
17379    let mut builder = DucFreeDrawElementBuilder::new(_fbb);
17380    builder.add_size(args.size);
17381    if let Some(x) = args.svg_path { builder.add_svg_path(x); }
17382    if let Some(x) = args.last_committed_point { builder.add_last_committed_point(x); }
17383    if let Some(x) = args.pressures { builder.add_pressures(x); }
17384    if let Some(x) = args.end { builder.add_end(x); }
17385    if let Some(x) = args.start { builder.add_start(x); }
17386    if let Some(x) = args.easing { builder.add_easing(x); }
17387    builder.add_streamline(args.streamline);
17388    builder.add_smoothing(args.smoothing);
17389    builder.add_thinning(args.thinning);
17390    if let Some(x) = args.points { builder.add_points(x); }
17391    if let Some(x) = args.base { builder.add_base(x); }
17392    builder.add_simulate_pressure(args.simulate_pressure);
17393    builder.finish()
17394  }
17395
17396
17397  #[inline]
17398  pub fn base(&self) -> Option<_DucElementBase<'a>> {
17399    // Safety:
17400    // Created from valid Table for this object
17401    // which contains a valid value in this slot
17402    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucFreeDrawElement::VT_BASE, None)}
17403  }
17404  #[inline]
17405  pub fn points(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint<'a>>>> {
17406    // Safety:
17407    // Created from valid Table for this object
17408    // which contains a valid value in this slot
17409    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint>>>>(DucFreeDrawElement::VT_POINTS, None)}
17410  }
17411  #[inline]
17412  pub fn size(&self) -> f64 {
17413    // Safety:
17414    // Created from valid Table for this object
17415    // which contains a valid value in this slot
17416    unsafe { self._tab.get::<f64>(DucFreeDrawElement::VT_SIZE, Some(0.0)).unwrap()}
17417  }
17418  #[inline]
17419  pub fn thinning(&self) -> f32 {
17420    // Safety:
17421    // Created from valid Table for this object
17422    // which contains a valid value in this slot
17423    unsafe { self._tab.get::<f32>(DucFreeDrawElement::VT_THINNING, Some(0.0)).unwrap()}
17424  }
17425  #[inline]
17426  pub fn smoothing(&self) -> f32 {
17427    // Safety:
17428    // Created from valid Table for this object
17429    // which contains a valid value in this slot
17430    unsafe { self._tab.get::<f32>(DucFreeDrawElement::VT_SMOOTHING, Some(0.0)).unwrap()}
17431  }
17432  #[inline]
17433  pub fn streamline(&self) -> f32 {
17434    // Safety:
17435    // Created from valid Table for this object
17436    // which contains a valid value in this slot
17437    unsafe { self._tab.get::<f32>(DucFreeDrawElement::VT_STREAMLINE, Some(0.0)).unwrap()}
17438  }
17439  #[inline]
17440  pub fn easing(&self) -> Option<&'a str> {
17441    // Safety:
17442    // Created from valid Table for this object
17443    // which contains a valid value in this slot
17444    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucFreeDrawElement::VT_EASING, None)}
17445  }
17446  #[inline]
17447  pub fn start(&self) -> Option<DucFreeDrawEnds<'a>> {
17448    // Safety:
17449    // Created from valid Table for this object
17450    // which contains a valid value in this slot
17451    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucFreeDrawEnds>>(DucFreeDrawElement::VT_START, None)}
17452  }
17453  #[inline]
17454  pub fn end(&self) -> Option<DucFreeDrawEnds<'a>> {
17455    // Safety:
17456    // Created from valid Table for this object
17457    // which contains a valid value in this slot
17458    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucFreeDrawEnds>>(DucFreeDrawElement::VT_END, None)}
17459  }
17460  #[inline]
17461  pub fn pressures(&self) -> Option<flatbuffers::Vector<'a, f32>> {
17462    // Safety:
17463    // Created from valid Table for this object
17464    // which contains a valid value in this slot
17465    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f32>>>(DucFreeDrawElement::VT_PRESSURES, None)}
17466  }
17467  #[inline]
17468  pub fn simulate_pressure(&self) -> bool {
17469    // Safety:
17470    // Created from valid Table for this object
17471    // which contains a valid value in this slot
17472    unsafe { self._tab.get::<bool>(DucFreeDrawElement::VT_SIMULATE_PRESSURE, Some(false)).unwrap()}
17473  }
17474  #[inline]
17475  pub fn last_committed_point(&self) -> Option<DucPoint<'a>> {
17476    // Safety:
17477    // Created from valid Table for this object
17478    // which contains a valid value in this slot
17479    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(DucFreeDrawElement::VT_LAST_COMMITTED_POINT, None)}
17480  }
17481  #[inline]
17482  pub fn svg_path(&self) -> Option<&'a str> {
17483    // Safety:
17484    // Created from valid Table for this object
17485    // which contains a valid value in this slot
17486    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucFreeDrawElement::VT_SVG_PATH, None)}
17487  }
17488}
17489
17490impl flatbuffers::Verifiable for DucFreeDrawElement<'_> {
17491  #[inline]
17492  fn run_verifier(
17493    v: &mut flatbuffers::Verifier, pos: usize
17494  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17495    use self::flatbuffers::Verifiable;
17496    v.visit_table(pos)?
17497     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
17498     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucPoint>>>>("points", Self::VT_POINTS, false)?
17499     .visit_field::<f64>("size", Self::VT_SIZE, false)?
17500     .visit_field::<f32>("thinning", Self::VT_THINNING, false)?
17501     .visit_field::<f32>("smoothing", Self::VT_SMOOTHING, false)?
17502     .visit_field::<f32>("streamline", Self::VT_STREAMLINE, false)?
17503     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("easing", Self::VT_EASING, false)?
17504     .visit_field::<flatbuffers::ForwardsUOffset<DucFreeDrawEnds>>("start", Self::VT_START, false)?
17505     .visit_field::<flatbuffers::ForwardsUOffset<DucFreeDrawEnds>>("end", Self::VT_END, false)?
17506     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f32>>>("pressures", Self::VT_PRESSURES, false)?
17507     .visit_field::<bool>("simulate_pressure", Self::VT_SIMULATE_PRESSURE, false)?
17508     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("last_committed_point", Self::VT_LAST_COMMITTED_POINT, false)?
17509     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("svg_path", Self::VT_SVG_PATH, false)?
17510     .finish();
17511    Ok(())
17512  }
17513}
17514pub struct DucFreeDrawElementArgs<'a> {
17515    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
17516    pub points: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucPoint<'a>>>>>,
17517    pub size: f64,
17518    pub thinning: f32,
17519    pub smoothing: f32,
17520    pub streamline: f32,
17521    pub easing: Option<flatbuffers::WIPOffset<&'a str>>,
17522    pub start: Option<flatbuffers::WIPOffset<DucFreeDrawEnds<'a>>>,
17523    pub end: Option<flatbuffers::WIPOffset<DucFreeDrawEnds<'a>>>,
17524    pub pressures: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f32>>>,
17525    pub simulate_pressure: bool,
17526    pub last_committed_point: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
17527    pub svg_path: Option<flatbuffers::WIPOffset<&'a str>>,
17528}
17529impl<'a> Default for DucFreeDrawElementArgs<'a> {
17530  #[inline]
17531  fn default() -> Self {
17532    DucFreeDrawElementArgs {
17533      base: None,
17534      points: None,
17535      size: 0.0,
17536      thinning: 0.0,
17537      smoothing: 0.0,
17538      streamline: 0.0,
17539      easing: None,
17540      start: None,
17541      end: None,
17542      pressures: None,
17543      simulate_pressure: false,
17544      last_committed_point: None,
17545      svg_path: None,
17546    }
17547  }
17548}
17549
17550pub struct DucFreeDrawElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17551  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17552  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17553}
17554impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucFreeDrawElementBuilder<'a, 'b, A> {
17555  #[inline]
17556  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
17557    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucFreeDrawElement::VT_BASE, base);
17558  }
17559  #[inline]
17560  pub fn add_points(&mut self, points: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucPoint<'b >>>>) {
17561    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFreeDrawElement::VT_POINTS, points);
17562  }
17563  #[inline]
17564  pub fn add_size(&mut self, size: f64) {
17565    self.fbb_.push_slot::<f64>(DucFreeDrawElement::VT_SIZE, size, 0.0);
17566  }
17567  #[inline]
17568  pub fn add_thinning(&mut self, thinning: f32) {
17569    self.fbb_.push_slot::<f32>(DucFreeDrawElement::VT_THINNING, thinning, 0.0);
17570  }
17571  #[inline]
17572  pub fn add_smoothing(&mut self, smoothing: f32) {
17573    self.fbb_.push_slot::<f32>(DucFreeDrawElement::VT_SMOOTHING, smoothing, 0.0);
17574  }
17575  #[inline]
17576  pub fn add_streamline(&mut self, streamline: f32) {
17577    self.fbb_.push_slot::<f32>(DucFreeDrawElement::VT_STREAMLINE, streamline, 0.0);
17578  }
17579  #[inline]
17580  pub fn add_easing(&mut self, easing: flatbuffers::WIPOffset<&'b  str>) {
17581    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFreeDrawElement::VT_EASING, easing);
17582  }
17583  #[inline]
17584  pub fn add_start(&mut self, start: flatbuffers::WIPOffset<DucFreeDrawEnds<'b >>) {
17585    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucFreeDrawEnds>>(DucFreeDrawElement::VT_START, start);
17586  }
17587  #[inline]
17588  pub fn add_end(&mut self, end: flatbuffers::WIPOffset<DucFreeDrawEnds<'b >>) {
17589    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucFreeDrawEnds>>(DucFreeDrawElement::VT_END, end);
17590  }
17591  #[inline]
17592  pub fn add_pressures(&mut self, pressures: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f32>>) {
17593    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFreeDrawElement::VT_PRESSURES, pressures);
17594  }
17595  #[inline]
17596  pub fn add_simulate_pressure(&mut self, simulate_pressure: bool) {
17597    self.fbb_.push_slot::<bool>(DucFreeDrawElement::VT_SIMULATE_PRESSURE, simulate_pressure, false);
17598  }
17599  #[inline]
17600  pub fn add_last_committed_point(&mut self, last_committed_point: flatbuffers::WIPOffset<DucPoint<'b >>) {
17601    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(DucFreeDrawElement::VT_LAST_COMMITTED_POINT, last_committed_point);
17602  }
17603  #[inline]
17604  pub fn add_svg_path(&mut self, svg_path: flatbuffers::WIPOffset<&'b  str>) {
17605    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFreeDrawElement::VT_SVG_PATH, svg_path);
17606  }
17607  #[inline]
17608  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucFreeDrawElementBuilder<'a, 'b, A> {
17609    let start = _fbb.start_table();
17610    DucFreeDrawElementBuilder {
17611      fbb_: _fbb,
17612      start_: start,
17613    }
17614  }
17615  #[inline]
17616  pub fn finish(self) -> flatbuffers::WIPOffset<DucFreeDrawElement<'a>> {
17617    let o = self.fbb_.end_table(self.start_);
17618    flatbuffers::WIPOffset::new(o.value())
17619  }
17620}
17621
17622impl core::fmt::Debug for DucFreeDrawElement<'_> {
17623  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17624    let mut ds = f.debug_struct("DucFreeDrawElement");
17625      ds.field("base", &self.base());
17626      ds.field("points", &self.points());
17627      ds.field("size", &self.size());
17628      ds.field("thinning", &self.thinning());
17629      ds.field("smoothing", &self.smoothing());
17630      ds.field("streamline", &self.streamline());
17631      ds.field("easing", &self.easing());
17632      ds.field("start", &self.start());
17633      ds.field("end", &self.end());
17634      ds.field("pressures", &self.pressures());
17635      ds.field("simulate_pressure", &self.simulate_pressure());
17636      ds.field("last_committed_point", &self.last_committed_point());
17637      ds.field("svg_path", &self.svg_path());
17638      ds.finish()
17639  }
17640}
17641pub enum DucBlockAttributeDefinitionOffset {}
17642#[derive(Copy, Clone, PartialEq)]
17643
17644pub struct DucBlockAttributeDefinition<'a> {
17645  pub _tab: flatbuffers::Table<'a>,
17646}
17647
17648impl<'a> flatbuffers::Follow<'a> for DucBlockAttributeDefinition<'a> {
17649  type Inner = DucBlockAttributeDefinition<'a>;
17650  #[inline]
17651  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17652    Self { _tab: flatbuffers::Table::new(buf, loc) }
17653  }
17654}
17655
17656impl<'a> DucBlockAttributeDefinition<'a> {
17657  pub const VT_TAG: flatbuffers::VOffsetT = 4;
17658  pub const VT_PROMPT: flatbuffers::VOffsetT = 6;
17659  pub const VT_DEFAULT_VALUE: flatbuffers::VOffsetT = 8;
17660  pub const VT_IS_CONSTANT: flatbuffers::VOffsetT = 10;
17661
17662  #[inline]
17663  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17664    DucBlockAttributeDefinition { _tab: table }
17665  }
17666  #[allow(unused_mut)]
17667  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17668    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17669    args: &'args DucBlockAttributeDefinitionArgs<'args>
17670  ) -> flatbuffers::WIPOffset<DucBlockAttributeDefinition<'bldr>> {
17671    let mut builder = DucBlockAttributeDefinitionBuilder::new(_fbb);
17672    if let Some(x) = args.default_value { builder.add_default_value(x); }
17673    if let Some(x) = args.prompt { builder.add_prompt(x); }
17674    if let Some(x) = args.tag { builder.add_tag(x); }
17675    builder.add_is_constant(args.is_constant);
17676    builder.finish()
17677  }
17678
17679
17680  #[inline]
17681  pub fn tag(&self) -> Option<&'a str> {
17682    // Safety:
17683    // Created from valid Table for this object
17684    // which contains a valid value in this slot
17685    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockAttributeDefinition::VT_TAG, None)}
17686  }
17687  #[inline]
17688  pub fn prompt(&self) -> Option<&'a str> {
17689    // Safety:
17690    // Created from valid Table for this object
17691    // which contains a valid value in this slot
17692    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockAttributeDefinition::VT_PROMPT, None)}
17693  }
17694  #[inline]
17695  pub fn default_value(&self) -> Option<&'a str> {
17696    // Safety:
17697    // Created from valid Table for this object
17698    // which contains a valid value in this slot
17699    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockAttributeDefinition::VT_DEFAULT_VALUE, None)}
17700  }
17701  #[inline]
17702  pub fn is_constant(&self) -> bool {
17703    // Safety:
17704    // Created from valid Table for this object
17705    // which contains a valid value in this slot
17706    unsafe { self._tab.get::<bool>(DucBlockAttributeDefinition::VT_IS_CONSTANT, Some(false)).unwrap()}
17707  }
17708}
17709
17710impl flatbuffers::Verifiable for DucBlockAttributeDefinition<'_> {
17711  #[inline]
17712  fn run_verifier(
17713    v: &mut flatbuffers::Verifier, pos: usize
17714  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17715    use self::flatbuffers::Verifiable;
17716    v.visit_table(pos)?
17717     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("tag", Self::VT_TAG, false)?
17718     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("prompt", Self::VT_PROMPT, false)?
17719     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("default_value", Self::VT_DEFAULT_VALUE, false)?
17720     .visit_field::<bool>("is_constant", Self::VT_IS_CONSTANT, false)?
17721     .finish();
17722    Ok(())
17723  }
17724}
17725pub struct DucBlockAttributeDefinitionArgs<'a> {
17726    pub tag: Option<flatbuffers::WIPOffset<&'a str>>,
17727    pub prompt: Option<flatbuffers::WIPOffset<&'a str>>,
17728    pub default_value: Option<flatbuffers::WIPOffset<&'a str>>,
17729    pub is_constant: bool,
17730}
17731impl<'a> Default for DucBlockAttributeDefinitionArgs<'a> {
17732  #[inline]
17733  fn default() -> Self {
17734    DucBlockAttributeDefinitionArgs {
17735      tag: None,
17736      prompt: None,
17737      default_value: None,
17738      is_constant: false,
17739    }
17740  }
17741}
17742
17743pub struct DucBlockAttributeDefinitionBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17744  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17745  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17746}
17747impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockAttributeDefinitionBuilder<'a, 'b, A> {
17748  #[inline]
17749  pub fn add_tag(&mut self, tag: flatbuffers::WIPOffset<&'b  str>) {
17750    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockAttributeDefinition::VT_TAG, tag);
17751  }
17752  #[inline]
17753  pub fn add_prompt(&mut self, prompt: flatbuffers::WIPOffset<&'b  str>) {
17754    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockAttributeDefinition::VT_PROMPT, prompt);
17755  }
17756  #[inline]
17757  pub fn add_default_value(&mut self, default_value: flatbuffers::WIPOffset<&'b  str>) {
17758    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockAttributeDefinition::VT_DEFAULT_VALUE, default_value);
17759  }
17760  #[inline]
17761  pub fn add_is_constant(&mut self, is_constant: bool) {
17762    self.fbb_.push_slot::<bool>(DucBlockAttributeDefinition::VT_IS_CONSTANT, is_constant, false);
17763  }
17764  #[inline]
17765  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockAttributeDefinitionBuilder<'a, 'b, A> {
17766    let start = _fbb.start_table();
17767    DucBlockAttributeDefinitionBuilder {
17768      fbb_: _fbb,
17769      start_: start,
17770    }
17771  }
17772  #[inline]
17773  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockAttributeDefinition<'a>> {
17774    let o = self.fbb_.end_table(self.start_);
17775    flatbuffers::WIPOffset::new(o.value())
17776  }
17777}
17778
17779impl core::fmt::Debug for DucBlockAttributeDefinition<'_> {
17780  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17781    let mut ds = f.debug_struct("DucBlockAttributeDefinition");
17782      ds.field("tag", &self.tag());
17783      ds.field("prompt", &self.prompt());
17784      ds.field("default_value", &self.default_value());
17785      ds.field("is_constant", &self.is_constant());
17786      ds.finish()
17787  }
17788}
17789pub enum DucBlockAttributeDefinitionEntryOffset {}
17790#[derive(Copy, Clone, PartialEq)]
17791
17792pub struct DucBlockAttributeDefinitionEntry<'a> {
17793  pub _tab: flatbuffers::Table<'a>,
17794}
17795
17796impl<'a> flatbuffers::Follow<'a> for DucBlockAttributeDefinitionEntry<'a> {
17797  type Inner = DucBlockAttributeDefinitionEntry<'a>;
17798  #[inline]
17799  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17800    Self { _tab: flatbuffers::Table::new(buf, loc) }
17801  }
17802}
17803
17804impl<'a> DucBlockAttributeDefinitionEntry<'a> {
17805  pub const VT_KEY: flatbuffers::VOffsetT = 4;
17806  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
17807
17808  #[inline]
17809  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17810    DucBlockAttributeDefinitionEntry { _tab: table }
17811  }
17812  #[allow(unused_mut)]
17813  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17814    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17815    args: &'args DucBlockAttributeDefinitionEntryArgs<'args>
17816  ) -> flatbuffers::WIPOffset<DucBlockAttributeDefinitionEntry<'bldr>> {
17817    let mut builder = DucBlockAttributeDefinitionEntryBuilder::new(_fbb);
17818    if let Some(x) = args.value { builder.add_value(x); }
17819    if let Some(x) = args.key { builder.add_key(x); }
17820    builder.finish()
17821  }
17822
17823
17824  #[inline]
17825  pub fn key(&self) -> &'a str {
17826    // Safety:
17827    // Created from valid Table for this object
17828    // which contains a valid value in this slot
17829    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockAttributeDefinitionEntry::VT_KEY, None).unwrap()}
17830  }
17831  #[inline]
17832  pub fn key_compare_less_than(&self, o: &DucBlockAttributeDefinitionEntry) -> bool {
17833    self.key() < o.key()
17834  }
17835
17836  #[inline]
17837  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
17838    let key = self.key();
17839    key.cmp(val)
17840  }
17841  #[inline]
17842  pub fn value(&self) -> Option<DucBlockAttributeDefinition<'a>> {
17843    // Safety:
17844    // Created from valid Table for this object
17845    // which contains a valid value in this slot
17846    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucBlockAttributeDefinition>>(DucBlockAttributeDefinitionEntry::VT_VALUE, None)}
17847  }
17848}
17849
17850impl flatbuffers::Verifiable for DucBlockAttributeDefinitionEntry<'_> {
17851  #[inline]
17852  fn run_verifier(
17853    v: &mut flatbuffers::Verifier, pos: usize
17854  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
17855    use self::flatbuffers::Verifiable;
17856    v.visit_table(pos)?
17857     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
17858     .visit_field::<flatbuffers::ForwardsUOffset<DucBlockAttributeDefinition>>("value", Self::VT_VALUE, false)?
17859     .finish();
17860    Ok(())
17861  }
17862}
17863pub struct DucBlockAttributeDefinitionEntryArgs<'a> {
17864    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
17865    pub value: Option<flatbuffers::WIPOffset<DucBlockAttributeDefinition<'a>>>,
17866}
17867impl<'a> Default for DucBlockAttributeDefinitionEntryArgs<'a> {
17868  #[inline]
17869  fn default() -> Self {
17870    DucBlockAttributeDefinitionEntryArgs {
17871      key: None, // required field
17872      value: None,
17873    }
17874  }
17875}
17876
17877pub struct DucBlockAttributeDefinitionEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
17878  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
17879  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
17880}
17881impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockAttributeDefinitionEntryBuilder<'a, 'b, A> {
17882  #[inline]
17883  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
17884    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockAttributeDefinitionEntry::VT_KEY, key);
17885  }
17886  #[inline]
17887  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<DucBlockAttributeDefinition<'b >>) {
17888    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucBlockAttributeDefinition>>(DucBlockAttributeDefinitionEntry::VT_VALUE, value);
17889  }
17890  #[inline]
17891  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockAttributeDefinitionEntryBuilder<'a, 'b, A> {
17892    let start = _fbb.start_table();
17893    DucBlockAttributeDefinitionEntryBuilder {
17894      fbb_: _fbb,
17895      start_: start,
17896    }
17897  }
17898  #[inline]
17899  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockAttributeDefinitionEntry<'a>> {
17900    let o = self.fbb_.end_table(self.start_);
17901    self.fbb_.required(o, DucBlockAttributeDefinitionEntry::VT_KEY,"key");
17902    flatbuffers::WIPOffset::new(o.value())
17903  }
17904}
17905
17906impl core::fmt::Debug for DucBlockAttributeDefinitionEntry<'_> {
17907  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17908    let mut ds = f.debug_struct("DucBlockAttributeDefinitionEntry");
17909      ds.field("key", &self.key());
17910      ds.field("value", &self.value());
17911      ds.finish()
17912  }
17913}
17914pub enum DucBlockOffset {}
17915#[derive(Copy, Clone, PartialEq)]
17916
17917pub struct DucBlock<'a> {
17918  pub _tab: flatbuffers::Table<'a>,
17919}
17920
17921impl<'a> flatbuffers::Follow<'a> for DucBlock<'a> {
17922  type Inner = DucBlock<'a>;
17923  #[inline]
17924  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
17925    Self { _tab: flatbuffers::Table::new(buf, loc) }
17926  }
17927}
17928
17929impl<'a> DucBlock<'a> {
17930  pub const VT_ID: flatbuffers::VOffsetT = 4;
17931  pub const VT_LABEL: flatbuffers::VOffsetT = 6;
17932  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 8;
17933  pub const VT_VERSION: flatbuffers::VOffsetT = 10;
17934  pub const VT_ATTRIBUTE_DEFINITIONS: flatbuffers::VOffsetT = 12;
17935  pub const VT_METADATA: flatbuffers::VOffsetT = 14;
17936  pub const VT_THUMBNAIL: flatbuffers::VOffsetT = 16;
17937
17938  #[inline]
17939  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
17940    DucBlock { _tab: table }
17941  }
17942  #[allow(unused_mut)]
17943  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
17944    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
17945    args: &'args DucBlockArgs<'args>
17946  ) -> flatbuffers::WIPOffset<DucBlock<'bldr>> {
17947    let mut builder = DucBlockBuilder::new(_fbb);
17948    if let Some(x) = args.thumbnail { builder.add_thumbnail(x); }
17949    if let Some(x) = args.metadata { builder.add_metadata(x); }
17950    if let Some(x) = args.attribute_definitions { builder.add_attribute_definitions(x); }
17951    builder.add_version(args.version);
17952    if let Some(x) = args.description { builder.add_description(x); }
17953    if let Some(x) = args.label { builder.add_label(x); }
17954    if let Some(x) = args.id { builder.add_id(x); }
17955    builder.finish()
17956  }
17957
17958
17959  #[inline]
17960  pub fn id(&self) -> &'a str {
17961    // Safety:
17962    // Created from valid Table for this object
17963    // which contains a valid value in this slot
17964    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlock::VT_ID, None).unwrap()}
17965  }
17966  #[inline]
17967  pub fn key_compare_less_than(&self, o: &DucBlock) -> bool {
17968    self.id() < o.id()
17969  }
17970
17971  #[inline]
17972  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
17973    let key = self.id();
17974    key.cmp(val)
17975  }
17976  #[inline]
17977  pub fn label(&self) -> Option<&'a str> {
17978    // Safety:
17979    // Created from valid Table for this object
17980    // which contains a valid value in this slot
17981    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlock::VT_LABEL, None)}
17982  }
17983  #[inline]
17984  pub fn description(&self) -> Option<&'a str> {
17985    // Safety:
17986    // Created from valid Table for this object
17987    // which contains a valid value in this slot
17988    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlock::VT_DESCRIPTION, None)}
17989  }
17990  #[inline]
17991  pub fn version(&self) -> i32 {
17992    // Safety:
17993    // Created from valid Table for this object
17994    // which contains a valid value in this slot
17995    unsafe { self._tab.get::<i32>(DucBlock::VT_VERSION, Some(0)).unwrap()}
17996  }
17997  #[inline]
17998  pub fn attribute_definitions(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockAttributeDefinitionEntry<'a>>>> {
17999    // Safety:
18000    // Created from valid Table for this object
18001    // which contains a valid value in this slot
18002    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockAttributeDefinitionEntry>>>>(DucBlock::VT_ATTRIBUTE_DEFINITIONS, None)}
18003  }
18004  #[inline]
18005  pub fn metadata(&self) -> Option<DucBlockMetadata<'a>> {
18006    // Safety:
18007    // Created from valid Table for this object
18008    // which contains a valid value in this slot
18009    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucBlockMetadata>>(DucBlock::VT_METADATA, None)}
18010  }
18011  #[inline]
18012  pub fn thumbnail(&self) -> Option<flatbuffers::Vector<'a, u8>> {
18013    // Safety:
18014    // Created from valid Table for this object
18015    // which contains a valid value in this slot
18016    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(DucBlock::VT_THUMBNAIL, None)}
18017  }
18018}
18019
18020impl flatbuffers::Verifiable for DucBlock<'_> {
18021  #[inline]
18022  fn run_verifier(
18023    v: &mut flatbuffers::Verifier, pos: usize
18024  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18025    use self::flatbuffers::Verifiable;
18026    v.visit_table(pos)?
18027     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
18028     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("label", Self::VT_LABEL, false)?
18029     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
18030     .visit_field::<i32>("version", Self::VT_VERSION, false)?
18031     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucBlockAttributeDefinitionEntry>>>>("attribute_definitions", Self::VT_ATTRIBUTE_DEFINITIONS, false)?
18032     .visit_field::<flatbuffers::ForwardsUOffset<DucBlockMetadata>>("metadata", Self::VT_METADATA, false)?
18033     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("thumbnail", Self::VT_THUMBNAIL, false)?
18034     .finish();
18035    Ok(())
18036  }
18037}
18038pub struct DucBlockArgs<'a> {
18039    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
18040    pub label: Option<flatbuffers::WIPOffset<&'a str>>,
18041    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
18042    pub version: i32,
18043    pub attribute_definitions: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockAttributeDefinitionEntry<'a>>>>>,
18044    pub metadata: Option<flatbuffers::WIPOffset<DucBlockMetadata<'a>>>,
18045    pub thumbnail: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
18046}
18047impl<'a> Default for DucBlockArgs<'a> {
18048  #[inline]
18049  fn default() -> Self {
18050    DucBlockArgs {
18051      id: None, // required field
18052      label: None,
18053      description: None,
18054      version: 0,
18055      attribute_definitions: None,
18056      metadata: None,
18057      thumbnail: None,
18058    }
18059  }
18060}
18061
18062pub struct DucBlockBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18063  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18064  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18065}
18066impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockBuilder<'a, 'b, A> {
18067  #[inline]
18068  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
18069    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlock::VT_ID, id);
18070  }
18071  #[inline]
18072  pub fn add_label(&mut self, label: flatbuffers::WIPOffset<&'b  str>) {
18073    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlock::VT_LABEL, label);
18074  }
18075  #[inline]
18076  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
18077    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlock::VT_DESCRIPTION, description);
18078  }
18079  #[inline]
18080  pub fn add_version(&mut self, version: i32) {
18081    self.fbb_.push_slot::<i32>(DucBlock::VT_VERSION, version, 0);
18082  }
18083  #[inline]
18084  pub fn add_attribute_definitions(&mut self, attribute_definitions: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucBlockAttributeDefinitionEntry<'b >>>>) {
18085    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlock::VT_ATTRIBUTE_DEFINITIONS, attribute_definitions);
18086  }
18087  #[inline]
18088  pub fn add_metadata(&mut self, metadata: flatbuffers::WIPOffset<DucBlockMetadata<'b >>) {
18089    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucBlockMetadata>>(DucBlock::VT_METADATA, metadata);
18090  }
18091  #[inline]
18092  pub fn add_thumbnail(&mut self, thumbnail: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
18093    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlock::VT_THUMBNAIL, thumbnail);
18094  }
18095  #[inline]
18096  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockBuilder<'a, 'b, A> {
18097    let start = _fbb.start_table();
18098    DucBlockBuilder {
18099      fbb_: _fbb,
18100      start_: start,
18101    }
18102  }
18103  #[inline]
18104  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlock<'a>> {
18105    let o = self.fbb_.end_table(self.start_);
18106    self.fbb_.required(o, DucBlock::VT_ID,"id");
18107    flatbuffers::WIPOffset::new(o.value())
18108  }
18109}
18110
18111impl core::fmt::Debug for DucBlock<'_> {
18112  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18113    let mut ds = f.debug_struct("DucBlock");
18114      ds.field("id", &self.id());
18115      ds.field("label", &self.label());
18116      ds.field("description", &self.description());
18117      ds.field("version", &self.version());
18118      ds.field("attribute_definitions", &self.attribute_definitions());
18119      ds.field("metadata", &self.metadata());
18120      ds.field("thumbnail", &self.thumbnail());
18121      ds.finish()
18122  }
18123}
18124pub enum DucBlockMetadataOffset {}
18125#[derive(Copy, Clone, PartialEq)]
18126
18127pub struct DucBlockMetadata<'a> {
18128  pub _tab: flatbuffers::Table<'a>,
18129}
18130
18131impl<'a> flatbuffers::Follow<'a> for DucBlockMetadata<'a> {
18132  type Inner = DucBlockMetadata<'a>;
18133  #[inline]
18134  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18135    Self { _tab: flatbuffers::Table::new(buf, loc) }
18136  }
18137}
18138
18139impl<'a> DucBlockMetadata<'a> {
18140  pub const VT_SOURCE: flatbuffers::VOffsetT = 4;
18141  pub const VT_USAGE_COUNT: flatbuffers::VOffsetT = 6;
18142  pub const VT_CREATED_AT: flatbuffers::VOffsetT = 8;
18143  pub const VT_UPDATED_AT: flatbuffers::VOffsetT = 10;
18144  pub const VT_LOCALIZATION: flatbuffers::VOffsetT = 14;
18145
18146  #[inline]
18147  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18148    DucBlockMetadata { _tab: table }
18149  }
18150  #[allow(unused_mut)]
18151  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18152    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18153    args: &'args DucBlockMetadataArgs<'args>
18154  ) -> flatbuffers::WIPOffset<DucBlockMetadata<'bldr>> {
18155    let mut builder = DucBlockMetadataBuilder::new(_fbb);
18156    builder.add_updated_at(args.updated_at);
18157    builder.add_created_at(args.created_at);
18158    if let Some(x) = args.localization { builder.add_localization(x); }
18159    builder.add_usage_count(args.usage_count);
18160    if let Some(x) = args.source { builder.add_source(x); }
18161    builder.finish()
18162  }
18163
18164
18165  #[inline]
18166  pub fn source(&self) -> Option<&'a str> {
18167    // Safety:
18168    // Created from valid Table for this object
18169    // which contains a valid value in this slot
18170    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockMetadata::VT_SOURCE, None)}
18171  }
18172  #[inline]
18173  pub fn usage_count(&self) -> i32 {
18174    // Safety:
18175    // Created from valid Table for this object
18176    // which contains a valid value in this slot
18177    unsafe { self._tab.get::<i32>(DucBlockMetadata::VT_USAGE_COUNT, Some(0)).unwrap()}
18178  }
18179  #[inline]
18180  pub fn created_at(&self) -> i64 {
18181    // Safety:
18182    // Created from valid Table for this object
18183    // which contains a valid value in this slot
18184    unsafe { self._tab.get::<i64>(DucBlockMetadata::VT_CREATED_AT, Some(0)).unwrap()}
18185  }
18186  #[inline]
18187  pub fn updated_at(&self) -> i64 {
18188    // Safety:
18189    // Created from valid Table for this object
18190    // which contains a valid value in this slot
18191    unsafe { self._tab.get::<i64>(DucBlockMetadata::VT_UPDATED_AT, Some(0)).unwrap()}
18192  }
18193  #[inline]
18194  pub fn localization(&self) -> Option<flatbuffers::Vector<'a, u8>> {
18195    // Safety:
18196    // Created from valid Table for this object
18197    // which contains a valid value in this slot
18198    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(DucBlockMetadata::VT_LOCALIZATION, None)}
18199  }
18200}
18201
18202impl flatbuffers::Verifiable for DucBlockMetadata<'_> {
18203  #[inline]
18204  fn run_verifier(
18205    v: &mut flatbuffers::Verifier, pos: usize
18206  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18207    use self::flatbuffers::Verifiable;
18208    v.visit_table(pos)?
18209     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("source", Self::VT_SOURCE, false)?
18210     .visit_field::<i32>("usage_count", Self::VT_USAGE_COUNT, false)?
18211     .visit_field::<i64>("created_at", Self::VT_CREATED_AT, false)?
18212     .visit_field::<i64>("updated_at", Self::VT_UPDATED_AT, false)?
18213     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("localization", Self::VT_LOCALIZATION, false)?
18214     .finish();
18215    Ok(())
18216  }
18217}
18218pub struct DucBlockMetadataArgs<'a> {
18219    pub source: Option<flatbuffers::WIPOffset<&'a str>>,
18220    pub usage_count: i32,
18221    pub created_at: i64,
18222    pub updated_at: i64,
18223    pub localization: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
18224}
18225impl<'a> Default for DucBlockMetadataArgs<'a> {
18226  #[inline]
18227  fn default() -> Self {
18228    DucBlockMetadataArgs {
18229      source: None,
18230      usage_count: 0,
18231      created_at: 0,
18232      updated_at: 0,
18233      localization: None,
18234    }
18235  }
18236}
18237
18238pub struct DucBlockMetadataBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18239  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18240  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18241}
18242impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockMetadataBuilder<'a, 'b, A> {
18243  #[inline]
18244  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<&'b  str>) {
18245    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockMetadata::VT_SOURCE, source);
18246  }
18247  #[inline]
18248  pub fn add_usage_count(&mut self, usage_count: i32) {
18249    self.fbb_.push_slot::<i32>(DucBlockMetadata::VT_USAGE_COUNT, usage_count, 0);
18250  }
18251  #[inline]
18252  pub fn add_created_at(&mut self, created_at: i64) {
18253    self.fbb_.push_slot::<i64>(DucBlockMetadata::VT_CREATED_AT, created_at, 0);
18254  }
18255  #[inline]
18256  pub fn add_updated_at(&mut self, updated_at: i64) {
18257    self.fbb_.push_slot::<i64>(DucBlockMetadata::VT_UPDATED_AT, updated_at, 0);
18258  }
18259  #[inline]
18260  pub fn add_localization(&mut self, localization: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
18261    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockMetadata::VT_LOCALIZATION, localization);
18262  }
18263  #[inline]
18264  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockMetadataBuilder<'a, 'b, A> {
18265    let start = _fbb.start_table();
18266    DucBlockMetadataBuilder {
18267      fbb_: _fbb,
18268      start_: start,
18269    }
18270  }
18271  #[inline]
18272  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockMetadata<'a>> {
18273    let o = self.fbb_.end_table(self.start_);
18274    flatbuffers::WIPOffset::new(o.value())
18275  }
18276}
18277
18278impl core::fmt::Debug for DucBlockMetadata<'_> {
18279  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18280    let mut ds = f.debug_struct("DucBlockMetadata");
18281      ds.field("source", &self.source());
18282      ds.field("usage_count", &self.usage_count());
18283      ds.field("created_at", &self.created_at());
18284      ds.field("updated_at", &self.updated_at());
18285      ds.field("localization", &self.localization());
18286      ds.finish()
18287  }
18288}
18289pub enum DucBlockDuplicationArrayOffset {}
18290#[derive(Copy, Clone, PartialEq)]
18291
18292pub struct DucBlockDuplicationArray<'a> {
18293  pub _tab: flatbuffers::Table<'a>,
18294}
18295
18296impl<'a> flatbuffers::Follow<'a> for DucBlockDuplicationArray<'a> {
18297  type Inner = DucBlockDuplicationArray<'a>;
18298  #[inline]
18299  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18300    Self { _tab: flatbuffers::Table::new(buf, loc) }
18301  }
18302}
18303
18304impl<'a> DucBlockDuplicationArray<'a> {
18305  pub const VT_ROWS: flatbuffers::VOffsetT = 4;
18306  pub const VT_COLS: flatbuffers::VOffsetT = 6;
18307  pub const VT_ROW_SPACING: flatbuffers::VOffsetT = 8;
18308  pub const VT_COL_SPACING: flatbuffers::VOffsetT = 10;
18309
18310  #[inline]
18311  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18312    DucBlockDuplicationArray { _tab: table }
18313  }
18314  #[allow(unused_mut)]
18315  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18316    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18317    args: &'args DucBlockDuplicationArrayArgs
18318  ) -> flatbuffers::WIPOffset<DucBlockDuplicationArray<'bldr>> {
18319    let mut builder = DucBlockDuplicationArrayBuilder::new(_fbb);
18320    builder.add_col_spacing(args.col_spacing);
18321    builder.add_row_spacing(args.row_spacing);
18322    builder.add_cols(args.cols);
18323    builder.add_rows(args.rows);
18324    builder.finish()
18325  }
18326
18327
18328  #[inline]
18329  pub fn rows(&self) -> i32 {
18330    // Safety:
18331    // Created from valid Table for this object
18332    // which contains a valid value in this slot
18333    unsafe { self._tab.get::<i32>(DucBlockDuplicationArray::VT_ROWS, Some(0)).unwrap()}
18334  }
18335  #[inline]
18336  pub fn cols(&self) -> i32 {
18337    // Safety:
18338    // Created from valid Table for this object
18339    // which contains a valid value in this slot
18340    unsafe { self._tab.get::<i32>(DucBlockDuplicationArray::VT_COLS, Some(0)).unwrap()}
18341  }
18342  #[inline]
18343  pub fn row_spacing(&self) -> f64 {
18344    // Safety:
18345    // Created from valid Table for this object
18346    // which contains a valid value in this slot
18347    unsafe { self._tab.get::<f64>(DucBlockDuplicationArray::VT_ROW_SPACING, Some(0.0)).unwrap()}
18348  }
18349  #[inline]
18350  pub fn col_spacing(&self) -> f64 {
18351    // Safety:
18352    // Created from valid Table for this object
18353    // which contains a valid value in this slot
18354    unsafe { self._tab.get::<f64>(DucBlockDuplicationArray::VT_COL_SPACING, Some(0.0)).unwrap()}
18355  }
18356}
18357
18358impl flatbuffers::Verifiable for DucBlockDuplicationArray<'_> {
18359  #[inline]
18360  fn run_verifier(
18361    v: &mut flatbuffers::Verifier, pos: usize
18362  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18363    use self::flatbuffers::Verifiable;
18364    v.visit_table(pos)?
18365     .visit_field::<i32>("rows", Self::VT_ROWS, false)?
18366     .visit_field::<i32>("cols", Self::VT_COLS, false)?
18367     .visit_field::<f64>("row_spacing", Self::VT_ROW_SPACING, false)?
18368     .visit_field::<f64>("col_spacing", Self::VT_COL_SPACING, false)?
18369     .finish();
18370    Ok(())
18371  }
18372}
18373pub struct DucBlockDuplicationArrayArgs {
18374    pub rows: i32,
18375    pub cols: i32,
18376    pub row_spacing: f64,
18377    pub col_spacing: f64,
18378}
18379impl<'a> Default for DucBlockDuplicationArrayArgs {
18380  #[inline]
18381  fn default() -> Self {
18382    DucBlockDuplicationArrayArgs {
18383      rows: 0,
18384      cols: 0,
18385      row_spacing: 0.0,
18386      col_spacing: 0.0,
18387    }
18388  }
18389}
18390
18391pub struct DucBlockDuplicationArrayBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18392  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18393  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18394}
18395impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockDuplicationArrayBuilder<'a, 'b, A> {
18396  #[inline]
18397  pub fn add_rows(&mut self, rows: i32) {
18398    self.fbb_.push_slot::<i32>(DucBlockDuplicationArray::VT_ROWS, rows, 0);
18399  }
18400  #[inline]
18401  pub fn add_cols(&mut self, cols: i32) {
18402    self.fbb_.push_slot::<i32>(DucBlockDuplicationArray::VT_COLS, cols, 0);
18403  }
18404  #[inline]
18405  pub fn add_row_spacing(&mut self, row_spacing: f64) {
18406    self.fbb_.push_slot::<f64>(DucBlockDuplicationArray::VT_ROW_SPACING, row_spacing, 0.0);
18407  }
18408  #[inline]
18409  pub fn add_col_spacing(&mut self, col_spacing: f64) {
18410    self.fbb_.push_slot::<f64>(DucBlockDuplicationArray::VT_COL_SPACING, col_spacing, 0.0);
18411  }
18412  #[inline]
18413  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockDuplicationArrayBuilder<'a, 'b, A> {
18414    let start = _fbb.start_table();
18415    DucBlockDuplicationArrayBuilder {
18416      fbb_: _fbb,
18417      start_: start,
18418    }
18419  }
18420  #[inline]
18421  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockDuplicationArray<'a>> {
18422    let o = self.fbb_.end_table(self.start_);
18423    flatbuffers::WIPOffset::new(o.value())
18424  }
18425}
18426
18427impl core::fmt::Debug for DucBlockDuplicationArray<'_> {
18428  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18429    let mut ds = f.debug_struct("DucBlockDuplicationArray");
18430      ds.field("rows", &self.rows());
18431      ds.field("cols", &self.cols());
18432      ds.field("row_spacing", &self.row_spacing());
18433      ds.field("col_spacing", &self.col_spacing());
18434      ds.finish()
18435  }
18436}
18437pub enum DucBlockInstanceElementOffset {}
18438#[derive(Copy, Clone, PartialEq)]
18439
18440pub struct DucBlockInstanceElement<'a> {
18441  pub _tab: flatbuffers::Table<'a>,
18442}
18443
18444impl<'a> flatbuffers::Follow<'a> for DucBlockInstanceElement<'a> {
18445  type Inner = DucBlockInstanceElement<'a>;
18446  #[inline]
18447  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18448    Self { _tab: flatbuffers::Table::new(buf, loc) }
18449  }
18450}
18451
18452impl<'a> DucBlockInstanceElement<'a> {
18453
18454  #[inline]
18455  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18456    DucBlockInstanceElement { _tab: table }
18457  }
18458  #[allow(unused_mut)]
18459  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18460    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18461    args: &'args DucBlockInstanceElementArgs
18462  ) -> flatbuffers::WIPOffset<DucBlockInstanceElement<'bldr>> {
18463    let mut builder = DucBlockInstanceElementBuilder::new(_fbb);
18464    builder.finish()
18465  }
18466
18467
18468}
18469
18470impl flatbuffers::Verifiable for DucBlockInstanceElement<'_> {
18471  #[inline]
18472  fn run_verifier(
18473    v: &mut flatbuffers::Verifier, pos: usize
18474  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18475    use self::flatbuffers::Verifiable;
18476    v.visit_table(pos)?
18477     .finish();
18478    Ok(())
18479  }
18480}
18481pub struct DucBlockInstanceElementArgs {
18482}
18483impl<'a> Default for DucBlockInstanceElementArgs {
18484  #[inline]
18485  fn default() -> Self {
18486    DucBlockInstanceElementArgs {
18487    }
18488  }
18489}
18490
18491pub struct DucBlockInstanceElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18492  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18493  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18494}
18495impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockInstanceElementBuilder<'a, 'b, A> {
18496  #[inline]
18497  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockInstanceElementBuilder<'a, 'b, A> {
18498    let start = _fbb.start_table();
18499    DucBlockInstanceElementBuilder {
18500      fbb_: _fbb,
18501      start_: start,
18502    }
18503  }
18504  #[inline]
18505  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockInstanceElement<'a>> {
18506    let o = self.fbb_.end_table(self.start_);
18507    flatbuffers::WIPOffset::new(o.value())
18508  }
18509}
18510
18511impl core::fmt::Debug for DucBlockInstanceElement<'_> {
18512  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18513    let mut ds = f.debug_struct("DucBlockInstanceElement");
18514      ds.finish()
18515  }
18516}
18517pub enum DucBlockInstanceOffset {}
18518#[derive(Copy, Clone, PartialEq)]
18519
18520pub struct DucBlockInstance<'a> {
18521  pub _tab: flatbuffers::Table<'a>,
18522}
18523
18524impl<'a> flatbuffers::Follow<'a> for DucBlockInstance<'a> {
18525  type Inner = DucBlockInstance<'a>;
18526  #[inline]
18527  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18528    Self { _tab: flatbuffers::Table::new(buf, loc) }
18529  }
18530}
18531
18532impl<'a> DucBlockInstance<'a> {
18533  pub const VT_ID: flatbuffers::VOffsetT = 4;
18534  pub const VT_BLOCK_ID: flatbuffers::VOffsetT = 6;
18535  pub const VT_ELEMENT_OVERRIDES: flatbuffers::VOffsetT = 8;
18536  pub const VT_ATTRIBUTE_VALUES: flatbuffers::VOffsetT = 10;
18537  pub const VT_DUPLICATION_ARRAY: flatbuffers::VOffsetT = 12;
18538  pub const VT_VERSION: flatbuffers::VOffsetT = 14;
18539
18540  #[inline]
18541  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18542    DucBlockInstance { _tab: table }
18543  }
18544  #[allow(unused_mut)]
18545  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18546    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18547    args: &'args DucBlockInstanceArgs<'args>
18548  ) -> flatbuffers::WIPOffset<DucBlockInstance<'bldr>> {
18549    let mut builder = DucBlockInstanceBuilder::new(_fbb);
18550    builder.add_version(args.version);
18551    if let Some(x) = args.duplication_array { builder.add_duplication_array(x); }
18552    if let Some(x) = args.attribute_values { builder.add_attribute_values(x); }
18553    if let Some(x) = args.element_overrides { builder.add_element_overrides(x); }
18554    if let Some(x) = args.block_id { builder.add_block_id(x); }
18555    if let Some(x) = args.id { builder.add_id(x); }
18556    builder.finish()
18557  }
18558
18559
18560  #[inline]
18561  pub fn id(&self) -> Option<&'a str> {
18562    // Safety:
18563    // Created from valid Table for this object
18564    // which contains a valid value in this slot
18565    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockInstance::VT_ID, None)}
18566  }
18567  #[inline]
18568  pub fn block_id(&self) -> Option<&'a str> {
18569    // Safety:
18570    // Created from valid Table for this object
18571    // which contains a valid value in this slot
18572    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockInstance::VT_BLOCK_ID, None)}
18573  }
18574  #[inline]
18575  pub fn element_overrides(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>> {
18576    // Safety:
18577    // Created from valid Table for this object
18578    // which contains a valid value in this slot
18579    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry>>>>(DucBlockInstance::VT_ELEMENT_OVERRIDES, None)}
18580  }
18581  #[inline]
18582  pub fn attribute_values(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>> {
18583    // Safety:
18584    // Created from valid Table for this object
18585    // which contains a valid value in this slot
18586    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry>>>>(DucBlockInstance::VT_ATTRIBUTE_VALUES, None)}
18587  }
18588  #[inline]
18589  pub fn duplication_array(&self) -> Option<DucBlockDuplicationArray<'a>> {
18590    // Safety:
18591    // Created from valid Table for this object
18592    // which contains a valid value in this slot
18593    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucBlockDuplicationArray>>(DucBlockInstance::VT_DUPLICATION_ARRAY, None)}
18594  }
18595  #[inline]
18596  pub fn version(&self) -> i32 {
18597    // Safety:
18598    // Created from valid Table for this object
18599    // which contains a valid value in this slot
18600    unsafe { self._tab.get::<i32>(DucBlockInstance::VT_VERSION, Some(0)).unwrap()}
18601  }
18602}
18603
18604impl flatbuffers::Verifiable for DucBlockInstance<'_> {
18605  #[inline]
18606  fn run_verifier(
18607    v: &mut flatbuffers::Verifier, pos: usize
18608  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18609    use self::flatbuffers::Verifiable;
18610    v.visit_table(pos)?
18611     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
18612     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("block_id", Self::VT_BLOCK_ID, false)?
18613     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<StringValueEntry>>>>("element_overrides", Self::VT_ELEMENT_OVERRIDES, false)?
18614     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<StringValueEntry>>>>("attribute_values", Self::VT_ATTRIBUTE_VALUES, false)?
18615     .visit_field::<flatbuffers::ForwardsUOffset<DucBlockDuplicationArray>>("duplication_array", Self::VT_DUPLICATION_ARRAY, false)?
18616     .visit_field::<i32>("version", Self::VT_VERSION, false)?
18617     .finish();
18618    Ok(())
18619  }
18620}
18621pub struct DucBlockInstanceArgs<'a> {
18622    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
18623    pub block_id: Option<flatbuffers::WIPOffset<&'a str>>,
18624    pub element_overrides: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>>>,
18625    pub attribute_values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>>>,
18626    pub duplication_array: Option<flatbuffers::WIPOffset<DucBlockDuplicationArray<'a>>>,
18627    pub version: i32,
18628}
18629impl<'a> Default for DucBlockInstanceArgs<'a> {
18630  #[inline]
18631  fn default() -> Self {
18632    DucBlockInstanceArgs {
18633      id: None,
18634      block_id: None,
18635      element_overrides: None,
18636      attribute_values: None,
18637      duplication_array: None,
18638      version: 0,
18639    }
18640  }
18641}
18642
18643pub struct DucBlockInstanceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18644  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18645  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18646}
18647impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockInstanceBuilder<'a, 'b, A> {
18648  #[inline]
18649  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
18650    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockInstance::VT_ID, id);
18651  }
18652  #[inline]
18653  pub fn add_block_id(&mut self, block_id: flatbuffers::WIPOffset<&'b  str>) {
18654    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockInstance::VT_BLOCK_ID, block_id);
18655  }
18656  #[inline]
18657  pub fn add_element_overrides(&mut self, element_overrides: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<StringValueEntry<'b >>>>) {
18658    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockInstance::VT_ELEMENT_OVERRIDES, element_overrides);
18659  }
18660  #[inline]
18661  pub fn add_attribute_values(&mut self, attribute_values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<StringValueEntry<'b >>>>) {
18662    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockInstance::VT_ATTRIBUTE_VALUES, attribute_values);
18663  }
18664  #[inline]
18665  pub fn add_duplication_array(&mut self, duplication_array: flatbuffers::WIPOffset<DucBlockDuplicationArray<'b >>) {
18666    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucBlockDuplicationArray>>(DucBlockInstance::VT_DUPLICATION_ARRAY, duplication_array);
18667  }
18668  #[inline]
18669  pub fn add_version(&mut self, version: i32) {
18670    self.fbb_.push_slot::<i32>(DucBlockInstance::VT_VERSION, version, 0);
18671  }
18672  #[inline]
18673  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockInstanceBuilder<'a, 'b, A> {
18674    let start = _fbb.start_table();
18675    DucBlockInstanceBuilder {
18676      fbb_: _fbb,
18677      start_: start,
18678    }
18679  }
18680  #[inline]
18681  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockInstance<'a>> {
18682    let o = self.fbb_.end_table(self.start_);
18683    flatbuffers::WIPOffset::new(o.value())
18684  }
18685}
18686
18687impl core::fmt::Debug for DucBlockInstance<'_> {
18688  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18689    let mut ds = f.debug_struct("DucBlockInstance");
18690      ds.field("id", &self.id());
18691      ds.field("block_id", &self.block_id());
18692      ds.field("element_overrides", &self.element_overrides());
18693      ds.field("attribute_values", &self.attribute_values());
18694      ds.field("duplication_array", &self.duplication_array());
18695      ds.field("version", &self.version());
18696      ds.finish()
18697  }
18698}
18699pub enum DucBlockCollectionOffset {}
18700#[derive(Copy, Clone, PartialEq)]
18701
18702pub struct DucBlockCollection<'a> {
18703  pub _tab: flatbuffers::Table<'a>,
18704}
18705
18706impl<'a> flatbuffers::Follow<'a> for DucBlockCollection<'a> {
18707  type Inner = DucBlockCollection<'a>;
18708  #[inline]
18709  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18710    Self { _tab: flatbuffers::Table::new(buf, loc) }
18711  }
18712}
18713
18714impl<'a> DucBlockCollection<'a> {
18715  pub const VT_ID: flatbuffers::VOffsetT = 4;
18716  pub const VT_LABEL: flatbuffers::VOffsetT = 6;
18717  pub const VT_CHILDREN: flatbuffers::VOffsetT = 8;
18718  pub const VT_METADATA: flatbuffers::VOffsetT = 10;
18719  pub const VT_THUMBNAIL: flatbuffers::VOffsetT = 12;
18720
18721  #[inline]
18722  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18723    DucBlockCollection { _tab: table }
18724  }
18725  #[allow(unused_mut)]
18726  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18727    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18728    args: &'args DucBlockCollectionArgs<'args>
18729  ) -> flatbuffers::WIPOffset<DucBlockCollection<'bldr>> {
18730    let mut builder = DucBlockCollectionBuilder::new(_fbb);
18731    if let Some(x) = args.thumbnail { builder.add_thumbnail(x); }
18732    if let Some(x) = args.metadata { builder.add_metadata(x); }
18733    if let Some(x) = args.children { builder.add_children(x); }
18734    if let Some(x) = args.label { builder.add_label(x); }
18735    if let Some(x) = args.id { builder.add_id(x); }
18736    builder.finish()
18737  }
18738
18739
18740  #[inline]
18741  pub fn id(&self) -> Option<&'a str> {
18742    // Safety:
18743    // Created from valid Table for this object
18744    // which contains a valid value in this slot
18745    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockCollection::VT_ID, None)}
18746  }
18747  #[inline]
18748  pub fn label(&self) -> Option<&'a str> {
18749    // Safety:
18750    // Created from valid Table for this object
18751    // which contains a valid value in this slot
18752    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockCollection::VT_LABEL, None)}
18753  }
18754  #[inline]
18755  pub fn children(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollectionEntry<'a>>>> {
18756    // Safety:
18757    // Created from valid Table for this object
18758    // which contains a valid value in this slot
18759    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollectionEntry>>>>(DucBlockCollection::VT_CHILDREN, None)}
18760  }
18761  #[inline]
18762  pub fn metadata(&self) -> Option<DucBlockMetadata<'a>> {
18763    // Safety:
18764    // Created from valid Table for this object
18765    // which contains a valid value in this slot
18766    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucBlockMetadata>>(DucBlockCollection::VT_METADATA, None)}
18767  }
18768  #[inline]
18769  pub fn thumbnail(&self) -> Option<flatbuffers::Vector<'a, u8>> {
18770    // Safety:
18771    // Created from valid Table for this object
18772    // which contains a valid value in this slot
18773    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(DucBlockCollection::VT_THUMBNAIL, None)}
18774  }
18775}
18776
18777impl flatbuffers::Verifiable for DucBlockCollection<'_> {
18778  #[inline]
18779  fn run_verifier(
18780    v: &mut flatbuffers::Verifier, pos: usize
18781  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18782    use self::flatbuffers::Verifiable;
18783    v.visit_table(pos)?
18784     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
18785     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("label", Self::VT_LABEL, false)?
18786     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucBlockCollectionEntry>>>>("children", Self::VT_CHILDREN, false)?
18787     .visit_field::<flatbuffers::ForwardsUOffset<DucBlockMetadata>>("metadata", Self::VT_METADATA, false)?
18788     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("thumbnail", Self::VT_THUMBNAIL, false)?
18789     .finish();
18790    Ok(())
18791  }
18792}
18793pub struct DucBlockCollectionArgs<'a> {
18794    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
18795    pub label: Option<flatbuffers::WIPOffset<&'a str>>,
18796    pub children: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollectionEntry<'a>>>>>,
18797    pub metadata: Option<flatbuffers::WIPOffset<DucBlockMetadata<'a>>>,
18798    pub thumbnail: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
18799}
18800impl<'a> Default for DucBlockCollectionArgs<'a> {
18801  #[inline]
18802  fn default() -> Self {
18803    DucBlockCollectionArgs {
18804      id: None,
18805      label: None,
18806      children: None,
18807      metadata: None,
18808      thumbnail: None,
18809    }
18810  }
18811}
18812
18813pub struct DucBlockCollectionBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18814  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18815  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18816}
18817impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockCollectionBuilder<'a, 'b, A> {
18818  #[inline]
18819  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
18820    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockCollection::VT_ID, id);
18821  }
18822  #[inline]
18823  pub fn add_label(&mut self, label: flatbuffers::WIPOffset<&'b  str>) {
18824    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockCollection::VT_LABEL, label);
18825  }
18826  #[inline]
18827  pub fn add_children(&mut self, children: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucBlockCollectionEntry<'b >>>>) {
18828    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockCollection::VT_CHILDREN, children);
18829  }
18830  #[inline]
18831  pub fn add_metadata(&mut self, metadata: flatbuffers::WIPOffset<DucBlockMetadata<'b >>) {
18832    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucBlockMetadata>>(DucBlockCollection::VT_METADATA, metadata);
18833  }
18834  #[inline]
18835  pub fn add_thumbnail(&mut self, thumbnail: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
18836    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockCollection::VT_THUMBNAIL, thumbnail);
18837  }
18838  #[inline]
18839  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockCollectionBuilder<'a, 'b, A> {
18840    let start = _fbb.start_table();
18841    DucBlockCollectionBuilder {
18842      fbb_: _fbb,
18843      start_: start,
18844    }
18845  }
18846  #[inline]
18847  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockCollection<'a>> {
18848    let o = self.fbb_.end_table(self.start_);
18849    flatbuffers::WIPOffset::new(o.value())
18850  }
18851}
18852
18853impl core::fmt::Debug for DucBlockCollection<'_> {
18854  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18855    let mut ds = f.debug_struct("DucBlockCollection");
18856      ds.field("id", &self.id());
18857      ds.field("label", &self.label());
18858      ds.field("children", &self.children());
18859      ds.field("metadata", &self.metadata());
18860      ds.field("thumbnail", &self.thumbnail());
18861      ds.finish()
18862  }
18863}
18864pub enum DucBlockCollectionEntryOffset {}
18865#[derive(Copy, Clone, PartialEq)]
18866
18867pub struct DucBlockCollectionEntry<'a> {
18868  pub _tab: flatbuffers::Table<'a>,
18869}
18870
18871impl<'a> flatbuffers::Follow<'a> for DucBlockCollectionEntry<'a> {
18872  type Inner = DucBlockCollectionEntry<'a>;
18873  #[inline]
18874  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18875    Self { _tab: flatbuffers::Table::new(buf, loc) }
18876  }
18877}
18878
18879impl<'a> DucBlockCollectionEntry<'a> {
18880  pub const VT_ID: flatbuffers::VOffsetT = 4;
18881  pub const VT_IS_COLLECTION: flatbuffers::VOffsetT = 6;
18882
18883  #[inline]
18884  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18885    DucBlockCollectionEntry { _tab: table }
18886  }
18887  #[allow(unused_mut)]
18888  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
18889    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
18890    args: &'args DucBlockCollectionEntryArgs<'args>
18891  ) -> flatbuffers::WIPOffset<DucBlockCollectionEntry<'bldr>> {
18892    let mut builder = DucBlockCollectionEntryBuilder::new(_fbb);
18893    if let Some(x) = args.id { builder.add_id(x); }
18894    builder.add_is_collection(args.is_collection);
18895    builder.finish()
18896  }
18897
18898
18899  #[inline]
18900  pub fn id(&self) -> Option<&'a str> {
18901    // Safety:
18902    // Created from valid Table for this object
18903    // which contains a valid value in this slot
18904    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucBlockCollectionEntry::VT_ID, None)}
18905  }
18906  #[inline]
18907  pub fn is_collection(&self) -> bool {
18908    // Safety:
18909    // Created from valid Table for this object
18910    // which contains a valid value in this slot
18911    unsafe { self._tab.get::<bool>(DucBlockCollectionEntry::VT_IS_COLLECTION, Some(false)).unwrap()}
18912  }
18913}
18914
18915impl flatbuffers::Verifiable for DucBlockCollectionEntry<'_> {
18916  #[inline]
18917  fn run_verifier(
18918    v: &mut flatbuffers::Verifier, pos: usize
18919  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
18920    use self::flatbuffers::Verifiable;
18921    v.visit_table(pos)?
18922     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
18923     .visit_field::<bool>("is_collection", Self::VT_IS_COLLECTION, false)?
18924     .finish();
18925    Ok(())
18926  }
18927}
18928pub struct DucBlockCollectionEntryArgs<'a> {
18929    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
18930    pub is_collection: bool,
18931}
18932impl<'a> Default for DucBlockCollectionEntryArgs<'a> {
18933  #[inline]
18934  fn default() -> Self {
18935    DucBlockCollectionEntryArgs {
18936      id: None,
18937      is_collection: false,
18938    }
18939  }
18940}
18941
18942pub struct DucBlockCollectionEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
18943  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
18944  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
18945}
18946impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucBlockCollectionEntryBuilder<'a, 'b, A> {
18947  #[inline]
18948  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
18949    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucBlockCollectionEntry::VT_ID, id);
18950  }
18951  #[inline]
18952  pub fn add_is_collection(&mut self, is_collection: bool) {
18953    self.fbb_.push_slot::<bool>(DucBlockCollectionEntry::VT_IS_COLLECTION, is_collection, false);
18954  }
18955  #[inline]
18956  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucBlockCollectionEntryBuilder<'a, 'b, A> {
18957    let start = _fbb.start_table();
18958    DucBlockCollectionEntryBuilder {
18959      fbb_: _fbb,
18960      start_: start,
18961    }
18962  }
18963  #[inline]
18964  pub fn finish(self) -> flatbuffers::WIPOffset<DucBlockCollectionEntry<'a>> {
18965    let o = self.fbb_.end_table(self.start_);
18966    flatbuffers::WIPOffset::new(o.value())
18967  }
18968}
18969
18970impl core::fmt::Debug for DucBlockCollectionEntry<'_> {
18971  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18972    let mut ds = f.debug_struct("DucBlockCollectionEntry");
18973      ds.field("id", &self.id());
18974      ds.field("is_collection", &self.is_collection());
18975      ds.finish()
18976  }
18977}
18978pub enum DucFrameElementOffset {}
18979#[derive(Copy, Clone, PartialEq)]
18980
18981pub struct DucFrameElement<'a> {
18982  pub _tab: flatbuffers::Table<'a>,
18983}
18984
18985impl<'a> flatbuffers::Follow<'a> for DucFrameElement<'a> {
18986  type Inner = DucFrameElement<'a>;
18987  #[inline]
18988  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
18989    Self { _tab: flatbuffers::Table::new(buf, loc) }
18990  }
18991}
18992
18993impl<'a> DucFrameElement<'a> {
18994  pub const VT_STACK_ELEMENT_BASE: flatbuffers::VOffsetT = 4;
18995
18996  #[inline]
18997  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
18998    DucFrameElement { _tab: table }
18999  }
19000  #[allow(unused_mut)]
19001  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19002    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19003    args: &'args DucFrameElementArgs<'args>
19004  ) -> flatbuffers::WIPOffset<DucFrameElement<'bldr>> {
19005    let mut builder = DucFrameElementBuilder::new(_fbb);
19006    if let Some(x) = args.stack_element_base { builder.add_stack_element_base(x); }
19007    builder.finish()
19008  }
19009
19010
19011  #[inline]
19012  pub fn stack_element_base(&self) -> Option<_DucStackElementBase<'a>> {
19013    // Safety:
19014    // Created from valid Table for this object
19015    // which contains a valid value in this slot
19016    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackElementBase>>(DucFrameElement::VT_STACK_ELEMENT_BASE, None)}
19017  }
19018}
19019
19020impl flatbuffers::Verifiable for DucFrameElement<'_> {
19021  #[inline]
19022  fn run_verifier(
19023    v: &mut flatbuffers::Verifier, pos: usize
19024  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19025    use self::flatbuffers::Verifiable;
19026    v.visit_table(pos)?
19027     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackElementBase>>("stack_element_base", Self::VT_STACK_ELEMENT_BASE, false)?
19028     .finish();
19029    Ok(())
19030  }
19031}
19032pub struct DucFrameElementArgs<'a> {
19033    pub stack_element_base: Option<flatbuffers::WIPOffset<_DucStackElementBase<'a>>>,
19034}
19035impl<'a> Default for DucFrameElementArgs<'a> {
19036  #[inline]
19037  fn default() -> Self {
19038    DucFrameElementArgs {
19039      stack_element_base: None,
19040    }
19041  }
19042}
19043
19044pub struct DucFrameElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19045  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19046  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19047}
19048impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucFrameElementBuilder<'a, 'b, A> {
19049  #[inline]
19050  pub fn add_stack_element_base(&mut self, stack_element_base: flatbuffers::WIPOffset<_DucStackElementBase<'b >>) {
19051    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackElementBase>>(DucFrameElement::VT_STACK_ELEMENT_BASE, stack_element_base);
19052  }
19053  #[inline]
19054  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucFrameElementBuilder<'a, 'b, A> {
19055    let start = _fbb.start_table();
19056    DucFrameElementBuilder {
19057      fbb_: _fbb,
19058      start_: start,
19059    }
19060  }
19061  #[inline]
19062  pub fn finish(self) -> flatbuffers::WIPOffset<DucFrameElement<'a>> {
19063    let o = self.fbb_.end_table(self.start_);
19064    flatbuffers::WIPOffset::new(o.value())
19065  }
19066}
19067
19068impl core::fmt::Debug for DucFrameElement<'_> {
19069  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19070    let mut ds = f.debug_struct("DucFrameElement");
19071      ds.field("stack_element_base", &self.stack_element_base());
19072      ds.finish()
19073  }
19074}
19075pub enum PlotLayoutOffset {}
19076#[derive(Copy, Clone, PartialEq)]
19077
19078pub struct PlotLayout<'a> {
19079  pub _tab: flatbuffers::Table<'a>,
19080}
19081
19082impl<'a> flatbuffers::Follow<'a> for PlotLayout<'a> {
19083  type Inner = PlotLayout<'a>;
19084  #[inline]
19085  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19086    Self { _tab: flatbuffers::Table::new(buf, loc) }
19087  }
19088}
19089
19090impl<'a> PlotLayout<'a> {
19091  pub const VT_MARGINS: flatbuffers::VOffsetT = 4;
19092
19093  #[inline]
19094  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19095    PlotLayout { _tab: table }
19096  }
19097  #[allow(unused_mut)]
19098  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19099    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19100    args: &'args PlotLayoutArgs<'args>
19101  ) -> flatbuffers::WIPOffset<PlotLayout<'bldr>> {
19102    let mut builder = PlotLayoutBuilder::new(_fbb);
19103    if let Some(x) = args.margins { builder.add_margins(x); }
19104    builder.finish()
19105  }
19106
19107
19108  #[inline]
19109  pub fn margins(&self) -> Option<Margins<'a>> {
19110    // Safety:
19111    // Created from valid Table for this object
19112    // which contains a valid value in this slot
19113    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Margins>>(PlotLayout::VT_MARGINS, None)}
19114  }
19115}
19116
19117impl flatbuffers::Verifiable for PlotLayout<'_> {
19118  #[inline]
19119  fn run_verifier(
19120    v: &mut flatbuffers::Verifier, pos: usize
19121  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19122    use self::flatbuffers::Verifiable;
19123    v.visit_table(pos)?
19124     .visit_field::<flatbuffers::ForwardsUOffset<Margins>>("margins", Self::VT_MARGINS, false)?
19125     .finish();
19126    Ok(())
19127  }
19128}
19129pub struct PlotLayoutArgs<'a> {
19130    pub margins: Option<flatbuffers::WIPOffset<Margins<'a>>>,
19131}
19132impl<'a> Default for PlotLayoutArgs<'a> {
19133  #[inline]
19134  fn default() -> Self {
19135    PlotLayoutArgs {
19136      margins: None,
19137    }
19138  }
19139}
19140
19141pub struct PlotLayoutBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19142  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19143  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19144}
19145impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PlotLayoutBuilder<'a, 'b, A> {
19146  #[inline]
19147  pub fn add_margins(&mut self, margins: flatbuffers::WIPOffset<Margins<'b >>) {
19148    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Margins>>(PlotLayout::VT_MARGINS, margins);
19149  }
19150  #[inline]
19151  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PlotLayoutBuilder<'a, 'b, A> {
19152    let start = _fbb.start_table();
19153    PlotLayoutBuilder {
19154      fbb_: _fbb,
19155      start_: start,
19156    }
19157  }
19158  #[inline]
19159  pub fn finish(self) -> flatbuffers::WIPOffset<PlotLayout<'a>> {
19160    let o = self.fbb_.end_table(self.start_);
19161    flatbuffers::WIPOffset::new(o.value())
19162  }
19163}
19164
19165impl core::fmt::Debug for PlotLayout<'_> {
19166  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19167    let mut ds = f.debug_struct("PlotLayout");
19168      ds.field("margins", &self.margins());
19169      ds.finish()
19170  }
19171}
19172pub enum DucPlotElementOffset {}
19173#[derive(Copy, Clone, PartialEq)]
19174
19175pub struct DucPlotElement<'a> {
19176  pub _tab: flatbuffers::Table<'a>,
19177}
19178
19179impl<'a> flatbuffers::Follow<'a> for DucPlotElement<'a> {
19180  type Inner = DucPlotElement<'a>;
19181  #[inline]
19182  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19183    Self { _tab: flatbuffers::Table::new(buf, loc) }
19184  }
19185}
19186
19187impl<'a> DucPlotElement<'a> {
19188  pub const VT_STACK_ELEMENT_BASE: flatbuffers::VOffsetT = 4;
19189  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
19190  pub const VT_LAYOUT: flatbuffers::VOffsetT = 8;
19191
19192  #[inline]
19193  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19194    DucPlotElement { _tab: table }
19195  }
19196  #[allow(unused_mut)]
19197  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19198    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19199    args: &'args DucPlotElementArgs<'args>
19200  ) -> flatbuffers::WIPOffset<DucPlotElement<'bldr>> {
19201    let mut builder = DucPlotElementBuilder::new(_fbb);
19202    if let Some(x) = args.layout { builder.add_layout(x); }
19203    if let Some(x) = args.style { builder.add_style(x); }
19204    if let Some(x) = args.stack_element_base { builder.add_stack_element_base(x); }
19205    builder.finish()
19206  }
19207
19208
19209  #[inline]
19210  pub fn stack_element_base(&self) -> Option<_DucStackElementBase<'a>> {
19211    // Safety:
19212    // Created from valid Table for this object
19213    // which contains a valid value in this slot
19214    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackElementBase>>(DucPlotElement::VT_STACK_ELEMENT_BASE, None)}
19215  }
19216  #[inline]
19217  pub fn style(&self) -> Option<DucPlotStyle<'a>> {
19218    // Safety:
19219    // Created from valid Table for this object
19220    // which contains a valid value in this slot
19221    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPlotStyle>>(DucPlotElement::VT_STYLE, None)}
19222  }
19223  #[inline]
19224  pub fn layout(&self) -> Option<PlotLayout<'a>> {
19225    // Safety:
19226    // Created from valid Table for this object
19227    // which contains a valid value in this slot
19228    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PlotLayout>>(DucPlotElement::VT_LAYOUT, None)}
19229  }
19230}
19231
19232impl flatbuffers::Verifiable for DucPlotElement<'_> {
19233  #[inline]
19234  fn run_verifier(
19235    v: &mut flatbuffers::Verifier, pos: usize
19236  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19237    use self::flatbuffers::Verifiable;
19238    v.visit_table(pos)?
19239     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackElementBase>>("stack_element_base", Self::VT_STACK_ELEMENT_BASE, false)?
19240     .visit_field::<flatbuffers::ForwardsUOffset<DucPlotStyle>>("style", Self::VT_STYLE, false)?
19241     .visit_field::<flatbuffers::ForwardsUOffset<PlotLayout>>("layout", Self::VT_LAYOUT, false)?
19242     .finish();
19243    Ok(())
19244  }
19245}
19246pub struct DucPlotElementArgs<'a> {
19247    pub stack_element_base: Option<flatbuffers::WIPOffset<_DucStackElementBase<'a>>>,
19248    pub style: Option<flatbuffers::WIPOffset<DucPlotStyle<'a>>>,
19249    pub layout: Option<flatbuffers::WIPOffset<PlotLayout<'a>>>,
19250}
19251impl<'a> Default for DucPlotElementArgs<'a> {
19252  #[inline]
19253  fn default() -> Self {
19254    DucPlotElementArgs {
19255      stack_element_base: None,
19256      style: None,
19257      layout: None,
19258    }
19259  }
19260}
19261
19262pub struct DucPlotElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19263  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19264  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19265}
19266impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucPlotElementBuilder<'a, 'b, A> {
19267  #[inline]
19268  pub fn add_stack_element_base(&mut self, stack_element_base: flatbuffers::WIPOffset<_DucStackElementBase<'b >>) {
19269    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackElementBase>>(DucPlotElement::VT_STACK_ELEMENT_BASE, stack_element_base);
19270  }
19271  #[inline]
19272  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucPlotStyle<'b >>) {
19273    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPlotStyle>>(DucPlotElement::VT_STYLE, style);
19274  }
19275  #[inline]
19276  pub fn add_layout(&mut self, layout: flatbuffers::WIPOffset<PlotLayout<'b >>) {
19277    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PlotLayout>>(DucPlotElement::VT_LAYOUT, layout);
19278  }
19279  #[inline]
19280  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucPlotElementBuilder<'a, 'b, A> {
19281    let start = _fbb.start_table();
19282    DucPlotElementBuilder {
19283      fbb_: _fbb,
19284      start_: start,
19285    }
19286  }
19287  #[inline]
19288  pub fn finish(self) -> flatbuffers::WIPOffset<DucPlotElement<'a>> {
19289    let o = self.fbb_.end_table(self.start_);
19290    flatbuffers::WIPOffset::new(o.value())
19291  }
19292}
19293
19294impl core::fmt::Debug for DucPlotElement<'_> {
19295  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19296    let mut ds = f.debug_struct("DucPlotElement");
19297      ds.field("stack_element_base", &self.stack_element_base());
19298      ds.field("style", &self.style());
19299      ds.field("layout", &self.layout());
19300      ds.finish()
19301  }
19302}
19303pub enum DucViewportElementOffset {}
19304#[derive(Copy, Clone, PartialEq)]
19305
19306pub struct DucViewportElement<'a> {
19307  pub _tab: flatbuffers::Table<'a>,
19308}
19309
19310impl<'a> flatbuffers::Follow<'a> for DucViewportElement<'a> {
19311  type Inner = DucViewportElement<'a>;
19312  #[inline]
19313  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19314    Self { _tab: flatbuffers::Table::new(buf, loc) }
19315  }
19316}
19317
19318impl<'a> DucViewportElement<'a> {
19319  pub const VT_LINEAR_BASE: flatbuffers::VOffsetT = 4;
19320  pub const VT_STACK_BASE: flatbuffers::VOffsetT = 6;
19321  pub const VT_STYLE: flatbuffers::VOffsetT = 8;
19322  pub const VT_VIEW: flatbuffers::VOffsetT = 10;
19323  pub const VT_SCALE: flatbuffers::VOffsetT = 12;
19324  pub const VT_SHADE_PLOT: flatbuffers::VOffsetT = 14;
19325  pub const VT_FROZEN_GROUP_IDS: flatbuffers::VOffsetT = 16;
19326  pub const VT_STANDARD_OVERRIDE: flatbuffers::VOffsetT = 18;
19327
19328  #[inline]
19329  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19330    DucViewportElement { _tab: table }
19331  }
19332  #[allow(unused_mut)]
19333  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19334    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19335    args: &'args DucViewportElementArgs<'args>
19336  ) -> flatbuffers::WIPOffset<DucViewportElement<'bldr>> {
19337    let mut builder = DucViewportElementBuilder::new(_fbb);
19338    if let Some(x) = args.standard_override { builder.add_standard_override(x); }
19339    if let Some(x) = args.frozen_group_ids { builder.add_frozen_group_ids(x); }
19340    builder.add_scale(args.scale);
19341    if let Some(x) = args.view { builder.add_view(x); }
19342    if let Some(x) = args.style { builder.add_style(x); }
19343    if let Some(x) = args.stack_base { builder.add_stack_base(x); }
19344    if let Some(x) = args.linear_base { builder.add_linear_base(x); }
19345    if let Some(x) = args.shade_plot { builder.add_shade_plot(x); }
19346    builder.finish()
19347  }
19348
19349
19350  #[inline]
19351  pub fn linear_base(&self) -> Option<_DucLinearElementBase<'a>> {
19352    // Safety:
19353    // Created from valid Table for this object
19354    // which contains a valid value in this slot
19355    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>(DucViewportElement::VT_LINEAR_BASE, None)}
19356  }
19357  #[inline]
19358  pub fn stack_base(&self) -> Option<_DucStackBase<'a>> {
19359    // Safety:
19360    // Created from valid Table for this object
19361    // which contains a valid value in this slot
19362    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackBase>>(DucViewportElement::VT_STACK_BASE, None)}
19363  }
19364  #[inline]
19365  pub fn style(&self) -> Option<DucViewportStyle<'a>> {
19366    // Safety:
19367    // Created from valid Table for this object
19368    // which contains a valid value in this slot
19369    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucViewportStyle>>(DucViewportElement::VT_STYLE, None)}
19370  }
19371  #[inline]
19372  pub fn view(&self) -> Option<DucView<'a>> {
19373    // Safety:
19374    // Created from valid Table for this object
19375    // which contains a valid value in this slot
19376    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucView>>(DucViewportElement::VT_VIEW, None)}
19377  }
19378  #[inline]
19379  pub fn scale(&self) -> f32 {
19380    // Safety:
19381    // Created from valid Table for this object
19382    // which contains a valid value in this slot
19383    unsafe { self._tab.get::<f32>(DucViewportElement::VT_SCALE, Some(0.0)).unwrap()}
19384  }
19385  #[inline]
19386  pub fn shade_plot(&self) -> Option<VIEWPORT_SHADE_PLOT> {
19387    // Safety:
19388    // Created from valid Table for this object
19389    // which contains a valid value in this slot
19390    unsafe { self._tab.get::<VIEWPORT_SHADE_PLOT>(DucViewportElement::VT_SHADE_PLOT, None)}
19391  }
19392  #[inline]
19393  pub fn frozen_group_ids(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
19394    // Safety:
19395    // Created from valid Table for this object
19396    // which contains a valid value in this slot
19397    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(DucViewportElement::VT_FROZEN_GROUP_IDS, None)}
19398  }
19399  #[inline]
19400  pub fn standard_override(&self) -> Option<&'a str> {
19401    // Safety:
19402    // Created from valid Table for this object
19403    // which contains a valid value in this slot
19404    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucViewportElement::VT_STANDARD_OVERRIDE, None)}
19405  }
19406}
19407
19408impl flatbuffers::Verifiable for DucViewportElement<'_> {
19409  #[inline]
19410  fn run_verifier(
19411    v: &mut flatbuffers::Verifier, pos: usize
19412  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19413    use self::flatbuffers::Verifiable;
19414    v.visit_table(pos)?
19415     .visit_field::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>("linear_base", Self::VT_LINEAR_BASE, false)?
19416     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackBase>>("stack_base", Self::VT_STACK_BASE, false)?
19417     .visit_field::<flatbuffers::ForwardsUOffset<DucViewportStyle>>("style", Self::VT_STYLE, false)?
19418     .visit_field::<flatbuffers::ForwardsUOffset<DucView>>("view", Self::VT_VIEW, false)?
19419     .visit_field::<f32>("scale", Self::VT_SCALE, false)?
19420     .visit_field::<VIEWPORT_SHADE_PLOT>("shade_plot", Self::VT_SHADE_PLOT, false)?
19421     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("frozen_group_ids", Self::VT_FROZEN_GROUP_IDS, false)?
19422     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("standard_override", Self::VT_STANDARD_OVERRIDE, false)?
19423     .finish();
19424    Ok(())
19425  }
19426}
19427pub struct DucViewportElementArgs<'a> {
19428    pub linear_base: Option<flatbuffers::WIPOffset<_DucLinearElementBase<'a>>>,
19429    pub stack_base: Option<flatbuffers::WIPOffset<_DucStackBase<'a>>>,
19430    pub style: Option<flatbuffers::WIPOffset<DucViewportStyle<'a>>>,
19431    pub view: Option<flatbuffers::WIPOffset<DucView<'a>>>,
19432    pub scale: f32,
19433    pub shade_plot: Option<VIEWPORT_SHADE_PLOT>,
19434    pub frozen_group_ids: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
19435    pub standard_override: Option<flatbuffers::WIPOffset<&'a str>>,
19436}
19437impl<'a> Default for DucViewportElementArgs<'a> {
19438  #[inline]
19439  fn default() -> Self {
19440    DucViewportElementArgs {
19441      linear_base: None,
19442      stack_base: None,
19443      style: None,
19444      view: None,
19445      scale: 0.0,
19446      shade_plot: None,
19447      frozen_group_ids: None,
19448      standard_override: None,
19449    }
19450  }
19451}
19452
19453pub struct DucViewportElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19454  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19455  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19456}
19457impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucViewportElementBuilder<'a, 'b, A> {
19458  #[inline]
19459  pub fn add_linear_base(&mut self, linear_base: flatbuffers::WIPOffset<_DucLinearElementBase<'b >>) {
19460    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucLinearElementBase>>(DucViewportElement::VT_LINEAR_BASE, linear_base);
19461  }
19462  #[inline]
19463  pub fn add_stack_base(&mut self, stack_base: flatbuffers::WIPOffset<_DucStackBase<'b >>) {
19464    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackBase>>(DucViewportElement::VT_STACK_BASE, stack_base);
19465  }
19466  #[inline]
19467  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucViewportStyle<'b >>) {
19468    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucViewportStyle>>(DucViewportElement::VT_STYLE, style);
19469  }
19470  #[inline]
19471  pub fn add_view(&mut self, view: flatbuffers::WIPOffset<DucView<'b >>) {
19472    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucView>>(DucViewportElement::VT_VIEW, view);
19473  }
19474  #[inline]
19475  pub fn add_scale(&mut self, scale: f32) {
19476    self.fbb_.push_slot::<f32>(DucViewportElement::VT_SCALE, scale, 0.0);
19477  }
19478  #[inline]
19479  pub fn add_shade_plot(&mut self, shade_plot: VIEWPORT_SHADE_PLOT) {
19480    self.fbb_.push_slot_always::<VIEWPORT_SHADE_PLOT>(DucViewportElement::VT_SHADE_PLOT, shade_plot);
19481  }
19482  #[inline]
19483  pub fn add_frozen_group_ids(&mut self, frozen_group_ids: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
19484    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucViewportElement::VT_FROZEN_GROUP_IDS, frozen_group_ids);
19485  }
19486  #[inline]
19487  pub fn add_standard_override(&mut self, standard_override: flatbuffers::WIPOffset<&'b  str>) {
19488    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucViewportElement::VT_STANDARD_OVERRIDE, standard_override);
19489  }
19490  #[inline]
19491  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucViewportElementBuilder<'a, 'b, A> {
19492    let start = _fbb.start_table();
19493    DucViewportElementBuilder {
19494      fbb_: _fbb,
19495      start_: start,
19496    }
19497  }
19498  #[inline]
19499  pub fn finish(self) -> flatbuffers::WIPOffset<DucViewportElement<'a>> {
19500    let o = self.fbb_.end_table(self.start_);
19501    flatbuffers::WIPOffset::new(o.value())
19502  }
19503}
19504
19505impl core::fmt::Debug for DucViewportElement<'_> {
19506  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19507    let mut ds = f.debug_struct("DucViewportElement");
19508      ds.field("linear_base", &self.linear_base());
19509      ds.field("stack_base", &self.stack_base());
19510      ds.field("style", &self.style());
19511      ds.field("view", &self.view());
19512      ds.field("scale", &self.scale());
19513      ds.field("shade_plot", &self.shade_plot());
19514      ds.field("frozen_group_ids", &self.frozen_group_ids());
19515      ds.field("standard_override", &self.standard_override());
19516      ds.finish()
19517  }
19518}
19519pub enum DucXRayElementOffset {}
19520#[derive(Copy, Clone, PartialEq)]
19521
19522pub struct DucXRayElement<'a> {
19523  pub _tab: flatbuffers::Table<'a>,
19524}
19525
19526impl<'a> flatbuffers::Follow<'a> for DucXRayElement<'a> {
19527  type Inner = DucXRayElement<'a>;
19528  #[inline]
19529  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19530    Self { _tab: flatbuffers::Table::new(buf, loc) }
19531  }
19532}
19533
19534impl<'a> DucXRayElement<'a> {
19535  pub const VT_BASE: flatbuffers::VOffsetT = 4;
19536  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
19537  pub const VT_ORIGIN: flatbuffers::VOffsetT = 8;
19538  pub const VT_DIRECTION: flatbuffers::VOffsetT = 10;
19539  pub const VT_START_FROM_ORIGIN: flatbuffers::VOffsetT = 12;
19540
19541  #[inline]
19542  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19543    DucXRayElement { _tab: table }
19544  }
19545  #[allow(unused_mut)]
19546  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19547    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19548    args: &'args DucXRayElementArgs<'args>
19549  ) -> flatbuffers::WIPOffset<DucXRayElement<'bldr>> {
19550    let mut builder = DucXRayElementBuilder::new(_fbb);
19551    if let Some(x) = args.direction { builder.add_direction(x); }
19552    if let Some(x) = args.origin { builder.add_origin(x); }
19553    if let Some(x) = args.style { builder.add_style(x); }
19554    if let Some(x) = args.base { builder.add_base(x); }
19555    builder.add_start_from_origin(args.start_from_origin);
19556    builder.finish()
19557  }
19558
19559
19560  #[inline]
19561  pub fn base(&self) -> Option<_DucElementBase<'a>> {
19562    // Safety:
19563    // Created from valid Table for this object
19564    // which contains a valid value in this slot
19565    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucXRayElement::VT_BASE, None)}
19566  }
19567  #[inline]
19568  pub fn style(&self) -> Option<DucXRayStyle<'a>> {
19569    // Safety:
19570    // Created from valid Table for this object
19571    // which contains a valid value in this slot
19572    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucXRayStyle>>(DucXRayElement::VT_STYLE, None)}
19573  }
19574  #[inline]
19575  pub fn origin(&self) -> Option<DucPoint<'a>> {
19576    // Safety:
19577    // Created from valid Table for this object
19578    // which contains a valid value in this slot
19579    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(DucXRayElement::VT_ORIGIN, None)}
19580  }
19581  #[inline]
19582  pub fn direction(&self) -> Option<DucPoint<'a>> {
19583    // Safety:
19584    // Created from valid Table for this object
19585    // which contains a valid value in this slot
19586    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPoint>>(DucXRayElement::VT_DIRECTION, None)}
19587  }
19588  #[inline]
19589  pub fn start_from_origin(&self) -> bool {
19590    // Safety:
19591    // Created from valid Table for this object
19592    // which contains a valid value in this slot
19593    unsafe { self._tab.get::<bool>(DucXRayElement::VT_START_FROM_ORIGIN, Some(false)).unwrap()}
19594  }
19595}
19596
19597impl flatbuffers::Verifiable for DucXRayElement<'_> {
19598  #[inline]
19599  fn run_verifier(
19600    v: &mut flatbuffers::Verifier, pos: usize
19601  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19602    use self::flatbuffers::Verifiable;
19603    v.visit_table(pos)?
19604     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
19605     .visit_field::<flatbuffers::ForwardsUOffset<DucXRayStyle>>("style", Self::VT_STYLE, false)?
19606     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("origin", Self::VT_ORIGIN, false)?
19607     .visit_field::<flatbuffers::ForwardsUOffset<DucPoint>>("direction", Self::VT_DIRECTION, false)?
19608     .visit_field::<bool>("start_from_origin", Self::VT_START_FROM_ORIGIN, false)?
19609     .finish();
19610    Ok(())
19611  }
19612}
19613pub struct DucXRayElementArgs<'a> {
19614    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
19615    pub style: Option<flatbuffers::WIPOffset<DucXRayStyle<'a>>>,
19616    pub origin: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
19617    pub direction: Option<flatbuffers::WIPOffset<DucPoint<'a>>>,
19618    pub start_from_origin: bool,
19619}
19620impl<'a> Default for DucXRayElementArgs<'a> {
19621  #[inline]
19622  fn default() -> Self {
19623    DucXRayElementArgs {
19624      base: None,
19625      style: None,
19626      origin: None,
19627      direction: None,
19628      start_from_origin: false,
19629    }
19630  }
19631}
19632
19633pub struct DucXRayElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19634  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19635  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19636}
19637impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucXRayElementBuilder<'a, 'b, A> {
19638  #[inline]
19639  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
19640    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucXRayElement::VT_BASE, base);
19641  }
19642  #[inline]
19643  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucXRayStyle<'b >>) {
19644    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucXRayStyle>>(DucXRayElement::VT_STYLE, style);
19645  }
19646  #[inline]
19647  pub fn add_origin(&mut self, origin: flatbuffers::WIPOffset<DucPoint<'b >>) {
19648    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(DucXRayElement::VT_ORIGIN, origin);
19649  }
19650  #[inline]
19651  pub fn add_direction(&mut self, direction: flatbuffers::WIPOffset<DucPoint<'b >>) {
19652    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPoint>>(DucXRayElement::VT_DIRECTION, direction);
19653  }
19654  #[inline]
19655  pub fn add_start_from_origin(&mut self, start_from_origin: bool) {
19656    self.fbb_.push_slot::<bool>(DucXRayElement::VT_START_FROM_ORIGIN, start_from_origin, false);
19657  }
19658  #[inline]
19659  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucXRayElementBuilder<'a, 'b, A> {
19660    let start = _fbb.start_table();
19661    DucXRayElementBuilder {
19662      fbb_: _fbb,
19663      start_: start,
19664    }
19665  }
19666  #[inline]
19667  pub fn finish(self) -> flatbuffers::WIPOffset<DucXRayElement<'a>> {
19668    let o = self.fbb_.end_table(self.start_);
19669    flatbuffers::WIPOffset::new(o.value())
19670  }
19671}
19672
19673impl core::fmt::Debug for DucXRayElement<'_> {
19674  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19675    let mut ds = f.debug_struct("DucXRayElement");
19676      ds.field("base", &self.base());
19677      ds.field("style", &self.style());
19678      ds.field("origin", &self.origin());
19679      ds.field("direction", &self.direction());
19680      ds.field("start_from_origin", &self.start_from_origin());
19681      ds.finish()
19682  }
19683}
19684pub enum LeaderTextBlockContentOffset {}
19685#[derive(Copy, Clone, PartialEq)]
19686
19687pub struct LeaderTextBlockContent<'a> {
19688  pub _tab: flatbuffers::Table<'a>,
19689}
19690
19691impl<'a> flatbuffers::Follow<'a> for LeaderTextBlockContent<'a> {
19692  type Inner = LeaderTextBlockContent<'a>;
19693  #[inline]
19694  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19695    Self { _tab: flatbuffers::Table::new(buf, loc) }
19696  }
19697}
19698
19699impl<'a> LeaderTextBlockContent<'a> {
19700  pub const VT_TEXT: flatbuffers::VOffsetT = 4;
19701
19702  #[inline]
19703  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19704    LeaderTextBlockContent { _tab: table }
19705  }
19706  #[allow(unused_mut)]
19707  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19708    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19709    args: &'args LeaderTextBlockContentArgs<'args>
19710  ) -> flatbuffers::WIPOffset<LeaderTextBlockContent<'bldr>> {
19711    let mut builder = LeaderTextBlockContentBuilder::new(_fbb);
19712    if let Some(x) = args.text { builder.add_text(x); }
19713    builder.finish()
19714  }
19715
19716
19717  #[inline]
19718  pub fn text(&self) -> Option<&'a str> {
19719    // Safety:
19720    // Created from valid Table for this object
19721    // which contains a valid value in this slot
19722    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(LeaderTextBlockContent::VT_TEXT, None)}
19723  }
19724}
19725
19726impl flatbuffers::Verifiable for LeaderTextBlockContent<'_> {
19727  #[inline]
19728  fn run_verifier(
19729    v: &mut flatbuffers::Verifier, pos: usize
19730  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19731    use self::flatbuffers::Verifiable;
19732    v.visit_table(pos)?
19733     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("text", Self::VT_TEXT, false)?
19734     .finish();
19735    Ok(())
19736  }
19737}
19738pub struct LeaderTextBlockContentArgs<'a> {
19739    pub text: Option<flatbuffers::WIPOffset<&'a str>>,
19740}
19741impl<'a> Default for LeaderTextBlockContentArgs<'a> {
19742  #[inline]
19743  fn default() -> Self {
19744    LeaderTextBlockContentArgs {
19745      text: None,
19746    }
19747  }
19748}
19749
19750pub struct LeaderTextBlockContentBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19751  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19752  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19753}
19754impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LeaderTextBlockContentBuilder<'a, 'b, A> {
19755  #[inline]
19756  pub fn add_text(&mut self, text: flatbuffers::WIPOffset<&'b  str>) {
19757    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LeaderTextBlockContent::VT_TEXT, text);
19758  }
19759  #[inline]
19760  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LeaderTextBlockContentBuilder<'a, 'b, A> {
19761    let start = _fbb.start_table();
19762    LeaderTextBlockContentBuilder {
19763      fbb_: _fbb,
19764      start_: start,
19765    }
19766  }
19767  #[inline]
19768  pub fn finish(self) -> flatbuffers::WIPOffset<LeaderTextBlockContent<'a>> {
19769    let o = self.fbb_.end_table(self.start_);
19770    flatbuffers::WIPOffset::new(o.value())
19771  }
19772}
19773
19774impl core::fmt::Debug for LeaderTextBlockContent<'_> {
19775  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19776    let mut ds = f.debug_struct("LeaderTextBlockContent");
19777      ds.field("text", &self.text());
19778      ds.finish()
19779  }
19780}
19781pub enum LeaderBlockContentOffset {}
19782#[derive(Copy, Clone, PartialEq)]
19783
19784pub struct LeaderBlockContent<'a> {
19785  pub _tab: flatbuffers::Table<'a>,
19786}
19787
19788impl<'a> flatbuffers::Follow<'a> for LeaderBlockContent<'a> {
19789  type Inner = LeaderBlockContent<'a>;
19790  #[inline]
19791  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19792    Self { _tab: flatbuffers::Table::new(buf, loc) }
19793  }
19794}
19795
19796impl<'a> LeaderBlockContent<'a> {
19797  pub const VT_BLOCK_ID: flatbuffers::VOffsetT = 4;
19798  pub const VT_ATTRIBUTE_VALUES: flatbuffers::VOffsetT = 6;
19799  pub const VT_ELEMENT_OVERRIDES: flatbuffers::VOffsetT = 8;
19800
19801  #[inline]
19802  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19803    LeaderBlockContent { _tab: table }
19804  }
19805  #[allow(unused_mut)]
19806  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19807    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19808    args: &'args LeaderBlockContentArgs<'args>
19809  ) -> flatbuffers::WIPOffset<LeaderBlockContent<'bldr>> {
19810    let mut builder = LeaderBlockContentBuilder::new(_fbb);
19811    if let Some(x) = args.element_overrides { builder.add_element_overrides(x); }
19812    if let Some(x) = args.attribute_values { builder.add_attribute_values(x); }
19813    if let Some(x) = args.block_id { builder.add_block_id(x); }
19814    builder.finish()
19815  }
19816
19817
19818  #[inline]
19819  pub fn block_id(&self) -> Option<&'a str> {
19820    // Safety:
19821    // Created from valid Table for this object
19822    // which contains a valid value in this slot
19823    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(LeaderBlockContent::VT_BLOCK_ID, None)}
19824  }
19825  #[inline]
19826  pub fn attribute_values(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>> {
19827    // Safety:
19828    // Created from valid Table for this object
19829    // which contains a valid value in this slot
19830    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry>>>>(LeaderBlockContent::VT_ATTRIBUTE_VALUES, None)}
19831  }
19832  #[inline]
19833  pub fn element_overrides(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>> {
19834    // Safety:
19835    // Created from valid Table for this object
19836    // which contains a valid value in this slot
19837    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry>>>>(LeaderBlockContent::VT_ELEMENT_OVERRIDES, None)}
19838  }
19839}
19840
19841impl flatbuffers::Verifiable for LeaderBlockContent<'_> {
19842  #[inline]
19843  fn run_verifier(
19844    v: &mut flatbuffers::Verifier, pos: usize
19845  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
19846    use self::flatbuffers::Verifiable;
19847    v.visit_table(pos)?
19848     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("block_id", Self::VT_BLOCK_ID, false)?
19849     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<StringValueEntry>>>>("attribute_values", Self::VT_ATTRIBUTE_VALUES, false)?
19850     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<StringValueEntry>>>>("element_overrides", Self::VT_ELEMENT_OVERRIDES, false)?
19851     .finish();
19852    Ok(())
19853  }
19854}
19855pub struct LeaderBlockContentArgs<'a> {
19856    pub block_id: Option<flatbuffers::WIPOffset<&'a str>>,
19857    pub attribute_values: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>>>,
19858    pub element_overrides: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<StringValueEntry<'a>>>>>,
19859}
19860impl<'a> Default for LeaderBlockContentArgs<'a> {
19861  #[inline]
19862  fn default() -> Self {
19863    LeaderBlockContentArgs {
19864      block_id: None,
19865      attribute_values: None,
19866      element_overrides: None,
19867    }
19868  }
19869}
19870
19871pub struct LeaderBlockContentBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
19872  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
19873  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
19874}
19875impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LeaderBlockContentBuilder<'a, 'b, A> {
19876  #[inline]
19877  pub fn add_block_id(&mut self, block_id: flatbuffers::WIPOffset<&'b  str>) {
19878    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LeaderBlockContent::VT_BLOCK_ID, block_id);
19879  }
19880  #[inline]
19881  pub fn add_attribute_values(&mut self, attribute_values: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<StringValueEntry<'b >>>>) {
19882    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LeaderBlockContent::VT_ATTRIBUTE_VALUES, attribute_values);
19883  }
19884  #[inline]
19885  pub fn add_element_overrides(&mut self, element_overrides: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<StringValueEntry<'b >>>>) {
19886    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LeaderBlockContent::VT_ELEMENT_OVERRIDES, element_overrides);
19887  }
19888  #[inline]
19889  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LeaderBlockContentBuilder<'a, 'b, A> {
19890    let start = _fbb.start_table();
19891    LeaderBlockContentBuilder {
19892      fbb_: _fbb,
19893      start_: start,
19894    }
19895  }
19896  #[inline]
19897  pub fn finish(self) -> flatbuffers::WIPOffset<LeaderBlockContent<'a>> {
19898    let o = self.fbb_.end_table(self.start_);
19899    flatbuffers::WIPOffset::new(o.value())
19900  }
19901}
19902
19903impl core::fmt::Debug for LeaderBlockContent<'_> {
19904  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
19905    let mut ds = f.debug_struct("LeaderBlockContent");
19906      ds.field("block_id", &self.block_id());
19907      ds.field("attribute_values", &self.attribute_values());
19908      ds.field("element_overrides", &self.element_overrides());
19909      ds.finish()
19910  }
19911}
19912pub enum LeaderContentOffset {}
19913#[derive(Copy, Clone, PartialEq)]
19914
19915pub struct LeaderContent<'a> {
19916  pub _tab: flatbuffers::Table<'a>,
19917}
19918
19919impl<'a> flatbuffers::Follow<'a> for LeaderContent<'a> {
19920  type Inner = LeaderContent<'a>;
19921  #[inline]
19922  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
19923    Self { _tab: flatbuffers::Table::new(buf, loc) }
19924  }
19925}
19926
19927impl<'a> LeaderContent<'a> {
19928  pub const VT_LEADER_CONTENT_TYPE: flatbuffers::VOffsetT = 4;
19929  pub const VT_CONTENT_TYPE: flatbuffers::VOffsetT = 6;
19930  pub const VT_CONTENT: flatbuffers::VOffsetT = 8;
19931
19932  #[inline]
19933  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
19934    LeaderContent { _tab: table }
19935  }
19936  #[allow(unused_mut)]
19937  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
19938    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
19939    args: &'args LeaderContentArgs
19940  ) -> flatbuffers::WIPOffset<LeaderContent<'bldr>> {
19941    let mut builder = LeaderContentBuilder::new(_fbb);
19942    if let Some(x) = args.content { builder.add_content(x); }
19943    builder.add_content_type(args.content_type);
19944    if let Some(x) = args.leader_content_type { builder.add_leader_content_type(x); }
19945    builder.finish()
19946  }
19947
19948
19949  #[inline]
19950  pub fn leader_content_type(&self) -> Option<LEADER_CONTENT_TYPE> {
19951    // Safety:
19952    // Created from valid Table for this object
19953    // which contains a valid value in this slot
19954    unsafe { self._tab.get::<LEADER_CONTENT_TYPE>(LeaderContent::VT_LEADER_CONTENT_TYPE, None)}
19955  }
19956  #[inline]
19957  pub fn content_type(&self) -> LeaderContentData {
19958    // Safety:
19959    // Created from valid Table for this object
19960    // which contains a valid value in this slot
19961    unsafe { self._tab.get::<LeaderContentData>(LeaderContent::VT_CONTENT_TYPE, Some(LeaderContentData::NONE)).unwrap()}
19962  }
19963  #[inline]
19964  pub fn content(&self) -> Option<flatbuffers::Table<'a>> {
19965    // Safety:
19966    // Created from valid Table for this object
19967    // which contains a valid value in this slot
19968    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(LeaderContent::VT_CONTENT, None)}
19969  }
19970  #[inline]
19971  #[allow(non_snake_case)]
19972  pub fn content_as_leader_text_block_content(&self) -> Option<LeaderTextBlockContent<'a>> {
19973    if self.content_type() == LeaderContentData::LeaderTextBlockContent {
19974      self.content().map(|t| {
19975       // Safety:
19976       // Created from a valid Table for this object
19977       // Which contains a valid union in this slot
19978       unsafe { LeaderTextBlockContent::init_from_table(t) }
19979     })
19980    } else {
19981      None
19982    }
19983  }
19984
19985  #[inline]
19986  #[allow(non_snake_case)]
19987  pub fn content_as_leader_block_content(&self) -> Option<LeaderBlockContent<'a>> {
19988    if self.content_type() == LeaderContentData::LeaderBlockContent {
19989      self.content().map(|t| {
19990       // Safety:
19991       // Created from a valid Table for this object
19992       // Which contains a valid union in this slot
19993       unsafe { LeaderBlockContent::init_from_table(t) }
19994     })
19995    } else {
19996      None
19997    }
19998  }
19999
20000}
20001
20002impl flatbuffers::Verifiable for LeaderContent<'_> {
20003  #[inline]
20004  fn run_verifier(
20005    v: &mut flatbuffers::Verifier, pos: usize
20006  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20007    use self::flatbuffers::Verifiable;
20008    v.visit_table(pos)?
20009     .visit_field::<LEADER_CONTENT_TYPE>("leader_content_type", Self::VT_LEADER_CONTENT_TYPE, false)?
20010     .visit_union::<LeaderContentData, _>("content_type", Self::VT_CONTENT_TYPE, "content", Self::VT_CONTENT, false, |key, v, pos| {
20011        match key {
20012          LeaderContentData::LeaderTextBlockContent => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LeaderTextBlockContent>>("LeaderContentData::LeaderTextBlockContent", pos),
20013          LeaderContentData::LeaderBlockContent => v.verify_union_variant::<flatbuffers::ForwardsUOffset<LeaderBlockContent>>("LeaderContentData::LeaderBlockContent", pos),
20014          _ => Ok(()),
20015        }
20016     })?
20017     .finish();
20018    Ok(())
20019  }
20020}
20021pub struct LeaderContentArgs {
20022    pub leader_content_type: Option<LEADER_CONTENT_TYPE>,
20023    pub content_type: LeaderContentData,
20024    pub content: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
20025}
20026impl<'a> Default for LeaderContentArgs {
20027  #[inline]
20028  fn default() -> Self {
20029    LeaderContentArgs {
20030      leader_content_type: None,
20031      content_type: LeaderContentData::NONE,
20032      content: None,
20033    }
20034  }
20035}
20036
20037pub struct LeaderContentBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20038  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20039  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20040}
20041impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LeaderContentBuilder<'a, 'b, A> {
20042  #[inline]
20043  pub fn add_leader_content_type(&mut self, leader_content_type: LEADER_CONTENT_TYPE) {
20044    self.fbb_.push_slot_always::<LEADER_CONTENT_TYPE>(LeaderContent::VT_LEADER_CONTENT_TYPE, leader_content_type);
20045  }
20046  #[inline]
20047  pub fn add_content_type(&mut self, content_type: LeaderContentData) {
20048    self.fbb_.push_slot::<LeaderContentData>(LeaderContent::VT_CONTENT_TYPE, content_type, LeaderContentData::NONE);
20049  }
20050  #[inline]
20051  pub fn add_content(&mut self, content: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
20052    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LeaderContent::VT_CONTENT, content);
20053  }
20054  #[inline]
20055  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LeaderContentBuilder<'a, 'b, A> {
20056    let start = _fbb.start_table();
20057    LeaderContentBuilder {
20058      fbb_: _fbb,
20059      start_: start,
20060    }
20061  }
20062  #[inline]
20063  pub fn finish(self) -> flatbuffers::WIPOffset<LeaderContent<'a>> {
20064    let o = self.fbb_.end_table(self.start_);
20065    flatbuffers::WIPOffset::new(o.value())
20066  }
20067}
20068
20069impl core::fmt::Debug for LeaderContent<'_> {
20070  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20071    let mut ds = f.debug_struct("LeaderContent");
20072      ds.field("leader_content_type", &self.leader_content_type());
20073      ds.field("content_type", &self.content_type());
20074      match self.content_type() {
20075        LeaderContentData::LeaderTextBlockContent => {
20076          if let Some(x) = self.content_as_leader_text_block_content() {
20077            ds.field("content", &x)
20078          } else {
20079            ds.field("content", &"InvalidFlatbuffer: Union discriminant does not match value.")
20080          }
20081        },
20082        LeaderContentData::LeaderBlockContent => {
20083          if let Some(x) = self.content_as_leader_block_content() {
20084            ds.field("content", &x)
20085          } else {
20086            ds.field("content", &"InvalidFlatbuffer: Union discriminant does not match value.")
20087          }
20088        },
20089        _ => {
20090          let x: Option<()> = None;
20091          ds.field("content", &x)
20092        },
20093      };
20094      ds.finish()
20095  }
20096}
20097pub enum DucLeaderElementOffset {}
20098#[derive(Copy, Clone, PartialEq)]
20099
20100pub struct DucLeaderElement<'a> {
20101  pub _tab: flatbuffers::Table<'a>,
20102}
20103
20104impl<'a> flatbuffers::Follow<'a> for DucLeaderElement<'a> {
20105  type Inner = DucLeaderElement<'a>;
20106  #[inline]
20107  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20108    Self { _tab: flatbuffers::Table::new(buf, loc) }
20109  }
20110}
20111
20112impl<'a> DucLeaderElement<'a> {
20113  pub const VT_LINEAR_BASE: flatbuffers::VOffsetT = 4;
20114  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
20115  pub const VT_CONTENT: flatbuffers::VOffsetT = 8;
20116  pub const VT_CONTENT_ANCHOR: flatbuffers::VOffsetT = 10;
20117
20118  #[inline]
20119  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20120    DucLeaderElement { _tab: table }
20121  }
20122  #[allow(unused_mut)]
20123  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20124    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20125    args: &'args DucLeaderElementArgs<'args>
20126  ) -> flatbuffers::WIPOffset<DucLeaderElement<'bldr>> {
20127    let mut builder = DucLeaderElementBuilder::new(_fbb);
20128    if let Some(x) = args.content_anchor { builder.add_content_anchor(x); }
20129    if let Some(x) = args.content { builder.add_content(x); }
20130    if let Some(x) = args.style { builder.add_style(x); }
20131    if let Some(x) = args.linear_base { builder.add_linear_base(x); }
20132    builder.finish()
20133  }
20134
20135
20136  #[inline]
20137  pub fn linear_base(&self) -> Option<_DucLinearElementBase<'a>> {
20138    // Safety:
20139    // Created from valid Table for this object
20140    // which contains a valid value in this slot
20141    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>(DucLeaderElement::VT_LINEAR_BASE, None)}
20142  }
20143  #[inline]
20144  pub fn style(&self) -> Option<DucLeaderStyle<'a>> {
20145    // Safety:
20146    // Created from valid Table for this object
20147    // which contains a valid value in this slot
20148    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLeaderStyle>>(DucLeaderElement::VT_STYLE, None)}
20149  }
20150  #[inline]
20151  pub fn content(&self) -> Option<LeaderContent<'a>> {
20152    // Safety:
20153    // Created from valid Table for this object
20154    // which contains a valid value in this slot
20155    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<LeaderContent>>(DucLeaderElement::VT_CONTENT, None)}
20156  }
20157  #[inline]
20158  pub fn content_anchor(&self) -> Option<&'a GeometricPoint> {
20159    // Safety:
20160    // Created from valid Table for this object
20161    // which contains a valid value in this slot
20162    unsafe { self._tab.get::<GeometricPoint>(DucLeaderElement::VT_CONTENT_ANCHOR, None)}
20163  }
20164}
20165
20166impl flatbuffers::Verifiable for DucLeaderElement<'_> {
20167  #[inline]
20168  fn run_verifier(
20169    v: &mut flatbuffers::Verifier, pos: usize
20170  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20171    use self::flatbuffers::Verifiable;
20172    v.visit_table(pos)?
20173     .visit_field::<flatbuffers::ForwardsUOffset<_DucLinearElementBase>>("linear_base", Self::VT_LINEAR_BASE, false)?
20174     .visit_field::<flatbuffers::ForwardsUOffset<DucLeaderStyle>>("style", Self::VT_STYLE, false)?
20175     .visit_field::<flatbuffers::ForwardsUOffset<LeaderContent>>("content", Self::VT_CONTENT, false)?
20176     .visit_field::<GeometricPoint>("content_anchor", Self::VT_CONTENT_ANCHOR, false)?
20177     .finish();
20178    Ok(())
20179  }
20180}
20181pub struct DucLeaderElementArgs<'a> {
20182    pub linear_base: Option<flatbuffers::WIPOffset<_DucLinearElementBase<'a>>>,
20183    pub style: Option<flatbuffers::WIPOffset<DucLeaderStyle<'a>>>,
20184    pub content: Option<flatbuffers::WIPOffset<LeaderContent<'a>>>,
20185    pub content_anchor: Option<&'a GeometricPoint>,
20186}
20187impl<'a> Default for DucLeaderElementArgs<'a> {
20188  #[inline]
20189  fn default() -> Self {
20190    DucLeaderElementArgs {
20191      linear_base: None,
20192      style: None,
20193      content: None,
20194      content_anchor: None,
20195    }
20196  }
20197}
20198
20199pub struct DucLeaderElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20200  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20201  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20202}
20203impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLeaderElementBuilder<'a, 'b, A> {
20204  #[inline]
20205  pub fn add_linear_base(&mut self, linear_base: flatbuffers::WIPOffset<_DucLinearElementBase<'b >>) {
20206    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucLinearElementBase>>(DucLeaderElement::VT_LINEAR_BASE, linear_base);
20207  }
20208  #[inline]
20209  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucLeaderStyle<'b >>) {
20210    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLeaderStyle>>(DucLeaderElement::VT_STYLE, style);
20211  }
20212  #[inline]
20213  pub fn add_content(&mut self, content: flatbuffers::WIPOffset<LeaderContent<'b >>) {
20214    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<LeaderContent>>(DucLeaderElement::VT_CONTENT, content);
20215  }
20216  #[inline]
20217  pub fn add_content_anchor(&mut self, content_anchor: &GeometricPoint) {
20218    self.fbb_.push_slot_always::<&GeometricPoint>(DucLeaderElement::VT_CONTENT_ANCHOR, content_anchor);
20219  }
20220  #[inline]
20221  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLeaderElementBuilder<'a, 'b, A> {
20222    let start = _fbb.start_table();
20223    DucLeaderElementBuilder {
20224      fbb_: _fbb,
20225      start_: start,
20226    }
20227  }
20228  #[inline]
20229  pub fn finish(self) -> flatbuffers::WIPOffset<DucLeaderElement<'a>> {
20230    let o = self.fbb_.end_table(self.start_);
20231    flatbuffers::WIPOffset::new(o.value())
20232  }
20233}
20234
20235impl core::fmt::Debug for DucLeaderElement<'_> {
20236  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20237    let mut ds = f.debug_struct("DucLeaderElement");
20238      ds.field("linear_base", &self.linear_base());
20239      ds.field("style", &self.style());
20240      ds.field("content", &self.content());
20241      ds.field("content_anchor", &self.content_anchor());
20242      ds.finish()
20243  }
20244}
20245pub enum DimensionDefinitionPointsOffset {}
20246#[derive(Copy, Clone, PartialEq)]
20247
20248pub struct DimensionDefinitionPoints<'a> {
20249  pub _tab: flatbuffers::Table<'a>,
20250}
20251
20252impl<'a> flatbuffers::Follow<'a> for DimensionDefinitionPoints<'a> {
20253  type Inner = DimensionDefinitionPoints<'a>;
20254  #[inline]
20255  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20256    Self { _tab: flatbuffers::Table::new(buf, loc) }
20257  }
20258}
20259
20260impl<'a> DimensionDefinitionPoints<'a> {
20261  pub const VT_ORIGIN1: flatbuffers::VOffsetT = 4;
20262  pub const VT_ORIGIN2: flatbuffers::VOffsetT = 6;
20263  pub const VT_LOCATION: flatbuffers::VOffsetT = 8;
20264  pub const VT_CENTER: flatbuffers::VOffsetT = 10;
20265  pub const VT_JOG: flatbuffers::VOffsetT = 12;
20266
20267  #[inline]
20268  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20269    DimensionDefinitionPoints { _tab: table }
20270  }
20271  #[allow(unused_mut)]
20272  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20273    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20274    args: &'args DimensionDefinitionPointsArgs<'args>
20275  ) -> flatbuffers::WIPOffset<DimensionDefinitionPoints<'bldr>> {
20276    let mut builder = DimensionDefinitionPointsBuilder::new(_fbb);
20277    if let Some(x) = args.jog { builder.add_jog(x); }
20278    if let Some(x) = args.center { builder.add_center(x); }
20279    if let Some(x) = args.location { builder.add_location(x); }
20280    if let Some(x) = args.origin2 { builder.add_origin2(x); }
20281    if let Some(x) = args.origin1 { builder.add_origin1(x); }
20282    builder.finish()
20283  }
20284
20285
20286  #[inline]
20287  pub fn origin1(&self) -> Option<&'a GeometricPoint> {
20288    // Safety:
20289    // Created from valid Table for this object
20290    // which contains a valid value in this slot
20291    unsafe { self._tab.get::<GeometricPoint>(DimensionDefinitionPoints::VT_ORIGIN1, None)}
20292  }
20293  #[inline]
20294  pub fn origin2(&self) -> Option<&'a GeometricPoint> {
20295    // Safety:
20296    // Created from valid Table for this object
20297    // which contains a valid value in this slot
20298    unsafe { self._tab.get::<GeometricPoint>(DimensionDefinitionPoints::VT_ORIGIN2, None)}
20299  }
20300  #[inline]
20301  pub fn location(&self) -> Option<&'a GeometricPoint> {
20302    // Safety:
20303    // Created from valid Table for this object
20304    // which contains a valid value in this slot
20305    unsafe { self._tab.get::<GeometricPoint>(DimensionDefinitionPoints::VT_LOCATION, None)}
20306  }
20307  #[inline]
20308  pub fn center(&self) -> Option<&'a GeometricPoint> {
20309    // Safety:
20310    // Created from valid Table for this object
20311    // which contains a valid value in this slot
20312    unsafe { self._tab.get::<GeometricPoint>(DimensionDefinitionPoints::VT_CENTER, None)}
20313  }
20314  #[inline]
20315  pub fn jog(&self) -> Option<&'a GeometricPoint> {
20316    // Safety:
20317    // Created from valid Table for this object
20318    // which contains a valid value in this slot
20319    unsafe { self._tab.get::<GeometricPoint>(DimensionDefinitionPoints::VT_JOG, None)}
20320  }
20321}
20322
20323impl flatbuffers::Verifiable for DimensionDefinitionPoints<'_> {
20324  #[inline]
20325  fn run_verifier(
20326    v: &mut flatbuffers::Verifier, pos: usize
20327  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20328    use self::flatbuffers::Verifiable;
20329    v.visit_table(pos)?
20330     .visit_field::<GeometricPoint>("origin1", Self::VT_ORIGIN1, false)?
20331     .visit_field::<GeometricPoint>("origin2", Self::VT_ORIGIN2, false)?
20332     .visit_field::<GeometricPoint>("location", Self::VT_LOCATION, false)?
20333     .visit_field::<GeometricPoint>("center", Self::VT_CENTER, false)?
20334     .visit_field::<GeometricPoint>("jog", Self::VT_JOG, false)?
20335     .finish();
20336    Ok(())
20337  }
20338}
20339pub struct DimensionDefinitionPointsArgs<'a> {
20340    pub origin1: Option<&'a GeometricPoint>,
20341    pub origin2: Option<&'a GeometricPoint>,
20342    pub location: Option<&'a GeometricPoint>,
20343    pub center: Option<&'a GeometricPoint>,
20344    pub jog: Option<&'a GeometricPoint>,
20345}
20346impl<'a> Default for DimensionDefinitionPointsArgs<'a> {
20347  #[inline]
20348  fn default() -> Self {
20349    DimensionDefinitionPointsArgs {
20350      origin1: None,
20351      origin2: None,
20352      location: None,
20353      center: None,
20354      jog: None,
20355    }
20356  }
20357}
20358
20359pub struct DimensionDefinitionPointsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20360  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20361  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20362}
20363impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionDefinitionPointsBuilder<'a, 'b, A> {
20364  #[inline]
20365  pub fn add_origin1(&mut self, origin1: &GeometricPoint) {
20366    self.fbb_.push_slot_always::<&GeometricPoint>(DimensionDefinitionPoints::VT_ORIGIN1, origin1);
20367  }
20368  #[inline]
20369  pub fn add_origin2(&mut self, origin2: &GeometricPoint) {
20370    self.fbb_.push_slot_always::<&GeometricPoint>(DimensionDefinitionPoints::VT_ORIGIN2, origin2);
20371  }
20372  #[inline]
20373  pub fn add_location(&mut self, location: &GeometricPoint) {
20374    self.fbb_.push_slot_always::<&GeometricPoint>(DimensionDefinitionPoints::VT_LOCATION, location);
20375  }
20376  #[inline]
20377  pub fn add_center(&mut self, center: &GeometricPoint) {
20378    self.fbb_.push_slot_always::<&GeometricPoint>(DimensionDefinitionPoints::VT_CENTER, center);
20379  }
20380  #[inline]
20381  pub fn add_jog(&mut self, jog: &GeometricPoint) {
20382    self.fbb_.push_slot_always::<&GeometricPoint>(DimensionDefinitionPoints::VT_JOG, jog);
20383  }
20384  #[inline]
20385  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionDefinitionPointsBuilder<'a, 'b, A> {
20386    let start = _fbb.start_table();
20387    DimensionDefinitionPointsBuilder {
20388      fbb_: _fbb,
20389      start_: start,
20390    }
20391  }
20392  #[inline]
20393  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionDefinitionPoints<'a>> {
20394    let o = self.fbb_.end_table(self.start_);
20395    flatbuffers::WIPOffset::new(o.value())
20396  }
20397}
20398
20399impl core::fmt::Debug for DimensionDefinitionPoints<'_> {
20400  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20401    let mut ds = f.debug_struct("DimensionDefinitionPoints");
20402      ds.field("origin1", &self.origin1());
20403      ds.field("origin2", &self.origin2());
20404      ds.field("location", &self.location());
20405      ds.field("center", &self.center());
20406      ds.field("jog", &self.jog());
20407      ds.finish()
20408  }
20409}
20410pub enum DimensionBindingsOffset {}
20411#[derive(Copy, Clone, PartialEq)]
20412
20413pub struct DimensionBindings<'a> {
20414  pub _tab: flatbuffers::Table<'a>,
20415}
20416
20417impl<'a> flatbuffers::Follow<'a> for DimensionBindings<'a> {
20418  type Inner = DimensionBindings<'a>;
20419  #[inline]
20420  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20421    Self { _tab: flatbuffers::Table::new(buf, loc) }
20422  }
20423}
20424
20425impl<'a> DimensionBindings<'a> {
20426  pub const VT_ORIGIN1: flatbuffers::VOffsetT = 4;
20427  pub const VT_ORIGIN2: flatbuffers::VOffsetT = 6;
20428  pub const VT_CENTER: flatbuffers::VOffsetT = 8;
20429
20430  #[inline]
20431  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20432    DimensionBindings { _tab: table }
20433  }
20434  #[allow(unused_mut)]
20435  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20436    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20437    args: &'args DimensionBindingsArgs<'args>
20438  ) -> flatbuffers::WIPOffset<DimensionBindings<'bldr>> {
20439    let mut builder = DimensionBindingsBuilder::new(_fbb);
20440    if let Some(x) = args.center { builder.add_center(x); }
20441    if let Some(x) = args.origin2 { builder.add_origin2(x); }
20442    if let Some(x) = args.origin1 { builder.add_origin1(x); }
20443    builder.finish()
20444  }
20445
20446
20447  #[inline]
20448  pub fn origin1(&self) -> Option<DucPointBinding<'a>> {
20449    // Safety:
20450    // Created from valid Table for this object
20451    // which contains a valid value in this slot
20452    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(DimensionBindings::VT_ORIGIN1, None)}
20453  }
20454  #[inline]
20455  pub fn origin2(&self) -> Option<DucPointBinding<'a>> {
20456    // Safety:
20457    // Created from valid Table for this object
20458    // which contains a valid value in this slot
20459    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(DimensionBindings::VT_ORIGIN2, None)}
20460  }
20461  #[inline]
20462  pub fn center(&self) -> Option<DucPointBinding<'a>> {
20463    // Safety:
20464    // Created from valid Table for this object
20465    // which contains a valid value in this slot
20466    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(DimensionBindings::VT_CENTER, None)}
20467  }
20468}
20469
20470impl flatbuffers::Verifiable for DimensionBindings<'_> {
20471  #[inline]
20472  fn run_verifier(
20473    v: &mut flatbuffers::Verifier, pos: usize
20474  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20475    use self::flatbuffers::Verifiable;
20476    v.visit_table(pos)?
20477     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("origin1", Self::VT_ORIGIN1, false)?
20478     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("origin2", Self::VT_ORIGIN2, false)?
20479     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("center", Self::VT_CENTER, false)?
20480     .finish();
20481    Ok(())
20482  }
20483}
20484pub struct DimensionBindingsArgs<'a> {
20485    pub origin1: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
20486    pub origin2: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
20487    pub center: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
20488}
20489impl<'a> Default for DimensionBindingsArgs<'a> {
20490  #[inline]
20491  fn default() -> Self {
20492    DimensionBindingsArgs {
20493      origin1: None,
20494      origin2: None,
20495      center: None,
20496    }
20497  }
20498}
20499
20500pub struct DimensionBindingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20501  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20502  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20503}
20504impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionBindingsBuilder<'a, 'b, A> {
20505  #[inline]
20506  pub fn add_origin1(&mut self, origin1: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
20507    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(DimensionBindings::VT_ORIGIN1, origin1);
20508  }
20509  #[inline]
20510  pub fn add_origin2(&mut self, origin2: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
20511    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(DimensionBindings::VT_ORIGIN2, origin2);
20512  }
20513  #[inline]
20514  pub fn add_center(&mut self, center: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
20515    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(DimensionBindings::VT_CENTER, center);
20516  }
20517  #[inline]
20518  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionBindingsBuilder<'a, 'b, A> {
20519    let start = _fbb.start_table();
20520    DimensionBindingsBuilder {
20521      fbb_: _fbb,
20522      start_: start,
20523    }
20524  }
20525  #[inline]
20526  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionBindings<'a>> {
20527    let o = self.fbb_.end_table(self.start_);
20528    flatbuffers::WIPOffset::new(o.value())
20529  }
20530}
20531
20532impl core::fmt::Debug for DimensionBindings<'_> {
20533  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20534    let mut ds = f.debug_struct("DimensionBindings");
20535      ds.field("origin1", &self.origin1());
20536      ds.field("origin2", &self.origin2());
20537      ds.field("center", &self.center());
20538      ds.finish()
20539  }
20540}
20541pub enum DimensionBaselineDataOffset {}
20542#[derive(Copy, Clone, PartialEq)]
20543
20544pub struct DimensionBaselineData<'a> {
20545  pub _tab: flatbuffers::Table<'a>,
20546}
20547
20548impl<'a> flatbuffers::Follow<'a> for DimensionBaselineData<'a> {
20549  type Inner = DimensionBaselineData<'a>;
20550  #[inline]
20551  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20552    Self { _tab: flatbuffers::Table::new(buf, loc) }
20553  }
20554}
20555
20556impl<'a> DimensionBaselineData<'a> {
20557  pub const VT_BASE_DIMENSION_ID: flatbuffers::VOffsetT = 4;
20558
20559  #[inline]
20560  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20561    DimensionBaselineData { _tab: table }
20562  }
20563  #[allow(unused_mut)]
20564  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20565    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20566    args: &'args DimensionBaselineDataArgs<'args>
20567  ) -> flatbuffers::WIPOffset<DimensionBaselineData<'bldr>> {
20568    let mut builder = DimensionBaselineDataBuilder::new(_fbb);
20569    if let Some(x) = args.base_dimension_id { builder.add_base_dimension_id(x); }
20570    builder.finish()
20571  }
20572
20573
20574  #[inline]
20575  pub fn base_dimension_id(&self) -> Option<&'a str> {
20576    // Safety:
20577    // Created from valid Table for this object
20578    // which contains a valid value in this slot
20579    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DimensionBaselineData::VT_BASE_DIMENSION_ID, None)}
20580  }
20581}
20582
20583impl flatbuffers::Verifiable for DimensionBaselineData<'_> {
20584  #[inline]
20585  fn run_verifier(
20586    v: &mut flatbuffers::Verifier, pos: usize
20587  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20588    use self::flatbuffers::Verifiable;
20589    v.visit_table(pos)?
20590     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("base_dimension_id", Self::VT_BASE_DIMENSION_ID, false)?
20591     .finish();
20592    Ok(())
20593  }
20594}
20595pub struct DimensionBaselineDataArgs<'a> {
20596    pub base_dimension_id: Option<flatbuffers::WIPOffset<&'a str>>,
20597}
20598impl<'a> Default for DimensionBaselineDataArgs<'a> {
20599  #[inline]
20600  fn default() -> Self {
20601    DimensionBaselineDataArgs {
20602      base_dimension_id: None,
20603    }
20604  }
20605}
20606
20607pub struct DimensionBaselineDataBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20608  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20609  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20610}
20611impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionBaselineDataBuilder<'a, 'b, A> {
20612  #[inline]
20613  pub fn add_base_dimension_id(&mut self, base_dimension_id: flatbuffers::WIPOffset<&'b  str>) {
20614    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionBaselineData::VT_BASE_DIMENSION_ID, base_dimension_id);
20615  }
20616  #[inline]
20617  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionBaselineDataBuilder<'a, 'b, A> {
20618    let start = _fbb.start_table();
20619    DimensionBaselineDataBuilder {
20620      fbb_: _fbb,
20621      start_: start,
20622    }
20623  }
20624  #[inline]
20625  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionBaselineData<'a>> {
20626    let o = self.fbb_.end_table(self.start_);
20627    flatbuffers::WIPOffset::new(o.value())
20628  }
20629}
20630
20631impl core::fmt::Debug for DimensionBaselineData<'_> {
20632  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20633    let mut ds = f.debug_struct("DimensionBaselineData");
20634      ds.field("base_dimension_id", &self.base_dimension_id());
20635      ds.finish()
20636  }
20637}
20638pub enum DimensionContinueDataOffset {}
20639#[derive(Copy, Clone, PartialEq)]
20640
20641pub struct DimensionContinueData<'a> {
20642  pub _tab: flatbuffers::Table<'a>,
20643}
20644
20645impl<'a> flatbuffers::Follow<'a> for DimensionContinueData<'a> {
20646  type Inner = DimensionContinueData<'a>;
20647  #[inline]
20648  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20649    Self { _tab: flatbuffers::Table::new(buf, loc) }
20650  }
20651}
20652
20653impl<'a> DimensionContinueData<'a> {
20654  pub const VT_CONTINUE_FROM_DIMENSION_ID: flatbuffers::VOffsetT = 4;
20655
20656  #[inline]
20657  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20658    DimensionContinueData { _tab: table }
20659  }
20660  #[allow(unused_mut)]
20661  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20662    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20663    args: &'args DimensionContinueDataArgs<'args>
20664  ) -> flatbuffers::WIPOffset<DimensionContinueData<'bldr>> {
20665    let mut builder = DimensionContinueDataBuilder::new(_fbb);
20666    if let Some(x) = args.continue_from_dimension_id { builder.add_continue_from_dimension_id(x); }
20667    builder.finish()
20668  }
20669
20670
20671  #[inline]
20672  pub fn continue_from_dimension_id(&self) -> Option<&'a str> {
20673    // Safety:
20674    // Created from valid Table for this object
20675    // which contains a valid value in this slot
20676    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DimensionContinueData::VT_CONTINUE_FROM_DIMENSION_ID, None)}
20677  }
20678}
20679
20680impl flatbuffers::Verifiable for DimensionContinueData<'_> {
20681  #[inline]
20682  fn run_verifier(
20683    v: &mut flatbuffers::Verifier, pos: usize
20684  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20685    use self::flatbuffers::Verifiable;
20686    v.visit_table(pos)?
20687     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("continue_from_dimension_id", Self::VT_CONTINUE_FROM_DIMENSION_ID, false)?
20688     .finish();
20689    Ok(())
20690  }
20691}
20692pub struct DimensionContinueDataArgs<'a> {
20693    pub continue_from_dimension_id: Option<flatbuffers::WIPOffset<&'a str>>,
20694}
20695impl<'a> Default for DimensionContinueDataArgs<'a> {
20696  #[inline]
20697  fn default() -> Self {
20698    DimensionContinueDataArgs {
20699      continue_from_dimension_id: None,
20700    }
20701  }
20702}
20703
20704pub struct DimensionContinueDataBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20705  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20706  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20707}
20708impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionContinueDataBuilder<'a, 'b, A> {
20709  #[inline]
20710  pub fn add_continue_from_dimension_id(&mut self, continue_from_dimension_id: flatbuffers::WIPOffset<&'b  str>) {
20711    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionContinueData::VT_CONTINUE_FROM_DIMENSION_ID, continue_from_dimension_id);
20712  }
20713  #[inline]
20714  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionContinueDataBuilder<'a, 'b, A> {
20715    let start = _fbb.start_table();
20716    DimensionContinueDataBuilder {
20717      fbb_: _fbb,
20718      start_: start,
20719    }
20720  }
20721  #[inline]
20722  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionContinueData<'a>> {
20723    let o = self.fbb_.end_table(self.start_);
20724    flatbuffers::WIPOffset::new(o.value())
20725  }
20726}
20727
20728impl core::fmt::Debug for DimensionContinueData<'_> {
20729  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
20730    let mut ds = f.debug_struct("DimensionContinueData");
20731      ds.field("continue_from_dimension_id", &self.continue_from_dimension_id());
20732      ds.finish()
20733  }
20734}
20735pub enum DucDimensionElementOffset {}
20736#[derive(Copy, Clone, PartialEq)]
20737
20738pub struct DucDimensionElement<'a> {
20739  pub _tab: flatbuffers::Table<'a>,
20740}
20741
20742impl<'a> flatbuffers::Follow<'a> for DucDimensionElement<'a> {
20743  type Inner = DucDimensionElement<'a>;
20744  #[inline]
20745  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
20746    Self { _tab: flatbuffers::Table::new(buf, loc) }
20747  }
20748}
20749
20750impl<'a> DucDimensionElement<'a> {
20751  pub const VT_BASE: flatbuffers::VOffsetT = 4;
20752  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
20753  pub const VT_DIMENSION_TYPE: flatbuffers::VOffsetT = 8;
20754  pub const VT_DEFINITION_POINTS: flatbuffers::VOffsetT = 10;
20755  pub const VT_OBLIQUE_ANGLE: flatbuffers::VOffsetT = 12;
20756  pub const VT_ORDINATE_AXIS: flatbuffers::VOffsetT = 14;
20757  pub const VT_BINDINGS: flatbuffers::VOffsetT = 16;
20758  pub const VT_TEXT_OVERRIDE: flatbuffers::VOffsetT = 18;
20759  pub const VT_TEXT_POSITION: flatbuffers::VOffsetT = 20;
20760  pub const VT_TOLERANCE_OVERRIDE: flatbuffers::VOffsetT = 22;
20761  pub const VT_BASELINE_DATA: flatbuffers::VOffsetT = 24;
20762  pub const VT_CONTINUE_DATA: flatbuffers::VOffsetT = 26;
20763
20764  #[inline]
20765  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
20766    DucDimensionElement { _tab: table }
20767  }
20768  #[allow(unused_mut)]
20769  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
20770    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
20771    args: &'args DucDimensionElementArgs<'args>
20772  ) -> flatbuffers::WIPOffset<DucDimensionElement<'bldr>> {
20773    let mut builder = DucDimensionElementBuilder::new(_fbb);
20774    if let Some(x) = args.continue_data { builder.add_continue_data(x); }
20775    if let Some(x) = args.baseline_data { builder.add_baseline_data(x); }
20776    if let Some(x) = args.tolerance_override { builder.add_tolerance_override(x); }
20777    if let Some(x) = args.text_position { builder.add_text_position(x); }
20778    if let Some(x) = args.text_override { builder.add_text_override(x); }
20779    if let Some(x) = args.bindings { builder.add_bindings(x); }
20780    builder.add_oblique_angle(args.oblique_angle);
20781    if let Some(x) = args.definition_points { builder.add_definition_points(x); }
20782    if let Some(x) = args.style { builder.add_style(x); }
20783    if let Some(x) = args.base { builder.add_base(x); }
20784    if let Some(x) = args.ordinate_axis { builder.add_ordinate_axis(x); }
20785    if let Some(x) = args.dimension_type { builder.add_dimension_type(x); }
20786    builder.finish()
20787  }
20788
20789
20790  #[inline]
20791  pub fn base(&self) -> Option<_DucElementBase<'a>> {
20792    // Safety:
20793    // Created from valid Table for this object
20794    // which contains a valid value in this slot
20795    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucDimensionElement::VT_BASE, None)}
20796  }
20797  #[inline]
20798  pub fn style(&self) -> Option<DucDimensionStyle<'a>> {
20799    // Safety:
20800    // Created from valid Table for this object
20801    // which contains a valid value in this slot
20802    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucDimensionStyle>>(DucDimensionElement::VT_STYLE, None)}
20803  }
20804  #[inline]
20805  pub fn dimension_type(&self) -> Option<DIMENSION_TYPE> {
20806    // Safety:
20807    // Created from valid Table for this object
20808    // which contains a valid value in this slot
20809    unsafe { self._tab.get::<DIMENSION_TYPE>(DucDimensionElement::VT_DIMENSION_TYPE, None)}
20810  }
20811  #[inline]
20812  pub fn definition_points(&self) -> Option<DimensionDefinitionPoints<'a>> {
20813    // Safety:
20814    // Created from valid Table for this object
20815    // which contains a valid value in this slot
20816    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionDefinitionPoints>>(DucDimensionElement::VT_DEFINITION_POINTS, None)}
20817  }
20818  #[inline]
20819  pub fn oblique_angle(&self) -> f32 {
20820    // Safety:
20821    // Created from valid Table for this object
20822    // which contains a valid value in this slot
20823    unsafe { self._tab.get::<f32>(DucDimensionElement::VT_OBLIQUE_ANGLE, Some(0.0)).unwrap()}
20824  }
20825  #[inline]
20826  pub fn ordinate_axis(&self) -> Option<AXIS> {
20827    // Safety:
20828    // Created from valid Table for this object
20829    // which contains a valid value in this slot
20830    unsafe { self._tab.get::<AXIS>(DucDimensionElement::VT_ORDINATE_AXIS, None)}
20831  }
20832  #[inline]
20833  pub fn bindings(&self) -> Option<DimensionBindings<'a>> {
20834    // Safety:
20835    // Created from valid Table for this object
20836    // which contains a valid value in this slot
20837    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionBindings>>(DucDimensionElement::VT_BINDINGS, None)}
20838  }
20839  #[inline]
20840  pub fn text_override(&self) -> Option<&'a str> {
20841    // Safety:
20842    // Created from valid Table for this object
20843    // which contains a valid value in this slot
20844    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucDimensionElement::VT_TEXT_OVERRIDE, None)}
20845  }
20846  #[inline]
20847  pub fn text_position(&self) -> Option<&'a GeometricPoint> {
20848    // Safety:
20849    // Created from valid Table for this object
20850    // which contains a valid value in this slot
20851    unsafe { self._tab.get::<GeometricPoint>(DucDimensionElement::VT_TEXT_POSITION, None)}
20852  }
20853  #[inline]
20854  pub fn tolerance_override(&self) -> Option<DimensionToleranceStyle<'a>> {
20855    // Safety:
20856    // Created from valid Table for this object
20857    // which contains a valid value in this slot
20858    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionToleranceStyle>>(DucDimensionElement::VT_TOLERANCE_OVERRIDE, None)}
20859  }
20860  #[inline]
20861  pub fn baseline_data(&self) -> Option<DimensionBaselineData<'a>> {
20862    // Safety:
20863    // Created from valid Table for this object
20864    // which contains a valid value in this slot
20865    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionBaselineData>>(DucDimensionElement::VT_BASELINE_DATA, None)}
20866  }
20867  #[inline]
20868  pub fn continue_data(&self) -> Option<DimensionContinueData<'a>> {
20869    // Safety:
20870    // Created from valid Table for this object
20871    // which contains a valid value in this slot
20872    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionContinueData>>(DucDimensionElement::VT_CONTINUE_DATA, None)}
20873  }
20874}
20875
20876impl flatbuffers::Verifiable for DucDimensionElement<'_> {
20877  #[inline]
20878  fn run_verifier(
20879    v: &mut flatbuffers::Verifier, pos: usize
20880  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
20881    use self::flatbuffers::Verifiable;
20882    v.visit_table(pos)?
20883     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
20884     .visit_field::<flatbuffers::ForwardsUOffset<DucDimensionStyle>>("style", Self::VT_STYLE, false)?
20885     .visit_field::<DIMENSION_TYPE>("dimension_type", Self::VT_DIMENSION_TYPE, false)?
20886     .visit_field::<flatbuffers::ForwardsUOffset<DimensionDefinitionPoints>>("definition_points", Self::VT_DEFINITION_POINTS, false)?
20887     .visit_field::<f32>("oblique_angle", Self::VT_OBLIQUE_ANGLE, false)?
20888     .visit_field::<AXIS>("ordinate_axis", Self::VT_ORDINATE_AXIS, false)?
20889     .visit_field::<flatbuffers::ForwardsUOffset<DimensionBindings>>("bindings", Self::VT_BINDINGS, false)?
20890     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("text_override", Self::VT_TEXT_OVERRIDE, false)?
20891     .visit_field::<GeometricPoint>("text_position", Self::VT_TEXT_POSITION, false)?
20892     .visit_field::<flatbuffers::ForwardsUOffset<DimensionToleranceStyle>>("tolerance_override", Self::VT_TOLERANCE_OVERRIDE, false)?
20893     .visit_field::<flatbuffers::ForwardsUOffset<DimensionBaselineData>>("baseline_data", Self::VT_BASELINE_DATA, false)?
20894     .visit_field::<flatbuffers::ForwardsUOffset<DimensionContinueData>>("continue_data", Self::VT_CONTINUE_DATA, false)?
20895     .finish();
20896    Ok(())
20897  }
20898}
20899pub struct DucDimensionElementArgs<'a> {
20900    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
20901    pub style: Option<flatbuffers::WIPOffset<DucDimensionStyle<'a>>>,
20902    pub dimension_type: Option<DIMENSION_TYPE>,
20903    pub definition_points: Option<flatbuffers::WIPOffset<DimensionDefinitionPoints<'a>>>,
20904    pub oblique_angle: f32,
20905    pub ordinate_axis: Option<AXIS>,
20906    pub bindings: Option<flatbuffers::WIPOffset<DimensionBindings<'a>>>,
20907    pub text_override: Option<flatbuffers::WIPOffset<&'a str>>,
20908    pub text_position: Option<&'a GeometricPoint>,
20909    pub tolerance_override: Option<flatbuffers::WIPOffset<DimensionToleranceStyle<'a>>>,
20910    pub baseline_data: Option<flatbuffers::WIPOffset<DimensionBaselineData<'a>>>,
20911    pub continue_data: Option<flatbuffers::WIPOffset<DimensionContinueData<'a>>>,
20912}
20913impl<'a> Default for DucDimensionElementArgs<'a> {
20914  #[inline]
20915  fn default() -> Self {
20916    DucDimensionElementArgs {
20917      base: None,
20918      style: None,
20919      dimension_type: None,
20920      definition_points: None,
20921      oblique_angle: 0.0,
20922      ordinate_axis: None,
20923      bindings: None,
20924      text_override: None,
20925      text_position: None,
20926      tolerance_override: None,
20927      baseline_data: None,
20928      continue_data: None,
20929    }
20930  }
20931}
20932
20933pub struct DucDimensionElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
20934  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
20935  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
20936}
20937impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucDimensionElementBuilder<'a, 'b, A> {
20938  #[inline]
20939  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
20940    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucDimensionElement::VT_BASE, base);
20941  }
20942  #[inline]
20943  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucDimensionStyle<'b >>) {
20944    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucDimensionStyle>>(DucDimensionElement::VT_STYLE, style);
20945  }
20946  #[inline]
20947  pub fn add_dimension_type(&mut self, dimension_type: DIMENSION_TYPE) {
20948    self.fbb_.push_slot_always::<DIMENSION_TYPE>(DucDimensionElement::VT_DIMENSION_TYPE, dimension_type);
20949  }
20950  #[inline]
20951  pub fn add_definition_points(&mut self, definition_points: flatbuffers::WIPOffset<DimensionDefinitionPoints<'b >>) {
20952    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionDefinitionPoints>>(DucDimensionElement::VT_DEFINITION_POINTS, definition_points);
20953  }
20954  #[inline]
20955  pub fn add_oblique_angle(&mut self, oblique_angle: f32) {
20956    self.fbb_.push_slot::<f32>(DucDimensionElement::VT_OBLIQUE_ANGLE, oblique_angle, 0.0);
20957  }
20958  #[inline]
20959  pub fn add_ordinate_axis(&mut self, ordinate_axis: AXIS) {
20960    self.fbb_.push_slot_always::<AXIS>(DucDimensionElement::VT_ORDINATE_AXIS, ordinate_axis);
20961  }
20962  #[inline]
20963  pub fn add_bindings(&mut self, bindings: flatbuffers::WIPOffset<DimensionBindings<'b >>) {
20964    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionBindings>>(DucDimensionElement::VT_BINDINGS, bindings);
20965  }
20966  #[inline]
20967  pub fn add_text_override(&mut self, text_override: flatbuffers::WIPOffset<&'b  str>) {
20968    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucDimensionElement::VT_TEXT_OVERRIDE, text_override);
20969  }
20970  #[inline]
20971  pub fn add_text_position(&mut self, text_position: &GeometricPoint) {
20972    self.fbb_.push_slot_always::<&GeometricPoint>(DucDimensionElement::VT_TEXT_POSITION, text_position);
20973  }
20974  #[inline]
20975  pub fn add_tolerance_override(&mut self, tolerance_override: flatbuffers::WIPOffset<DimensionToleranceStyle<'b >>) {
20976    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionToleranceStyle>>(DucDimensionElement::VT_TOLERANCE_OVERRIDE, tolerance_override);
20977  }
20978  #[inline]
20979  pub fn add_baseline_data(&mut self, baseline_data: flatbuffers::WIPOffset<DimensionBaselineData<'b >>) {
20980    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionBaselineData>>(DucDimensionElement::VT_BASELINE_DATA, baseline_data);
20981  }
20982  #[inline]
20983  pub fn add_continue_data(&mut self, continue_data: flatbuffers::WIPOffset<DimensionContinueData<'b >>) {
20984    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionContinueData>>(DucDimensionElement::VT_CONTINUE_DATA, continue_data);
20985  }
20986  #[inline]
20987  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucDimensionElementBuilder<'a, 'b, A> {
20988    let start = _fbb.start_table();
20989    DucDimensionElementBuilder {
20990      fbb_: _fbb,
20991      start_: start,
20992    }
20993  }
20994  #[inline]
20995  pub fn finish(self) -> flatbuffers::WIPOffset<DucDimensionElement<'a>> {
20996    let o = self.fbb_.end_table(self.start_);
20997    flatbuffers::WIPOffset::new(o.value())
20998  }
20999}
21000
21001impl core::fmt::Debug for DucDimensionElement<'_> {
21002  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21003    let mut ds = f.debug_struct("DucDimensionElement");
21004      ds.field("base", &self.base());
21005      ds.field("style", &self.style());
21006      ds.field("dimension_type", &self.dimension_type());
21007      ds.field("definition_points", &self.definition_points());
21008      ds.field("oblique_angle", &self.oblique_angle());
21009      ds.field("ordinate_axis", &self.ordinate_axis());
21010      ds.field("bindings", &self.bindings());
21011      ds.field("text_override", &self.text_override());
21012      ds.field("text_position", &self.text_position());
21013      ds.field("tolerance_override", &self.tolerance_override());
21014      ds.field("baseline_data", &self.baseline_data());
21015      ds.field("continue_data", &self.continue_data());
21016      ds.finish()
21017  }
21018}
21019pub enum DatumReferenceOffset {}
21020#[derive(Copy, Clone, PartialEq)]
21021
21022pub struct DatumReference<'a> {
21023  pub _tab: flatbuffers::Table<'a>,
21024}
21025
21026impl<'a> flatbuffers::Follow<'a> for DatumReference<'a> {
21027  type Inner = DatumReference<'a>;
21028  #[inline]
21029  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21030    Self { _tab: flatbuffers::Table::new(buf, loc) }
21031  }
21032}
21033
21034impl<'a> DatumReference<'a> {
21035  pub const VT_LETTERS: flatbuffers::VOffsetT = 4;
21036  pub const VT_MODIFIER: flatbuffers::VOffsetT = 6;
21037
21038  #[inline]
21039  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21040    DatumReference { _tab: table }
21041  }
21042  #[allow(unused_mut)]
21043  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21044    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21045    args: &'args DatumReferenceArgs<'args>
21046  ) -> flatbuffers::WIPOffset<DatumReference<'bldr>> {
21047    let mut builder = DatumReferenceBuilder::new(_fbb);
21048    if let Some(x) = args.letters { builder.add_letters(x); }
21049    if let Some(x) = args.modifier { builder.add_modifier(x); }
21050    builder.finish()
21051  }
21052
21053
21054  #[inline]
21055  pub fn letters(&self) -> Option<&'a str> {
21056    // Safety:
21057    // Created from valid Table for this object
21058    // which contains a valid value in this slot
21059    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DatumReference::VT_LETTERS, None)}
21060  }
21061  #[inline]
21062  pub fn modifier(&self) -> Option<MATERIAL_CONDITION> {
21063    // Safety:
21064    // Created from valid Table for this object
21065    // which contains a valid value in this slot
21066    unsafe { self._tab.get::<MATERIAL_CONDITION>(DatumReference::VT_MODIFIER, None)}
21067  }
21068}
21069
21070impl flatbuffers::Verifiable for DatumReference<'_> {
21071  #[inline]
21072  fn run_verifier(
21073    v: &mut flatbuffers::Verifier, pos: usize
21074  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21075    use self::flatbuffers::Verifiable;
21076    v.visit_table(pos)?
21077     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("letters", Self::VT_LETTERS, false)?
21078     .visit_field::<MATERIAL_CONDITION>("modifier", Self::VT_MODIFIER, false)?
21079     .finish();
21080    Ok(())
21081  }
21082}
21083pub struct DatumReferenceArgs<'a> {
21084    pub letters: Option<flatbuffers::WIPOffset<&'a str>>,
21085    pub modifier: Option<MATERIAL_CONDITION>,
21086}
21087impl<'a> Default for DatumReferenceArgs<'a> {
21088  #[inline]
21089  fn default() -> Self {
21090    DatumReferenceArgs {
21091      letters: None,
21092      modifier: None,
21093    }
21094  }
21095}
21096
21097pub struct DatumReferenceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21098  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21099  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21100}
21101impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DatumReferenceBuilder<'a, 'b, A> {
21102  #[inline]
21103  pub fn add_letters(&mut self, letters: flatbuffers::WIPOffset<&'b  str>) {
21104    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DatumReference::VT_LETTERS, letters);
21105  }
21106  #[inline]
21107  pub fn add_modifier(&mut self, modifier: MATERIAL_CONDITION) {
21108    self.fbb_.push_slot_always::<MATERIAL_CONDITION>(DatumReference::VT_MODIFIER, modifier);
21109  }
21110  #[inline]
21111  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DatumReferenceBuilder<'a, 'b, A> {
21112    let start = _fbb.start_table();
21113    DatumReferenceBuilder {
21114      fbb_: _fbb,
21115      start_: start,
21116    }
21117  }
21118  #[inline]
21119  pub fn finish(self) -> flatbuffers::WIPOffset<DatumReference<'a>> {
21120    let o = self.fbb_.end_table(self.start_);
21121    flatbuffers::WIPOffset::new(o.value())
21122  }
21123}
21124
21125impl core::fmt::Debug for DatumReference<'_> {
21126  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21127    let mut ds = f.debug_struct("DatumReference");
21128      ds.field("letters", &self.letters());
21129      ds.field("modifier", &self.modifier());
21130      ds.finish()
21131  }
21132}
21133pub enum ToleranceClauseOffset {}
21134#[derive(Copy, Clone, PartialEq)]
21135
21136pub struct ToleranceClause<'a> {
21137  pub _tab: flatbuffers::Table<'a>,
21138}
21139
21140impl<'a> flatbuffers::Follow<'a> for ToleranceClause<'a> {
21141  type Inner = ToleranceClause<'a>;
21142  #[inline]
21143  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21144    Self { _tab: flatbuffers::Table::new(buf, loc) }
21145  }
21146}
21147
21148impl<'a> ToleranceClause<'a> {
21149  pub const VT_VALUE: flatbuffers::VOffsetT = 4;
21150  pub const VT_ZONE_TYPE: flatbuffers::VOffsetT = 6;
21151  pub const VT_FEATURE_MODIFIERS: flatbuffers::VOffsetT = 8;
21152  pub const VT_MATERIAL_CONDITION: flatbuffers::VOffsetT = 10;
21153
21154  #[inline]
21155  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21156    ToleranceClause { _tab: table }
21157  }
21158  #[allow(unused_mut)]
21159  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21160    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21161    args: &'args ToleranceClauseArgs<'args>
21162  ) -> flatbuffers::WIPOffset<ToleranceClause<'bldr>> {
21163    let mut builder = ToleranceClauseBuilder::new(_fbb);
21164    if let Some(x) = args.feature_modifiers { builder.add_feature_modifiers(x); }
21165    if let Some(x) = args.value { builder.add_value(x); }
21166    if let Some(x) = args.material_condition { builder.add_material_condition(x); }
21167    if let Some(x) = args.zone_type { builder.add_zone_type(x); }
21168    builder.finish()
21169  }
21170
21171
21172  #[inline]
21173  pub fn value(&self) -> Option<&'a str> {
21174    // Safety:
21175    // Created from valid Table for this object
21176    // which contains a valid value in this slot
21177    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ToleranceClause::VT_VALUE, None)}
21178  }
21179  #[inline]
21180  pub fn zone_type(&self) -> Option<TOLERANCE_ZONE_TYPE> {
21181    // Safety:
21182    // Created from valid Table for this object
21183    // which contains a valid value in this slot
21184    unsafe { self._tab.get::<TOLERANCE_ZONE_TYPE>(ToleranceClause::VT_ZONE_TYPE, None)}
21185  }
21186  #[inline]
21187  pub fn feature_modifiers(&self) -> Option<flatbuffers::Vector<'a, FEATURE_MODIFIER>> {
21188    // Safety:
21189    // Created from valid Table for this object
21190    // which contains a valid value in this slot
21191    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, FEATURE_MODIFIER>>>(ToleranceClause::VT_FEATURE_MODIFIERS, None)}
21192  }
21193  #[inline]
21194  pub fn material_condition(&self) -> Option<MATERIAL_CONDITION> {
21195    // Safety:
21196    // Created from valid Table for this object
21197    // which contains a valid value in this slot
21198    unsafe { self._tab.get::<MATERIAL_CONDITION>(ToleranceClause::VT_MATERIAL_CONDITION, None)}
21199  }
21200}
21201
21202impl flatbuffers::Verifiable for ToleranceClause<'_> {
21203  #[inline]
21204  fn run_verifier(
21205    v: &mut flatbuffers::Verifier, pos: usize
21206  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21207    use self::flatbuffers::Verifiable;
21208    v.visit_table(pos)?
21209     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("value", Self::VT_VALUE, false)?
21210     .visit_field::<TOLERANCE_ZONE_TYPE>("zone_type", Self::VT_ZONE_TYPE, false)?
21211     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, FEATURE_MODIFIER>>>("feature_modifiers", Self::VT_FEATURE_MODIFIERS, false)?
21212     .visit_field::<MATERIAL_CONDITION>("material_condition", Self::VT_MATERIAL_CONDITION, false)?
21213     .finish();
21214    Ok(())
21215  }
21216}
21217pub struct ToleranceClauseArgs<'a> {
21218    pub value: Option<flatbuffers::WIPOffset<&'a str>>,
21219    pub zone_type: Option<TOLERANCE_ZONE_TYPE>,
21220    pub feature_modifiers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, FEATURE_MODIFIER>>>,
21221    pub material_condition: Option<MATERIAL_CONDITION>,
21222}
21223impl<'a> Default for ToleranceClauseArgs<'a> {
21224  #[inline]
21225  fn default() -> Self {
21226    ToleranceClauseArgs {
21227      value: None,
21228      zone_type: None,
21229      feature_modifiers: None,
21230      material_condition: None,
21231    }
21232  }
21233}
21234
21235pub struct ToleranceClauseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21236  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21237  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21238}
21239impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ToleranceClauseBuilder<'a, 'b, A> {
21240  #[inline]
21241  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<&'b  str>) {
21242    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ToleranceClause::VT_VALUE, value);
21243  }
21244  #[inline]
21245  pub fn add_zone_type(&mut self, zone_type: TOLERANCE_ZONE_TYPE) {
21246    self.fbb_.push_slot_always::<TOLERANCE_ZONE_TYPE>(ToleranceClause::VT_ZONE_TYPE, zone_type);
21247  }
21248  #[inline]
21249  pub fn add_feature_modifiers(&mut self, feature_modifiers: flatbuffers::WIPOffset<flatbuffers::Vector<'b , FEATURE_MODIFIER>>) {
21250    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ToleranceClause::VT_FEATURE_MODIFIERS, feature_modifiers);
21251  }
21252  #[inline]
21253  pub fn add_material_condition(&mut self, material_condition: MATERIAL_CONDITION) {
21254    self.fbb_.push_slot_always::<MATERIAL_CONDITION>(ToleranceClause::VT_MATERIAL_CONDITION, material_condition);
21255  }
21256  #[inline]
21257  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ToleranceClauseBuilder<'a, 'b, A> {
21258    let start = _fbb.start_table();
21259    ToleranceClauseBuilder {
21260      fbb_: _fbb,
21261      start_: start,
21262    }
21263  }
21264  #[inline]
21265  pub fn finish(self) -> flatbuffers::WIPOffset<ToleranceClause<'a>> {
21266    let o = self.fbb_.end_table(self.start_);
21267    flatbuffers::WIPOffset::new(o.value())
21268  }
21269}
21270
21271impl core::fmt::Debug for ToleranceClause<'_> {
21272  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21273    let mut ds = f.debug_struct("ToleranceClause");
21274      ds.field("value", &self.value());
21275      ds.field("zone_type", &self.zone_type());
21276      ds.field("feature_modifiers", &self.feature_modifiers());
21277      ds.field("material_condition", &self.material_condition());
21278      ds.finish()
21279  }
21280}
21281pub enum FeatureControlFrameSegmentOffset {}
21282#[derive(Copy, Clone, PartialEq)]
21283
21284pub struct FeatureControlFrameSegment<'a> {
21285  pub _tab: flatbuffers::Table<'a>,
21286}
21287
21288impl<'a> flatbuffers::Follow<'a> for FeatureControlFrameSegment<'a> {
21289  type Inner = FeatureControlFrameSegment<'a>;
21290  #[inline]
21291  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21292    Self { _tab: flatbuffers::Table::new(buf, loc) }
21293  }
21294}
21295
21296impl<'a> FeatureControlFrameSegment<'a> {
21297  pub const VT_SYMBOL: flatbuffers::VOffsetT = 4;
21298  pub const VT_TOLERANCE: flatbuffers::VOffsetT = 6;
21299  pub const VT_DATUMS: flatbuffers::VOffsetT = 8;
21300
21301  #[inline]
21302  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21303    FeatureControlFrameSegment { _tab: table }
21304  }
21305  #[allow(unused_mut)]
21306  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21307    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21308    args: &'args FeatureControlFrameSegmentArgs<'args>
21309  ) -> flatbuffers::WIPOffset<FeatureControlFrameSegment<'bldr>> {
21310    let mut builder = FeatureControlFrameSegmentBuilder::new(_fbb);
21311    if let Some(x) = args.datums { builder.add_datums(x); }
21312    if let Some(x) = args.tolerance { builder.add_tolerance(x); }
21313    if let Some(x) = args.symbol { builder.add_symbol(x); }
21314    builder.finish()
21315  }
21316
21317
21318  #[inline]
21319  pub fn symbol(&self) -> Option<GDT_SYMBOL> {
21320    // Safety:
21321    // Created from valid Table for this object
21322    // which contains a valid value in this slot
21323    unsafe { self._tab.get::<GDT_SYMBOL>(FeatureControlFrameSegment::VT_SYMBOL, None)}
21324  }
21325  #[inline]
21326  pub fn tolerance(&self) -> Option<ToleranceClause<'a>> {
21327    // Safety:
21328    // Created from valid Table for this object
21329    // which contains a valid value in this slot
21330    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ToleranceClause>>(FeatureControlFrameSegment::VT_TOLERANCE, None)}
21331  }
21332  #[inline]
21333  pub fn datums(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DatumReference<'a>>>> {
21334    // Safety:
21335    // Created from valid Table for this object
21336    // which contains a valid value in this slot
21337    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DatumReference>>>>(FeatureControlFrameSegment::VT_DATUMS, None)}
21338  }
21339}
21340
21341impl flatbuffers::Verifiable for FeatureControlFrameSegment<'_> {
21342  #[inline]
21343  fn run_verifier(
21344    v: &mut flatbuffers::Verifier, pos: usize
21345  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21346    use self::flatbuffers::Verifiable;
21347    v.visit_table(pos)?
21348     .visit_field::<GDT_SYMBOL>("symbol", Self::VT_SYMBOL, false)?
21349     .visit_field::<flatbuffers::ForwardsUOffset<ToleranceClause>>("tolerance", Self::VT_TOLERANCE, false)?
21350     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DatumReference>>>>("datums", Self::VT_DATUMS, false)?
21351     .finish();
21352    Ok(())
21353  }
21354}
21355pub struct FeatureControlFrameSegmentArgs<'a> {
21356    pub symbol: Option<GDT_SYMBOL>,
21357    pub tolerance: Option<flatbuffers::WIPOffset<ToleranceClause<'a>>>,
21358    pub datums: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DatumReference<'a>>>>>,
21359}
21360impl<'a> Default for FeatureControlFrameSegmentArgs<'a> {
21361  #[inline]
21362  fn default() -> Self {
21363    FeatureControlFrameSegmentArgs {
21364      symbol: None,
21365      tolerance: None,
21366      datums: None,
21367    }
21368  }
21369}
21370
21371pub struct FeatureControlFrameSegmentBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21372  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21373  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21374}
21375impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FeatureControlFrameSegmentBuilder<'a, 'b, A> {
21376  #[inline]
21377  pub fn add_symbol(&mut self, symbol: GDT_SYMBOL) {
21378    self.fbb_.push_slot_always::<GDT_SYMBOL>(FeatureControlFrameSegment::VT_SYMBOL, symbol);
21379  }
21380  #[inline]
21381  pub fn add_tolerance(&mut self, tolerance: flatbuffers::WIPOffset<ToleranceClause<'b >>) {
21382    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ToleranceClause>>(FeatureControlFrameSegment::VT_TOLERANCE, tolerance);
21383  }
21384  #[inline]
21385  pub fn add_datums(&mut self, datums: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DatumReference<'b >>>>) {
21386    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(FeatureControlFrameSegment::VT_DATUMS, datums);
21387  }
21388  #[inline]
21389  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FeatureControlFrameSegmentBuilder<'a, 'b, A> {
21390    let start = _fbb.start_table();
21391    FeatureControlFrameSegmentBuilder {
21392      fbb_: _fbb,
21393      start_: start,
21394    }
21395  }
21396  #[inline]
21397  pub fn finish(self) -> flatbuffers::WIPOffset<FeatureControlFrameSegment<'a>> {
21398    let o = self.fbb_.end_table(self.start_);
21399    flatbuffers::WIPOffset::new(o.value())
21400  }
21401}
21402
21403impl core::fmt::Debug for FeatureControlFrameSegment<'_> {
21404  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21405    let mut ds = f.debug_struct("FeatureControlFrameSegment");
21406      ds.field("symbol", &self.symbol());
21407      ds.field("tolerance", &self.tolerance());
21408      ds.field("datums", &self.datums());
21409      ds.finish()
21410  }
21411}
21412pub enum FCFBetweenModifierOffset {}
21413#[derive(Copy, Clone, PartialEq)]
21414
21415pub struct FCFBetweenModifier<'a> {
21416  pub _tab: flatbuffers::Table<'a>,
21417}
21418
21419impl<'a> flatbuffers::Follow<'a> for FCFBetweenModifier<'a> {
21420  type Inner = FCFBetweenModifier<'a>;
21421  #[inline]
21422  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21423    Self { _tab: flatbuffers::Table::new(buf, loc) }
21424  }
21425}
21426
21427impl<'a> FCFBetweenModifier<'a> {
21428  pub const VT_START: flatbuffers::VOffsetT = 4;
21429  pub const VT_END: flatbuffers::VOffsetT = 6;
21430
21431  #[inline]
21432  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21433    FCFBetweenModifier { _tab: table }
21434  }
21435  #[allow(unused_mut)]
21436  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21437    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21438    args: &'args FCFBetweenModifierArgs<'args>
21439  ) -> flatbuffers::WIPOffset<FCFBetweenModifier<'bldr>> {
21440    let mut builder = FCFBetweenModifierBuilder::new(_fbb);
21441    if let Some(x) = args.end { builder.add_end(x); }
21442    if let Some(x) = args.start { builder.add_start(x); }
21443    builder.finish()
21444  }
21445
21446
21447  #[inline]
21448  pub fn start(&self) -> Option<&'a str> {
21449    // Safety:
21450    // Created from valid Table for this object
21451    // which contains a valid value in this slot
21452    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(FCFBetweenModifier::VT_START, None)}
21453  }
21454  #[inline]
21455  pub fn end(&self) -> Option<&'a str> {
21456    // Safety:
21457    // Created from valid Table for this object
21458    // which contains a valid value in this slot
21459    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(FCFBetweenModifier::VT_END, None)}
21460  }
21461}
21462
21463impl flatbuffers::Verifiable for FCFBetweenModifier<'_> {
21464  #[inline]
21465  fn run_verifier(
21466    v: &mut flatbuffers::Verifier, pos: usize
21467  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21468    use self::flatbuffers::Verifiable;
21469    v.visit_table(pos)?
21470     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("start", Self::VT_START, false)?
21471     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("end", Self::VT_END, false)?
21472     .finish();
21473    Ok(())
21474  }
21475}
21476pub struct FCFBetweenModifierArgs<'a> {
21477    pub start: Option<flatbuffers::WIPOffset<&'a str>>,
21478    pub end: Option<flatbuffers::WIPOffset<&'a str>>,
21479}
21480impl<'a> Default for FCFBetweenModifierArgs<'a> {
21481  #[inline]
21482  fn default() -> Self {
21483    FCFBetweenModifierArgs {
21484      start: None,
21485      end: None,
21486    }
21487  }
21488}
21489
21490pub struct FCFBetweenModifierBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21491  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21492  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21493}
21494impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFBetweenModifierBuilder<'a, 'b, A> {
21495  #[inline]
21496  pub fn add_start(&mut self, start: flatbuffers::WIPOffset<&'b  str>) {
21497    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(FCFBetweenModifier::VT_START, start);
21498  }
21499  #[inline]
21500  pub fn add_end(&mut self, end: flatbuffers::WIPOffset<&'b  str>) {
21501    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(FCFBetweenModifier::VT_END, end);
21502  }
21503  #[inline]
21504  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFBetweenModifierBuilder<'a, 'b, A> {
21505    let start = _fbb.start_table();
21506    FCFBetweenModifierBuilder {
21507      fbb_: _fbb,
21508      start_: start,
21509    }
21510  }
21511  #[inline]
21512  pub fn finish(self) -> flatbuffers::WIPOffset<FCFBetweenModifier<'a>> {
21513    let o = self.fbb_.end_table(self.start_);
21514    flatbuffers::WIPOffset::new(o.value())
21515  }
21516}
21517
21518impl core::fmt::Debug for FCFBetweenModifier<'_> {
21519  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21520    let mut ds = f.debug_struct("FCFBetweenModifier");
21521      ds.field("start", &self.start());
21522      ds.field("end", &self.end());
21523      ds.finish()
21524  }
21525}
21526pub enum FCFProjectedZoneModifierOffset {}
21527#[derive(Copy, Clone, PartialEq)]
21528
21529pub struct FCFProjectedZoneModifier<'a> {
21530  pub _tab: flatbuffers::Table<'a>,
21531}
21532
21533impl<'a> flatbuffers::Follow<'a> for FCFProjectedZoneModifier<'a> {
21534  type Inner = FCFProjectedZoneModifier<'a>;
21535  #[inline]
21536  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21537    Self { _tab: flatbuffers::Table::new(buf, loc) }
21538  }
21539}
21540
21541impl<'a> FCFProjectedZoneModifier<'a> {
21542  pub const VT_VALUE: flatbuffers::VOffsetT = 4;
21543
21544  #[inline]
21545  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21546    FCFProjectedZoneModifier { _tab: table }
21547  }
21548  #[allow(unused_mut)]
21549  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21550    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21551    args: &'args FCFProjectedZoneModifierArgs
21552  ) -> flatbuffers::WIPOffset<FCFProjectedZoneModifier<'bldr>> {
21553    let mut builder = FCFProjectedZoneModifierBuilder::new(_fbb);
21554    builder.add_value(args.value);
21555    builder.finish()
21556  }
21557
21558
21559  #[inline]
21560  pub fn value(&self) -> f64 {
21561    // Safety:
21562    // Created from valid Table for this object
21563    // which contains a valid value in this slot
21564    unsafe { self._tab.get::<f64>(FCFProjectedZoneModifier::VT_VALUE, Some(0.0)).unwrap()}
21565  }
21566}
21567
21568impl flatbuffers::Verifiable for FCFProjectedZoneModifier<'_> {
21569  #[inline]
21570  fn run_verifier(
21571    v: &mut flatbuffers::Verifier, pos: usize
21572  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21573    use self::flatbuffers::Verifiable;
21574    v.visit_table(pos)?
21575     .visit_field::<f64>("value", Self::VT_VALUE, false)?
21576     .finish();
21577    Ok(())
21578  }
21579}
21580pub struct FCFProjectedZoneModifierArgs {
21581    pub value: f64,
21582}
21583impl<'a> Default for FCFProjectedZoneModifierArgs {
21584  #[inline]
21585  fn default() -> Self {
21586    FCFProjectedZoneModifierArgs {
21587      value: 0.0,
21588    }
21589  }
21590}
21591
21592pub struct FCFProjectedZoneModifierBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21593  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21594  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21595}
21596impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFProjectedZoneModifierBuilder<'a, 'b, A> {
21597  #[inline]
21598  pub fn add_value(&mut self, value: f64) {
21599    self.fbb_.push_slot::<f64>(FCFProjectedZoneModifier::VT_VALUE, value, 0.0);
21600  }
21601  #[inline]
21602  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFProjectedZoneModifierBuilder<'a, 'b, A> {
21603    let start = _fbb.start_table();
21604    FCFProjectedZoneModifierBuilder {
21605      fbb_: _fbb,
21606      start_: start,
21607    }
21608  }
21609  #[inline]
21610  pub fn finish(self) -> flatbuffers::WIPOffset<FCFProjectedZoneModifier<'a>> {
21611    let o = self.fbb_.end_table(self.start_);
21612    flatbuffers::WIPOffset::new(o.value())
21613  }
21614}
21615
21616impl core::fmt::Debug for FCFProjectedZoneModifier<'_> {
21617  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21618    let mut ds = f.debug_struct("FCFProjectedZoneModifier");
21619      ds.field("value", &self.value());
21620      ds.finish()
21621  }
21622}
21623pub enum FCFFrameModifiersOffset {}
21624#[derive(Copy, Clone, PartialEq)]
21625
21626pub struct FCFFrameModifiers<'a> {
21627  pub _tab: flatbuffers::Table<'a>,
21628}
21629
21630impl<'a> flatbuffers::Follow<'a> for FCFFrameModifiers<'a> {
21631  type Inner = FCFFrameModifiers<'a>;
21632  #[inline]
21633  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21634    Self { _tab: flatbuffers::Table::new(buf, loc) }
21635  }
21636}
21637
21638impl<'a> FCFFrameModifiers<'a> {
21639  pub const VT_ALL_AROUND: flatbuffers::VOffsetT = 4;
21640  pub const VT_ALL_OVER: flatbuffers::VOffsetT = 6;
21641  pub const VT_CONTINUOUS_FEATURE: flatbuffers::VOffsetT = 8;
21642  pub const VT_BETWEEN: flatbuffers::VOffsetT = 10;
21643  pub const VT_PROJECTED_TOLERANCE_ZONE: flatbuffers::VOffsetT = 12;
21644
21645  #[inline]
21646  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21647    FCFFrameModifiers { _tab: table }
21648  }
21649  #[allow(unused_mut)]
21650  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21651    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21652    args: &'args FCFFrameModifiersArgs<'args>
21653  ) -> flatbuffers::WIPOffset<FCFFrameModifiers<'bldr>> {
21654    let mut builder = FCFFrameModifiersBuilder::new(_fbb);
21655    if let Some(x) = args.projected_tolerance_zone { builder.add_projected_tolerance_zone(x); }
21656    if let Some(x) = args.between { builder.add_between(x); }
21657    builder.add_continuous_feature(args.continuous_feature);
21658    builder.add_all_over(args.all_over);
21659    builder.add_all_around(args.all_around);
21660    builder.finish()
21661  }
21662
21663
21664  #[inline]
21665  pub fn all_around(&self) -> bool {
21666    // Safety:
21667    // Created from valid Table for this object
21668    // which contains a valid value in this slot
21669    unsafe { self._tab.get::<bool>(FCFFrameModifiers::VT_ALL_AROUND, Some(false)).unwrap()}
21670  }
21671  #[inline]
21672  pub fn all_over(&self) -> bool {
21673    // Safety:
21674    // Created from valid Table for this object
21675    // which contains a valid value in this slot
21676    unsafe { self._tab.get::<bool>(FCFFrameModifiers::VT_ALL_OVER, Some(false)).unwrap()}
21677  }
21678  #[inline]
21679  pub fn continuous_feature(&self) -> bool {
21680    // Safety:
21681    // Created from valid Table for this object
21682    // which contains a valid value in this slot
21683    unsafe { self._tab.get::<bool>(FCFFrameModifiers::VT_CONTINUOUS_FEATURE, Some(false)).unwrap()}
21684  }
21685  #[inline]
21686  pub fn between(&self) -> Option<FCFBetweenModifier<'a>> {
21687    // Safety:
21688    // Created from valid Table for this object
21689    // which contains a valid value in this slot
21690    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFBetweenModifier>>(FCFFrameModifiers::VT_BETWEEN, None)}
21691  }
21692  #[inline]
21693  pub fn projected_tolerance_zone(&self) -> Option<FCFProjectedZoneModifier<'a>> {
21694    // Safety:
21695    // Created from valid Table for this object
21696    // which contains a valid value in this slot
21697    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFProjectedZoneModifier>>(FCFFrameModifiers::VT_PROJECTED_TOLERANCE_ZONE, None)}
21698  }
21699}
21700
21701impl flatbuffers::Verifiable for FCFFrameModifiers<'_> {
21702  #[inline]
21703  fn run_verifier(
21704    v: &mut flatbuffers::Verifier, pos: usize
21705  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21706    use self::flatbuffers::Verifiable;
21707    v.visit_table(pos)?
21708     .visit_field::<bool>("all_around", Self::VT_ALL_AROUND, false)?
21709     .visit_field::<bool>("all_over", Self::VT_ALL_OVER, false)?
21710     .visit_field::<bool>("continuous_feature", Self::VT_CONTINUOUS_FEATURE, false)?
21711     .visit_field::<flatbuffers::ForwardsUOffset<FCFBetweenModifier>>("between", Self::VT_BETWEEN, false)?
21712     .visit_field::<flatbuffers::ForwardsUOffset<FCFProjectedZoneModifier>>("projected_tolerance_zone", Self::VT_PROJECTED_TOLERANCE_ZONE, false)?
21713     .finish();
21714    Ok(())
21715  }
21716}
21717pub struct FCFFrameModifiersArgs<'a> {
21718    pub all_around: bool,
21719    pub all_over: bool,
21720    pub continuous_feature: bool,
21721    pub between: Option<flatbuffers::WIPOffset<FCFBetweenModifier<'a>>>,
21722    pub projected_tolerance_zone: Option<flatbuffers::WIPOffset<FCFProjectedZoneModifier<'a>>>,
21723}
21724impl<'a> Default for FCFFrameModifiersArgs<'a> {
21725  #[inline]
21726  fn default() -> Self {
21727    FCFFrameModifiersArgs {
21728      all_around: false,
21729      all_over: false,
21730      continuous_feature: false,
21731      between: None,
21732      projected_tolerance_zone: None,
21733    }
21734  }
21735}
21736
21737pub struct FCFFrameModifiersBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21738  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21739  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21740}
21741impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFFrameModifiersBuilder<'a, 'b, A> {
21742  #[inline]
21743  pub fn add_all_around(&mut self, all_around: bool) {
21744    self.fbb_.push_slot::<bool>(FCFFrameModifiers::VT_ALL_AROUND, all_around, false);
21745  }
21746  #[inline]
21747  pub fn add_all_over(&mut self, all_over: bool) {
21748    self.fbb_.push_slot::<bool>(FCFFrameModifiers::VT_ALL_OVER, all_over, false);
21749  }
21750  #[inline]
21751  pub fn add_continuous_feature(&mut self, continuous_feature: bool) {
21752    self.fbb_.push_slot::<bool>(FCFFrameModifiers::VT_CONTINUOUS_FEATURE, continuous_feature, false);
21753  }
21754  #[inline]
21755  pub fn add_between(&mut self, between: flatbuffers::WIPOffset<FCFBetweenModifier<'b >>) {
21756    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFBetweenModifier>>(FCFFrameModifiers::VT_BETWEEN, between);
21757  }
21758  #[inline]
21759  pub fn add_projected_tolerance_zone(&mut self, projected_tolerance_zone: flatbuffers::WIPOffset<FCFProjectedZoneModifier<'b >>) {
21760    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFProjectedZoneModifier>>(FCFFrameModifiers::VT_PROJECTED_TOLERANCE_ZONE, projected_tolerance_zone);
21761  }
21762  #[inline]
21763  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFFrameModifiersBuilder<'a, 'b, A> {
21764    let start = _fbb.start_table();
21765    FCFFrameModifiersBuilder {
21766      fbb_: _fbb,
21767      start_: start,
21768    }
21769  }
21770  #[inline]
21771  pub fn finish(self) -> flatbuffers::WIPOffset<FCFFrameModifiers<'a>> {
21772    let o = self.fbb_.end_table(self.start_);
21773    flatbuffers::WIPOffset::new(o.value())
21774  }
21775}
21776
21777impl core::fmt::Debug for FCFFrameModifiers<'_> {
21778  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21779    let mut ds = f.debug_struct("FCFFrameModifiers");
21780      ds.field("all_around", &self.all_around());
21781      ds.field("all_over", &self.all_over());
21782      ds.field("continuous_feature", &self.continuous_feature());
21783      ds.field("between", &self.between());
21784      ds.field("projected_tolerance_zone", &self.projected_tolerance_zone());
21785      ds.finish()
21786  }
21787}
21788pub enum FCFDatumDefinitionOffset {}
21789#[derive(Copy, Clone, PartialEq)]
21790
21791pub struct FCFDatumDefinition<'a> {
21792  pub _tab: flatbuffers::Table<'a>,
21793}
21794
21795impl<'a> flatbuffers::Follow<'a> for FCFDatumDefinition<'a> {
21796  type Inner = FCFDatumDefinition<'a>;
21797  #[inline]
21798  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21799    Self { _tab: flatbuffers::Table::new(buf, loc) }
21800  }
21801}
21802
21803impl<'a> FCFDatumDefinition<'a> {
21804  pub const VT_LETTER: flatbuffers::VOffsetT = 4;
21805  pub const VT_FEATURE_BINDING: flatbuffers::VOffsetT = 6;
21806
21807  #[inline]
21808  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21809    FCFDatumDefinition { _tab: table }
21810  }
21811  #[allow(unused_mut)]
21812  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21813    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21814    args: &'args FCFDatumDefinitionArgs<'args>
21815  ) -> flatbuffers::WIPOffset<FCFDatumDefinition<'bldr>> {
21816    let mut builder = FCFDatumDefinitionBuilder::new(_fbb);
21817    if let Some(x) = args.feature_binding { builder.add_feature_binding(x); }
21818    if let Some(x) = args.letter { builder.add_letter(x); }
21819    builder.finish()
21820  }
21821
21822
21823  #[inline]
21824  pub fn letter(&self) -> Option<&'a str> {
21825    // Safety:
21826    // Created from valid Table for this object
21827    // which contains a valid value in this slot
21828    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(FCFDatumDefinition::VT_LETTER, None)}
21829  }
21830  #[inline]
21831  pub fn feature_binding(&self) -> Option<DucPointBinding<'a>> {
21832    // Safety:
21833    // Created from valid Table for this object
21834    // which contains a valid value in this slot
21835    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucPointBinding>>(FCFDatumDefinition::VT_FEATURE_BINDING, None)}
21836  }
21837}
21838
21839impl flatbuffers::Verifiable for FCFDatumDefinition<'_> {
21840  #[inline]
21841  fn run_verifier(
21842    v: &mut flatbuffers::Verifier, pos: usize
21843  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21844    use self::flatbuffers::Verifiable;
21845    v.visit_table(pos)?
21846     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("letter", Self::VT_LETTER, false)?
21847     .visit_field::<flatbuffers::ForwardsUOffset<DucPointBinding>>("feature_binding", Self::VT_FEATURE_BINDING, false)?
21848     .finish();
21849    Ok(())
21850  }
21851}
21852pub struct FCFDatumDefinitionArgs<'a> {
21853    pub letter: Option<flatbuffers::WIPOffset<&'a str>>,
21854    pub feature_binding: Option<flatbuffers::WIPOffset<DucPointBinding<'a>>>,
21855}
21856impl<'a> Default for FCFDatumDefinitionArgs<'a> {
21857  #[inline]
21858  fn default() -> Self {
21859    FCFDatumDefinitionArgs {
21860      letter: None,
21861      feature_binding: None,
21862    }
21863  }
21864}
21865
21866pub struct FCFDatumDefinitionBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21867  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21868  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21869}
21870impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFDatumDefinitionBuilder<'a, 'b, A> {
21871  #[inline]
21872  pub fn add_letter(&mut self, letter: flatbuffers::WIPOffset<&'b  str>) {
21873    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(FCFDatumDefinition::VT_LETTER, letter);
21874  }
21875  #[inline]
21876  pub fn add_feature_binding(&mut self, feature_binding: flatbuffers::WIPOffset<DucPointBinding<'b >>) {
21877    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucPointBinding>>(FCFDatumDefinition::VT_FEATURE_BINDING, feature_binding);
21878  }
21879  #[inline]
21880  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFDatumDefinitionBuilder<'a, 'b, A> {
21881    let start = _fbb.start_table();
21882    FCFDatumDefinitionBuilder {
21883      fbb_: _fbb,
21884      start_: start,
21885    }
21886  }
21887  #[inline]
21888  pub fn finish(self) -> flatbuffers::WIPOffset<FCFDatumDefinition<'a>> {
21889    let o = self.fbb_.end_table(self.start_);
21890    flatbuffers::WIPOffset::new(o.value())
21891  }
21892}
21893
21894impl core::fmt::Debug for FCFDatumDefinition<'_> {
21895  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21896    let mut ds = f.debug_struct("FCFDatumDefinition");
21897      ds.field("letter", &self.letter());
21898      ds.field("feature_binding", &self.feature_binding());
21899      ds.finish()
21900  }
21901}
21902pub enum FCFSegmentRowOffset {}
21903#[derive(Copy, Clone, PartialEq)]
21904
21905pub struct FCFSegmentRow<'a> {
21906  pub _tab: flatbuffers::Table<'a>,
21907}
21908
21909impl<'a> flatbuffers::Follow<'a> for FCFSegmentRow<'a> {
21910  type Inner = FCFSegmentRow<'a>;
21911  #[inline]
21912  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
21913    Self { _tab: flatbuffers::Table::new(buf, loc) }
21914  }
21915}
21916
21917impl<'a> FCFSegmentRow<'a> {
21918  pub const VT_SEGMENTS: flatbuffers::VOffsetT = 4;
21919
21920  #[inline]
21921  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
21922    FCFSegmentRow { _tab: table }
21923  }
21924  #[allow(unused_mut)]
21925  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
21926    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
21927    args: &'args FCFSegmentRowArgs<'args>
21928  ) -> flatbuffers::WIPOffset<FCFSegmentRow<'bldr>> {
21929    let mut builder = FCFSegmentRowBuilder::new(_fbb);
21930    if let Some(x) = args.segments { builder.add_segments(x); }
21931    builder.finish()
21932  }
21933
21934
21935  #[inline]
21936  pub fn segments(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FeatureControlFrameSegment<'a>>>> {
21937    // Safety:
21938    // Created from valid Table for this object
21939    // which contains a valid value in this slot
21940    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FeatureControlFrameSegment>>>>(FCFSegmentRow::VT_SEGMENTS, None)}
21941  }
21942}
21943
21944impl flatbuffers::Verifiable for FCFSegmentRow<'_> {
21945  #[inline]
21946  fn run_verifier(
21947    v: &mut flatbuffers::Verifier, pos: usize
21948  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
21949    use self::flatbuffers::Verifiable;
21950    v.visit_table(pos)?
21951     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<FeatureControlFrameSegment>>>>("segments", Self::VT_SEGMENTS, false)?
21952     .finish();
21953    Ok(())
21954  }
21955}
21956pub struct FCFSegmentRowArgs<'a> {
21957    pub segments: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FeatureControlFrameSegment<'a>>>>>,
21958}
21959impl<'a> Default for FCFSegmentRowArgs<'a> {
21960  #[inline]
21961  fn default() -> Self {
21962    FCFSegmentRowArgs {
21963      segments: None,
21964    }
21965  }
21966}
21967
21968pub struct FCFSegmentRowBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
21969  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
21970  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
21971}
21972impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> FCFSegmentRowBuilder<'a, 'b, A> {
21973  #[inline]
21974  pub fn add_segments(&mut self, segments: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<FeatureControlFrameSegment<'b >>>>) {
21975    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(FCFSegmentRow::VT_SEGMENTS, segments);
21976  }
21977  #[inline]
21978  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> FCFSegmentRowBuilder<'a, 'b, A> {
21979    let start = _fbb.start_table();
21980    FCFSegmentRowBuilder {
21981      fbb_: _fbb,
21982      start_: start,
21983    }
21984  }
21985  #[inline]
21986  pub fn finish(self) -> flatbuffers::WIPOffset<FCFSegmentRow<'a>> {
21987    let o = self.fbb_.end_table(self.start_);
21988    flatbuffers::WIPOffset::new(o.value())
21989  }
21990}
21991
21992impl core::fmt::Debug for FCFSegmentRow<'_> {
21993  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21994    let mut ds = f.debug_struct("FCFSegmentRow");
21995      ds.field("segments", &self.segments());
21996      ds.finish()
21997  }
21998}
21999pub enum DucFeatureControlFrameElementOffset {}
22000#[derive(Copy, Clone, PartialEq)]
22001
22002pub struct DucFeatureControlFrameElement<'a> {
22003  pub _tab: flatbuffers::Table<'a>,
22004}
22005
22006impl<'a> flatbuffers::Follow<'a> for DucFeatureControlFrameElement<'a> {
22007  type Inner = DucFeatureControlFrameElement<'a>;
22008  #[inline]
22009  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22010    Self { _tab: flatbuffers::Table::new(buf, loc) }
22011  }
22012}
22013
22014impl<'a> DucFeatureControlFrameElement<'a> {
22015  pub const VT_BASE: flatbuffers::VOffsetT = 4;
22016  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
22017  pub const VT_ROWS: flatbuffers::VOffsetT = 8;
22018  pub const VT_FRAME_MODIFIERS: flatbuffers::VOffsetT = 10;
22019  pub const VT_LEADER_ELEMENT_ID: flatbuffers::VOffsetT = 12;
22020  pub const VT_DATUM_DEFINITION: flatbuffers::VOffsetT = 14;
22021
22022  #[inline]
22023  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22024    DucFeatureControlFrameElement { _tab: table }
22025  }
22026  #[allow(unused_mut)]
22027  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22028    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22029    args: &'args DucFeatureControlFrameElementArgs<'args>
22030  ) -> flatbuffers::WIPOffset<DucFeatureControlFrameElement<'bldr>> {
22031    let mut builder = DucFeatureControlFrameElementBuilder::new(_fbb);
22032    if let Some(x) = args.datum_definition { builder.add_datum_definition(x); }
22033    if let Some(x) = args.leader_element_id { builder.add_leader_element_id(x); }
22034    if let Some(x) = args.frame_modifiers { builder.add_frame_modifiers(x); }
22035    if let Some(x) = args.rows { builder.add_rows(x); }
22036    if let Some(x) = args.style { builder.add_style(x); }
22037    if let Some(x) = args.base { builder.add_base(x); }
22038    builder.finish()
22039  }
22040
22041
22042  #[inline]
22043  pub fn base(&self) -> Option<_DucElementBase<'a>> {
22044    // Safety:
22045    // Created from valid Table for this object
22046    // which contains a valid value in this slot
22047    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucFeatureControlFrameElement::VT_BASE, None)}
22048  }
22049  #[inline]
22050  pub fn style(&self) -> Option<DucFeatureControlFrameStyle<'a>> {
22051    // Safety:
22052    // Created from valid Table for this object
22053    // which contains a valid value in this slot
22054    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucFeatureControlFrameStyle>>(DucFeatureControlFrameElement::VT_STYLE, None)}
22055  }
22056  #[inline]
22057  pub fn rows(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FCFSegmentRow<'a>>>> {
22058    // Safety:
22059    // Created from valid Table for this object
22060    // which contains a valid value in this slot
22061    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FCFSegmentRow>>>>(DucFeatureControlFrameElement::VT_ROWS, None)}
22062  }
22063  #[inline]
22064  pub fn frame_modifiers(&self) -> Option<FCFFrameModifiers<'a>> {
22065    // Safety:
22066    // Created from valid Table for this object
22067    // which contains a valid value in this slot
22068    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFFrameModifiers>>(DucFeatureControlFrameElement::VT_FRAME_MODIFIERS, None)}
22069  }
22070  #[inline]
22071  pub fn leader_element_id(&self) -> Option<&'a str> {
22072    // Safety:
22073    // Created from valid Table for this object
22074    // which contains a valid value in this slot
22075    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucFeatureControlFrameElement::VT_LEADER_ELEMENT_ID, None)}
22076  }
22077  #[inline]
22078  pub fn datum_definition(&self) -> Option<FCFDatumDefinition<'a>> {
22079    // Safety:
22080    // Created from valid Table for this object
22081    // which contains a valid value in this slot
22082    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<FCFDatumDefinition>>(DucFeatureControlFrameElement::VT_DATUM_DEFINITION, None)}
22083  }
22084}
22085
22086impl flatbuffers::Verifiable for DucFeatureControlFrameElement<'_> {
22087  #[inline]
22088  fn run_verifier(
22089    v: &mut flatbuffers::Verifier, pos: usize
22090  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22091    use self::flatbuffers::Verifiable;
22092    v.visit_table(pos)?
22093     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
22094     .visit_field::<flatbuffers::ForwardsUOffset<DucFeatureControlFrameStyle>>("style", Self::VT_STYLE, false)?
22095     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<FCFSegmentRow>>>>("rows", Self::VT_ROWS, false)?
22096     .visit_field::<flatbuffers::ForwardsUOffset<FCFFrameModifiers>>("frame_modifiers", Self::VT_FRAME_MODIFIERS, false)?
22097     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("leader_element_id", Self::VT_LEADER_ELEMENT_ID, false)?
22098     .visit_field::<flatbuffers::ForwardsUOffset<FCFDatumDefinition>>("datum_definition", Self::VT_DATUM_DEFINITION, false)?
22099     .finish();
22100    Ok(())
22101  }
22102}
22103pub struct DucFeatureControlFrameElementArgs<'a> {
22104    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
22105    pub style: Option<flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'a>>>,
22106    pub rows: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<FCFSegmentRow<'a>>>>>,
22107    pub frame_modifiers: Option<flatbuffers::WIPOffset<FCFFrameModifiers<'a>>>,
22108    pub leader_element_id: Option<flatbuffers::WIPOffset<&'a str>>,
22109    pub datum_definition: Option<flatbuffers::WIPOffset<FCFDatumDefinition<'a>>>,
22110}
22111impl<'a> Default for DucFeatureControlFrameElementArgs<'a> {
22112  #[inline]
22113  fn default() -> Self {
22114    DucFeatureControlFrameElementArgs {
22115      base: None,
22116      style: None,
22117      rows: None,
22118      frame_modifiers: None,
22119      leader_element_id: None,
22120      datum_definition: None,
22121    }
22122  }
22123}
22124
22125pub struct DucFeatureControlFrameElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22126  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22127  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22128}
22129impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucFeatureControlFrameElementBuilder<'a, 'b, A> {
22130  #[inline]
22131  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
22132    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucFeatureControlFrameElement::VT_BASE, base);
22133  }
22134  #[inline]
22135  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'b >>) {
22136    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucFeatureControlFrameStyle>>(DucFeatureControlFrameElement::VT_STYLE, style);
22137  }
22138  #[inline]
22139  pub fn add_rows(&mut self, rows: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<FCFSegmentRow<'b >>>>) {
22140    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFeatureControlFrameElement::VT_ROWS, rows);
22141  }
22142  #[inline]
22143  pub fn add_frame_modifiers(&mut self, frame_modifiers: flatbuffers::WIPOffset<FCFFrameModifiers<'b >>) {
22144    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFFrameModifiers>>(DucFeatureControlFrameElement::VT_FRAME_MODIFIERS, frame_modifiers);
22145  }
22146  #[inline]
22147  pub fn add_leader_element_id(&mut self, leader_element_id: flatbuffers::WIPOffset<&'b  str>) {
22148    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucFeatureControlFrameElement::VT_LEADER_ELEMENT_ID, leader_element_id);
22149  }
22150  #[inline]
22151  pub fn add_datum_definition(&mut self, datum_definition: flatbuffers::WIPOffset<FCFDatumDefinition<'b >>) {
22152    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<FCFDatumDefinition>>(DucFeatureControlFrameElement::VT_DATUM_DEFINITION, datum_definition);
22153  }
22154  #[inline]
22155  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucFeatureControlFrameElementBuilder<'a, 'b, A> {
22156    let start = _fbb.start_table();
22157    DucFeatureControlFrameElementBuilder {
22158      fbb_: _fbb,
22159      start_: start,
22160    }
22161  }
22162  #[inline]
22163  pub fn finish(self) -> flatbuffers::WIPOffset<DucFeatureControlFrameElement<'a>> {
22164    let o = self.fbb_.end_table(self.start_);
22165    flatbuffers::WIPOffset::new(o.value())
22166  }
22167}
22168
22169impl core::fmt::Debug for DucFeatureControlFrameElement<'_> {
22170  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22171    let mut ds = f.debug_struct("DucFeatureControlFrameElement");
22172      ds.field("base", &self.base());
22173      ds.field("style", &self.style());
22174      ds.field("rows", &self.rows());
22175      ds.field("frame_modifiers", &self.frame_modifiers());
22176      ds.field("leader_element_id", &self.leader_element_id());
22177      ds.field("datum_definition", &self.datum_definition());
22178      ds.finish()
22179  }
22180}
22181pub enum TextColumnOffset {}
22182#[derive(Copy, Clone, PartialEq)]
22183
22184pub struct TextColumn<'a> {
22185  pub _tab: flatbuffers::Table<'a>,
22186}
22187
22188impl<'a> flatbuffers::Follow<'a> for TextColumn<'a> {
22189  type Inner = TextColumn<'a>;
22190  #[inline]
22191  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22192    Self { _tab: flatbuffers::Table::new(buf, loc) }
22193  }
22194}
22195
22196impl<'a> TextColumn<'a> {
22197  pub const VT_WIDTH: flatbuffers::VOffsetT = 4;
22198  pub const VT_GUTTER: flatbuffers::VOffsetT = 6;
22199
22200  #[inline]
22201  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22202    TextColumn { _tab: table }
22203  }
22204  #[allow(unused_mut)]
22205  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22206    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22207    args: &'args TextColumnArgs
22208  ) -> flatbuffers::WIPOffset<TextColumn<'bldr>> {
22209    let mut builder = TextColumnBuilder::new(_fbb);
22210    builder.add_gutter(args.gutter);
22211    builder.add_width(args.width);
22212    builder.finish()
22213  }
22214
22215
22216  #[inline]
22217  pub fn width(&self) -> f64 {
22218    // Safety:
22219    // Created from valid Table for this object
22220    // which contains a valid value in this slot
22221    unsafe { self._tab.get::<f64>(TextColumn::VT_WIDTH, Some(0.0)).unwrap()}
22222  }
22223  #[inline]
22224  pub fn gutter(&self) -> f64 {
22225    // Safety:
22226    // Created from valid Table for this object
22227    // which contains a valid value in this slot
22228    unsafe { self._tab.get::<f64>(TextColumn::VT_GUTTER, Some(0.0)).unwrap()}
22229  }
22230}
22231
22232impl flatbuffers::Verifiable for TextColumn<'_> {
22233  #[inline]
22234  fn run_verifier(
22235    v: &mut flatbuffers::Verifier, pos: usize
22236  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22237    use self::flatbuffers::Verifiable;
22238    v.visit_table(pos)?
22239     .visit_field::<f64>("width", Self::VT_WIDTH, false)?
22240     .visit_field::<f64>("gutter", Self::VT_GUTTER, false)?
22241     .finish();
22242    Ok(())
22243  }
22244}
22245pub struct TextColumnArgs {
22246    pub width: f64,
22247    pub gutter: f64,
22248}
22249impl<'a> Default for TextColumnArgs {
22250  #[inline]
22251  fn default() -> Self {
22252    TextColumnArgs {
22253      width: 0.0,
22254      gutter: 0.0,
22255    }
22256  }
22257}
22258
22259pub struct TextColumnBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22260  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22261  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22262}
22263impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TextColumnBuilder<'a, 'b, A> {
22264  #[inline]
22265  pub fn add_width(&mut self, width: f64) {
22266    self.fbb_.push_slot::<f64>(TextColumn::VT_WIDTH, width, 0.0);
22267  }
22268  #[inline]
22269  pub fn add_gutter(&mut self, gutter: f64) {
22270    self.fbb_.push_slot::<f64>(TextColumn::VT_GUTTER, gutter, 0.0);
22271  }
22272  #[inline]
22273  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TextColumnBuilder<'a, 'b, A> {
22274    let start = _fbb.start_table();
22275    TextColumnBuilder {
22276      fbb_: _fbb,
22277      start_: start,
22278    }
22279  }
22280  #[inline]
22281  pub fn finish(self) -> flatbuffers::WIPOffset<TextColumn<'a>> {
22282    let o = self.fbb_.end_table(self.start_);
22283    flatbuffers::WIPOffset::new(o.value())
22284  }
22285}
22286
22287impl core::fmt::Debug for TextColumn<'_> {
22288  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22289    let mut ds = f.debug_struct("TextColumn");
22290      ds.field("width", &self.width());
22291      ds.field("gutter", &self.gutter());
22292      ds.finish()
22293  }
22294}
22295pub enum ColumnLayoutOffset {}
22296#[derive(Copy, Clone, PartialEq)]
22297
22298pub struct ColumnLayout<'a> {
22299  pub _tab: flatbuffers::Table<'a>,
22300}
22301
22302impl<'a> flatbuffers::Follow<'a> for ColumnLayout<'a> {
22303  type Inner = ColumnLayout<'a>;
22304  #[inline]
22305  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22306    Self { _tab: flatbuffers::Table::new(buf, loc) }
22307  }
22308}
22309
22310impl<'a> ColumnLayout<'a> {
22311  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
22312  pub const VT_DEFINITIONS: flatbuffers::VOffsetT = 6;
22313  pub const VT_AUTO_HEIGHT: flatbuffers::VOffsetT = 8;
22314
22315  #[inline]
22316  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22317    ColumnLayout { _tab: table }
22318  }
22319  #[allow(unused_mut)]
22320  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22321    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22322    args: &'args ColumnLayoutArgs<'args>
22323  ) -> flatbuffers::WIPOffset<ColumnLayout<'bldr>> {
22324    let mut builder = ColumnLayoutBuilder::new(_fbb);
22325    if let Some(x) = args.definitions { builder.add_definitions(x); }
22326    builder.add_auto_height(args.auto_height);
22327    if let Some(x) = args.type_ { builder.add_type_(x); }
22328    builder.finish()
22329  }
22330
22331
22332  #[inline]
22333  pub fn type_(&self) -> Option<COLUMN_TYPE> {
22334    // Safety:
22335    // Created from valid Table for this object
22336    // which contains a valid value in this slot
22337    unsafe { self._tab.get::<COLUMN_TYPE>(ColumnLayout::VT_TYPE_, None)}
22338  }
22339  #[inline]
22340  pub fn definitions(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TextColumn<'a>>>> {
22341    // Safety:
22342    // Created from valid Table for this object
22343    // which contains a valid value in this slot
22344    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TextColumn>>>>(ColumnLayout::VT_DEFINITIONS, None)}
22345  }
22346  #[inline]
22347  pub fn auto_height(&self) -> bool {
22348    // Safety:
22349    // Created from valid Table for this object
22350    // which contains a valid value in this slot
22351    unsafe { self._tab.get::<bool>(ColumnLayout::VT_AUTO_HEIGHT, Some(false)).unwrap()}
22352  }
22353}
22354
22355impl flatbuffers::Verifiable for ColumnLayout<'_> {
22356  #[inline]
22357  fn run_verifier(
22358    v: &mut flatbuffers::Verifier, pos: usize
22359  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22360    use self::flatbuffers::Verifiable;
22361    v.visit_table(pos)?
22362     .visit_field::<COLUMN_TYPE>("type_", Self::VT_TYPE_, false)?
22363     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<TextColumn>>>>("definitions", Self::VT_DEFINITIONS, false)?
22364     .visit_field::<bool>("auto_height", Self::VT_AUTO_HEIGHT, false)?
22365     .finish();
22366    Ok(())
22367  }
22368}
22369pub struct ColumnLayoutArgs<'a> {
22370    pub type_: Option<COLUMN_TYPE>,
22371    pub definitions: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<TextColumn<'a>>>>>,
22372    pub auto_height: bool,
22373}
22374impl<'a> Default for ColumnLayoutArgs<'a> {
22375  #[inline]
22376  fn default() -> Self {
22377    ColumnLayoutArgs {
22378      type_: None,
22379      definitions: None,
22380      auto_height: false,
22381    }
22382  }
22383}
22384
22385pub struct ColumnLayoutBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22386  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22387  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22388}
22389impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ColumnLayoutBuilder<'a, 'b, A> {
22390  #[inline]
22391  pub fn add_type_(&mut self, type_: COLUMN_TYPE) {
22392    self.fbb_.push_slot_always::<COLUMN_TYPE>(ColumnLayout::VT_TYPE_, type_);
22393  }
22394  #[inline]
22395  pub fn add_definitions(&mut self, definitions: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<TextColumn<'b >>>>) {
22396    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ColumnLayout::VT_DEFINITIONS, definitions);
22397  }
22398  #[inline]
22399  pub fn add_auto_height(&mut self, auto_height: bool) {
22400    self.fbb_.push_slot::<bool>(ColumnLayout::VT_AUTO_HEIGHT, auto_height, false);
22401  }
22402  #[inline]
22403  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ColumnLayoutBuilder<'a, 'b, A> {
22404    let start = _fbb.start_table();
22405    ColumnLayoutBuilder {
22406      fbb_: _fbb,
22407      start_: start,
22408    }
22409  }
22410  #[inline]
22411  pub fn finish(self) -> flatbuffers::WIPOffset<ColumnLayout<'a>> {
22412    let o = self.fbb_.end_table(self.start_);
22413    flatbuffers::WIPOffset::new(o.value())
22414  }
22415}
22416
22417impl core::fmt::Debug for ColumnLayout<'_> {
22418  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22419    let mut ds = f.debug_struct("ColumnLayout");
22420      ds.field("type_", &self.type_());
22421      ds.field("definitions", &self.definitions());
22422      ds.field("auto_height", &self.auto_height());
22423      ds.finish()
22424  }
22425}
22426pub enum DucDocElementOffset {}
22427#[derive(Copy, Clone, PartialEq)]
22428
22429pub struct DucDocElement<'a> {
22430  pub _tab: flatbuffers::Table<'a>,
22431}
22432
22433impl<'a> flatbuffers::Follow<'a> for DucDocElement<'a> {
22434  type Inner = DucDocElement<'a>;
22435  #[inline]
22436  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22437    Self { _tab: flatbuffers::Table::new(buf, loc) }
22438  }
22439}
22440
22441impl<'a> DucDocElement<'a> {
22442  pub const VT_BASE: flatbuffers::VOffsetT = 4;
22443  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
22444  pub const VT_TEXT: flatbuffers::VOffsetT = 8;
22445  pub const VT_DYNAMIC: flatbuffers::VOffsetT = 10;
22446  pub const VT_FLOW_DIRECTION: flatbuffers::VOffsetT = 12;
22447  pub const VT_COLUMNS: flatbuffers::VOffsetT = 14;
22448  pub const VT_AUTO_RESIZE: flatbuffers::VOffsetT = 16;
22449  pub const VT_GRID_CONFIG: flatbuffers::VOffsetT = 18;
22450  pub const VT_FILE_ID: flatbuffers::VOffsetT = 20;
22451
22452  #[inline]
22453  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22454    DucDocElement { _tab: table }
22455  }
22456  #[allow(unused_mut)]
22457  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22458    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22459    args: &'args DucDocElementArgs<'args>
22460  ) -> flatbuffers::WIPOffset<DucDocElement<'bldr>> {
22461    let mut builder = DucDocElementBuilder::new(_fbb);
22462    if let Some(x) = args.file_id { builder.add_file_id(x); }
22463    if let Some(x) = args.grid_config { builder.add_grid_config(x); }
22464    if let Some(x) = args.columns { builder.add_columns(x); }
22465    if let Some(x) = args.dynamic { builder.add_dynamic(x); }
22466    if let Some(x) = args.text { builder.add_text(x); }
22467    if let Some(x) = args.style { builder.add_style(x); }
22468    if let Some(x) = args.base { builder.add_base(x); }
22469    builder.add_auto_resize(args.auto_resize);
22470    if let Some(x) = args.flow_direction { builder.add_flow_direction(x); }
22471    builder.finish()
22472  }
22473
22474
22475  #[inline]
22476  pub fn base(&self) -> Option<_DucElementBase<'a>> {
22477    // Safety:
22478    // Created from valid Table for this object
22479    // which contains a valid value in this slot
22480    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucDocElement::VT_BASE, None)}
22481  }
22482  #[inline]
22483  pub fn style(&self) -> Option<DucDocStyle<'a>> {
22484    // Safety:
22485    // Created from valid Table for this object
22486    // which contains a valid value in this slot
22487    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucDocStyle>>(DucDocElement::VT_STYLE, None)}
22488  }
22489  #[inline]
22490  pub fn text(&self) -> Option<&'a str> {
22491    // Safety:
22492    // Created from valid Table for this object
22493    // which contains a valid value in this slot
22494    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucDocElement::VT_TEXT, None)}
22495  }
22496  #[inline]
22497  pub fn dynamic(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart<'a>>>> {
22498    // Safety:
22499    // Created from valid Table for this object
22500    // which contains a valid value in this slot
22501    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart>>>>(DucDocElement::VT_DYNAMIC, None)}
22502  }
22503  #[inline]
22504  pub fn flow_direction(&self) -> Option<TEXT_FLOW_DIRECTION> {
22505    // Safety:
22506    // Created from valid Table for this object
22507    // which contains a valid value in this slot
22508    unsafe { self._tab.get::<TEXT_FLOW_DIRECTION>(DucDocElement::VT_FLOW_DIRECTION, None)}
22509  }
22510  #[inline]
22511  pub fn columns(&self) -> Option<ColumnLayout<'a>> {
22512    // Safety:
22513    // Created from valid Table for this object
22514    // which contains a valid value in this slot
22515    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ColumnLayout>>(DucDocElement::VT_COLUMNS, None)}
22516  }
22517  #[inline]
22518  pub fn auto_resize(&self) -> bool {
22519    // Safety:
22520    // Created from valid Table for this object
22521    // which contains a valid value in this slot
22522    unsafe { self._tab.get::<bool>(DucDocElement::VT_AUTO_RESIZE, Some(false)).unwrap()}
22523  }
22524  #[inline]
22525  pub fn grid_config(&self) -> Option<DocumentGridConfig<'a>> {
22526    // Safety:
22527    // Created from valid Table for this object
22528    // which contains a valid value in this slot
22529    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DocumentGridConfig>>(DucDocElement::VT_GRID_CONFIG, None)}
22530  }
22531  #[inline]
22532  pub fn file_id(&self) -> Option<&'a str> {
22533    // Safety:
22534    // Created from valid Table for this object
22535    // which contains a valid value in this slot
22536    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucDocElement::VT_FILE_ID, None)}
22537  }
22538}
22539
22540impl flatbuffers::Verifiable for DucDocElement<'_> {
22541  #[inline]
22542  fn run_verifier(
22543    v: &mut flatbuffers::Verifier, pos: usize
22544  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22545    use self::flatbuffers::Verifiable;
22546    v.visit_table(pos)?
22547     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
22548     .visit_field::<flatbuffers::ForwardsUOffset<DucDocStyle>>("style", Self::VT_STYLE, false)?
22549     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("text", Self::VT_TEXT, false)?
22550     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucTextDynamicPart>>>>("dynamic", Self::VT_DYNAMIC, false)?
22551     .visit_field::<TEXT_FLOW_DIRECTION>("flow_direction", Self::VT_FLOW_DIRECTION, false)?
22552     .visit_field::<flatbuffers::ForwardsUOffset<ColumnLayout>>("columns", Self::VT_COLUMNS, false)?
22553     .visit_field::<bool>("auto_resize", Self::VT_AUTO_RESIZE, false)?
22554     .visit_field::<flatbuffers::ForwardsUOffset<DocumentGridConfig>>("grid_config", Self::VT_GRID_CONFIG, false)?
22555     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("file_id", Self::VT_FILE_ID, false)?
22556     .finish();
22557    Ok(())
22558  }
22559}
22560pub struct DucDocElementArgs<'a> {
22561    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
22562    pub style: Option<flatbuffers::WIPOffset<DucDocStyle<'a>>>,
22563    pub text: Option<flatbuffers::WIPOffset<&'a str>>,
22564    pub dynamic: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucTextDynamicPart<'a>>>>>,
22565    pub flow_direction: Option<TEXT_FLOW_DIRECTION>,
22566    pub columns: Option<flatbuffers::WIPOffset<ColumnLayout<'a>>>,
22567    pub auto_resize: bool,
22568    pub grid_config: Option<flatbuffers::WIPOffset<DocumentGridConfig<'a>>>,
22569    pub file_id: Option<flatbuffers::WIPOffset<&'a str>>,
22570}
22571impl<'a> Default for DucDocElementArgs<'a> {
22572  #[inline]
22573  fn default() -> Self {
22574    DucDocElementArgs {
22575      base: None,
22576      style: None,
22577      text: None,
22578      dynamic: None,
22579      flow_direction: None,
22580      columns: None,
22581      auto_resize: false,
22582      grid_config: None,
22583      file_id: None,
22584    }
22585  }
22586}
22587
22588pub struct DucDocElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22589  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22590  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22591}
22592impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucDocElementBuilder<'a, 'b, A> {
22593  #[inline]
22594  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
22595    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucDocElement::VT_BASE, base);
22596  }
22597  #[inline]
22598  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucDocStyle<'b >>) {
22599    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucDocStyle>>(DucDocElement::VT_STYLE, style);
22600  }
22601  #[inline]
22602  pub fn add_text(&mut self, text: flatbuffers::WIPOffset<&'b  str>) {
22603    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucDocElement::VT_TEXT, text);
22604  }
22605  #[inline]
22606  pub fn add_dynamic(&mut self, dynamic: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucTextDynamicPart<'b >>>>) {
22607    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucDocElement::VT_DYNAMIC, dynamic);
22608  }
22609  #[inline]
22610  pub fn add_flow_direction(&mut self, flow_direction: TEXT_FLOW_DIRECTION) {
22611    self.fbb_.push_slot_always::<TEXT_FLOW_DIRECTION>(DucDocElement::VT_FLOW_DIRECTION, flow_direction);
22612  }
22613  #[inline]
22614  pub fn add_columns(&mut self, columns: flatbuffers::WIPOffset<ColumnLayout<'b >>) {
22615    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ColumnLayout>>(DucDocElement::VT_COLUMNS, columns);
22616  }
22617  #[inline]
22618  pub fn add_auto_resize(&mut self, auto_resize: bool) {
22619    self.fbb_.push_slot::<bool>(DucDocElement::VT_AUTO_RESIZE, auto_resize, false);
22620  }
22621  #[inline]
22622  pub fn add_grid_config(&mut self, grid_config: flatbuffers::WIPOffset<DocumentGridConfig<'b >>) {
22623    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DocumentGridConfig>>(DucDocElement::VT_GRID_CONFIG, grid_config);
22624  }
22625  #[inline]
22626  pub fn add_file_id(&mut self, file_id: flatbuffers::WIPOffset<&'b  str>) {
22627    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucDocElement::VT_FILE_ID, file_id);
22628  }
22629  #[inline]
22630  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucDocElementBuilder<'a, 'b, A> {
22631    let start = _fbb.start_table();
22632    DucDocElementBuilder {
22633      fbb_: _fbb,
22634      start_: start,
22635    }
22636  }
22637  #[inline]
22638  pub fn finish(self) -> flatbuffers::WIPOffset<DucDocElement<'a>> {
22639    let o = self.fbb_.end_table(self.start_);
22640    flatbuffers::WIPOffset::new(o.value())
22641  }
22642}
22643
22644impl core::fmt::Debug for DucDocElement<'_> {
22645  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22646    let mut ds = f.debug_struct("DucDocElement");
22647      ds.field("base", &self.base());
22648      ds.field("style", &self.style());
22649      ds.field("text", &self.text());
22650      ds.field("dynamic", &self.dynamic());
22651      ds.field("flow_direction", &self.flow_direction());
22652      ds.field("columns", &self.columns());
22653      ds.field("auto_resize", &self.auto_resize());
22654      ds.field("grid_config", &self.grid_config());
22655      ds.field("file_id", &self.file_id());
22656      ds.finish()
22657  }
22658}
22659pub enum ParametricSourceOffset {}
22660#[derive(Copy, Clone, PartialEq)]
22661
22662pub struct ParametricSource<'a> {
22663  pub _tab: flatbuffers::Table<'a>,
22664}
22665
22666impl<'a> flatbuffers::Follow<'a> for ParametricSource<'a> {
22667  type Inner = ParametricSource<'a>;
22668  #[inline]
22669  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22670    Self { _tab: flatbuffers::Table::new(buf, loc) }
22671  }
22672}
22673
22674impl<'a> ParametricSource<'a> {
22675  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
22676  pub const VT_CODE: flatbuffers::VOffsetT = 6;
22677  pub const VT_FILE_ID: flatbuffers::VOffsetT = 8;
22678
22679  #[inline]
22680  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22681    ParametricSource { _tab: table }
22682  }
22683  #[allow(unused_mut)]
22684  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22685    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22686    args: &'args ParametricSourceArgs<'args>
22687  ) -> flatbuffers::WIPOffset<ParametricSource<'bldr>> {
22688    let mut builder = ParametricSourceBuilder::new(_fbb);
22689    if let Some(x) = args.file_id { builder.add_file_id(x); }
22690    if let Some(x) = args.code { builder.add_code(x); }
22691    if let Some(x) = args.type_ { builder.add_type_(x); }
22692    builder.finish()
22693  }
22694
22695
22696  #[inline]
22697  pub fn type_(&self) -> Option<PARAMETRIC_SOURCE_TYPE> {
22698    // Safety:
22699    // Created from valid Table for this object
22700    // which contains a valid value in this slot
22701    unsafe { self._tab.get::<PARAMETRIC_SOURCE_TYPE>(ParametricSource::VT_TYPE_, None)}
22702  }
22703  #[inline]
22704  pub fn code(&self) -> Option<&'a str> {
22705    // Safety:
22706    // Created from valid Table for this object
22707    // which contains a valid value in this slot
22708    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ParametricSource::VT_CODE, None)}
22709  }
22710  #[inline]
22711  pub fn file_id(&self) -> Option<&'a str> {
22712    // Safety:
22713    // Created from valid Table for this object
22714    // which contains a valid value in this slot
22715    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ParametricSource::VT_FILE_ID, None)}
22716  }
22717}
22718
22719impl flatbuffers::Verifiable for ParametricSource<'_> {
22720  #[inline]
22721  fn run_verifier(
22722    v: &mut flatbuffers::Verifier, pos: usize
22723  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22724    use self::flatbuffers::Verifiable;
22725    v.visit_table(pos)?
22726     .visit_field::<PARAMETRIC_SOURCE_TYPE>("type_", Self::VT_TYPE_, false)?
22727     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("code", Self::VT_CODE, false)?
22728     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("file_id", Self::VT_FILE_ID, false)?
22729     .finish();
22730    Ok(())
22731  }
22732}
22733pub struct ParametricSourceArgs<'a> {
22734    pub type_: Option<PARAMETRIC_SOURCE_TYPE>,
22735    pub code: Option<flatbuffers::WIPOffset<&'a str>>,
22736    pub file_id: Option<flatbuffers::WIPOffset<&'a str>>,
22737}
22738impl<'a> Default for ParametricSourceArgs<'a> {
22739  #[inline]
22740  fn default() -> Self {
22741    ParametricSourceArgs {
22742      type_: None,
22743      code: None,
22744      file_id: None,
22745    }
22746  }
22747}
22748
22749pub struct ParametricSourceBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22750  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22751  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22752}
22753impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ParametricSourceBuilder<'a, 'b, A> {
22754  #[inline]
22755  pub fn add_type_(&mut self, type_: PARAMETRIC_SOURCE_TYPE) {
22756    self.fbb_.push_slot_always::<PARAMETRIC_SOURCE_TYPE>(ParametricSource::VT_TYPE_, type_);
22757  }
22758  #[inline]
22759  pub fn add_code(&mut self, code: flatbuffers::WIPOffset<&'b  str>) {
22760    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ParametricSource::VT_CODE, code);
22761  }
22762  #[inline]
22763  pub fn add_file_id(&mut self, file_id: flatbuffers::WIPOffset<&'b  str>) {
22764    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ParametricSource::VT_FILE_ID, file_id);
22765  }
22766  #[inline]
22767  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ParametricSourceBuilder<'a, 'b, A> {
22768    let start = _fbb.start_table();
22769    ParametricSourceBuilder {
22770      fbb_: _fbb,
22771      start_: start,
22772    }
22773  }
22774  #[inline]
22775  pub fn finish(self) -> flatbuffers::WIPOffset<ParametricSource<'a>> {
22776    let o = self.fbb_.end_table(self.start_);
22777    flatbuffers::WIPOffset::new(o.value())
22778  }
22779}
22780
22781impl core::fmt::Debug for ParametricSource<'_> {
22782  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22783    let mut ds = f.debug_struct("ParametricSource");
22784      ds.field("type_", &self.type_());
22785      ds.field("code", &self.code());
22786      ds.field("file_id", &self.file_id());
22787      ds.finish()
22788  }
22789}
22790pub enum DucParametricElementOffset {}
22791#[derive(Copy, Clone, PartialEq)]
22792
22793pub struct DucParametricElement<'a> {
22794  pub _tab: flatbuffers::Table<'a>,
22795}
22796
22797impl<'a> flatbuffers::Follow<'a> for DucParametricElement<'a> {
22798  type Inner = DucParametricElement<'a>;
22799  #[inline]
22800  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22801    Self { _tab: flatbuffers::Table::new(buf, loc) }
22802  }
22803}
22804
22805impl<'a> DucParametricElement<'a> {
22806  pub const VT_BASE: flatbuffers::VOffsetT = 4;
22807  pub const VT_SOURCE: flatbuffers::VOffsetT = 6;
22808
22809  #[inline]
22810  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22811    DucParametricElement { _tab: table }
22812  }
22813  #[allow(unused_mut)]
22814  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22815    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22816    args: &'args DucParametricElementArgs<'args>
22817  ) -> flatbuffers::WIPOffset<DucParametricElement<'bldr>> {
22818    let mut builder = DucParametricElementBuilder::new(_fbb);
22819    if let Some(x) = args.source { builder.add_source(x); }
22820    if let Some(x) = args.base { builder.add_base(x); }
22821    builder.finish()
22822  }
22823
22824
22825  #[inline]
22826  pub fn base(&self) -> Option<_DucElementBase<'a>> {
22827    // Safety:
22828    // Created from valid Table for this object
22829    // which contains a valid value in this slot
22830    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucParametricElement::VT_BASE, None)}
22831  }
22832  #[inline]
22833  pub fn source(&self) -> Option<ParametricSource<'a>> {
22834    // Safety:
22835    // Created from valid Table for this object
22836    // which contains a valid value in this slot
22837    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ParametricSource>>(DucParametricElement::VT_SOURCE, None)}
22838  }
22839}
22840
22841impl flatbuffers::Verifiable for DucParametricElement<'_> {
22842  #[inline]
22843  fn run_verifier(
22844    v: &mut flatbuffers::Verifier, pos: usize
22845  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22846    use self::flatbuffers::Verifiable;
22847    v.visit_table(pos)?
22848     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
22849     .visit_field::<flatbuffers::ForwardsUOffset<ParametricSource>>("source", Self::VT_SOURCE, false)?
22850     .finish();
22851    Ok(())
22852  }
22853}
22854pub struct DucParametricElementArgs<'a> {
22855    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
22856    pub source: Option<flatbuffers::WIPOffset<ParametricSource<'a>>>,
22857}
22858impl<'a> Default for DucParametricElementArgs<'a> {
22859  #[inline]
22860  fn default() -> Self {
22861    DucParametricElementArgs {
22862      base: None,
22863      source: None,
22864    }
22865  }
22866}
22867
22868pub struct DucParametricElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
22869  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
22870  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
22871}
22872impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucParametricElementBuilder<'a, 'b, A> {
22873  #[inline]
22874  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
22875    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucParametricElement::VT_BASE, base);
22876  }
22877  #[inline]
22878  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<ParametricSource<'b >>) {
22879    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ParametricSource>>(DucParametricElement::VT_SOURCE, source);
22880  }
22881  #[inline]
22882  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucParametricElementBuilder<'a, 'b, A> {
22883    let start = _fbb.start_table();
22884    DucParametricElementBuilder {
22885      fbb_: _fbb,
22886      start_: start,
22887    }
22888  }
22889  #[inline]
22890  pub fn finish(self) -> flatbuffers::WIPOffset<DucParametricElement<'a>> {
22891    let o = self.fbb_.end_table(self.start_);
22892    flatbuffers::WIPOffset::new(o.value())
22893  }
22894}
22895
22896impl core::fmt::Debug for DucParametricElement<'_> {
22897  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22898    let mut ds = f.debug_struct("DucParametricElement");
22899      ds.field("base", &self.base());
22900      ds.field("source", &self.source());
22901      ds.finish()
22902  }
22903}
22904pub enum DucModelElementOffset {}
22905#[derive(Copy, Clone, PartialEq)]
22906
22907pub struct DucModelElement<'a> {
22908  pub _tab: flatbuffers::Table<'a>,
22909}
22910
22911impl<'a> flatbuffers::Follow<'a> for DucModelElement<'a> {
22912  type Inner = DucModelElement<'a>;
22913  #[inline]
22914  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
22915    Self { _tab: flatbuffers::Table::new(buf, loc) }
22916  }
22917}
22918
22919impl<'a> DucModelElement<'a> {
22920  pub const VT_BASE: flatbuffers::VOffsetT = 4;
22921  pub const VT_SOURCE: flatbuffers::VOffsetT = 6;
22922  pub const VT_SVG_PATH: flatbuffers::VOffsetT = 8;
22923  pub const VT_FILE_IDS: flatbuffers::VOffsetT = 10;
22924
22925  #[inline]
22926  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
22927    DucModelElement { _tab: table }
22928  }
22929  #[allow(unused_mut)]
22930  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
22931    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
22932    args: &'args DucModelElementArgs<'args>
22933  ) -> flatbuffers::WIPOffset<DucModelElement<'bldr>> {
22934    let mut builder = DucModelElementBuilder::new(_fbb);
22935    if let Some(x) = args.file_ids { builder.add_file_ids(x); }
22936    if let Some(x) = args.svg_path { builder.add_svg_path(x); }
22937    if let Some(x) = args.source { builder.add_source(x); }
22938    if let Some(x) = args.base { builder.add_base(x); }
22939    builder.finish()
22940  }
22941
22942
22943  #[inline]
22944  pub fn base(&self) -> Option<_DucElementBase<'a>> {
22945    // Safety:
22946    // Created from valid Table for this object
22947    // which contains a valid value in this slot
22948    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucElementBase>>(DucModelElement::VT_BASE, None)}
22949  }
22950  #[inline]
22951  pub fn source(&self) -> Option<&'a str> {
22952    // Safety:
22953    // Created from valid Table for this object
22954    // which contains a valid value in this slot
22955    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucModelElement::VT_SOURCE, None)}
22956  }
22957  #[inline]
22958  pub fn svg_path(&self) -> Option<&'a str> {
22959    // Safety:
22960    // Created from valid Table for this object
22961    // which contains a valid value in this slot
22962    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucModelElement::VT_SVG_PATH, None)}
22963  }
22964  #[inline]
22965  pub fn file_ids(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
22966    // Safety:
22967    // Created from valid Table for this object
22968    // which contains a valid value in this slot
22969    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(DucModelElement::VT_FILE_IDS, None)}
22970  }
22971}
22972
22973impl flatbuffers::Verifiable for DucModelElement<'_> {
22974  #[inline]
22975  fn run_verifier(
22976    v: &mut flatbuffers::Verifier, pos: usize
22977  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
22978    use self::flatbuffers::Verifiable;
22979    v.visit_table(pos)?
22980     .visit_field::<flatbuffers::ForwardsUOffset<_DucElementBase>>("base", Self::VT_BASE, false)?
22981     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("source", Self::VT_SOURCE, false)?
22982     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("svg_path", Self::VT_SVG_PATH, false)?
22983     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("file_ids", Self::VT_FILE_IDS, false)?
22984     .finish();
22985    Ok(())
22986  }
22987}
22988pub struct DucModelElementArgs<'a> {
22989    pub base: Option<flatbuffers::WIPOffset<_DucElementBase<'a>>>,
22990    pub source: Option<flatbuffers::WIPOffset<&'a str>>,
22991    pub svg_path: Option<flatbuffers::WIPOffset<&'a str>>,
22992    pub file_ids: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
22993}
22994impl<'a> Default for DucModelElementArgs<'a> {
22995  #[inline]
22996  fn default() -> Self {
22997    DucModelElementArgs {
22998      base: None,
22999      source: None,
23000      svg_path: None,
23001      file_ids: None,
23002    }
23003  }
23004}
23005
23006pub struct DucModelElementBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
23007  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
23008  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
23009}
23010impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucModelElementBuilder<'a, 'b, A> {
23011  #[inline]
23012  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_DucElementBase<'b >>) {
23013    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucElementBase>>(DucModelElement::VT_BASE, base);
23014  }
23015  #[inline]
23016  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<&'b  str>) {
23017    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucModelElement::VT_SOURCE, source);
23018  }
23019  #[inline]
23020  pub fn add_svg_path(&mut self, svg_path: flatbuffers::WIPOffset<&'b  str>) {
23021    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucModelElement::VT_SVG_PATH, svg_path);
23022  }
23023  #[inline]
23024  pub fn add_file_ids(&mut self, file_ids: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
23025    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucModelElement::VT_FILE_IDS, file_ids);
23026  }
23027  #[inline]
23028  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucModelElementBuilder<'a, 'b, A> {
23029    let start = _fbb.start_table();
23030    DucModelElementBuilder {
23031      fbb_: _fbb,
23032      start_: start,
23033    }
23034  }
23035  #[inline]
23036  pub fn finish(self) -> flatbuffers::WIPOffset<DucModelElement<'a>> {
23037    let o = self.fbb_.end_table(self.start_);
23038    flatbuffers::WIPOffset::new(o.value())
23039  }
23040}
23041
23042impl core::fmt::Debug for DucModelElement<'_> {
23043  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23044    let mut ds = f.debug_struct("DucModelElement");
23045      ds.field("base", &self.base());
23046      ds.field("source", &self.source());
23047      ds.field("svg_path", &self.svg_path());
23048      ds.field("file_ids", &self.file_ids());
23049      ds.finish()
23050  }
23051}
23052pub enum ElementWrapperOffset {}
23053#[derive(Copy, Clone, PartialEq)]
23054
23055pub struct ElementWrapper<'a> {
23056  pub _tab: flatbuffers::Table<'a>,
23057}
23058
23059impl<'a> flatbuffers::Follow<'a> for ElementWrapper<'a> {
23060  type Inner = ElementWrapper<'a>;
23061  #[inline]
23062  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
23063    Self { _tab: flatbuffers::Table::new(buf, loc) }
23064  }
23065}
23066
23067impl<'a> ElementWrapper<'a> {
23068  pub const VT_ELEMENT_TYPE: flatbuffers::VOffsetT = 4;
23069  pub const VT_ELEMENT: flatbuffers::VOffsetT = 6;
23070
23071  #[inline]
23072  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
23073    ElementWrapper { _tab: table }
23074  }
23075  #[allow(unused_mut)]
23076  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
23077    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
23078    args: &'args ElementWrapperArgs
23079  ) -> flatbuffers::WIPOffset<ElementWrapper<'bldr>> {
23080    let mut builder = ElementWrapperBuilder::new(_fbb);
23081    if let Some(x) = args.element { builder.add_element(x); }
23082    builder.add_element_type(args.element_type);
23083    builder.finish()
23084  }
23085
23086
23087  #[inline]
23088  pub fn element_type(&self) -> Element {
23089    // Safety:
23090    // Created from valid Table for this object
23091    // which contains a valid value in this slot
23092    unsafe { self._tab.get::<Element>(ElementWrapper::VT_ELEMENT_TYPE, Some(Element::NONE)).unwrap()}
23093  }
23094  #[inline]
23095  pub fn element(&self) -> Option<flatbuffers::Table<'a>> {
23096    // Safety:
23097    // Created from valid Table for this object
23098    // which contains a valid value in this slot
23099    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Table<'a>>>(ElementWrapper::VT_ELEMENT, None)}
23100  }
23101  #[inline]
23102  #[allow(non_snake_case)]
23103  pub fn element_as_duc_rectangle_element(&self) -> Option<DucRectangleElement<'a>> {
23104    if self.element_type() == Element::DucRectangleElement {
23105      self.element().map(|t| {
23106       // Safety:
23107       // Created from a valid Table for this object
23108       // Which contains a valid union in this slot
23109       unsafe { DucRectangleElement::init_from_table(t) }
23110     })
23111    } else {
23112      None
23113    }
23114  }
23115
23116  #[inline]
23117  #[allow(non_snake_case)]
23118  pub fn element_as_duc_polygon_element(&self) -> Option<DucPolygonElement<'a>> {
23119    if self.element_type() == Element::DucPolygonElement {
23120      self.element().map(|t| {
23121       // Safety:
23122       // Created from a valid Table for this object
23123       // Which contains a valid union in this slot
23124       unsafe { DucPolygonElement::init_from_table(t) }
23125     })
23126    } else {
23127      None
23128    }
23129  }
23130
23131  #[inline]
23132  #[allow(non_snake_case)]
23133  pub fn element_as_duc_ellipse_element(&self) -> Option<DucEllipseElement<'a>> {
23134    if self.element_type() == Element::DucEllipseElement {
23135      self.element().map(|t| {
23136       // Safety:
23137       // Created from a valid Table for this object
23138       // Which contains a valid union in this slot
23139       unsafe { DucEllipseElement::init_from_table(t) }
23140     })
23141    } else {
23142      None
23143    }
23144  }
23145
23146  #[inline]
23147  #[allow(non_snake_case)]
23148  pub fn element_as_duc_embeddable_element(&self) -> Option<DucEmbeddableElement<'a>> {
23149    if self.element_type() == Element::DucEmbeddableElement {
23150      self.element().map(|t| {
23151       // Safety:
23152       // Created from a valid Table for this object
23153       // Which contains a valid union in this slot
23154       unsafe { DucEmbeddableElement::init_from_table(t) }
23155     })
23156    } else {
23157      None
23158    }
23159  }
23160
23161  #[inline]
23162  #[allow(non_snake_case)]
23163  pub fn element_as_duc_pdf_element(&self) -> Option<DucPdfElement<'a>> {
23164    if self.element_type() == Element::DucPdfElement {
23165      self.element().map(|t| {
23166       // Safety:
23167       // Created from a valid Table for this object
23168       // Which contains a valid union in this slot
23169       unsafe { DucPdfElement::init_from_table(t) }
23170     })
23171    } else {
23172      None
23173    }
23174  }
23175
23176  #[inline]
23177  #[allow(non_snake_case)]
23178  pub fn element_as_duc_mermaid_element(&self) -> Option<DucMermaidElement<'a>> {
23179    if self.element_type() == Element::DucMermaidElement {
23180      self.element().map(|t| {
23181       // Safety:
23182       // Created from a valid Table for this object
23183       // Which contains a valid union in this slot
23184       unsafe { DucMermaidElement::init_from_table(t) }
23185     })
23186    } else {
23187      None
23188    }
23189  }
23190
23191  #[inline]
23192  #[allow(non_snake_case)]
23193  pub fn element_as_duc_table_element(&self) -> Option<DucTableElement<'a>> {
23194    if self.element_type() == Element::DucTableElement {
23195      self.element().map(|t| {
23196       // Safety:
23197       // Created from a valid Table for this object
23198       // Which contains a valid union in this slot
23199       unsafe { DucTableElement::init_from_table(t) }
23200     })
23201    } else {
23202      None
23203    }
23204  }
23205
23206  #[inline]
23207  #[allow(non_snake_case)]
23208  pub fn element_as_duc_image_element(&self) -> Option<DucImageElement<'a>> {
23209    if self.element_type() == Element::DucImageElement {
23210      self.element().map(|t| {
23211       // Safety:
23212       // Created from a valid Table for this object
23213       // Which contains a valid union in this slot
23214       unsafe { DucImageElement::init_from_table(t) }
23215     })
23216    } else {
23217      None
23218    }
23219  }
23220
23221  #[inline]
23222  #[allow(non_snake_case)]
23223  pub fn element_as_duc_text_element(&self) -> Option<DucTextElement<'a>> {
23224    if self.element_type() == Element::DucTextElement {
23225      self.element().map(|t| {
23226       // Safety:
23227       // Created from a valid Table for this object
23228       // Which contains a valid union in this slot
23229       unsafe { DucTextElement::init_from_table(t) }
23230     })
23231    } else {
23232      None
23233    }
23234  }
23235
23236  #[inline]
23237  #[allow(non_snake_case)]
23238  pub fn element_as_duc_linear_element(&self) -> Option<DucLinearElement<'a>> {
23239    if self.element_type() == Element::DucLinearElement {
23240      self.element().map(|t| {
23241       // Safety:
23242       // Created from a valid Table for this object
23243       // Which contains a valid union in this slot
23244       unsafe { DucLinearElement::init_from_table(t) }
23245     })
23246    } else {
23247      None
23248    }
23249  }
23250
23251  #[inline]
23252  #[allow(non_snake_case)]
23253  pub fn element_as_duc_arrow_element(&self) -> Option<DucArrowElement<'a>> {
23254    if self.element_type() == Element::DucArrowElement {
23255      self.element().map(|t| {
23256       // Safety:
23257       // Created from a valid Table for this object
23258       // Which contains a valid union in this slot
23259       unsafe { DucArrowElement::init_from_table(t) }
23260     })
23261    } else {
23262      None
23263    }
23264  }
23265
23266  #[inline]
23267  #[allow(non_snake_case)]
23268  pub fn element_as_duc_free_draw_element(&self) -> Option<DucFreeDrawElement<'a>> {
23269    if self.element_type() == Element::DucFreeDrawElement {
23270      self.element().map(|t| {
23271       // Safety:
23272       // Created from a valid Table for this object
23273       // Which contains a valid union in this slot
23274       unsafe { DucFreeDrawElement::init_from_table(t) }
23275     })
23276    } else {
23277      None
23278    }
23279  }
23280
23281  #[inline]
23282  #[allow(non_snake_case)]
23283  pub fn element_as_duc_block_instance_element(&self) -> Option<DucBlockInstanceElement<'a>> {
23284    if self.element_type() == Element::DucBlockInstanceElement {
23285      self.element().map(|t| {
23286       // Safety:
23287       // Created from a valid Table for this object
23288       // Which contains a valid union in this slot
23289       unsafe { DucBlockInstanceElement::init_from_table(t) }
23290     })
23291    } else {
23292      None
23293    }
23294  }
23295
23296  #[inline]
23297  #[allow(non_snake_case)]
23298  pub fn element_as_duc_frame_element(&self) -> Option<DucFrameElement<'a>> {
23299    if self.element_type() == Element::DucFrameElement {
23300      self.element().map(|t| {
23301       // Safety:
23302       // Created from a valid Table for this object
23303       // Which contains a valid union in this slot
23304       unsafe { DucFrameElement::init_from_table(t) }
23305     })
23306    } else {
23307      None
23308    }
23309  }
23310
23311  #[inline]
23312  #[allow(non_snake_case)]
23313  pub fn element_as_duc_plot_element(&self) -> Option<DucPlotElement<'a>> {
23314    if self.element_type() == Element::DucPlotElement {
23315      self.element().map(|t| {
23316       // Safety:
23317       // Created from a valid Table for this object
23318       // Which contains a valid union in this slot
23319       unsafe { DucPlotElement::init_from_table(t) }
23320     })
23321    } else {
23322      None
23323    }
23324  }
23325
23326  #[inline]
23327  #[allow(non_snake_case)]
23328  pub fn element_as_duc_viewport_element(&self) -> Option<DucViewportElement<'a>> {
23329    if self.element_type() == Element::DucViewportElement {
23330      self.element().map(|t| {
23331       // Safety:
23332       // Created from a valid Table for this object
23333       // Which contains a valid union in this slot
23334       unsafe { DucViewportElement::init_from_table(t) }
23335     })
23336    } else {
23337      None
23338    }
23339  }
23340
23341  #[inline]
23342  #[allow(non_snake_case)]
23343  pub fn element_as_duc_xray_element(&self) -> Option<DucXRayElement<'a>> {
23344    if self.element_type() == Element::DucXRayElement {
23345      self.element().map(|t| {
23346       // Safety:
23347       // Created from a valid Table for this object
23348       // Which contains a valid union in this slot
23349       unsafe { DucXRayElement::init_from_table(t) }
23350     })
23351    } else {
23352      None
23353    }
23354  }
23355
23356  #[inline]
23357  #[allow(non_snake_case)]
23358  pub fn element_as_duc_leader_element(&self) -> Option<DucLeaderElement<'a>> {
23359    if self.element_type() == Element::DucLeaderElement {
23360      self.element().map(|t| {
23361       // Safety:
23362       // Created from a valid Table for this object
23363       // Which contains a valid union in this slot
23364       unsafe { DucLeaderElement::init_from_table(t) }
23365     })
23366    } else {
23367      None
23368    }
23369  }
23370
23371  #[inline]
23372  #[allow(non_snake_case)]
23373  pub fn element_as_duc_dimension_element(&self) -> Option<DucDimensionElement<'a>> {
23374    if self.element_type() == Element::DucDimensionElement {
23375      self.element().map(|t| {
23376       // Safety:
23377       // Created from a valid Table for this object
23378       // Which contains a valid union in this slot
23379       unsafe { DucDimensionElement::init_from_table(t) }
23380     })
23381    } else {
23382      None
23383    }
23384  }
23385
23386  #[inline]
23387  #[allow(non_snake_case)]
23388  pub fn element_as_duc_feature_control_frame_element(&self) -> Option<DucFeatureControlFrameElement<'a>> {
23389    if self.element_type() == Element::DucFeatureControlFrameElement {
23390      self.element().map(|t| {
23391       // Safety:
23392       // Created from a valid Table for this object
23393       // Which contains a valid union in this slot
23394       unsafe { DucFeatureControlFrameElement::init_from_table(t) }
23395     })
23396    } else {
23397      None
23398    }
23399  }
23400
23401  #[inline]
23402  #[allow(non_snake_case)]
23403  pub fn element_as_duc_doc_element(&self) -> Option<DucDocElement<'a>> {
23404    if self.element_type() == Element::DucDocElement {
23405      self.element().map(|t| {
23406       // Safety:
23407       // Created from a valid Table for this object
23408       // Which contains a valid union in this slot
23409       unsafe { DucDocElement::init_from_table(t) }
23410     })
23411    } else {
23412      None
23413    }
23414  }
23415
23416  #[inline]
23417  #[allow(non_snake_case)]
23418  pub fn element_as_duc_parametric_element(&self) -> Option<DucParametricElement<'a>> {
23419    if self.element_type() == Element::DucParametricElement {
23420      self.element().map(|t| {
23421       // Safety:
23422       // Created from a valid Table for this object
23423       // Which contains a valid union in this slot
23424       unsafe { DucParametricElement::init_from_table(t) }
23425     })
23426    } else {
23427      None
23428    }
23429  }
23430
23431  #[inline]
23432  #[allow(non_snake_case)]
23433  pub fn element_as_duc_model_element(&self) -> Option<DucModelElement<'a>> {
23434    if self.element_type() == Element::DucModelElement {
23435      self.element().map(|t| {
23436       // Safety:
23437       // Created from a valid Table for this object
23438       // Which contains a valid union in this slot
23439       unsafe { DucModelElement::init_from_table(t) }
23440     })
23441    } else {
23442      None
23443    }
23444  }
23445
23446}
23447
23448impl flatbuffers::Verifiable for ElementWrapper<'_> {
23449  #[inline]
23450  fn run_verifier(
23451    v: &mut flatbuffers::Verifier, pos: usize
23452  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
23453    use self::flatbuffers::Verifiable;
23454    v.visit_table(pos)?
23455     .visit_union::<Element, _>("element_type", Self::VT_ELEMENT_TYPE, "element", Self::VT_ELEMENT, false, |key, v, pos| {
23456        match key {
23457          Element::DucRectangleElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucRectangleElement>>("Element::DucRectangleElement", pos),
23458          Element::DucPolygonElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucPolygonElement>>("Element::DucPolygonElement", pos),
23459          Element::DucEllipseElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucEllipseElement>>("Element::DucEllipseElement", pos),
23460          Element::DucEmbeddableElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucEmbeddableElement>>("Element::DucEmbeddableElement", pos),
23461          Element::DucPdfElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucPdfElement>>("Element::DucPdfElement", pos),
23462          Element::DucMermaidElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucMermaidElement>>("Element::DucMermaidElement", pos),
23463          Element::DucTableElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucTableElement>>("Element::DucTableElement", pos),
23464          Element::DucImageElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucImageElement>>("Element::DucImageElement", pos),
23465          Element::DucTextElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucTextElement>>("Element::DucTextElement", pos),
23466          Element::DucLinearElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucLinearElement>>("Element::DucLinearElement", pos),
23467          Element::DucArrowElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucArrowElement>>("Element::DucArrowElement", pos),
23468          Element::DucFreeDrawElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucFreeDrawElement>>("Element::DucFreeDrawElement", pos),
23469          Element::DucBlockInstanceElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucBlockInstanceElement>>("Element::DucBlockInstanceElement", pos),
23470          Element::DucFrameElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucFrameElement>>("Element::DucFrameElement", pos),
23471          Element::DucPlotElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucPlotElement>>("Element::DucPlotElement", pos),
23472          Element::DucViewportElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucViewportElement>>("Element::DucViewportElement", pos),
23473          Element::DucXRayElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucXRayElement>>("Element::DucXRayElement", pos),
23474          Element::DucLeaderElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucLeaderElement>>("Element::DucLeaderElement", pos),
23475          Element::DucDimensionElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucDimensionElement>>("Element::DucDimensionElement", pos),
23476          Element::DucFeatureControlFrameElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucFeatureControlFrameElement>>("Element::DucFeatureControlFrameElement", pos),
23477          Element::DucDocElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucDocElement>>("Element::DucDocElement", pos),
23478          Element::DucParametricElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucParametricElement>>("Element::DucParametricElement", pos),
23479          Element::DucModelElement => v.verify_union_variant::<flatbuffers::ForwardsUOffset<DucModelElement>>("Element::DucModelElement", pos),
23480          _ => Ok(()),
23481        }
23482     })?
23483     .finish();
23484    Ok(())
23485  }
23486}
23487pub struct ElementWrapperArgs {
23488    pub element_type: Element,
23489    pub element: Option<flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>>,
23490}
23491impl<'a> Default for ElementWrapperArgs {
23492  #[inline]
23493  fn default() -> Self {
23494    ElementWrapperArgs {
23495      element_type: Element::NONE,
23496      element: None,
23497    }
23498  }
23499}
23500
23501pub struct ElementWrapperBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
23502  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
23503  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
23504}
23505impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ElementWrapperBuilder<'a, 'b, A> {
23506  #[inline]
23507  pub fn add_element_type(&mut self, element_type: Element) {
23508    self.fbb_.push_slot::<Element>(ElementWrapper::VT_ELEMENT_TYPE, element_type, Element::NONE);
23509  }
23510  #[inline]
23511  pub fn add_element(&mut self, element: flatbuffers::WIPOffset<flatbuffers::UnionWIPOffset>) {
23512    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ElementWrapper::VT_ELEMENT, element);
23513  }
23514  #[inline]
23515  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ElementWrapperBuilder<'a, 'b, A> {
23516    let start = _fbb.start_table();
23517    ElementWrapperBuilder {
23518      fbb_: _fbb,
23519      start_: start,
23520    }
23521  }
23522  #[inline]
23523  pub fn finish(self) -> flatbuffers::WIPOffset<ElementWrapper<'a>> {
23524    let o = self.fbb_.end_table(self.start_);
23525    flatbuffers::WIPOffset::new(o.value())
23526  }
23527}
23528
23529impl core::fmt::Debug for ElementWrapper<'_> {
23530  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23531    let mut ds = f.debug_struct("ElementWrapper");
23532      ds.field("element_type", &self.element_type());
23533      match self.element_type() {
23534        Element::DucRectangleElement => {
23535          if let Some(x) = self.element_as_duc_rectangle_element() {
23536            ds.field("element", &x)
23537          } else {
23538            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23539          }
23540        },
23541        Element::DucPolygonElement => {
23542          if let Some(x) = self.element_as_duc_polygon_element() {
23543            ds.field("element", &x)
23544          } else {
23545            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23546          }
23547        },
23548        Element::DucEllipseElement => {
23549          if let Some(x) = self.element_as_duc_ellipse_element() {
23550            ds.field("element", &x)
23551          } else {
23552            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23553          }
23554        },
23555        Element::DucEmbeddableElement => {
23556          if let Some(x) = self.element_as_duc_embeddable_element() {
23557            ds.field("element", &x)
23558          } else {
23559            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23560          }
23561        },
23562        Element::DucPdfElement => {
23563          if let Some(x) = self.element_as_duc_pdf_element() {
23564            ds.field("element", &x)
23565          } else {
23566            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23567          }
23568        },
23569        Element::DucMermaidElement => {
23570          if let Some(x) = self.element_as_duc_mermaid_element() {
23571            ds.field("element", &x)
23572          } else {
23573            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23574          }
23575        },
23576        Element::DucTableElement => {
23577          if let Some(x) = self.element_as_duc_table_element() {
23578            ds.field("element", &x)
23579          } else {
23580            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23581          }
23582        },
23583        Element::DucImageElement => {
23584          if let Some(x) = self.element_as_duc_image_element() {
23585            ds.field("element", &x)
23586          } else {
23587            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23588          }
23589        },
23590        Element::DucTextElement => {
23591          if let Some(x) = self.element_as_duc_text_element() {
23592            ds.field("element", &x)
23593          } else {
23594            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23595          }
23596        },
23597        Element::DucLinearElement => {
23598          if let Some(x) = self.element_as_duc_linear_element() {
23599            ds.field("element", &x)
23600          } else {
23601            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23602          }
23603        },
23604        Element::DucArrowElement => {
23605          if let Some(x) = self.element_as_duc_arrow_element() {
23606            ds.field("element", &x)
23607          } else {
23608            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23609          }
23610        },
23611        Element::DucFreeDrawElement => {
23612          if let Some(x) = self.element_as_duc_free_draw_element() {
23613            ds.field("element", &x)
23614          } else {
23615            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23616          }
23617        },
23618        Element::DucBlockInstanceElement => {
23619          if let Some(x) = self.element_as_duc_block_instance_element() {
23620            ds.field("element", &x)
23621          } else {
23622            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23623          }
23624        },
23625        Element::DucFrameElement => {
23626          if let Some(x) = self.element_as_duc_frame_element() {
23627            ds.field("element", &x)
23628          } else {
23629            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23630          }
23631        },
23632        Element::DucPlotElement => {
23633          if let Some(x) = self.element_as_duc_plot_element() {
23634            ds.field("element", &x)
23635          } else {
23636            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23637          }
23638        },
23639        Element::DucViewportElement => {
23640          if let Some(x) = self.element_as_duc_viewport_element() {
23641            ds.field("element", &x)
23642          } else {
23643            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23644          }
23645        },
23646        Element::DucXRayElement => {
23647          if let Some(x) = self.element_as_duc_xray_element() {
23648            ds.field("element", &x)
23649          } else {
23650            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23651          }
23652        },
23653        Element::DucLeaderElement => {
23654          if let Some(x) = self.element_as_duc_leader_element() {
23655            ds.field("element", &x)
23656          } else {
23657            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23658          }
23659        },
23660        Element::DucDimensionElement => {
23661          if let Some(x) = self.element_as_duc_dimension_element() {
23662            ds.field("element", &x)
23663          } else {
23664            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23665          }
23666        },
23667        Element::DucFeatureControlFrameElement => {
23668          if let Some(x) = self.element_as_duc_feature_control_frame_element() {
23669            ds.field("element", &x)
23670          } else {
23671            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23672          }
23673        },
23674        Element::DucDocElement => {
23675          if let Some(x) = self.element_as_duc_doc_element() {
23676            ds.field("element", &x)
23677          } else {
23678            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23679          }
23680        },
23681        Element::DucParametricElement => {
23682          if let Some(x) = self.element_as_duc_parametric_element() {
23683            ds.field("element", &x)
23684          } else {
23685            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23686          }
23687        },
23688        Element::DucModelElement => {
23689          if let Some(x) = self.element_as_duc_model_element() {
23690            ds.field("element", &x)
23691          } else {
23692            ds.field("element", &"InvalidFlatbuffer: Union discriminant does not match value.")
23693          }
23694        },
23695        _ => {
23696          let x: Option<()> = None;
23697          ds.field("element", &x)
23698        },
23699      };
23700      ds.finish()
23701  }
23702}
23703pub enum DucGlobalStateOffset {}
23704#[derive(Copy, Clone, PartialEq)]
23705
23706pub struct DucGlobalState<'a> {
23707  pub _tab: flatbuffers::Table<'a>,
23708}
23709
23710impl<'a> flatbuffers::Follow<'a> for DucGlobalState<'a> {
23711  type Inner = DucGlobalState<'a>;
23712  #[inline]
23713  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
23714    Self { _tab: flatbuffers::Table::new(buf, loc) }
23715  }
23716}
23717
23718impl<'a> DucGlobalState<'a> {
23719  pub const VT_NAME: flatbuffers::VOffsetT = 4;
23720  pub const VT_VIEW_BACKGROUND_COLOR: flatbuffers::VOffsetT = 6;
23721  pub const VT_MAIN_SCOPE: flatbuffers::VOffsetT = 8;
23722  pub const VT_DASH_SPACING_SCALE: flatbuffers::VOffsetT = 10;
23723  pub const VT_IS_DASH_SPACING_AFFECTED_BY_VIEWPORT_SCALE: flatbuffers::VOffsetT = 12;
23724  pub const VT_SCOPE_EXPONENT_THRESHOLD: flatbuffers::VOffsetT = 14;
23725  pub const VT_DIMENSIONS_ASSOCIATIVE_BY_DEFAULT: flatbuffers::VOffsetT = 16;
23726  pub const VT_USE_ANNOTATIVE_SCALING: flatbuffers::VOffsetT = 18;
23727  pub const VT_DISPLAY_PRECISION_LINEAR: flatbuffers::VOffsetT = 20;
23728  pub const VT_DISPLAY_PRECISION_ANGULAR: flatbuffers::VOffsetT = 22;
23729  pub const VT_PRUNING_LEVEL: flatbuffers::VOffsetT = 24;
23730
23731  #[inline]
23732  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
23733    DucGlobalState { _tab: table }
23734  }
23735  #[allow(unused_mut)]
23736  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
23737    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
23738    args: &'args DucGlobalStateArgs<'args>
23739  ) -> flatbuffers::WIPOffset<DucGlobalState<'bldr>> {
23740    let mut builder = DucGlobalStateBuilder::new(_fbb);
23741    builder.add_display_precision_angular(args.display_precision_angular);
23742    builder.add_display_precision_linear(args.display_precision_linear);
23743    builder.add_dash_spacing_scale(args.dash_spacing_scale);
23744    if let Some(x) = args.main_scope { builder.add_main_scope(x); }
23745    if let Some(x) = args.view_background_color { builder.add_view_background_color(x); }
23746    if let Some(x) = args.name { builder.add_name(x); }
23747    if let Some(x) = args.pruning_level { builder.add_pruning_level(x); }
23748    builder.add_use_annotative_scaling(args.use_annotative_scaling);
23749    builder.add_dimensions_associative_by_default(args.dimensions_associative_by_default);
23750    builder.add_scope_exponent_threshold(args.scope_exponent_threshold);
23751    builder.add_is_dash_spacing_affected_by_viewport_scale(args.is_dash_spacing_affected_by_viewport_scale);
23752    builder.finish()
23753  }
23754
23755
23756  #[inline]
23757  pub fn name(&self) -> Option<&'a str> {
23758    // Safety:
23759    // Created from valid Table for this object
23760    // which contains a valid value in this slot
23761    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucGlobalState::VT_NAME, None)}
23762  }
23763  #[inline]
23764  pub fn view_background_color(&self) -> Option<&'a str> {
23765    // Safety:
23766    // Created from valid Table for this object
23767    // which contains a valid value in this slot
23768    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucGlobalState::VT_VIEW_BACKGROUND_COLOR, None)}
23769  }
23770  #[inline]
23771  pub fn main_scope(&self) -> Option<&'a str> {
23772    // Safety:
23773    // Created from valid Table for this object
23774    // which contains a valid value in this slot
23775    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucGlobalState::VT_MAIN_SCOPE, None)}
23776  }
23777  #[inline]
23778  pub fn dash_spacing_scale(&self) -> f32 {
23779    // Safety:
23780    // Created from valid Table for this object
23781    // which contains a valid value in this slot
23782    unsafe { self._tab.get::<f32>(DucGlobalState::VT_DASH_SPACING_SCALE, Some(0.0)).unwrap()}
23783  }
23784  #[inline]
23785  pub fn is_dash_spacing_affected_by_viewport_scale(&self) -> bool {
23786    // Safety:
23787    // Created from valid Table for this object
23788    // which contains a valid value in this slot
23789    unsafe { self._tab.get::<bool>(DucGlobalState::VT_IS_DASH_SPACING_AFFECTED_BY_VIEWPORT_SCALE, Some(false)).unwrap()}
23790  }
23791  #[inline]
23792  pub fn scope_exponent_threshold(&self) -> i8 {
23793    // Safety:
23794    // Created from valid Table for this object
23795    // which contains a valid value in this slot
23796    unsafe { self._tab.get::<i8>(DucGlobalState::VT_SCOPE_EXPONENT_THRESHOLD, Some(0)).unwrap()}
23797  }
23798  #[inline]
23799  pub fn dimensions_associative_by_default(&self) -> bool {
23800    // Safety:
23801    // Created from valid Table for this object
23802    // which contains a valid value in this slot
23803    unsafe { self._tab.get::<bool>(DucGlobalState::VT_DIMENSIONS_ASSOCIATIVE_BY_DEFAULT, Some(false)).unwrap()}
23804  }
23805  #[inline]
23806  pub fn use_annotative_scaling(&self) -> bool {
23807    // Safety:
23808    // Created from valid Table for this object
23809    // which contains a valid value in this slot
23810    unsafe { self._tab.get::<bool>(DucGlobalState::VT_USE_ANNOTATIVE_SCALING, Some(false)).unwrap()}
23811  }
23812  #[inline]
23813  pub fn display_precision_linear(&self) -> i32 {
23814    // Safety:
23815    // Created from valid Table for this object
23816    // which contains a valid value in this slot
23817    unsafe { self._tab.get::<i32>(DucGlobalState::VT_DISPLAY_PRECISION_LINEAR, Some(0)).unwrap()}
23818  }
23819  #[inline]
23820  pub fn display_precision_angular(&self) -> i32 {
23821    // Safety:
23822    // Created from valid Table for this object
23823    // which contains a valid value in this slot
23824    unsafe { self._tab.get::<i32>(DucGlobalState::VT_DISPLAY_PRECISION_ANGULAR, Some(0)).unwrap()}
23825  }
23826  #[inline]
23827  pub fn pruning_level(&self) -> Option<PRUNING_LEVEL> {
23828    // Safety:
23829    // Created from valid Table for this object
23830    // which contains a valid value in this slot
23831    unsafe { self._tab.get::<PRUNING_LEVEL>(DucGlobalState::VT_PRUNING_LEVEL, None)}
23832  }
23833}
23834
23835impl flatbuffers::Verifiable for DucGlobalState<'_> {
23836  #[inline]
23837  fn run_verifier(
23838    v: &mut flatbuffers::Verifier, pos: usize
23839  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
23840    use self::flatbuffers::Verifiable;
23841    v.visit_table(pos)?
23842     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("name", Self::VT_NAME, false)?
23843     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("view_background_color", Self::VT_VIEW_BACKGROUND_COLOR, false)?
23844     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("main_scope", Self::VT_MAIN_SCOPE, false)?
23845     .visit_field::<f32>("dash_spacing_scale", Self::VT_DASH_SPACING_SCALE, false)?
23846     .visit_field::<bool>("is_dash_spacing_affected_by_viewport_scale", Self::VT_IS_DASH_SPACING_AFFECTED_BY_VIEWPORT_SCALE, false)?
23847     .visit_field::<i8>("scope_exponent_threshold", Self::VT_SCOPE_EXPONENT_THRESHOLD, false)?
23848     .visit_field::<bool>("dimensions_associative_by_default", Self::VT_DIMENSIONS_ASSOCIATIVE_BY_DEFAULT, false)?
23849     .visit_field::<bool>("use_annotative_scaling", Self::VT_USE_ANNOTATIVE_SCALING, false)?
23850     .visit_field::<i32>("display_precision_linear", Self::VT_DISPLAY_PRECISION_LINEAR, false)?
23851     .visit_field::<i32>("display_precision_angular", Self::VT_DISPLAY_PRECISION_ANGULAR, false)?
23852     .visit_field::<PRUNING_LEVEL>("pruning_level", Self::VT_PRUNING_LEVEL, false)?
23853     .finish();
23854    Ok(())
23855  }
23856}
23857pub struct DucGlobalStateArgs<'a> {
23858    pub name: Option<flatbuffers::WIPOffset<&'a str>>,
23859    pub view_background_color: Option<flatbuffers::WIPOffset<&'a str>>,
23860    pub main_scope: Option<flatbuffers::WIPOffset<&'a str>>,
23861    pub dash_spacing_scale: f32,
23862    pub is_dash_spacing_affected_by_viewport_scale: bool,
23863    pub scope_exponent_threshold: i8,
23864    pub dimensions_associative_by_default: bool,
23865    pub use_annotative_scaling: bool,
23866    pub display_precision_linear: i32,
23867    pub display_precision_angular: i32,
23868    pub pruning_level: Option<PRUNING_LEVEL>,
23869}
23870impl<'a> Default for DucGlobalStateArgs<'a> {
23871  #[inline]
23872  fn default() -> Self {
23873    DucGlobalStateArgs {
23874      name: None,
23875      view_background_color: None,
23876      main_scope: None,
23877      dash_spacing_scale: 0.0,
23878      is_dash_spacing_affected_by_viewport_scale: false,
23879      scope_exponent_threshold: 0,
23880      dimensions_associative_by_default: false,
23881      use_annotative_scaling: false,
23882      display_precision_linear: 0,
23883      display_precision_angular: 0,
23884      pruning_level: None,
23885    }
23886  }
23887}
23888
23889pub struct DucGlobalStateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
23890  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
23891  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
23892}
23893impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucGlobalStateBuilder<'a, 'b, A> {
23894  #[inline]
23895  pub fn add_name(&mut self, name: flatbuffers::WIPOffset<&'b  str>) {
23896    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucGlobalState::VT_NAME, name);
23897  }
23898  #[inline]
23899  pub fn add_view_background_color(&mut self, view_background_color: flatbuffers::WIPOffset<&'b  str>) {
23900    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucGlobalState::VT_VIEW_BACKGROUND_COLOR, view_background_color);
23901  }
23902  #[inline]
23903  pub fn add_main_scope(&mut self, main_scope: flatbuffers::WIPOffset<&'b  str>) {
23904    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucGlobalState::VT_MAIN_SCOPE, main_scope);
23905  }
23906  #[inline]
23907  pub fn add_dash_spacing_scale(&mut self, dash_spacing_scale: f32) {
23908    self.fbb_.push_slot::<f32>(DucGlobalState::VT_DASH_SPACING_SCALE, dash_spacing_scale, 0.0);
23909  }
23910  #[inline]
23911  pub fn add_is_dash_spacing_affected_by_viewport_scale(&mut self, is_dash_spacing_affected_by_viewport_scale: bool) {
23912    self.fbb_.push_slot::<bool>(DucGlobalState::VT_IS_DASH_SPACING_AFFECTED_BY_VIEWPORT_SCALE, is_dash_spacing_affected_by_viewport_scale, false);
23913  }
23914  #[inline]
23915  pub fn add_scope_exponent_threshold(&mut self, scope_exponent_threshold: i8) {
23916    self.fbb_.push_slot::<i8>(DucGlobalState::VT_SCOPE_EXPONENT_THRESHOLD, scope_exponent_threshold, 0);
23917  }
23918  #[inline]
23919  pub fn add_dimensions_associative_by_default(&mut self, dimensions_associative_by_default: bool) {
23920    self.fbb_.push_slot::<bool>(DucGlobalState::VT_DIMENSIONS_ASSOCIATIVE_BY_DEFAULT, dimensions_associative_by_default, false);
23921  }
23922  #[inline]
23923  pub fn add_use_annotative_scaling(&mut self, use_annotative_scaling: bool) {
23924    self.fbb_.push_slot::<bool>(DucGlobalState::VT_USE_ANNOTATIVE_SCALING, use_annotative_scaling, false);
23925  }
23926  #[inline]
23927  pub fn add_display_precision_linear(&mut self, display_precision_linear: i32) {
23928    self.fbb_.push_slot::<i32>(DucGlobalState::VT_DISPLAY_PRECISION_LINEAR, display_precision_linear, 0);
23929  }
23930  #[inline]
23931  pub fn add_display_precision_angular(&mut self, display_precision_angular: i32) {
23932    self.fbb_.push_slot::<i32>(DucGlobalState::VT_DISPLAY_PRECISION_ANGULAR, display_precision_angular, 0);
23933  }
23934  #[inline]
23935  pub fn add_pruning_level(&mut self, pruning_level: PRUNING_LEVEL) {
23936    self.fbb_.push_slot_always::<PRUNING_LEVEL>(DucGlobalState::VT_PRUNING_LEVEL, pruning_level);
23937  }
23938  #[inline]
23939  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucGlobalStateBuilder<'a, 'b, A> {
23940    let start = _fbb.start_table();
23941    DucGlobalStateBuilder {
23942      fbb_: _fbb,
23943      start_: start,
23944    }
23945  }
23946  #[inline]
23947  pub fn finish(self) -> flatbuffers::WIPOffset<DucGlobalState<'a>> {
23948    let o = self.fbb_.end_table(self.start_);
23949    flatbuffers::WIPOffset::new(o.value())
23950  }
23951}
23952
23953impl core::fmt::Debug for DucGlobalState<'_> {
23954  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
23955    let mut ds = f.debug_struct("DucGlobalState");
23956      ds.field("name", &self.name());
23957      ds.field("view_background_color", &self.view_background_color());
23958      ds.field("main_scope", &self.main_scope());
23959      ds.field("dash_spacing_scale", &self.dash_spacing_scale());
23960      ds.field("is_dash_spacing_affected_by_viewport_scale", &self.is_dash_spacing_affected_by_viewport_scale());
23961      ds.field("scope_exponent_threshold", &self.scope_exponent_threshold());
23962      ds.field("dimensions_associative_by_default", &self.dimensions_associative_by_default());
23963      ds.field("use_annotative_scaling", &self.use_annotative_scaling());
23964      ds.field("display_precision_linear", &self.display_precision_linear());
23965      ds.field("display_precision_angular", &self.display_precision_angular());
23966      ds.field("pruning_level", &self.pruning_level());
23967      ds.finish()
23968  }
23969}
23970pub enum DucLocalStateOffset {}
23971#[derive(Copy, Clone, PartialEq)]
23972
23973pub struct DucLocalState<'a> {
23974  pub _tab: flatbuffers::Table<'a>,
23975}
23976
23977impl<'a> flatbuffers::Follow<'a> for DucLocalState<'a> {
23978  type Inner = DucLocalState<'a>;
23979  #[inline]
23980  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
23981    Self { _tab: flatbuffers::Table::new(buf, loc) }
23982  }
23983}
23984
23985impl<'a> DucLocalState<'a> {
23986  pub const VT_SCOPE: flatbuffers::VOffsetT = 4;
23987  pub const VT_ACTIVE_STANDARD_ID: flatbuffers::VOffsetT = 6;
23988  pub const VT_SCROLL_X: flatbuffers::VOffsetT = 8;
23989  pub const VT_SCROLL_Y: flatbuffers::VOffsetT = 10;
23990  pub const VT_ZOOM: flatbuffers::VOffsetT = 12;
23991  pub const VT_ACTIVE_GRID_SETTINGS: flatbuffers::VOffsetT = 14;
23992  pub const VT_ACTIVE_SNAP_SETTINGS: flatbuffers::VOffsetT = 16;
23993  pub const VT_IS_BINDING_ENABLED: flatbuffers::VOffsetT = 18;
23994  pub const VT_CURRENT_ITEM_STROKE: flatbuffers::VOffsetT = 20;
23995  pub const VT_CURRENT_ITEM_BACKGROUND: flatbuffers::VOffsetT = 22;
23996  pub const VT_CURRENT_ITEM_OPACITY: flatbuffers::VOffsetT = 24;
23997  pub const VT_CURRENT_ITEM_FONT_FAMILY: flatbuffers::VOffsetT = 26;
23998  pub const VT_CURRENT_ITEM_FONT_SIZE: flatbuffers::VOffsetT = 28;
23999  pub const VT_CURRENT_ITEM_TEXT_ALIGN: flatbuffers::VOffsetT = 30;
24000  pub const VT_CURRENT_ITEM_START_LINE_HEAD: flatbuffers::VOffsetT = 32;
24001  pub const VT_CURRENT_ITEM_END_LINE_HEAD: flatbuffers::VOffsetT = 34;
24002  pub const VT_CURRENT_ITEM_ROUNDNESS: flatbuffers::VOffsetT = 36;
24003  pub const VT_PEN_MODE: flatbuffers::VOffsetT = 38;
24004  pub const VT_VIEW_MODE_ENABLED: flatbuffers::VOffsetT = 40;
24005  pub const VT_OBJECTS_SNAP_MODE_ENABLED: flatbuffers::VOffsetT = 42;
24006  pub const VT_GRID_MODE_ENABLED: flatbuffers::VOffsetT = 44;
24007  pub const VT_OUTLINE_MODE_ENABLED: flatbuffers::VOffsetT = 46;
24008  pub const VT_MANUAL_SAVE_MODE: flatbuffers::VOffsetT = 48;
24009
24010  #[inline]
24011  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
24012    DucLocalState { _tab: table }
24013  }
24014  #[allow(unused_mut)]
24015  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
24016    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
24017    args: &'args DucLocalStateArgs<'args>
24018  ) -> flatbuffers::WIPOffset<DucLocalState<'bldr>> {
24019    let mut builder = DucLocalStateBuilder::new(_fbb);
24020    builder.add_current_item_roundness(args.current_item_roundness);
24021    builder.add_current_item_font_size(args.current_item_font_size);
24022    builder.add_zoom(args.zoom);
24023    builder.add_scroll_y(args.scroll_y);
24024    builder.add_scroll_x(args.scroll_x);
24025    if let Some(x) = args.current_item_end_line_head { builder.add_current_item_end_line_head(x); }
24026    if let Some(x) = args.current_item_start_line_head { builder.add_current_item_start_line_head(x); }
24027    if let Some(x) = args.current_item_font_family { builder.add_current_item_font_family(x); }
24028    builder.add_current_item_opacity(args.current_item_opacity);
24029    if let Some(x) = args.current_item_background { builder.add_current_item_background(x); }
24030    if let Some(x) = args.current_item_stroke { builder.add_current_item_stroke(x); }
24031    if let Some(x) = args.active_snap_settings { builder.add_active_snap_settings(x); }
24032    if let Some(x) = args.active_grid_settings { builder.add_active_grid_settings(x); }
24033    if let Some(x) = args.active_standard_id { builder.add_active_standard_id(x); }
24034    if let Some(x) = args.scope { builder.add_scope(x); }
24035    builder.add_manual_save_mode(args.manual_save_mode);
24036    builder.add_outline_mode_enabled(args.outline_mode_enabled);
24037    builder.add_grid_mode_enabled(args.grid_mode_enabled);
24038    builder.add_objects_snap_mode_enabled(args.objects_snap_mode_enabled);
24039    builder.add_view_mode_enabled(args.view_mode_enabled);
24040    builder.add_pen_mode(args.pen_mode);
24041    if let Some(x) = args.current_item_text_align { builder.add_current_item_text_align(x); }
24042    builder.add_is_binding_enabled(args.is_binding_enabled);
24043    builder.finish()
24044  }
24045
24046
24047  #[inline]
24048  pub fn scope(&self) -> Option<&'a str> {
24049    // Safety:
24050    // Created from valid Table for this object
24051    // which contains a valid value in this slot
24052    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucLocalState::VT_SCOPE, None)}
24053  }
24054  #[inline]
24055  pub fn active_standard_id(&self) -> Option<&'a str> {
24056    // Safety:
24057    // Created from valid Table for this object
24058    // which contains a valid value in this slot
24059    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucLocalState::VT_ACTIVE_STANDARD_ID, None)}
24060  }
24061  #[inline]
24062  pub fn scroll_x(&self) -> f64 {
24063    // Safety:
24064    // Created from valid Table for this object
24065    // which contains a valid value in this slot
24066    unsafe { self._tab.get::<f64>(DucLocalState::VT_SCROLL_X, Some(0.0)).unwrap()}
24067  }
24068  #[inline]
24069  pub fn scroll_y(&self) -> f64 {
24070    // Safety:
24071    // Created from valid Table for this object
24072    // which contains a valid value in this slot
24073    unsafe { self._tab.get::<f64>(DucLocalState::VT_SCROLL_Y, Some(0.0)).unwrap()}
24074  }
24075  #[inline]
24076  pub fn zoom(&self) -> f64 {
24077    // Safety:
24078    // Created from valid Table for this object
24079    // which contains a valid value in this slot
24080    unsafe { self._tab.get::<f64>(DucLocalState::VT_ZOOM, Some(0.0)).unwrap()}
24081  }
24082  #[inline]
24083  pub fn active_grid_settings(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
24084    // Safety:
24085    // Created from valid Table for this object
24086    // which contains a valid value in this slot
24087    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(DucLocalState::VT_ACTIVE_GRID_SETTINGS, None)}
24088  }
24089  #[inline]
24090  pub fn active_snap_settings(&self) -> Option<&'a str> {
24091    // Safety:
24092    // Created from valid Table for this object
24093    // which contains a valid value in this slot
24094    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucLocalState::VT_ACTIVE_SNAP_SETTINGS, None)}
24095  }
24096  #[inline]
24097  pub fn is_binding_enabled(&self) -> bool {
24098    // Safety:
24099    // Created from valid Table for this object
24100    // which contains a valid value in this slot
24101    unsafe { self._tab.get::<bool>(DucLocalState::VT_IS_BINDING_ENABLED, Some(false)).unwrap()}
24102  }
24103  #[inline]
24104  pub fn current_item_stroke(&self) -> Option<ElementStroke<'a>> {
24105    // Safety:
24106    // Created from valid Table for this object
24107    // which contains a valid value in this slot
24108    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DucLocalState::VT_CURRENT_ITEM_STROKE, None)}
24109  }
24110  #[inline]
24111  pub fn current_item_background(&self) -> Option<ElementBackground<'a>> {
24112    // Safety:
24113    // Created from valid Table for this object
24114    // which contains a valid value in this slot
24115    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementBackground>>(DucLocalState::VT_CURRENT_ITEM_BACKGROUND, None)}
24116  }
24117  #[inline]
24118  pub fn current_item_opacity(&self) -> f32 {
24119    // Safety:
24120    // Created from valid Table for this object
24121    // which contains a valid value in this slot
24122    unsafe { self._tab.get::<f32>(DucLocalState::VT_CURRENT_ITEM_OPACITY, Some(0.0)).unwrap()}
24123  }
24124  #[inline]
24125  pub fn current_item_font_family(&self) -> Option<&'a str> {
24126    // Safety:
24127    // Created from valid Table for this object
24128    // which contains a valid value in this slot
24129    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucLocalState::VT_CURRENT_ITEM_FONT_FAMILY, None)}
24130  }
24131  #[inline]
24132  pub fn current_item_font_size(&self) -> f64 {
24133    // Safety:
24134    // Created from valid Table for this object
24135    // which contains a valid value in this slot
24136    unsafe { self._tab.get::<f64>(DucLocalState::VT_CURRENT_ITEM_FONT_SIZE, Some(0.0)).unwrap()}
24137  }
24138  #[inline]
24139  pub fn current_item_text_align(&self) -> Option<TEXT_ALIGN> {
24140    // Safety:
24141    // Created from valid Table for this object
24142    // which contains a valid value in this slot
24143    unsafe { self._tab.get::<TEXT_ALIGN>(DucLocalState::VT_CURRENT_ITEM_TEXT_ALIGN, None)}
24144  }
24145  #[inline]
24146  pub fn current_item_start_line_head(&self) -> Option<DucHead<'a>> {
24147    // Safety:
24148    // Created from valid Table for this object
24149    // which contains a valid value in this slot
24150    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucHead>>(DucLocalState::VT_CURRENT_ITEM_START_LINE_HEAD, None)}
24151  }
24152  #[inline]
24153  pub fn current_item_end_line_head(&self) -> Option<DucHead<'a>> {
24154    // Safety:
24155    // Created from valid Table for this object
24156    // which contains a valid value in this slot
24157    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucHead>>(DucLocalState::VT_CURRENT_ITEM_END_LINE_HEAD, None)}
24158  }
24159  #[inline]
24160  pub fn current_item_roundness(&self) -> f64 {
24161    // Safety:
24162    // Created from valid Table for this object
24163    // which contains a valid value in this slot
24164    unsafe { self._tab.get::<f64>(DucLocalState::VT_CURRENT_ITEM_ROUNDNESS, Some(0.0)).unwrap()}
24165  }
24166  #[inline]
24167  pub fn pen_mode(&self) -> bool {
24168    // Safety:
24169    // Created from valid Table for this object
24170    // which contains a valid value in this slot
24171    unsafe { self._tab.get::<bool>(DucLocalState::VT_PEN_MODE, Some(false)).unwrap()}
24172  }
24173  #[inline]
24174  pub fn view_mode_enabled(&self) -> bool {
24175    // Safety:
24176    // Created from valid Table for this object
24177    // which contains a valid value in this slot
24178    unsafe { self._tab.get::<bool>(DucLocalState::VT_VIEW_MODE_ENABLED, Some(false)).unwrap()}
24179  }
24180  #[inline]
24181  pub fn objects_snap_mode_enabled(&self) -> bool {
24182    // Safety:
24183    // Created from valid Table for this object
24184    // which contains a valid value in this slot
24185    unsafe { self._tab.get::<bool>(DucLocalState::VT_OBJECTS_SNAP_MODE_ENABLED, Some(false)).unwrap()}
24186  }
24187  #[inline]
24188  pub fn grid_mode_enabled(&self) -> bool {
24189    // Safety:
24190    // Created from valid Table for this object
24191    // which contains a valid value in this slot
24192    unsafe { self._tab.get::<bool>(DucLocalState::VT_GRID_MODE_ENABLED, Some(false)).unwrap()}
24193  }
24194  #[inline]
24195  pub fn outline_mode_enabled(&self) -> bool {
24196    // Safety:
24197    // Created from valid Table for this object
24198    // which contains a valid value in this slot
24199    unsafe { self._tab.get::<bool>(DucLocalState::VT_OUTLINE_MODE_ENABLED, Some(false)).unwrap()}
24200  }
24201  #[inline]
24202  pub fn manual_save_mode(&self) -> bool {
24203    // Safety:
24204    // Created from valid Table for this object
24205    // which contains a valid value in this slot
24206    unsafe { self._tab.get::<bool>(DucLocalState::VT_MANUAL_SAVE_MODE, Some(false)).unwrap()}
24207  }
24208}
24209
24210impl flatbuffers::Verifiable for DucLocalState<'_> {
24211  #[inline]
24212  fn run_verifier(
24213    v: &mut flatbuffers::Verifier, pos: usize
24214  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
24215    use self::flatbuffers::Verifiable;
24216    v.visit_table(pos)?
24217     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("scope", Self::VT_SCOPE, false)?
24218     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("active_standard_id", Self::VT_ACTIVE_STANDARD_ID, false)?
24219     .visit_field::<f64>("scroll_x", Self::VT_SCROLL_X, false)?
24220     .visit_field::<f64>("scroll_y", Self::VT_SCROLL_Y, false)?
24221     .visit_field::<f64>("zoom", Self::VT_ZOOM, false)?
24222     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("active_grid_settings", Self::VT_ACTIVE_GRID_SETTINGS, false)?
24223     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("active_snap_settings", Self::VT_ACTIVE_SNAP_SETTINGS, false)?
24224     .visit_field::<bool>("is_binding_enabled", Self::VT_IS_BINDING_ENABLED, false)?
24225     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("current_item_stroke", Self::VT_CURRENT_ITEM_STROKE, false)?
24226     .visit_field::<flatbuffers::ForwardsUOffset<ElementBackground>>("current_item_background", Self::VT_CURRENT_ITEM_BACKGROUND, false)?
24227     .visit_field::<f32>("current_item_opacity", Self::VT_CURRENT_ITEM_OPACITY, false)?
24228     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("current_item_font_family", Self::VT_CURRENT_ITEM_FONT_FAMILY, false)?
24229     .visit_field::<f64>("current_item_font_size", Self::VT_CURRENT_ITEM_FONT_SIZE, false)?
24230     .visit_field::<TEXT_ALIGN>("current_item_text_align", Self::VT_CURRENT_ITEM_TEXT_ALIGN, false)?
24231     .visit_field::<flatbuffers::ForwardsUOffset<DucHead>>("current_item_start_line_head", Self::VT_CURRENT_ITEM_START_LINE_HEAD, false)?
24232     .visit_field::<flatbuffers::ForwardsUOffset<DucHead>>("current_item_end_line_head", Self::VT_CURRENT_ITEM_END_LINE_HEAD, false)?
24233     .visit_field::<f64>("current_item_roundness", Self::VT_CURRENT_ITEM_ROUNDNESS, false)?
24234     .visit_field::<bool>("pen_mode", Self::VT_PEN_MODE, false)?
24235     .visit_field::<bool>("view_mode_enabled", Self::VT_VIEW_MODE_ENABLED, false)?
24236     .visit_field::<bool>("objects_snap_mode_enabled", Self::VT_OBJECTS_SNAP_MODE_ENABLED, false)?
24237     .visit_field::<bool>("grid_mode_enabled", Self::VT_GRID_MODE_ENABLED, false)?
24238     .visit_field::<bool>("outline_mode_enabled", Self::VT_OUTLINE_MODE_ENABLED, false)?
24239     .visit_field::<bool>("manual_save_mode", Self::VT_MANUAL_SAVE_MODE, false)?
24240     .finish();
24241    Ok(())
24242  }
24243}
24244pub struct DucLocalStateArgs<'a> {
24245    pub scope: Option<flatbuffers::WIPOffset<&'a str>>,
24246    pub active_standard_id: Option<flatbuffers::WIPOffset<&'a str>>,
24247    pub scroll_x: f64,
24248    pub scroll_y: f64,
24249    pub zoom: f64,
24250    pub active_grid_settings: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
24251    pub active_snap_settings: Option<flatbuffers::WIPOffset<&'a str>>,
24252    pub is_binding_enabled: bool,
24253    pub current_item_stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
24254    pub current_item_background: Option<flatbuffers::WIPOffset<ElementBackground<'a>>>,
24255    pub current_item_opacity: f32,
24256    pub current_item_font_family: Option<flatbuffers::WIPOffset<&'a str>>,
24257    pub current_item_font_size: f64,
24258    pub current_item_text_align: Option<TEXT_ALIGN>,
24259    pub current_item_start_line_head: Option<flatbuffers::WIPOffset<DucHead<'a>>>,
24260    pub current_item_end_line_head: Option<flatbuffers::WIPOffset<DucHead<'a>>>,
24261    pub current_item_roundness: f64,
24262    pub pen_mode: bool,
24263    pub view_mode_enabled: bool,
24264    pub objects_snap_mode_enabled: bool,
24265    pub grid_mode_enabled: bool,
24266    pub outline_mode_enabled: bool,
24267    pub manual_save_mode: bool,
24268}
24269impl<'a> Default for DucLocalStateArgs<'a> {
24270  #[inline]
24271  fn default() -> Self {
24272    DucLocalStateArgs {
24273      scope: None,
24274      active_standard_id: None,
24275      scroll_x: 0.0,
24276      scroll_y: 0.0,
24277      zoom: 0.0,
24278      active_grid_settings: None,
24279      active_snap_settings: None,
24280      is_binding_enabled: false,
24281      current_item_stroke: None,
24282      current_item_background: None,
24283      current_item_opacity: 0.0,
24284      current_item_font_family: None,
24285      current_item_font_size: 0.0,
24286      current_item_text_align: None,
24287      current_item_start_line_head: None,
24288      current_item_end_line_head: None,
24289      current_item_roundness: 0.0,
24290      pen_mode: false,
24291      view_mode_enabled: false,
24292      objects_snap_mode_enabled: false,
24293      grid_mode_enabled: false,
24294      outline_mode_enabled: false,
24295      manual_save_mode: false,
24296    }
24297  }
24298}
24299
24300pub struct DucLocalStateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
24301  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
24302  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
24303}
24304impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLocalStateBuilder<'a, 'b, A> {
24305  #[inline]
24306  pub fn add_scope(&mut self, scope: flatbuffers::WIPOffset<&'b  str>) {
24307    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLocalState::VT_SCOPE, scope);
24308  }
24309  #[inline]
24310  pub fn add_active_standard_id(&mut self, active_standard_id: flatbuffers::WIPOffset<&'b  str>) {
24311    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLocalState::VT_ACTIVE_STANDARD_ID, active_standard_id);
24312  }
24313  #[inline]
24314  pub fn add_scroll_x(&mut self, scroll_x: f64) {
24315    self.fbb_.push_slot::<f64>(DucLocalState::VT_SCROLL_X, scroll_x, 0.0);
24316  }
24317  #[inline]
24318  pub fn add_scroll_y(&mut self, scroll_y: f64) {
24319    self.fbb_.push_slot::<f64>(DucLocalState::VT_SCROLL_Y, scroll_y, 0.0);
24320  }
24321  #[inline]
24322  pub fn add_zoom(&mut self, zoom: f64) {
24323    self.fbb_.push_slot::<f64>(DucLocalState::VT_ZOOM, zoom, 0.0);
24324  }
24325  #[inline]
24326  pub fn add_active_grid_settings(&mut self, active_grid_settings: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
24327    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLocalState::VT_ACTIVE_GRID_SETTINGS, active_grid_settings);
24328  }
24329  #[inline]
24330  pub fn add_active_snap_settings(&mut self, active_snap_settings: flatbuffers::WIPOffset<&'b  str>) {
24331    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLocalState::VT_ACTIVE_SNAP_SETTINGS, active_snap_settings);
24332  }
24333  #[inline]
24334  pub fn add_is_binding_enabled(&mut self, is_binding_enabled: bool) {
24335    self.fbb_.push_slot::<bool>(DucLocalState::VT_IS_BINDING_ENABLED, is_binding_enabled, false);
24336  }
24337  #[inline]
24338  pub fn add_current_item_stroke(&mut self, current_item_stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
24339    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DucLocalState::VT_CURRENT_ITEM_STROKE, current_item_stroke);
24340  }
24341  #[inline]
24342  pub fn add_current_item_background(&mut self, current_item_background: flatbuffers::WIPOffset<ElementBackground<'b >>) {
24343    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementBackground>>(DucLocalState::VT_CURRENT_ITEM_BACKGROUND, current_item_background);
24344  }
24345  #[inline]
24346  pub fn add_current_item_opacity(&mut self, current_item_opacity: f32) {
24347    self.fbb_.push_slot::<f32>(DucLocalState::VT_CURRENT_ITEM_OPACITY, current_item_opacity, 0.0);
24348  }
24349  #[inline]
24350  pub fn add_current_item_font_family(&mut self, current_item_font_family: flatbuffers::WIPOffset<&'b  str>) {
24351    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLocalState::VT_CURRENT_ITEM_FONT_FAMILY, current_item_font_family);
24352  }
24353  #[inline]
24354  pub fn add_current_item_font_size(&mut self, current_item_font_size: f64) {
24355    self.fbb_.push_slot::<f64>(DucLocalState::VT_CURRENT_ITEM_FONT_SIZE, current_item_font_size, 0.0);
24356  }
24357  #[inline]
24358  pub fn add_current_item_text_align(&mut self, current_item_text_align: TEXT_ALIGN) {
24359    self.fbb_.push_slot_always::<TEXT_ALIGN>(DucLocalState::VT_CURRENT_ITEM_TEXT_ALIGN, current_item_text_align);
24360  }
24361  #[inline]
24362  pub fn add_current_item_start_line_head(&mut self, current_item_start_line_head: flatbuffers::WIPOffset<DucHead<'b >>) {
24363    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucHead>>(DucLocalState::VT_CURRENT_ITEM_START_LINE_HEAD, current_item_start_line_head);
24364  }
24365  #[inline]
24366  pub fn add_current_item_end_line_head(&mut self, current_item_end_line_head: flatbuffers::WIPOffset<DucHead<'b >>) {
24367    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucHead>>(DucLocalState::VT_CURRENT_ITEM_END_LINE_HEAD, current_item_end_line_head);
24368  }
24369  #[inline]
24370  pub fn add_current_item_roundness(&mut self, current_item_roundness: f64) {
24371    self.fbb_.push_slot::<f64>(DucLocalState::VT_CURRENT_ITEM_ROUNDNESS, current_item_roundness, 0.0);
24372  }
24373  #[inline]
24374  pub fn add_pen_mode(&mut self, pen_mode: bool) {
24375    self.fbb_.push_slot::<bool>(DucLocalState::VT_PEN_MODE, pen_mode, false);
24376  }
24377  #[inline]
24378  pub fn add_view_mode_enabled(&mut self, view_mode_enabled: bool) {
24379    self.fbb_.push_slot::<bool>(DucLocalState::VT_VIEW_MODE_ENABLED, view_mode_enabled, false);
24380  }
24381  #[inline]
24382  pub fn add_objects_snap_mode_enabled(&mut self, objects_snap_mode_enabled: bool) {
24383    self.fbb_.push_slot::<bool>(DucLocalState::VT_OBJECTS_SNAP_MODE_ENABLED, objects_snap_mode_enabled, false);
24384  }
24385  #[inline]
24386  pub fn add_grid_mode_enabled(&mut self, grid_mode_enabled: bool) {
24387    self.fbb_.push_slot::<bool>(DucLocalState::VT_GRID_MODE_ENABLED, grid_mode_enabled, false);
24388  }
24389  #[inline]
24390  pub fn add_outline_mode_enabled(&mut self, outline_mode_enabled: bool) {
24391    self.fbb_.push_slot::<bool>(DucLocalState::VT_OUTLINE_MODE_ENABLED, outline_mode_enabled, false);
24392  }
24393  #[inline]
24394  pub fn add_manual_save_mode(&mut self, manual_save_mode: bool) {
24395    self.fbb_.push_slot::<bool>(DucLocalState::VT_MANUAL_SAVE_MODE, manual_save_mode, false);
24396  }
24397  #[inline]
24398  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLocalStateBuilder<'a, 'b, A> {
24399    let start = _fbb.start_table();
24400    DucLocalStateBuilder {
24401      fbb_: _fbb,
24402      start_: start,
24403    }
24404  }
24405  #[inline]
24406  pub fn finish(self) -> flatbuffers::WIPOffset<DucLocalState<'a>> {
24407    let o = self.fbb_.end_table(self.start_);
24408    flatbuffers::WIPOffset::new(o.value())
24409  }
24410}
24411
24412impl core::fmt::Debug for DucLocalState<'_> {
24413  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24414    let mut ds = f.debug_struct("DucLocalState");
24415      ds.field("scope", &self.scope());
24416      ds.field("active_standard_id", &self.active_standard_id());
24417      ds.field("scroll_x", &self.scroll_x());
24418      ds.field("scroll_y", &self.scroll_y());
24419      ds.field("zoom", &self.zoom());
24420      ds.field("active_grid_settings", &self.active_grid_settings());
24421      ds.field("active_snap_settings", &self.active_snap_settings());
24422      ds.field("is_binding_enabled", &self.is_binding_enabled());
24423      ds.field("current_item_stroke", &self.current_item_stroke());
24424      ds.field("current_item_background", &self.current_item_background());
24425      ds.field("current_item_opacity", &self.current_item_opacity());
24426      ds.field("current_item_font_family", &self.current_item_font_family());
24427      ds.field("current_item_font_size", &self.current_item_font_size());
24428      ds.field("current_item_text_align", &self.current_item_text_align());
24429      ds.field("current_item_start_line_head", &self.current_item_start_line_head());
24430      ds.field("current_item_end_line_head", &self.current_item_end_line_head());
24431      ds.field("current_item_roundness", &self.current_item_roundness());
24432      ds.field("pen_mode", &self.pen_mode());
24433      ds.field("view_mode_enabled", &self.view_mode_enabled());
24434      ds.field("objects_snap_mode_enabled", &self.objects_snap_mode_enabled());
24435      ds.field("grid_mode_enabled", &self.grid_mode_enabled());
24436      ds.field("outline_mode_enabled", &self.outline_mode_enabled());
24437      ds.field("manual_save_mode", &self.manual_save_mode());
24438      ds.finish()
24439  }
24440}
24441pub enum DucGroupOffset {}
24442#[derive(Copy, Clone, PartialEq)]
24443
24444pub struct DucGroup<'a> {
24445  pub _tab: flatbuffers::Table<'a>,
24446}
24447
24448impl<'a> flatbuffers::Follow<'a> for DucGroup<'a> {
24449  type Inner = DucGroup<'a>;
24450  #[inline]
24451  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
24452    Self { _tab: flatbuffers::Table::new(buf, loc) }
24453  }
24454}
24455
24456impl<'a> DucGroup<'a> {
24457  pub const VT_ID: flatbuffers::VOffsetT = 4;
24458  pub const VT_STACK_BASE: flatbuffers::VOffsetT = 6;
24459
24460  #[inline]
24461  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
24462    DucGroup { _tab: table }
24463  }
24464  #[allow(unused_mut)]
24465  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
24466    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
24467    args: &'args DucGroupArgs<'args>
24468  ) -> flatbuffers::WIPOffset<DucGroup<'bldr>> {
24469    let mut builder = DucGroupBuilder::new(_fbb);
24470    if let Some(x) = args.stack_base { builder.add_stack_base(x); }
24471    if let Some(x) = args.id { builder.add_id(x); }
24472    builder.finish()
24473  }
24474
24475
24476  #[inline]
24477  pub fn id(&self) -> &'a str {
24478    // Safety:
24479    // Created from valid Table for this object
24480    // which contains a valid value in this slot
24481    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucGroup::VT_ID, None).unwrap()}
24482  }
24483  #[inline]
24484  pub fn key_compare_less_than(&self, o: &DucGroup) -> bool {
24485    self.id() < o.id()
24486  }
24487
24488  #[inline]
24489  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
24490    let key = self.id();
24491    key.cmp(val)
24492  }
24493  #[inline]
24494  pub fn stack_base(&self) -> Option<_DucStackBase<'a>> {
24495    // Safety:
24496    // Created from valid Table for this object
24497    // which contains a valid value in this slot
24498    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackBase>>(DucGroup::VT_STACK_BASE, None)}
24499  }
24500}
24501
24502impl flatbuffers::Verifiable for DucGroup<'_> {
24503  #[inline]
24504  fn run_verifier(
24505    v: &mut flatbuffers::Verifier, pos: usize
24506  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
24507    use self::flatbuffers::Verifiable;
24508    v.visit_table(pos)?
24509     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
24510     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackBase>>("stack_base", Self::VT_STACK_BASE, false)?
24511     .finish();
24512    Ok(())
24513  }
24514}
24515pub struct DucGroupArgs<'a> {
24516    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
24517    pub stack_base: Option<flatbuffers::WIPOffset<_DucStackBase<'a>>>,
24518}
24519impl<'a> Default for DucGroupArgs<'a> {
24520  #[inline]
24521  fn default() -> Self {
24522    DucGroupArgs {
24523      id: None, // required field
24524      stack_base: None,
24525    }
24526  }
24527}
24528
24529pub struct DucGroupBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
24530  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
24531  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
24532}
24533impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucGroupBuilder<'a, 'b, A> {
24534  #[inline]
24535  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
24536    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucGroup::VT_ID, id);
24537  }
24538  #[inline]
24539  pub fn add_stack_base(&mut self, stack_base: flatbuffers::WIPOffset<_DucStackBase<'b >>) {
24540    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackBase>>(DucGroup::VT_STACK_BASE, stack_base);
24541  }
24542  #[inline]
24543  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucGroupBuilder<'a, 'b, A> {
24544    let start = _fbb.start_table();
24545    DucGroupBuilder {
24546      fbb_: _fbb,
24547      start_: start,
24548    }
24549  }
24550  #[inline]
24551  pub fn finish(self) -> flatbuffers::WIPOffset<DucGroup<'a>> {
24552    let o = self.fbb_.end_table(self.start_);
24553    self.fbb_.required(o, DucGroup::VT_ID,"id");
24554    flatbuffers::WIPOffset::new(o.value())
24555  }
24556}
24557
24558impl core::fmt::Debug for DucGroup<'_> {
24559  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24560    let mut ds = f.debug_struct("DucGroup");
24561      ds.field("id", &self.id());
24562      ds.field("stack_base", &self.stack_base());
24563      ds.finish()
24564  }
24565}
24566pub enum DucRegionOffset {}
24567#[derive(Copy, Clone, PartialEq)]
24568
24569pub struct DucRegion<'a> {
24570  pub _tab: flatbuffers::Table<'a>,
24571}
24572
24573impl<'a> flatbuffers::Follow<'a> for DucRegion<'a> {
24574  type Inner = DucRegion<'a>;
24575  #[inline]
24576  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
24577    Self { _tab: flatbuffers::Table::new(buf, loc) }
24578  }
24579}
24580
24581impl<'a> DucRegion<'a> {
24582  pub const VT_ID: flatbuffers::VOffsetT = 4;
24583  pub const VT_STACK_BASE: flatbuffers::VOffsetT = 6;
24584  pub const VT_BOOLEAN_OPERATION: flatbuffers::VOffsetT = 8;
24585
24586  #[inline]
24587  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
24588    DucRegion { _tab: table }
24589  }
24590  #[allow(unused_mut)]
24591  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
24592    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
24593    args: &'args DucRegionArgs<'args>
24594  ) -> flatbuffers::WIPOffset<DucRegion<'bldr>> {
24595    let mut builder = DucRegionBuilder::new(_fbb);
24596    if let Some(x) = args.stack_base { builder.add_stack_base(x); }
24597    if let Some(x) = args.id { builder.add_id(x); }
24598    if let Some(x) = args.boolean_operation { builder.add_boolean_operation(x); }
24599    builder.finish()
24600  }
24601
24602
24603  #[inline]
24604  pub fn id(&self) -> &'a str {
24605    // Safety:
24606    // Created from valid Table for this object
24607    // which contains a valid value in this slot
24608    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucRegion::VT_ID, None).unwrap()}
24609  }
24610  #[inline]
24611  pub fn key_compare_less_than(&self, o: &DucRegion) -> bool {
24612    self.id() < o.id()
24613  }
24614
24615  #[inline]
24616  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
24617    let key = self.id();
24618    key.cmp(val)
24619  }
24620  #[inline]
24621  pub fn stack_base(&self) -> Option<_DucStackBase<'a>> {
24622    // Safety:
24623    // Created from valid Table for this object
24624    // which contains a valid value in this slot
24625    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackBase>>(DucRegion::VT_STACK_BASE, None)}
24626  }
24627  #[inline]
24628  pub fn boolean_operation(&self) -> Option<BOOLEAN_OPERATION> {
24629    // Safety:
24630    // Created from valid Table for this object
24631    // which contains a valid value in this slot
24632    unsafe { self._tab.get::<BOOLEAN_OPERATION>(DucRegion::VT_BOOLEAN_OPERATION, None)}
24633  }
24634}
24635
24636impl flatbuffers::Verifiable for DucRegion<'_> {
24637  #[inline]
24638  fn run_verifier(
24639    v: &mut flatbuffers::Verifier, pos: usize
24640  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
24641    use self::flatbuffers::Verifiable;
24642    v.visit_table(pos)?
24643     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
24644     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackBase>>("stack_base", Self::VT_STACK_BASE, false)?
24645     .visit_field::<BOOLEAN_OPERATION>("boolean_operation", Self::VT_BOOLEAN_OPERATION, false)?
24646     .finish();
24647    Ok(())
24648  }
24649}
24650pub struct DucRegionArgs<'a> {
24651    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
24652    pub stack_base: Option<flatbuffers::WIPOffset<_DucStackBase<'a>>>,
24653    pub boolean_operation: Option<BOOLEAN_OPERATION>,
24654}
24655impl<'a> Default for DucRegionArgs<'a> {
24656  #[inline]
24657  fn default() -> Self {
24658    DucRegionArgs {
24659      id: None, // required field
24660      stack_base: None,
24661      boolean_operation: None,
24662    }
24663  }
24664}
24665
24666pub struct DucRegionBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
24667  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
24668  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
24669}
24670impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucRegionBuilder<'a, 'b, A> {
24671  #[inline]
24672  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
24673    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucRegion::VT_ID, id);
24674  }
24675  #[inline]
24676  pub fn add_stack_base(&mut self, stack_base: flatbuffers::WIPOffset<_DucStackBase<'b >>) {
24677    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackBase>>(DucRegion::VT_STACK_BASE, stack_base);
24678  }
24679  #[inline]
24680  pub fn add_boolean_operation(&mut self, boolean_operation: BOOLEAN_OPERATION) {
24681    self.fbb_.push_slot_always::<BOOLEAN_OPERATION>(DucRegion::VT_BOOLEAN_OPERATION, boolean_operation);
24682  }
24683  #[inline]
24684  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucRegionBuilder<'a, 'b, A> {
24685    let start = _fbb.start_table();
24686    DucRegionBuilder {
24687      fbb_: _fbb,
24688      start_: start,
24689    }
24690  }
24691  #[inline]
24692  pub fn finish(self) -> flatbuffers::WIPOffset<DucRegion<'a>> {
24693    let o = self.fbb_.end_table(self.start_);
24694    self.fbb_.required(o, DucRegion::VT_ID,"id");
24695    flatbuffers::WIPOffset::new(o.value())
24696  }
24697}
24698
24699impl core::fmt::Debug for DucRegion<'_> {
24700  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24701    let mut ds = f.debug_struct("DucRegion");
24702      ds.field("id", &self.id());
24703      ds.field("stack_base", &self.stack_base());
24704      ds.field("boolean_operation", &self.boolean_operation());
24705      ds.finish()
24706  }
24707}
24708pub enum DucLayerOverridesOffset {}
24709#[derive(Copy, Clone, PartialEq)]
24710
24711pub struct DucLayerOverrides<'a> {
24712  pub _tab: flatbuffers::Table<'a>,
24713}
24714
24715impl<'a> flatbuffers::Follow<'a> for DucLayerOverrides<'a> {
24716  type Inner = DucLayerOverrides<'a>;
24717  #[inline]
24718  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
24719    Self { _tab: flatbuffers::Table::new(buf, loc) }
24720  }
24721}
24722
24723impl<'a> DucLayerOverrides<'a> {
24724  pub const VT_STROKE: flatbuffers::VOffsetT = 4;
24725  pub const VT_BACKGROUND: flatbuffers::VOffsetT = 6;
24726
24727  #[inline]
24728  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
24729    DucLayerOverrides { _tab: table }
24730  }
24731  #[allow(unused_mut)]
24732  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
24733    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
24734    args: &'args DucLayerOverridesArgs<'args>
24735  ) -> flatbuffers::WIPOffset<DucLayerOverrides<'bldr>> {
24736    let mut builder = DucLayerOverridesBuilder::new(_fbb);
24737    if let Some(x) = args.background { builder.add_background(x); }
24738    if let Some(x) = args.stroke { builder.add_stroke(x); }
24739    builder.finish()
24740  }
24741
24742
24743  #[inline]
24744  pub fn stroke(&self) -> Option<ElementStroke<'a>> {
24745    // Safety:
24746    // Created from valid Table for this object
24747    // which contains a valid value in this slot
24748    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DucLayerOverrides::VT_STROKE, None)}
24749  }
24750  #[inline]
24751  pub fn background(&self) -> Option<ElementBackground<'a>> {
24752    // Safety:
24753    // Created from valid Table for this object
24754    // which contains a valid value in this slot
24755    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementBackground>>(DucLayerOverrides::VT_BACKGROUND, None)}
24756  }
24757}
24758
24759impl flatbuffers::Verifiable for DucLayerOverrides<'_> {
24760  #[inline]
24761  fn run_verifier(
24762    v: &mut flatbuffers::Verifier, pos: usize
24763  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
24764    use self::flatbuffers::Verifiable;
24765    v.visit_table(pos)?
24766     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("stroke", Self::VT_STROKE, false)?
24767     .visit_field::<flatbuffers::ForwardsUOffset<ElementBackground>>("background", Self::VT_BACKGROUND, false)?
24768     .finish();
24769    Ok(())
24770  }
24771}
24772pub struct DucLayerOverridesArgs<'a> {
24773    pub stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
24774    pub background: Option<flatbuffers::WIPOffset<ElementBackground<'a>>>,
24775}
24776impl<'a> Default for DucLayerOverridesArgs<'a> {
24777  #[inline]
24778  fn default() -> Self {
24779    DucLayerOverridesArgs {
24780      stroke: None,
24781      background: None,
24782    }
24783  }
24784}
24785
24786pub struct DucLayerOverridesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
24787  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
24788  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
24789}
24790impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLayerOverridesBuilder<'a, 'b, A> {
24791  #[inline]
24792  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
24793    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DucLayerOverrides::VT_STROKE, stroke);
24794  }
24795  #[inline]
24796  pub fn add_background(&mut self, background: flatbuffers::WIPOffset<ElementBackground<'b >>) {
24797    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementBackground>>(DucLayerOverrides::VT_BACKGROUND, background);
24798  }
24799  #[inline]
24800  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLayerOverridesBuilder<'a, 'b, A> {
24801    let start = _fbb.start_table();
24802    DucLayerOverridesBuilder {
24803      fbb_: _fbb,
24804      start_: start,
24805    }
24806  }
24807  #[inline]
24808  pub fn finish(self) -> flatbuffers::WIPOffset<DucLayerOverrides<'a>> {
24809    let o = self.fbb_.end_table(self.start_);
24810    flatbuffers::WIPOffset::new(o.value())
24811  }
24812}
24813
24814impl core::fmt::Debug for DucLayerOverrides<'_> {
24815  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24816    let mut ds = f.debug_struct("DucLayerOverrides");
24817      ds.field("stroke", &self.stroke());
24818      ds.field("background", &self.background());
24819      ds.finish()
24820  }
24821}
24822pub enum DucLayerOffset {}
24823#[derive(Copy, Clone, PartialEq)]
24824
24825pub struct DucLayer<'a> {
24826  pub _tab: flatbuffers::Table<'a>,
24827}
24828
24829impl<'a> flatbuffers::Follow<'a> for DucLayer<'a> {
24830  type Inner = DucLayer<'a>;
24831  #[inline]
24832  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
24833    Self { _tab: flatbuffers::Table::new(buf, loc) }
24834  }
24835}
24836
24837impl<'a> DucLayer<'a> {
24838  pub const VT_ID: flatbuffers::VOffsetT = 4;
24839  pub const VT_STACK_BASE: flatbuffers::VOffsetT = 6;
24840  pub const VT_READONLY: flatbuffers::VOffsetT = 8;
24841  pub const VT_OVERRIDES: flatbuffers::VOffsetT = 10;
24842
24843  #[inline]
24844  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
24845    DucLayer { _tab: table }
24846  }
24847  #[allow(unused_mut)]
24848  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
24849    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
24850    args: &'args DucLayerArgs<'args>
24851  ) -> flatbuffers::WIPOffset<DucLayer<'bldr>> {
24852    let mut builder = DucLayerBuilder::new(_fbb);
24853    if let Some(x) = args.overrides { builder.add_overrides(x); }
24854    if let Some(x) = args.stack_base { builder.add_stack_base(x); }
24855    if let Some(x) = args.id { builder.add_id(x); }
24856    builder.add_readonly(args.readonly);
24857    builder.finish()
24858  }
24859
24860
24861  #[inline]
24862  pub fn id(&self) -> &'a str {
24863    // Safety:
24864    // Created from valid Table for this object
24865    // which contains a valid value in this slot
24866    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucLayer::VT_ID, None).unwrap()}
24867  }
24868  #[inline]
24869  pub fn key_compare_less_than(&self, o: &DucLayer) -> bool {
24870    self.id() < o.id()
24871  }
24872
24873  #[inline]
24874  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
24875    let key = self.id();
24876    key.cmp(val)
24877  }
24878  #[inline]
24879  pub fn stack_base(&self) -> Option<_DucStackBase<'a>> {
24880    // Safety:
24881    // Created from valid Table for this object
24882    // which contains a valid value in this slot
24883    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_DucStackBase>>(DucLayer::VT_STACK_BASE, None)}
24884  }
24885  #[inline]
24886  pub fn readonly(&self) -> bool {
24887    // Safety:
24888    // Created from valid Table for this object
24889    // which contains a valid value in this slot
24890    unsafe { self._tab.get::<bool>(DucLayer::VT_READONLY, Some(false)).unwrap()}
24891  }
24892  #[inline]
24893  pub fn overrides(&self) -> Option<DucLayerOverrides<'a>> {
24894    // Safety:
24895    // Created from valid Table for this object
24896    // which contains a valid value in this slot
24897    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLayerOverrides>>(DucLayer::VT_OVERRIDES, None)}
24898  }
24899}
24900
24901impl flatbuffers::Verifiable for DucLayer<'_> {
24902  #[inline]
24903  fn run_verifier(
24904    v: &mut flatbuffers::Verifier, pos: usize
24905  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
24906    use self::flatbuffers::Verifiable;
24907    v.visit_table(pos)?
24908     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
24909     .visit_field::<flatbuffers::ForwardsUOffset<_DucStackBase>>("stack_base", Self::VT_STACK_BASE, false)?
24910     .visit_field::<bool>("readonly", Self::VT_READONLY, false)?
24911     .visit_field::<flatbuffers::ForwardsUOffset<DucLayerOverrides>>("overrides", Self::VT_OVERRIDES, false)?
24912     .finish();
24913    Ok(())
24914  }
24915}
24916pub struct DucLayerArgs<'a> {
24917    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
24918    pub stack_base: Option<flatbuffers::WIPOffset<_DucStackBase<'a>>>,
24919    pub readonly: bool,
24920    pub overrides: Option<flatbuffers::WIPOffset<DucLayerOverrides<'a>>>,
24921}
24922impl<'a> Default for DucLayerArgs<'a> {
24923  #[inline]
24924  fn default() -> Self {
24925    DucLayerArgs {
24926      id: None, // required field
24927      stack_base: None,
24928      readonly: false,
24929      overrides: None,
24930    }
24931  }
24932}
24933
24934pub struct DucLayerBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
24935  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
24936  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
24937}
24938impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucLayerBuilder<'a, 'b, A> {
24939  #[inline]
24940  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
24941    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucLayer::VT_ID, id);
24942  }
24943  #[inline]
24944  pub fn add_stack_base(&mut self, stack_base: flatbuffers::WIPOffset<_DucStackBase<'b >>) {
24945    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_DucStackBase>>(DucLayer::VT_STACK_BASE, stack_base);
24946  }
24947  #[inline]
24948  pub fn add_readonly(&mut self, readonly: bool) {
24949    self.fbb_.push_slot::<bool>(DucLayer::VT_READONLY, readonly, false);
24950  }
24951  #[inline]
24952  pub fn add_overrides(&mut self, overrides: flatbuffers::WIPOffset<DucLayerOverrides<'b >>) {
24953    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLayerOverrides>>(DucLayer::VT_OVERRIDES, overrides);
24954  }
24955  #[inline]
24956  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucLayerBuilder<'a, 'b, A> {
24957    let start = _fbb.start_table();
24958    DucLayerBuilder {
24959      fbb_: _fbb,
24960      start_: start,
24961    }
24962  }
24963  #[inline]
24964  pub fn finish(self) -> flatbuffers::WIPOffset<DucLayer<'a>> {
24965    let o = self.fbb_.end_table(self.start_);
24966    self.fbb_.required(o, DucLayer::VT_ID,"id");
24967    flatbuffers::WIPOffset::new(o.value())
24968  }
24969}
24970
24971impl core::fmt::Debug for DucLayer<'_> {
24972  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
24973    let mut ds = f.debug_struct("DucLayer");
24974      ds.field("id", &self.id());
24975      ds.field("stack_base", &self.stack_base());
24976      ds.field("readonly", &self.readonly());
24977      ds.field("overrides", &self.overrides());
24978      ds.finish()
24979  }
24980}
24981pub enum _UnitSystemBaseOffset {}
24982#[derive(Copy, Clone, PartialEq)]
24983
24984pub struct _UnitSystemBase<'a> {
24985  pub _tab: flatbuffers::Table<'a>,
24986}
24987
24988impl<'a> flatbuffers::Follow<'a> for _UnitSystemBase<'a> {
24989  type Inner = _UnitSystemBase<'a>;
24990  #[inline]
24991  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
24992    Self { _tab: flatbuffers::Table::new(buf, loc) }
24993  }
24994}
24995
24996impl<'a> _UnitSystemBase<'a> {
24997  pub const VT_SYSTEM: flatbuffers::VOffsetT = 4;
24998  pub const VT_PRECISION: flatbuffers::VOffsetT = 6;
24999  pub const VT_SUPPRESS_LEADING_ZEROS: flatbuffers::VOffsetT = 8;
25000  pub const VT_SUPPRESS_TRAILING_ZEROS: flatbuffers::VOffsetT = 10;
25001
25002  #[inline]
25003  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25004    _UnitSystemBase { _tab: table }
25005  }
25006  #[allow(unused_mut)]
25007  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25008    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25009    args: &'args _UnitSystemBaseArgs
25010  ) -> flatbuffers::WIPOffset<_UnitSystemBase<'bldr>> {
25011    let mut builder = _UnitSystemBaseBuilder::new(_fbb);
25012    builder.add_precision(args.precision);
25013    builder.add_suppress_trailing_zeros(args.suppress_trailing_zeros);
25014    builder.add_suppress_leading_zeros(args.suppress_leading_zeros);
25015    if let Some(x) = args.system { builder.add_system(x); }
25016    builder.finish()
25017  }
25018
25019
25020  #[inline]
25021  pub fn system(&self) -> Option<UNIT_SYSTEM> {
25022    // Safety:
25023    // Created from valid Table for this object
25024    // which contains a valid value in this slot
25025    unsafe { self._tab.get::<UNIT_SYSTEM>(_UnitSystemBase::VT_SYSTEM, None)}
25026  }
25027  #[inline]
25028  pub fn precision(&self) -> i32 {
25029    // Safety:
25030    // Created from valid Table for this object
25031    // which contains a valid value in this slot
25032    unsafe { self._tab.get::<i32>(_UnitSystemBase::VT_PRECISION, Some(0)).unwrap()}
25033  }
25034  #[inline]
25035  pub fn suppress_leading_zeros(&self) -> bool {
25036    // Safety:
25037    // Created from valid Table for this object
25038    // which contains a valid value in this slot
25039    unsafe { self._tab.get::<bool>(_UnitSystemBase::VT_SUPPRESS_LEADING_ZEROS, Some(false)).unwrap()}
25040  }
25041  #[inline]
25042  pub fn suppress_trailing_zeros(&self) -> bool {
25043    // Safety:
25044    // Created from valid Table for this object
25045    // which contains a valid value in this slot
25046    unsafe { self._tab.get::<bool>(_UnitSystemBase::VT_SUPPRESS_TRAILING_ZEROS, Some(false)).unwrap()}
25047  }
25048}
25049
25050impl flatbuffers::Verifiable for _UnitSystemBase<'_> {
25051  #[inline]
25052  fn run_verifier(
25053    v: &mut flatbuffers::Verifier, pos: usize
25054  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25055    use self::flatbuffers::Verifiable;
25056    v.visit_table(pos)?
25057     .visit_field::<UNIT_SYSTEM>("system", Self::VT_SYSTEM, false)?
25058     .visit_field::<i32>("precision", Self::VT_PRECISION, false)?
25059     .visit_field::<bool>("suppress_leading_zeros", Self::VT_SUPPRESS_LEADING_ZEROS, false)?
25060     .visit_field::<bool>("suppress_trailing_zeros", Self::VT_SUPPRESS_TRAILING_ZEROS, false)?
25061     .finish();
25062    Ok(())
25063  }
25064}
25065pub struct _UnitSystemBaseArgs {
25066    pub system: Option<UNIT_SYSTEM>,
25067    pub precision: i32,
25068    pub suppress_leading_zeros: bool,
25069    pub suppress_trailing_zeros: bool,
25070}
25071impl<'a> Default for _UnitSystemBaseArgs {
25072  #[inline]
25073  fn default() -> Self {
25074    _UnitSystemBaseArgs {
25075      system: None,
25076      precision: 0,
25077      suppress_leading_zeros: false,
25078      suppress_trailing_zeros: false,
25079    }
25080  }
25081}
25082
25083pub struct _UnitSystemBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25084  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25085  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25086}
25087impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> _UnitSystemBaseBuilder<'a, 'b, A> {
25088  #[inline]
25089  pub fn add_system(&mut self, system: UNIT_SYSTEM) {
25090    self.fbb_.push_slot_always::<UNIT_SYSTEM>(_UnitSystemBase::VT_SYSTEM, system);
25091  }
25092  #[inline]
25093  pub fn add_precision(&mut self, precision: i32) {
25094    self.fbb_.push_slot::<i32>(_UnitSystemBase::VT_PRECISION, precision, 0);
25095  }
25096  #[inline]
25097  pub fn add_suppress_leading_zeros(&mut self, suppress_leading_zeros: bool) {
25098    self.fbb_.push_slot::<bool>(_UnitSystemBase::VT_SUPPRESS_LEADING_ZEROS, suppress_leading_zeros, false);
25099  }
25100  #[inline]
25101  pub fn add_suppress_trailing_zeros(&mut self, suppress_trailing_zeros: bool) {
25102    self.fbb_.push_slot::<bool>(_UnitSystemBase::VT_SUPPRESS_TRAILING_ZEROS, suppress_trailing_zeros, false);
25103  }
25104  #[inline]
25105  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> _UnitSystemBaseBuilder<'a, 'b, A> {
25106    let start = _fbb.start_table();
25107    _UnitSystemBaseBuilder {
25108      fbb_: _fbb,
25109      start_: start,
25110    }
25111  }
25112  #[inline]
25113  pub fn finish(self) -> flatbuffers::WIPOffset<_UnitSystemBase<'a>> {
25114    let o = self.fbb_.end_table(self.start_);
25115    flatbuffers::WIPOffset::new(o.value())
25116  }
25117}
25118
25119impl core::fmt::Debug for _UnitSystemBase<'_> {
25120  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25121    let mut ds = f.debug_struct("_UnitSystemBase");
25122      ds.field("system", &self.system());
25123      ds.field("precision", &self.precision());
25124      ds.field("suppress_leading_zeros", &self.suppress_leading_zeros());
25125      ds.field("suppress_trailing_zeros", &self.suppress_trailing_zeros());
25126      ds.finish()
25127  }
25128}
25129pub enum LinearUnitSystemOffset {}
25130#[derive(Copy, Clone, PartialEq)]
25131
25132pub struct LinearUnitSystem<'a> {
25133  pub _tab: flatbuffers::Table<'a>,
25134}
25135
25136impl<'a> flatbuffers::Follow<'a> for LinearUnitSystem<'a> {
25137  type Inner = LinearUnitSystem<'a>;
25138  #[inline]
25139  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25140    Self { _tab: flatbuffers::Table::new(buf, loc) }
25141  }
25142}
25143
25144impl<'a> LinearUnitSystem<'a> {
25145  pub const VT_BASE: flatbuffers::VOffsetT = 4;
25146  pub const VT_FORMAT: flatbuffers::VOffsetT = 6;
25147  pub const VT_DECIMAL_SEPARATOR: flatbuffers::VOffsetT = 8;
25148  pub const VT_SUPPRESS_ZERO_FEET: flatbuffers::VOffsetT = 10;
25149  pub const VT_SUPPRESS_ZERO_INCHES: flatbuffers::VOffsetT = 12;
25150
25151  #[inline]
25152  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25153    LinearUnitSystem { _tab: table }
25154  }
25155  #[allow(unused_mut)]
25156  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25157    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25158    args: &'args LinearUnitSystemArgs<'args>
25159  ) -> flatbuffers::WIPOffset<LinearUnitSystem<'bldr>> {
25160    let mut builder = LinearUnitSystemBuilder::new(_fbb);
25161    if let Some(x) = args.base { builder.add_base(x); }
25162    builder.add_suppress_zero_inches(args.suppress_zero_inches);
25163    builder.add_suppress_zero_feet(args.suppress_zero_feet);
25164    if let Some(x) = args.decimal_separator { builder.add_decimal_separator(x); }
25165    if let Some(x) = args.format { builder.add_format(x); }
25166    builder.finish()
25167  }
25168
25169
25170  #[inline]
25171  pub fn base(&self) -> Option<_UnitSystemBase<'a>> {
25172    // Safety:
25173    // Created from valid Table for this object
25174    // which contains a valid value in this slot
25175    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>(LinearUnitSystem::VT_BASE, None)}
25176  }
25177  #[inline]
25178  pub fn format(&self) -> Option<DIMENSION_UNITS_FORMAT> {
25179    // Safety:
25180    // Created from valid Table for this object
25181    // which contains a valid value in this slot
25182    unsafe { self._tab.get::<DIMENSION_UNITS_FORMAT>(LinearUnitSystem::VT_FORMAT, None)}
25183  }
25184  #[inline]
25185  pub fn decimal_separator(&self) -> Option<DECIMAL_SEPARATOR> {
25186    // Safety:
25187    // Created from valid Table for this object
25188    // which contains a valid value in this slot
25189    unsafe { self._tab.get::<DECIMAL_SEPARATOR>(LinearUnitSystem::VT_DECIMAL_SEPARATOR, None)}
25190  }
25191  #[inline]
25192  pub fn suppress_zero_feet(&self) -> bool {
25193    // Safety:
25194    // Created from valid Table for this object
25195    // which contains a valid value in this slot
25196    unsafe { self._tab.get::<bool>(LinearUnitSystem::VT_SUPPRESS_ZERO_FEET, Some(false)).unwrap()}
25197  }
25198  #[inline]
25199  pub fn suppress_zero_inches(&self) -> bool {
25200    // Safety:
25201    // Created from valid Table for this object
25202    // which contains a valid value in this slot
25203    unsafe { self._tab.get::<bool>(LinearUnitSystem::VT_SUPPRESS_ZERO_INCHES, Some(false)).unwrap()}
25204  }
25205}
25206
25207impl flatbuffers::Verifiable for LinearUnitSystem<'_> {
25208  #[inline]
25209  fn run_verifier(
25210    v: &mut flatbuffers::Verifier, pos: usize
25211  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25212    use self::flatbuffers::Verifiable;
25213    v.visit_table(pos)?
25214     .visit_field::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>("base", Self::VT_BASE, false)?
25215     .visit_field::<DIMENSION_UNITS_FORMAT>("format", Self::VT_FORMAT, false)?
25216     .visit_field::<DECIMAL_SEPARATOR>("decimal_separator", Self::VT_DECIMAL_SEPARATOR, false)?
25217     .visit_field::<bool>("suppress_zero_feet", Self::VT_SUPPRESS_ZERO_FEET, false)?
25218     .visit_field::<bool>("suppress_zero_inches", Self::VT_SUPPRESS_ZERO_INCHES, false)?
25219     .finish();
25220    Ok(())
25221  }
25222}
25223pub struct LinearUnitSystemArgs<'a> {
25224    pub base: Option<flatbuffers::WIPOffset<_UnitSystemBase<'a>>>,
25225    pub format: Option<DIMENSION_UNITS_FORMAT>,
25226    pub decimal_separator: Option<DECIMAL_SEPARATOR>,
25227    pub suppress_zero_feet: bool,
25228    pub suppress_zero_inches: bool,
25229}
25230impl<'a> Default for LinearUnitSystemArgs<'a> {
25231  #[inline]
25232  fn default() -> Self {
25233    LinearUnitSystemArgs {
25234      base: None,
25235      format: None,
25236      decimal_separator: None,
25237      suppress_zero_feet: false,
25238      suppress_zero_inches: false,
25239    }
25240  }
25241}
25242
25243pub struct LinearUnitSystemBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25244  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25245  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25246}
25247impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LinearUnitSystemBuilder<'a, 'b, A> {
25248  #[inline]
25249  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_UnitSystemBase<'b >>) {
25250    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_UnitSystemBase>>(LinearUnitSystem::VT_BASE, base);
25251  }
25252  #[inline]
25253  pub fn add_format(&mut self, format: DIMENSION_UNITS_FORMAT) {
25254    self.fbb_.push_slot_always::<DIMENSION_UNITS_FORMAT>(LinearUnitSystem::VT_FORMAT, format);
25255  }
25256  #[inline]
25257  pub fn add_decimal_separator(&mut self, decimal_separator: DECIMAL_SEPARATOR) {
25258    self.fbb_.push_slot_always::<DECIMAL_SEPARATOR>(LinearUnitSystem::VT_DECIMAL_SEPARATOR, decimal_separator);
25259  }
25260  #[inline]
25261  pub fn add_suppress_zero_feet(&mut self, suppress_zero_feet: bool) {
25262    self.fbb_.push_slot::<bool>(LinearUnitSystem::VT_SUPPRESS_ZERO_FEET, suppress_zero_feet, false);
25263  }
25264  #[inline]
25265  pub fn add_suppress_zero_inches(&mut self, suppress_zero_inches: bool) {
25266    self.fbb_.push_slot::<bool>(LinearUnitSystem::VT_SUPPRESS_ZERO_INCHES, suppress_zero_inches, false);
25267  }
25268  #[inline]
25269  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LinearUnitSystemBuilder<'a, 'b, A> {
25270    let start = _fbb.start_table();
25271    LinearUnitSystemBuilder {
25272      fbb_: _fbb,
25273      start_: start,
25274    }
25275  }
25276  #[inline]
25277  pub fn finish(self) -> flatbuffers::WIPOffset<LinearUnitSystem<'a>> {
25278    let o = self.fbb_.end_table(self.start_);
25279    flatbuffers::WIPOffset::new(o.value())
25280  }
25281}
25282
25283impl core::fmt::Debug for LinearUnitSystem<'_> {
25284  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25285    let mut ds = f.debug_struct("LinearUnitSystem");
25286      ds.field("base", &self.base());
25287      ds.field("format", &self.format());
25288      ds.field("decimal_separator", &self.decimal_separator());
25289      ds.field("suppress_zero_feet", &self.suppress_zero_feet());
25290      ds.field("suppress_zero_inches", &self.suppress_zero_inches());
25291      ds.finish()
25292  }
25293}
25294pub enum AngularUnitSystemOffset {}
25295#[derive(Copy, Clone, PartialEq)]
25296
25297pub struct AngularUnitSystem<'a> {
25298  pub _tab: flatbuffers::Table<'a>,
25299}
25300
25301impl<'a> flatbuffers::Follow<'a> for AngularUnitSystem<'a> {
25302  type Inner = AngularUnitSystem<'a>;
25303  #[inline]
25304  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25305    Self { _tab: flatbuffers::Table::new(buf, loc) }
25306  }
25307}
25308
25309impl<'a> AngularUnitSystem<'a> {
25310  pub const VT_BASE: flatbuffers::VOffsetT = 4;
25311  pub const VT_FORMAT: flatbuffers::VOffsetT = 6;
25312
25313  #[inline]
25314  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25315    AngularUnitSystem { _tab: table }
25316  }
25317  #[allow(unused_mut)]
25318  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25319    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25320    args: &'args AngularUnitSystemArgs<'args>
25321  ) -> flatbuffers::WIPOffset<AngularUnitSystem<'bldr>> {
25322    let mut builder = AngularUnitSystemBuilder::new(_fbb);
25323    if let Some(x) = args.base { builder.add_base(x); }
25324    if let Some(x) = args.format { builder.add_format(x); }
25325    builder.finish()
25326  }
25327
25328
25329  #[inline]
25330  pub fn base(&self) -> Option<_UnitSystemBase<'a>> {
25331    // Safety:
25332    // Created from valid Table for this object
25333    // which contains a valid value in this slot
25334    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>(AngularUnitSystem::VT_BASE, None)}
25335  }
25336  #[inline]
25337  pub fn format(&self) -> Option<ANGULAR_UNITS_FORMAT> {
25338    // Safety:
25339    // Created from valid Table for this object
25340    // which contains a valid value in this slot
25341    unsafe { self._tab.get::<ANGULAR_UNITS_FORMAT>(AngularUnitSystem::VT_FORMAT, None)}
25342  }
25343}
25344
25345impl flatbuffers::Verifiable for AngularUnitSystem<'_> {
25346  #[inline]
25347  fn run_verifier(
25348    v: &mut flatbuffers::Verifier, pos: usize
25349  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25350    use self::flatbuffers::Verifiable;
25351    v.visit_table(pos)?
25352     .visit_field::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>("base", Self::VT_BASE, false)?
25353     .visit_field::<ANGULAR_UNITS_FORMAT>("format", Self::VT_FORMAT, false)?
25354     .finish();
25355    Ok(())
25356  }
25357}
25358pub struct AngularUnitSystemArgs<'a> {
25359    pub base: Option<flatbuffers::WIPOffset<_UnitSystemBase<'a>>>,
25360    pub format: Option<ANGULAR_UNITS_FORMAT>,
25361}
25362impl<'a> Default for AngularUnitSystemArgs<'a> {
25363  #[inline]
25364  fn default() -> Self {
25365    AngularUnitSystemArgs {
25366      base: None,
25367      format: None,
25368    }
25369  }
25370}
25371
25372pub struct AngularUnitSystemBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25373  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25374  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25375}
25376impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> AngularUnitSystemBuilder<'a, 'b, A> {
25377  #[inline]
25378  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_UnitSystemBase<'b >>) {
25379    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_UnitSystemBase>>(AngularUnitSystem::VT_BASE, base);
25380  }
25381  #[inline]
25382  pub fn add_format(&mut self, format: ANGULAR_UNITS_FORMAT) {
25383    self.fbb_.push_slot_always::<ANGULAR_UNITS_FORMAT>(AngularUnitSystem::VT_FORMAT, format);
25384  }
25385  #[inline]
25386  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> AngularUnitSystemBuilder<'a, 'b, A> {
25387    let start = _fbb.start_table();
25388    AngularUnitSystemBuilder {
25389      fbb_: _fbb,
25390      start_: start,
25391    }
25392  }
25393  #[inline]
25394  pub fn finish(self) -> flatbuffers::WIPOffset<AngularUnitSystem<'a>> {
25395    let o = self.fbb_.end_table(self.start_);
25396    flatbuffers::WIPOffset::new(o.value())
25397  }
25398}
25399
25400impl core::fmt::Debug for AngularUnitSystem<'_> {
25401  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25402    let mut ds = f.debug_struct("AngularUnitSystem");
25403      ds.field("base", &self.base());
25404      ds.field("format", &self.format());
25405      ds.finish()
25406  }
25407}
25408pub enum AlternateUnitsOffset {}
25409#[derive(Copy, Clone, PartialEq)]
25410
25411pub struct AlternateUnits<'a> {
25412  pub _tab: flatbuffers::Table<'a>,
25413}
25414
25415impl<'a> flatbuffers::Follow<'a> for AlternateUnits<'a> {
25416  type Inner = AlternateUnits<'a>;
25417  #[inline]
25418  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25419    Self { _tab: flatbuffers::Table::new(buf, loc) }
25420  }
25421}
25422
25423impl<'a> AlternateUnits<'a> {
25424  pub const VT_BASE: flatbuffers::VOffsetT = 4;
25425  pub const VT_FORMAT: flatbuffers::VOffsetT = 6;
25426  pub const VT_IS_VISIBLE: flatbuffers::VOffsetT = 8;
25427  pub const VT_MULTIPLIER: flatbuffers::VOffsetT = 10;
25428
25429  #[inline]
25430  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25431    AlternateUnits { _tab: table }
25432  }
25433  #[allow(unused_mut)]
25434  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25435    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25436    args: &'args AlternateUnitsArgs<'args>
25437  ) -> flatbuffers::WIPOffset<AlternateUnits<'bldr>> {
25438    let mut builder = AlternateUnitsBuilder::new(_fbb);
25439    builder.add_multiplier(args.multiplier);
25440    if let Some(x) = args.base { builder.add_base(x); }
25441    builder.add_is_visible(args.is_visible);
25442    if let Some(x) = args.format { builder.add_format(x); }
25443    builder.finish()
25444  }
25445
25446
25447  #[inline]
25448  pub fn base(&self) -> Option<_UnitSystemBase<'a>> {
25449    // Safety:
25450    // Created from valid Table for this object
25451    // which contains a valid value in this slot
25452    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>(AlternateUnits::VT_BASE, None)}
25453  }
25454  #[inline]
25455  pub fn format(&self) -> Option<DIMENSION_UNITS_FORMAT> {
25456    // Safety:
25457    // Created from valid Table for this object
25458    // which contains a valid value in this slot
25459    unsafe { self._tab.get::<DIMENSION_UNITS_FORMAT>(AlternateUnits::VT_FORMAT, None)}
25460  }
25461  #[inline]
25462  pub fn is_visible(&self) -> bool {
25463    // Safety:
25464    // Created from valid Table for this object
25465    // which contains a valid value in this slot
25466    unsafe { self._tab.get::<bool>(AlternateUnits::VT_IS_VISIBLE, Some(false)).unwrap()}
25467  }
25468  #[inline]
25469  pub fn multiplier(&self) -> f32 {
25470    // Safety:
25471    // Created from valid Table for this object
25472    // which contains a valid value in this slot
25473    unsafe { self._tab.get::<f32>(AlternateUnits::VT_MULTIPLIER, Some(0.0)).unwrap()}
25474  }
25475}
25476
25477impl flatbuffers::Verifiable for AlternateUnits<'_> {
25478  #[inline]
25479  fn run_verifier(
25480    v: &mut flatbuffers::Verifier, pos: usize
25481  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25482    use self::flatbuffers::Verifiable;
25483    v.visit_table(pos)?
25484     .visit_field::<flatbuffers::ForwardsUOffset<_UnitSystemBase>>("base", Self::VT_BASE, false)?
25485     .visit_field::<DIMENSION_UNITS_FORMAT>("format", Self::VT_FORMAT, false)?
25486     .visit_field::<bool>("is_visible", Self::VT_IS_VISIBLE, false)?
25487     .visit_field::<f32>("multiplier", Self::VT_MULTIPLIER, false)?
25488     .finish();
25489    Ok(())
25490  }
25491}
25492pub struct AlternateUnitsArgs<'a> {
25493    pub base: Option<flatbuffers::WIPOffset<_UnitSystemBase<'a>>>,
25494    pub format: Option<DIMENSION_UNITS_FORMAT>,
25495    pub is_visible: bool,
25496    pub multiplier: f32,
25497}
25498impl<'a> Default for AlternateUnitsArgs<'a> {
25499  #[inline]
25500  fn default() -> Self {
25501    AlternateUnitsArgs {
25502      base: None,
25503      format: None,
25504      is_visible: false,
25505      multiplier: 0.0,
25506    }
25507  }
25508}
25509
25510pub struct AlternateUnitsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25511  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25512  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25513}
25514impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> AlternateUnitsBuilder<'a, 'b, A> {
25515  #[inline]
25516  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<_UnitSystemBase<'b >>) {
25517    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_UnitSystemBase>>(AlternateUnits::VT_BASE, base);
25518  }
25519  #[inline]
25520  pub fn add_format(&mut self, format: DIMENSION_UNITS_FORMAT) {
25521    self.fbb_.push_slot_always::<DIMENSION_UNITS_FORMAT>(AlternateUnits::VT_FORMAT, format);
25522  }
25523  #[inline]
25524  pub fn add_is_visible(&mut self, is_visible: bool) {
25525    self.fbb_.push_slot::<bool>(AlternateUnits::VT_IS_VISIBLE, is_visible, false);
25526  }
25527  #[inline]
25528  pub fn add_multiplier(&mut self, multiplier: f32) {
25529    self.fbb_.push_slot::<f32>(AlternateUnits::VT_MULTIPLIER, multiplier, 0.0);
25530  }
25531  #[inline]
25532  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> AlternateUnitsBuilder<'a, 'b, A> {
25533    let start = _fbb.start_table();
25534    AlternateUnitsBuilder {
25535      fbb_: _fbb,
25536      start_: start,
25537    }
25538  }
25539  #[inline]
25540  pub fn finish(self) -> flatbuffers::WIPOffset<AlternateUnits<'a>> {
25541    let o = self.fbb_.end_table(self.start_);
25542    flatbuffers::WIPOffset::new(o.value())
25543  }
25544}
25545
25546impl core::fmt::Debug for AlternateUnits<'_> {
25547  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25548    let mut ds = f.debug_struct("AlternateUnits");
25549      ds.field("base", &self.base());
25550      ds.field("format", &self.format());
25551      ds.field("is_visible", &self.is_visible());
25552      ds.field("multiplier", &self.multiplier());
25553      ds.finish()
25554  }
25555}
25556pub enum PrimaryUnitsOffset {}
25557#[derive(Copy, Clone, PartialEq)]
25558
25559pub struct PrimaryUnits<'a> {
25560  pub _tab: flatbuffers::Table<'a>,
25561}
25562
25563impl<'a> flatbuffers::Follow<'a> for PrimaryUnits<'a> {
25564  type Inner = PrimaryUnits<'a>;
25565  #[inline]
25566  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25567    Self { _tab: flatbuffers::Table::new(buf, loc) }
25568  }
25569}
25570
25571impl<'a> PrimaryUnits<'a> {
25572  pub const VT_LINEAR: flatbuffers::VOffsetT = 4;
25573  pub const VT_ANGULAR: flatbuffers::VOffsetT = 6;
25574
25575  #[inline]
25576  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25577    PrimaryUnits { _tab: table }
25578  }
25579  #[allow(unused_mut)]
25580  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25581    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25582    args: &'args PrimaryUnitsArgs<'args>
25583  ) -> flatbuffers::WIPOffset<PrimaryUnits<'bldr>> {
25584    let mut builder = PrimaryUnitsBuilder::new(_fbb);
25585    if let Some(x) = args.angular { builder.add_angular(x); }
25586    if let Some(x) = args.linear { builder.add_linear(x); }
25587    builder.finish()
25588  }
25589
25590
25591  #[inline]
25592  pub fn linear(&self) -> Option<LinearUnitSystem<'a>> {
25593    // Safety:
25594    // Created from valid Table for this object
25595    // which contains a valid value in this slot
25596    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<LinearUnitSystem>>(PrimaryUnits::VT_LINEAR, None)}
25597  }
25598  #[inline]
25599  pub fn angular(&self) -> Option<AngularUnitSystem<'a>> {
25600    // Safety:
25601    // Created from valid Table for this object
25602    // which contains a valid value in this slot
25603    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<AngularUnitSystem>>(PrimaryUnits::VT_ANGULAR, None)}
25604  }
25605}
25606
25607impl flatbuffers::Verifiable for PrimaryUnits<'_> {
25608  #[inline]
25609  fn run_verifier(
25610    v: &mut flatbuffers::Verifier, pos: usize
25611  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25612    use self::flatbuffers::Verifiable;
25613    v.visit_table(pos)?
25614     .visit_field::<flatbuffers::ForwardsUOffset<LinearUnitSystem>>("linear", Self::VT_LINEAR, false)?
25615     .visit_field::<flatbuffers::ForwardsUOffset<AngularUnitSystem>>("angular", Self::VT_ANGULAR, false)?
25616     .finish();
25617    Ok(())
25618  }
25619}
25620pub struct PrimaryUnitsArgs<'a> {
25621    pub linear: Option<flatbuffers::WIPOffset<LinearUnitSystem<'a>>>,
25622    pub angular: Option<flatbuffers::WIPOffset<AngularUnitSystem<'a>>>,
25623}
25624impl<'a> Default for PrimaryUnitsArgs<'a> {
25625  #[inline]
25626  fn default() -> Self {
25627    PrimaryUnitsArgs {
25628      linear: None,
25629      angular: None,
25630    }
25631  }
25632}
25633
25634pub struct PrimaryUnitsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25635  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25636  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25637}
25638impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PrimaryUnitsBuilder<'a, 'b, A> {
25639  #[inline]
25640  pub fn add_linear(&mut self, linear: flatbuffers::WIPOffset<LinearUnitSystem<'b >>) {
25641    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<LinearUnitSystem>>(PrimaryUnits::VT_LINEAR, linear);
25642  }
25643  #[inline]
25644  pub fn add_angular(&mut self, angular: flatbuffers::WIPOffset<AngularUnitSystem<'b >>) {
25645    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<AngularUnitSystem>>(PrimaryUnits::VT_ANGULAR, angular);
25646  }
25647  #[inline]
25648  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PrimaryUnitsBuilder<'a, 'b, A> {
25649    let start = _fbb.start_table();
25650    PrimaryUnitsBuilder {
25651      fbb_: _fbb,
25652      start_: start,
25653    }
25654  }
25655  #[inline]
25656  pub fn finish(self) -> flatbuffers::WIPOffset<PrimaryUnits<'a>> {
25657    let o = self.fbb_.end_table(self.start_);
25658    flatbuffers::WIPOffset::new(o.value())
25659  }
25660}
25661
25662impl core::fmt::Debug for PrimaryUnits<'_> {
25663  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25664    let mut ds = f.debug_struct("PrimaryUnits");
25665      ds.field("linear", &self.linear());
25666      ds.field("angular", &self.angular());
25667      ds.finish()
25668  }
25669}
25670pub enum StandardUnitsOffset {}
25671#[derive(Copy, Clone, PartialEq)]
25672
25673pub struct StandardUnits<'a> {
25674  pub _tab: flatbuffers::Table<'a>,
25675}
25676
25677impl<'a> flatbuffers::Follow<'a> for StandardUnits<'a> {
25678  type Inner = StandardUnits<'a>;
25679  #[inline]
25680  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25681    Self { _tab: flatbuffers::Table::new(buf, loc) }
25682  }
25683}
25684
25685impl<'a> StandardUnits<'a> {
25686  pub const VT_PRIMARY_UNITS: flatbuffers::VOffsetT = 4;
25687  pub const VT_ALTERNATE_UNITS: flatbuffers::VOffsetT = 6;
25688
25689  #[inline]
25690  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25691    StandardUnits { _tab: table }
25692  }
25693  #[allow(unused_mut)]
25694  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25695    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25696    args: &'args StandardUnitsArgs<'args>
25697  ) -> flatbuffers::WIPOffset<StandardUnits<'bldr>> {
25698    let mut builder = StandardUnitsBuilder::new(_fbb);
25699    if let Some(x) = args.alternate_units { builder.add_alternate_units(x); }
25700    if let Some(x) = args.primary_units { builder.add_primary_units(x); }
25701    builder.finish()
25702  }
25703
25704
25705  #[inline]
25706  pub fn primary_units(&self) -> Option<PrimaryUnits<'a>> {
25707    // Safety:
25708    // Created from valid Table for this object
25709    // which contains a valid value in this slot
25710    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PrimaryUnits>>(StandardUnits::VT_PRIMARY_UNITS, None)}
25711  }
25712  #[inline]
25713  pub fn alternate_units(&self) -> Option<AlternateUnits<'a>> {
25714    // Safety:
25715    // Created from valid Table for this object
25716    // which contains a valid value in this slot
25717    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<AlternateUnits>>(StandardUnits::VT_ALTERNATE_UNITS, None)}
25718  }
25719}
25720
25721impl flatbuffers::Verifiable for StandardUnits<'_> {
25722  #[inline]
25723  fn run_verifier(
25724    v: &mut flatbuffers::Verifier, pos: usize
25725  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25726    use self::flatbuffers::Verifiable;
25727    v.visit_table(pos)?
25728     .visit_field::<flatbuffers::ForwardsUOffset<PrimaryUnits>>("primary_units", Self::VT_PRIMARY_UNITS, false)?
25729     .visit_field::<flatbuffers::ForwardsUOffset<AlternateUnits>>("alternate_units", Self::VT_ALTERNATE_UNITS, false)?
25730     .finish();
25731    Ok(())
25732  }
25733}
25734pub struct StandardUnitsArgs<'a> {
25735    pub primary_units: Option<flatbuffers::WIPOffset<PrimaryUnits<'a>>>,
25736    pub alternate_units: Option<flatbuffers::WIPOffset<AlternateUnits<'a>>>,
25737}
25738impl<'a> Default for StandardUnitsArgs<'a> {
25739  #[inline]
25740  fn default() -> Self {
25741    StandardUnitsArgs {
25742      primary_units: None,
25743      alternate_units: None,
25744    }
25745  }
25746}
25747
25748pub struct StandardUnitsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25749  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25750  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25751}
25752impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardUnitsBuilder<'a, 'b, A> {
25753  #[inline]
25754  pub fn add_primary_units(&mut self, primary_units: flatbuffers::WIPOffset<PrimaryUnits<'b >>) {
25755    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PrimaryUnits>>(StandardUnits::VT_PRIMARY_UNITS, primary_units);
25756  }
25757  #[inline]
25758  pub fn add_alternate_units(&mut self, alternate_units: flatbuffers::WIPOffset<AlternateUnits<'b >>) {
25759    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<AlternateUnits>>(StandardUnits::VT_ALTERNATE_UNITS, alternate_units);
25760  }
25761  #[inline]
25762  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardUnitsBuilder<'a, 'b, A> {
25763    let start = _fbb.start_table();
25764    StandardUnitsBuilder {
25765      fbb_: _fbb,
25766      start_: start,
25767    }
25768  }
25769  #[inline]
25770  pub fn finish(self) -> flatbuffers::WIPOffset<StandardUnits<'a>> {
25771    let o = self.fbb_.end_table(self.start_);
25772    flatbuffers::WIPOffset::new(o.value())
25773  }
25774}
25775
25776impl core::fmt::Debug for StandardUnits<'_> {
25777  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25778    let mut ds = f.debug_struct("StandardUnits");
25779      ds.field("primary_units", &self.primary_units());
25780      ds.field("alternate_units", &self.alternate_units());
25781      ds.finish()
25782  }
25783}
25784pub enum UnitPrecisionOffset {}
25785#[derive(Copy, Clone, PartialEq)]
25786
25787pub struct UnitPrecision<'a> {
25788  pub _tab: flatbuffers::Table<'a>,
25789}
25790
25791impl<'a> flatbuffers::Follow<'a> for UnitPrecision<'a> {
25792  type Inner = UnitPrecision<'a>;
25793  #[inline]
25794  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25795    Self { _tab: flatbuffers::Table::new(buf, loc) }
25796  }
25797}
25798
25799impl<'a> UnitPrecision<'a> {
25800  pub const VT_LINEAR: flatbuffers::VOffsetT = 4;
25801  pub const VT_ANGULAR: flatbuffers::VOffsetT = 6;
25802  pub const VT_AREA: flatbuffers::VOffsetT = 8;
25803  pub const VT_VOLUME: flatbuffers::VOffsetT = 10;
25804
25805  #[inline]
25806  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25807    UnitPrecision { _tab: table }
25808  }
25809  #[allow(unused_mut)]
25810  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25811    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25812    args: &'args UnitPrecisionArgs
25813  ) -> flatbuffers::WIPOffset<UnitPrecision<'bldr>> {
25814    let mut builder = UnitPrecisionBuilder::new(_fbb);
25815    builder.add_volume(args.volume);
25816    builder.add_area(args.area);
25817    builder.add_angular(args.angular);
25818    builder.add_linear(args.linear);
25819    builder.finish()
25820  }
25821
25822
25823  #[inline]
25824  pub fn linear(&self) -> i32 {
25825    // Safety:
25826    // Created from valid Table for this object
25827    // which contains a valid value in this slot
25828    unsafe { self._tab.get::<i32>(UnitPrecision::VT_LINEAR, Some(0)).unwrap()}
25829  }
25830  #[inline]
25831  pub fn angular(&self) -> i32 {
25832    // Safety:
25833    // Created from valid Table for this object
25834    // which contains a valid value in this slot
25835    unsafe { self._tab.get::<i32>(UnitPrecision::VT_ANGULAR, Some(0)).unwrap()}
25836  }
25837  #[inline]
25838  pub fn area(&self) -> i32 {
25839    // Safety:
25840    // Created from valid Table for this object
25841    // which contains a valid value in this slot
25842    unsafe { self._tab.get::<i32>(UnitPrecision::VT_AREA, Some(0)).unwrap()}
25843  }
25844  #[inline]
25845  pub fn volume(&self) -> i32 {
25846    // Safety:
25847    // Created from valid Table for this object
25848    // which contains a valid value in this slot
25849    unsafe { self._tab.get::<i32>(UnitPrecision::VT_VOLUME, Some(0)).unwrap()}
25850  }
25851}
25852
25853impl flatbuffers::Verifiable for UnitPrecision<'_> {
25854  #[inline]
25855  fn run_verifier(
25856    v: &mut flatbuffers::Verifier, pos: usize
25857  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
25858    use self::flatbuffers::Verifiable;
25859    v.visit_table(pos)?
25860     .visit_field::<i32>("linear", Self::VT_LINEAR, false)?
25861     .visit_field::<i32>("angular", Self::VT_ANGULAR, false)?
25862     .visit_field::<i32>("area", Self::VT_AREA, false)?
25863     .visit_field::<i32>("volume", Self::VT_VOLUME, false)?
25864     .finish();
25865    Ok(())
25866  }
25867}
25868pub struct UnitPrecisionArgs {
25869    pub linear: i32,
25870    pub angular: i32,
25871    pub area: i32,
25872    pub volume: i32,
25873}
25874impl<'a> Default for UnitPrecisionArgs {
25875  #[inline]
25876  fn default() -> Self {
25877    UnitPrecisionArgs {
25878      linear: 0,
25879      angular: 0,
25880      area: 0,
25881      volume: 0,
25882    }
25883  }
25884}
25885
25886pub struct UnitPrecisionBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
25887  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
25888  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
25889}
25890impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> UnitPrecisionBuilder<'a, 'b, A> {
25891  #[inline]
25892  pub fn add_linear(&mut self, linear: i32) {
25893    self.fbb_.push_slot::<i32>(UnitPrecision::VT_LINEAR, linear, 0);
25894  }
25895  #[inline]
25896  pub fn add_angular(&mut self, angular: i32) {
25897    self.fbb_.push_slot::<i32>(UnitPrecision::VT_ANGULAR, angular, 0);
25898  }
25899  #[inline]
25900  pub fn add_area(&mut self, area: i32) {
25901    self.fbb_.push_slot::<i32>(UnitPrecision::VT_AREA, area, 0);
25902  }
25903  #[inline]
25904  pub fn add_volume(&mut self, volume: i32) {
25905    self.fbb_.push_slot::<i32>(UnitPrecision::VT_VOLUME, volume, 0);
25906  }
25907  #[inline]
25908  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> UnitPrecisionBuilder<'a, 'b, A> {
25909    let start = _fbb.start_table();
25910    UnitPrecisionBuilder {
25911      fbb_: _fbb,
25912      start_: start,
25913    }
25914  }
25915  #[inline]
25916  pub fn finish(self) -> flatbuffers::WIPOffset<UnitPrecision<'a>> {
25917    let o = self.fbb_.end_table(self.start_);
25918    flatbuffers::WIPOffset::new(o.value())
25919  }
25920}
25921
25922impl core::fmt::Debug for UnitPrecision<'_> {
25923  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
25924    let mut ds = f.debug_struct("UnitPrecision");
25925      ds.field("linear", &self.linear());
25926      ds.field("angular", &self.angular());
25927      ds.field("area", &self.area());
25928      ds.field("volume", &self.volume());
25929      ds.finish()
25930  }
25931}
25932pub enum StandardOverridesOffset {}
25933#[derive(Copy, Clone, PartialEq)]
25934
25935pub struct StandardOverrides<'a> {
25936  pub _tab: flatbuffers::Table<'a>,
25937}
25938
25939impl<'a> flatbuffers::Follow<'a> for StandardOverrides<'a> {
25940  type Inner = StandardOverrides<'a>;
25941  #[inline]
25942  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
25943    Self { _tab: flatbuffers::Table::new(buf, loc) }
25944  }
25945}
25946
25947impl<'a> StandardOverrides<'a> {
25948  pub const VT_MAIN_SCOPE: flatbuffers::VOffsetT = 4;
25949  pub const VT_ELEMENTS_STROKE_WIDTH_OVERRIDE: flatbuffers::VOffsetT = 6;
25950  pub const VT_COMMON_STYLE_ID: flatbuffers::VOffsetT = 8;
25951  pub const VT_STACK_LIKE_STYLE_ID: flatbuffers::VOffsetT = 10;
25952  pub const VT_TEXT_STYLE_ID: flatbuffers::VOffsetT = 12;
25953  pub const VT_DIMENSION_STYLE_ID: flatbuffers::VOffsetT = 14;
25954  pub const VT_LEADER_STYLE_ID: flatbuffers::VOffsetT = 16;
25955  pub const VT_FEATURE_CONTROL_FRAME_STYLE_ID: flatbuffers::VOffsetT = 18;
25956  pub const VT_TABLE_STYLE_ID: flatbuffers::VOffsetT = 20;
25957  pub const VT_DOC_STYLE_ID: flatbuffers::VOffsetT = 22;
25958  pub const VT_VIEWPORT_STYLE_ID: flatbuffers::VOffsetT = 24;
25959  pub const VT_PLOT_STYLE_ID: flatbuffers::VOffsetT = 26;
25960  pub const VT_HATCH_STYLE_ID: flatbuffers::VOffsetT = 28;
25961  pub const VT_ACTIVE_GRID_SETTINGS_ID: flatbuffers::VOffsetT = 30;
25962  pub const VT_ACTIVE_SNAP_SETTINGS_ID: flatbuffers::VOffsetT = 32;
25963  pub const VT_DASH_LINE_OVERRIDE: flatbuffers::VOffsetT = 34;
25964  pub const VT_UNIT_PRECISION: flatbuffers::VOffsetT = 36;
25965
25966  #[inline]
25967  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
25968    StandardOverrides { _tab: table }
25969  }
25970  #[allow(unused_mut)]
25971  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
25972    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
25973    args: &'args StandardOverridesArgs<'args>
25974  ) -> flatbuffers::WIPOffset<StandardOverrides<'bldr>> {
25975    let mut builder = StandardOverridesBuilder::new(_fbb);
25976    builder.add_elements_stroke_width_override(args.elements_stroke_width_override);
25977    if let Some(x) = args.unit_precision { builder.add_unit_precision(x); }
25978    if let Some(x) = args.dash_line_override { builder.add_dash_line_override(x); }
25979    if let Some(x) = args.active_snap_settings_id { builder.add_active_snap_settings_id(x); }
25980    if let Some(x) = args.active_grid_settings_id { builder.add_active_grid_settings_id(x); }
25981    if let Some(x) = args.hatch_style_id { builder.add_hatch_style_id(x); }
25982    if let Some(x) = args.plot_style_id { builder.add_plot_style_id(x); }
25983    if let Some(x) = args.viewport_style_id { builder.add_viewport_style_id(x); }
25984    if let Some(x) = args.doc_style_id { builder.add_doc_style_id(x); }
25985    if let Some(x) = args.table_style_id { builder.add_table_style_id(x); }
25986    if let Some(x) = args.feature_control_frame_style_id { builder.add_feature_control_frame_style_id(x); }
25987    if let Some(x) = args.leader_style_id { builder.add_leader_style_id(x); }
25988    if let Some(x) = args.dimension_style_id { builder.add_dimension_style_id(x); }
25989    if let Some(x) = args.text_style_id { builder.add_text_style_id(x); }
25990    if let Some(x) = args.stack_like_style_id { builder.add_stack_like_style_id(x); }
25991    if let Some(x) = args.common_style_id { builder.add_common_style_id(x); }
25992    if let Some(x) = args.main_scope { builder.add_main_scope(x); }
25993    builder.finish()
25994  }
25995
25996
25997  #[inline]
25998  pub fn main_scope(&self) -> Option<&'a str> {
25999    // Safety:
26000    // Created from valid Table for this object
26001    // which contains a valid value in this slot
26002    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_MAIN_SCOPE, None)}
26003  }
26004  #[inline]
26005  pub fn elements_stroke_width_override(&self) -> f64 {
26006    // Safety:
26007    // Created from valid Table for this object
26008    // which contains a valid value in this slot
26009    unsafe { self._tab.get::<f64>(StandardOverrides::VT_ELEMENTS_STROKE_WIDTH_OVERRIDE, Some(0.0)).unwrap()}
26010  }
26011  #[inline]
26012  pub fn common_style_id(&self) -> Option<&'a str> {
26013    // Safety:
26014    // Created from valid Table for this object
26015    // which contains a valid value in this slot
26016    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_COMMON_STYLE_ID, None)}
26017  }
26018  #[inline]
26019  pub fn stack_like_style_id(&self) -> Option<&'a str> {
26020    // Safety:
26021    // Created from valid Table for this object
26022    // which contains a valid value in this slot
26023    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_STACK_LIKE_STYLE_ID, None)}
26024  }
26025  #[inline]
26026  pub fn text_style_id(&self) -> Option<&'a str> {
26027    // Safety:
26028    // Created from valid Table for this object
26029    // which contains a valid value in this slot
26030    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_TEXT_STYLE_ID, None)}
26031  }
26032  #[inline]
26033  pub fn dimension_style_id(&self) -> Option<&'a str> {
26034    // Safety:
26035    // Created from valid Table for this object
26036    // which contains a valid value in this slot
26037    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_DIMENSION_STYLE_ID, None)}
26038  }
26039  #[inline]
26040  pub fn leader_style_id(&self) -> Option<&'a str> {
26041    // Safety:
26042    // Created from valid Table for this object
26043    // which contains a valid value in this slot
26044    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_LEADER_STYLE_ID, None)}
26045  }
26046  #[inline]
26047  pub fn feature_control_frame_style_id(&self) -> Option<&'a str> {
26048    // Safety:
26049    // Created from valid Table for this object
26050    // which contains a valid value in this slot
26051    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_FEATURE_CONTROL_FRAME_STYLE_ID, None)}
26052  }
26053  #[inline]
26054  pub fn table_style_id(&self) -> Option<&'a str> {
26055    // Safety:
26056    // Created from valid Table for this object
26057    // which contains a valid value in this slot
26058    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_TABLE_STYLE_ID, None)}
26059  }
26060  #[inline]
26061  pub fn doc_style_id(&self) -> Option<&'a str> {
26062    // Safety:
26063    // Created from valid Table for this object
26064    // which contains a valid value in this slot
26065    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_DOC_STYLE_ID, None)}
26066  }
26067  #[inline]
26068  pub fn viewport_style_id(&self) -> Option<&'a str> {
26069    // Safety:
26070    // Created from valid Table for this object
26071    // which contains a valid value in this slot
26072    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_VIEWPORT_STYLE_ID, None)}
26073  }
26074  #[inline]
26075  pub fn plot_style_id(&self) -> Option<&'a str> {
26076    // Safety:
26077    // Created from valid Table for this object
26078    // which contains a valid value in this slot
26079    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_PLOT_STYLE_ID, None)}
26080  }
26081  #[inline]
26082  pub fn hatch_style_id(&self) -> Option<&'a str> {
26083    // Safety:
26084    // Created from valid Table for this object
26085    // which contains a valid value in this slot
26086    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_HATCH_STYLE_ID, None)}
26087  }
26088  #[inline]
26089  pub fn active_grid_settings_id(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
26090    // Safety:
26091    // Created from valid Table for this object
26092    // which contains a valid value in this slot
26093    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(StandardOverrides::VT_ACTIVE_GRID_SETTINGS_ID, None)}
26094  }
26095  #[inline]
26096  pub fn active_snap_settings_id(&self) -> Option<&'a str> {
26097    // Safety:
26098    // Created from valid Table for this object
26099    // which contains a valid value in this slot
26100    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_ACTIVE_SNAP_SETTINGS_ID, None)}
26101  }
26102  #[inline]
26103  pub fn dash_line_override(&self) -> Option<&'a str> {
26104    // Safety:
26105    // Created from valid Table for this object
26106    // which contains a valid value in this slot
26107    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(StandardOverrides::VT_DASH_LINE_OVERRIDE, None)}
26108  }
26109  #[inline]
26110  pub fn unit_precision(&self) -> Option<UnitPrecision<'a>> {
26111    // Safety:
26112    // Created from valid Table for this object
26113    // which contains a valid value in this slot
26114    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<UnitPrecision>>(StandardOverrides::VT_UNIT_PRECISION, None)}
26115  }
26116}
26117
26118impl flatbuffers::Verifiable for StandardOverrides<'_> {
26119  #[inline]
26120  fn run_verifier(
26121    v: &mut flatbuffers::Verifier, pos: usize
26122  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26123    use self::flatbuffers::Verifiable;
26124    v.visit_table(pos)?
26125     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("main_scope", Self::VT_MAIN_SCOPE, false)?
26126     .visit_field::<f64>("elements_stroke_width_override", Self::VT_ELEMENTS_STROKE_WIDTH_OVERRIDE, false)?
26127     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("common_style_id", Self::VT_COMMON_STYLE_ID, false)?
26128     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("stack_like_style_id", Self::VT_STACK_LIKE_STYLE_ID, false)?
26129     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("text_style_id", Self::VT_TEXT_STYLE_ID, false)?
26130     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("dimension_style_id", Self::VT_DIMENSION_STYLE_ID, false)?
26131     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("leader_style_id", Self::VT_LEADER_STYLE_ID, false)?
26132     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("feature_control_frame_style_id", Self::VT_FEATURE_CONTROL_FRAME_STYLE_ID, false)?
26133     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("table_style_id", Self::VT_TABLE_STYLE_ID, false)?
26134     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("doc_style_id", Self::VT_DOC_STYLE_ID, false)?
26135     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("viewport_style_id", Self::VT_VIEWPORT_STYLE_ID, false)?
26136     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("plot_style_id", Self::VT_PLOT_STYLE_ID, false)?
26137     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("hatch_style_id", Self::VT_HATCH_STYLE_ID, false)?
26138     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("active_grid_settings_id", Self::VT_ACTIVE_GRID_SETTINGS_ID, false)?
26139     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("active_snap_settings_id", Self::VT_ACTIVE_SNAP_SETTINGS_ID, false)?
26140     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("dash_line_override", Self::VT_DASH_LINE_OVERRIDE, false)?
26141     .visit_field::<flatbuffers::ForwardsUOffset<UnitPrecision>>("unit_precision", Self::VT_UNIT_PRECISION, false)?
26142     .finish();
26143    Ok(())
26144  }
26145}
26146pub struct StandardOverridesArgs<'a> {
26147    pub main_scope: Option<flatbuffers::WIPOffset<&'a str>>,
26148    pub elements_stroke_width_override: f64,
26149    pub common_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26150    pub stack_like_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26151    pub text_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26152    pub dimension_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26153    pub leader_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26154    pub feature_control_frame_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26155    pub table_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26156    pub doc_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26157    pub viewport_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26158    pub plot_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26159    pub hatch_style_id: Option<flatbuffers::WIPOffset<&'a str>>,
26160    pub active_grid_settings_id: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
26161    pub active_snap_settings_id: Option<flatbuffers::WIPOffset<&'a str>>,
26162    pub dash_line_override: Option<flatbuffers::WIPOffset<&'a str>>,
26163    pub unit_precision: Option<flatbuffers::WIPOffset<UnitPrecision<'a>>>,
26164}
26165impl<'a> Default for StandardOverridesArgs<'a> {
26166  #[inline]
26167  fn default() -> Self {
26168    StandardOverridesArgs {
26169      main_scope: None,
26170      elements_stroke_width_override: 0.0,
26171      common_style_id: None,
26172      stack_like_style_id: None,
26173      text_style_id: None,
26174      dimension_style_id: None,
26175      leader_style_id: None,
26176      feature_control_frame_style_id: None,
26177      table_style_id: None,
26178      doc_style_id: None,
26179      viewport_style_id: None,
26180      plot_style_id: None,
26181      hatch_style_id: None,
26182      active_grid_settings_id: None,
26183      active_snap_settings_id: None,
26184      dash_line_override: None,
26185      unit_precision: None,
26186    }
26187  }
26188}
26189
26190pub struct StandardOverridesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26191  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26192  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26193}
26194impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardOverridesBuilder<'a, 'b, A> {
26195  #[inline]
26196  pub fn add_main_scope(&mut self, main_scope: flatbuffers::WIPOffset<&'b  str>) {
26197    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_MAIN_SCOPE, main_scope);
26198  }
26199  #[inline]
26200  pub fn add_elements_stroke_width_override(&mut self, elements_stroke_width_override: f64) {
26201    self.fbb_.push_slot::<f64>(StandardOverrides::VT_ELEMENTS_STROKE_WIDTH_OVERRIDE, elements_stroke_width_override, 0.0);
26202  }
26203  #[inline]
26204  pub fn add_common_style_id(&mut self, common_style_id: flatbuffers::WIPOffset<&'b  str>) {
26205    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_COMMON_STYLE_ID, common_style_id);
26206  }
26207  #[inline]
26208  pub fn add_stack_like_style_id(&mut self, stack_like_style_id: flatbuffers::WIPOffset<&'b  str>) {
26209    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_STACK_LIKE_STYLE_ID, stack_like_style_id);
26210  }
26211  #[inline]
26212  pub fn add_text_style_id(&mut self, text_style_id: flatbuffers::WIPOffset<&'b  str>) {
26213    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_TEXT_STYLE_ID, text_style_id);
26214  }
26215  #[inline]
26216  pub fn add_dimension_style_id(&mut self, dimension_style_id: flatbuffers::WIPOffset<&'b  str>) {
26217    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_DIMENSION_STYLE_ID, dimension_style_id);
26218  }
26219  #[inline]
26220  pub fn add_leader_style_id(&mut self, leader_style_id: flatbuffers::WIPOffset<&'b  str>) {
26221    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_LEADER_STYLE_ID, leader_style_id);
26222  }
26223  #[inline]
26224  pub fn add_feature_control_frame_style_id(&mut self, feature_control_frame_style_id: flatbuffers::WIPOffset<&'b  str>) {
26225    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_FEATURE_CONTROL_FRAME_STYLE_ID, feature_control_frame_style_id);
26226  }
26227  #[inline]
26228  pub fn add_table_style_id(&mut self, table_style_id: flatbuffers::WIPOffset<&'b  str>) {
26229    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_TABLE_STYLE_ID, table_style_id);
26230  }
26231  #[inline]
26232  pub fn add_doc_style_id(&mut self, doc_style_id: flatbuffers::WIPOffset<&'b  str>) {
26233    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_DOC_STYLE_ID, doc_style_id);
26234  }
26235  #[inline]
26236  pub fn add_viewport_style_id(&mut self, viewport_style_id: flatbuffers::WIPOffset<&'b  str>) {
26237    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_VIEWPORT_STYLE_ID, viewport_style_id);
26238  }
26239  #[inline]
26240  pub fn add_plot_style_id(&mut self, plot_style_id: flatbuffers::WIPOffset<&'b  str>) {
26241    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_PLOT_STYLE_ID, plot_style_id);
26242  }
26243  #[inline]
26244  pub fn add_hatch_style_id(&mut self, hatch_style_id: flatbuffers::WIPOffset<&'b  str>) {
26245    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_HATCH_STYLE_ID, hatch_style_id);
26246  }
26247  #[inline]
26248  pub fn add_active_grid_settings_id(&mut self, active_grid_settings_id: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
26249    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_ACTIVE_GRID_SETTINGS_ID, active_grid_settings_id);
26250  }
26251  #[inline]
26252  pub fn add_active_snap_settings_id(&mut self, active_snap_settings_id: flatbuffers::WIPOffset<&'b  str>) {
26253    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_ACTIVE_SNAP_SETTINGS_ID, active_snap_settings_id);
26254  }
26255  #[inline]
26256  pub fn add_dash_line_override(&mut self, dash_line_override: flatbuffers::WIPOffset<&'b  str>) {
26257    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardOverrides::VT_DASH_LINE_OVERRIDE, dash_line_override);
26258  }
26259  #[inline]
26260  pub fn add_unit_precision(&mut self, unit_precision: flatbuffers::WIPOffset<UnitPrecision<'b >>) {
26261    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<UnitPrecision>>(StandardOverrides::VT_UNIT_PRECISION, unit_precision);
26262  }
26263  #[inline]
26264  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardOverridesBuilder<'a, 'b, A> {
26265    let start = _fbb.start_table();
26266    StandardOverridesBuilder {
26267      fbb_: _fbb,
26268      start_: start,
26269    }
26270  }
26271  #[inline]
26272  pub fn finish(self) -> flatbuffers::WIPOffset<StandardOverrides<'a>> {
26273    let o = self.fbb_.end_table(self.start_);
26274    flatbuffers::WIPOffset::new(o.value())
26275  }
26276}
26277
26278impl core::fmt::Debug for StandardOverrides<'_> {
26279  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26280    let mut ds = f.debug_struct("StandardOverrides");
26281      ds.field("main_scope", &self.main_scope());
26282      ds.field("elements_stroke_width_override", &self.elements_stroke_width_override());
26283      ds.field("common_style_id", &self.common_style_id());
26284      ds.field("stack_like_style_id", &self.stack_like_style_id());
26285      ds.field("text_style_id", &self.text_style_id());
26286      ds.field("dimension_style_id", &self.dimension_style_id());
26287      ds.field("leader_style_id", &self.leader_style_id());
26288      ds.field("feature_control_frame_style_id", &self.feature_control_frame_style_id());
26289      ds.field("table_style_id", &self.table_style_id());
26290      ds.field("doc_style_id", &self.doc_style_id());
26291      ds.field("viewport_style_id", &self.viewport_style_id());
26292      ds.field("plot_style_id", &self.plot_style_id());
26293      ds.field("hatch_style_id", &self.hatch_style_id());
26294      ds.field("active_grid_settings_id", &self.active_grid_settings_id());
26295      ds.field("active_snap_settings_id", &self.active_snap_settings_id());
26296      ds.field("dash_line_override", &self.dash_line_override());
26297      ds.field("unit_precision", &self.unit_precision());
26298      ds.finish()
26299  }
26300}
26301pub enum DucCommonStyleOffset {}
26302#[derive(Copy, Clone, PartialEq)]
26303
26304pub struct DucCommonStyle<'a> {
26305  pub _tab: flatbuffers::Table<'a>,
26306}
26307
26308impl<'a> flatbuffers::Follow<'a> for DucCommonStyle<'a> {
26309  type Inner = DucCommonStyle<'a>;
26310  #[inline]
26311  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26312    Self { _tab: flatbuffers::Table::new(buf, loc) }
26313  }
26314}
26315
26316impl<'a> DucCommonStyle<'a> {
26317  pub const VT_BACKGROUND: flatbuffers::VOffsetT = 4;
26318  pub const VT_STROKE: flatbuffers::VOffsetT = 6;
26319
26320  #[inline]
26321  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26322    DucCommonStyle { _tab: table }
26323  }
26324  #[allow(unused_mut)]
26325  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26326    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26327    args: &'args DucCommonStyleArgs<'args>
26328  ) -> flatbuffers::WIPOffset<DucCommonStyle<'bldr>> {
26329    let mut builder = DucCommonStyleBuilder::new(_fbb);
26330    if let Some(x) = args.stroke { builder.add_stroke(x); }
26331    if let Some(x) = args.background { builder.add_background(x); }
26332    builder.finish()
26333  }
26334
26335
26336  #[inline]
26337  pub fn background(&self) -> Option<ElementBackground<'a>> {
26338    // Safety:
26339    // Created from valid Table for this object
26340    // which contains a valid value in this slot
26341    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementBackground>>(DucCommonStyle::VT_BACKGROUND, None)}
26342  }
26343  #[inline]
26344  pub fn stroke(&self) -> Option<ElementStroke<'a>> {
26345    // Safety:
26346    // Created from valid Table for this object
26347    // which contains a valid value in this slot
26348    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<ElementStroke>>(DucCommonStyle::VT_STROKE, None)}
26349  }
26350}
26351
26352impl flatbuffers::Verifiable for DucCommonStyle<'_> {
26353  #[inline]
26354  fn run_verifier(
26355    v: &mut flatbuffers::Verifier, pos: usize
26356  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26357    use self::flatbuffers::Verifiable;
26358    v.visit_table(pos)?
26359     .visit_field::<flatbuffers::ForwardsUOffset<ElementBackground>>("background", Self::VT_BACKGROUND, false)?
26360     .visit_field::<flatbuffers::ForwardsUOffset<ElementStroke>>("stroke", Self::VT_STROKE, false)?
26361     .finish();
26362    Ok(())
26363  }
26364}
26365pub struct DucCommonStyleArgs<'a> {
26366    pub background: Option<flatbuffers::WIPOffset<ElementBackground<'a>>>,
26367    pub stroke: Option<flatbuffers::WIPOffset<ElementStroke<'a>>>,
26368}
26369impl<'a> Default for DucCommonStyleArgs<'a> {
26370  #[inline]
26371  fn default() -> Self {
26372    DucCommonStyleArgs {
26373      background: None,
26374      stroke: None,
26375    }
26376  }
26377}
26378
26379pub struct DucCommonStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26380  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26381  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26382}
26383impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucCommonStyleBuilder<'a, 'b, A> {
26384  #[inline]
26385  pub fn add_background(&mut self, background: flatbuffers::WIPOffset<ElementBackground<'b >>) {
26386    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementBackground>>(DucCommonStyle::VT_BACKGROUND, background);
26387  }
26388  #[inline]
26389  pub fn add_stroke(&mut self, stroke: flatbuffers::WIPOffset<ElementStroke<'b >>) {
26390    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<ElementStroke>>(DucCommonStyle::VT_STROKE, stroke);
26391  }
26392  #[inline]
26393  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucCommonStyleBuilder<'a, 'b, A> {
26394    let start = _fbb.start_table();
26395    DucCommonStyleBuilder {
26396      fbb_: _fbb,
26397      start_: start,
26398    }
26399  }
26400  #[inline]
26401  pub fn finish(self) -> flatbuffers::WIPOffset<DucCommonStyle<'a>> {
26402    let o = self.fbb_.end_table(self.start_);
26403    flatbuffers::WIPOffset::new(o.value())
26404  }
26405}
26406
26407impl core::fmt::Debug for DucCommonStyle<'_> {
26408  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26409    let mut ds = f.debug_struct("DucCommonStyle");
26410      ds.field("background", &self.background());
26411      ds.field("stroke", &self.stroke());
26412      ds.finish()
26413  }
26414}
26415pub enum IdentifiedCommonStyleOffset {}
26416#[derive(Copy, Clone, PartialEq)]
26417
26418pub struct IdentifiedCommonStyle<'a> {
26419  pub _tab: flatbuffers::Table<'a>,
26420}
26421
26422impl<'a> flatbuffers::Follow<'a> for IdentifiedCommonStyle<'a> {
26423  type Inner = IdentifiedCommonStyle<'a>;
26424  #[inline]
26425  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26426    Self { _tab: flatbuffers::Table::new(buf, loc) }
26427  }
26428}
26429
26430impl<'a> IdentifiedCommonStyle<'a> {
26431  pub const VT_ID: flatbuffers::VOffsetT = 4;
26432  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
26433
26434  #[inline]
26435  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26436    IdentifiedCommonStyle { _tab: table }
26437  }
26438  #[allow(unused_mut)]
26439  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26440    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26441    args: &'args IdentifiedCommonStyleArgs<'args>
26442  ) -> flatbuffers::WIPOffset<IdentifiedCommonStyle<'bldr>> {
26443    let mut builder = IdentifiedCommonStyleBuilder::new(_fbb);
26444    if let Some(x) = args.style { builder.add_style(x); }
26445    if let Some(x) = args.id { builder.add_id(x); }
26446    builder.finish()
26447  }
26448
26449
26450  #[inline]
26451  pub fn id(&self) -> Option<Identifier<'a>> {
26452    // Safety:
26453    // Created from valid Table for this object
26454    // which contains a valid value in this slot
26455    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedCommonStyle::VT_ID, None)}
26456  }
26457  #[inline]
26458  pub fn style(&self) -> Option<DucCommonStyle<'a>> {
26459    // Safety:
26460    // Created from valid Table for this object
26461    // which contains a valid value in this slot
26462    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucCommonStyle>>(IdentifiedCommonStyle::VT_STYLE, None)}
26463  }
26464}
26465
26466impl flatbuffers::Verifiable for IdentifiedCommonStyle<'_> {
26467  #[inline]
26468  fn run_verifier(
26469    v: &mut flatbuffers::Verifier, pos: usize
26470  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26471    use self::flatbuffers::Verifiable;
26472    v.visit_table(pos)?
26473     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
26474     .visit_field::<flatbuffers::ForwardsUOffset<DucCommonStyle>>("style", Self::VT_STYLE, false)?
26475     .finish();
26476    Ok(())
26477  }
26478}
26479pub struct IdentifiedCommonStyleArgs<'a> {
26480    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
26481    pub style: Option<flatbuffers::WIPOffset<DucCommonStyle<'a>>>,
26482}
26483impl<'a> Default for IdentifiedCommonStyleArgs<'a> {
26484  #[inline]
26485  fn default() -> Self {
26486    IdentifiedCommonStyleArgs {
26487      id: None,
26488      style: None,
26489    }
26490  }
26491}
26492
26493pub struct IdentifiedCommonStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26494  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26495  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26496}
26497impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedCommonStyleBuilder<'a, 'b, A> {
26498  #[inline]
26499  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
26500    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedCommonStyle::VT_ID, id);
26501  }
26502  #[inline]
26503  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucCommonStyle<'b >>) {
26504    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucCommonStyle>>(IdentifiedCommonStyle::VT_STYLE, style);
26505  }
26506  #[inline]
26507  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedCommonStyleBuilder<'a, 'b, A> {
26508    let start = _fbb.start_table();
26509    IdentifiedCommonStyleBuilder {
26510      fbb_: _fbb,
26511      start_: start,
26512    }
26513  }
26514  #[inline]
26515  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedCommonStyle<'a>> {
26516    let o = self.fbb_.end_table(self.start_);
26517    flatbuffers::WIPOffset::new(o.value())
26518  }
26519}
26520
26521impl core::fmt::Debug for IdentifiedCommonStyle<'_> {
26522  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26523    let mut ds = f.debug_struct("IdentifiedCommonStyle");
26524      ds.field("id", &self.id());
26525      ds.field("style", &self.style());
26526      ds.finish()
26527  }
26528}
26529pub enum IdentifiedStackLikeStyleOffset {}
26530#[derive(Copy, Clone, PartialEq)]
26531
26532pub struct IdentifiedStackLikeStyle<'a> {
26533  pub _tab: flatbuffers::Table<'a>,
26534}
26535
26536impl<'a> flatbuffers::Follow<'a> for IdentifiedStackLikeStyle<'a> {
26537  type Inner = IdentifiedStackLikeStyle<'a>;
26538  #[inline]
26539  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26540    Self { _tab: flatbuffers::Table::new(buf, loc) }
26541  }
26542}
26543
26544impl<'a> IdentifiedStackLikeStyle<'a> {
26545  pub const VT_ID: flatbuffers::VOffsetT = 4;
26546  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
26547
26548  #[inline]
26549  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26550    IdentifiedStackLikeStyle { _tab: table }
26551  }
26552  #[allow(unused_mut)]
26553  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26554    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26555    args: &'args IdentifiedStackLikeStyleArgs<'args>
26556  ) -> flatbuffers::WIPOffset<IdentifiedStackLikeStyle<'bldr>> {
26557    let mut builder = IdentifiedStackLikeStyleBuilder::new(_fbb);
26558    if let Some(x) = args.style { builder.add_style(x); }
26559    if let Some(x) = args.id { builder.add_id(x); }
26560    builder.finish()
26561  }
26562
26563
26564  #[inline]
26565  pub fn id(&self) -> Option<Identifier<'a>> {
26566    // Safety:
26567    // Created from valid Table for this object
26568    // which contains a valid value in this slot
26569    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedStackLikeStyle::VT_ID, None)}
26570  }
26571  #[inline]
26572  pub fn style(&self) -> Option<DucStackLikeStyles<'a>> {
26573    // Safety:
26574    // Created from valid Table for this object
26575    // which contains a valid value in this slot
26576    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucStackLikeStyles>>(IdentifiedStackLikeStyle::VT_STYLE, None)}
26577  }
26578}
26579
26580impl flatbuffers::Verifiable for IdentifiedStackLikeStyle<'_> {
26581  #[inline]
26582  fn run_verifier(
26583    v: &mut flatbuffers::Verifier, pos: usize
26584  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26585    use self::flatbuffers::Verifiable;
26586    v.visit_table(pos)?
26587     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
26588     .visit_field::<flatbuffers::ForwardsUOffset<DucStackLikeStyles>>("style", Self::VT_STYLE, false)?
26589     .finish();
26590    Ok(())
26591  }
26592}
26593pub struct IdentifiedStackLikeStyleArgs<'a> {
26594    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
26595    pub style: Option<flatbuffers::WIPOffset<DucStackLikeStyles<'a>>>,
26596}
26597impl<'a> Default for IdentifiedStackLikeStyleArgs<'a> {
26598  #[inline]
26599  fn default() -> Self {
26600    IdentifiedStackLikeStyleArgs {
26601      id: None,
26602      style: None,
26603    }
26604  }
26605}
26606
26607pub struct IdentifiedStackLikeStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26608  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26609  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26610}
26611impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedStackLikeStyleBuilder<'a, 'b, A> {
26612  #[inline]
26613  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
26614    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedStackLikeStyle::VT_ID, id);
26615  }
26616  #[inline]
26617  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucStackLikeStyles<'b >>) {
26618    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucStackLikeStyles>>(IdentifiedStackLikeStyle::VT_STYLE, style);
26619  }
26620  #[inline]
26621  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedStackLikeStyleBuilder<'a, 'b, A> {
26622    let start = _fbb.start_table();
26623    IdentifiedStackLikeStyleBuilder {
26624      fbb_: _fbb,
26625      start_: start,
26626    }
26627  }
26628  #[inline]
26629  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedStackLikeStyle<'a>> {
26630    let o = self.fbb_.end_table(self.start_);
26631    flatbuffers::WIPOffset::new(o.value())
26632  }
26633}
26634
26635impl core::fmt::Debug for IdentifiedStackLikeStyle<'_> {
26636  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26637    let mut ds = f.debug_struct("IdentifiedStackLikeStyle");
26638      ds.field("id", &self.id());
26639      ds.field("style", &self.style());
26640      ds.finish()
26641  }
26642}
26643pub enum IdentifiedTextStyleOffset {}
26644#[derive(Copy, Clone, PartialEq)]
26645
26646pub struct IdentifiedTextStyle<'a> {
26647  pub _tab: flatbuffers::Table<'a>,
26648}
26649
26650impl<'a> flatbuffers::Follow<'a> for IdentifiedTextStyle<'a> {
26651  type Inner = IdentifiedTextStyle<'a>;
26652  #[inline]
26653  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26654    Self { _tab: flatbuffers::Table::new(buf, loc) }
26655  }
26656}
26657
26658impl<'a> IdentifiedTextStyle<'a> {
26659  pub const VT_ID: flatbuffers::VOffsetT = 4;
26660  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
26661
26662  #[inline]
26663  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26664    IdentifiedTextStyle { _tab: table }
26665  }
26666  #[allow(unused_mut)]
26667  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26668    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26669    args: &'args IdentifiedTextStyleArgs<'args>
26670  ) -> flatbuffers::WIPOffset<IdentifiedTextStyle<'bldr>> {
26671    let mut builder = IdentifiedTextStyleBuilder::new(_fbb);
26672    if let Some(x) = args.style { builder.add_style(x); }
26673    if let Some(x) = args.id { builder.add_id(x); }
26674    builder.finish()
26675  }
26676
26677
26678  #[inline]
26679  pub fn id(&self) -> Option<Identifier<'a>> {
26680    // Safety:
26681    // Created from valid Table for this object
26682    // which contains a valid value in this slot
26683    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedTextStyle::VT_ID, None)}
26684  }
26685  #[inline]
26686  pub fn style(&self) -> Option<DucTextStyle<'a>> {
26687    // Safety:
26688    // Created from valid Table for this object
26689    // which contains a valid value in this slot
26690    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTextStyle>>(IdentifiedTextStyle::VT_STYLE, None)}
26691  }
26692}
26693
26694impl flatbuffers::Verifiable for IdentifiedTextStyle<'_> {
26695  #[inline]
26696  fn run_verifier(
26697    v: &mut flatbuffers::Verifier, pos: usize
26698  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26699    use self::flatbuffers::Verifiable;
26700    v.visit_table(pos)?
26701     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
26702     .visit_field::<flatbuffers::ForwardsUOffset<DucTextStyle>>("style", Self::VT_STYLE, false)?
26703     .finish();
26704    Ok(())
26705  }
26706}
26707pub struct IdentifiedTextStyleArgs<'a> {
26708    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
26709    pub style: Option<flatbuffers::WIPOffset<DucTextStyle<'a>>>,
26710}
26711impl<'a> Default for IdentifiedTextStyleArgs<'a> {
26712  #[inline]
26713  fn default() -> Self {
26714    IdentifiedTextStyleArgs {
26715      id: None,
26716      style: None,
26717    }
26718  }
26719}
26720
26721pub struct IdentifiedTextStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26722  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26723  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26724}
26725impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedTextStyleBuilder<'a, 'b, A> {
26726  #[inline]
26727  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
26728    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedTextStyle::VT_ID, id);
26729  }
26730  #[inline]
26731  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucTextStyle<'b >>) {
26732    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTextStyle>>(IdentifiedTextStyle::VT_STYLE, style);
26733  }
26734  #[inline]
26735  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedTextStyleBuilder<'a, 'b, A> {
26736    let start = _fbb.start_table();
26737    IdentifiedTextStyleBuilder {
26738      fbb_: _fbb,
26739      start_: start,
26740    }
26741  }
26742  #[inline]
26743  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedTextStyle<'a>> {
26744    let o = self.fbb_.end_table(self.start_);
26745    flatbuffers::WIPOffset::new(o.value())
26746  }
26747}
26748
26749impl core::fmt::Debug for IdentifiedTextStyle<'_> {
26750  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26751    let mut ds = f.debug_struct("IdentifiedTextStyle");
26752      ds.field("id", &self.id());
26753      ds.field("style", &self.style());
26754      ds.finish()
26755  }
26756}
26757pub enum IdentifiedDimensionStyleOffset {}
26758#[derive(Copy, Clone, PartialEq)]
26759
26760pub struct IdentifiedDimensionStyle<'a> {
26761  pub _tab: flatbuffers::Table<'a>,
26762}
26763
26764impl<'a> flatbuffers::Follow<'a> for IdentifiedDimensionStyle<'a> {
26765  type Inner = IdentifiedDimensionStyle<'a>;
26766  #[inline]
26767  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26768    Self { _tab: flatbuffers::Table::new(buf, loc) }
26769  }
26770}
26771
26772impl<'a> IdentifiedDimensionStyle<'a> {
26773  pub const VT_ID: flatbuffers::VOffsetT = 4;
26774  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
26775
26776  #[inline]
26777  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26778    IdentifiedDimensionStyle { _tab: table }
26779  }
26780  #[allow(unused_mut)]
26781  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26782    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26783    args: &'args IdentifiedDimensionStyleArgs<'args>
26784  ) -> flatbuffers::WIPOffset<IdentifiedDimensionStyle<'bldr>> {
26785    let mut builder = IdentifiedDimensionStyleBuilder::new(_fbb);
26786    if let Some(x) = args.style { builder.add_style(x); }
26787    if let Some(x) = args.id { builder.add_id(x); }
26788    builder.finish()
26789  }
26790
26791
26792  #[inline]
26793  pub fn id(&self) -> Option<Identifier<'a>> {
26794    // Safety:
26795    // Created from valid Table for this object
26796    // which contains a valid value in this slot
26797    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedDimensionStyle::VT_ID, None)}
26798  }
26799  #[inline]
26800  pub fn style(&self) -> Option<DucDimensionStyle<'a>> {
26801    // Safety:
26802    // Created from valid Table for this object
26803    // which contains a valid value in this slot
26804    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucDimensionStyle>>(IdentifiedDimensionStyle::VT_STYLE, None)}
26805  }
26806}
26807
26808impl flatbuffers::Verifiable for IdentifiedDimensionStyle<'_> {
26809  #[inline]
26810  fn run_verifier(
26811    v: &mut flatbuffers::Verifier, pos: usize
26812  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26813    use self::flatbuffers::Verifiable;
26814    v.visit_table(pos)?
26815     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
26816     .visit_field::<flatbuffers::ForwardsUOffset<DucDimensionStyle>>("style", Self::VT_STYLE, false)?
26817     .finish();
26818    Ok(())
26819  }
26820}
26821pub struct IdentifiedDimensionStyleArgs<'a> {
26822    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
26823    pub style: Option<flatbuffers::WIPOffset<DucDimensionStyle<'a>>>,
26824}
26825impl<'a> Default for IdentifiedDimensionStyleArgs<'a> {
26826  #[inline]
26827  fn default() -> Self {
26828    IdentifiedDimensionStyleArgs {
26829      id: None,
26830      style: None,
26831    }
26832  }
26833}
26834
26835pub struct IdentifiedDimensionStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26836  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26837  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26838}
26839impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedDimensionStyleBuilder<'a, 'b, A> {
26840  #[inline]
26841  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
26842    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedDimensionStyle::VT_ID, id);
26843  }
26844  #[inline]
26845  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucDimensionStyle<'b >>) {
26846    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucDimensionStyle>>(IdentifiedDimensionStyle::VT_STYLE, style);
26847  }
26848  #[inline]
26849  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedDimensionStyleBuilder<'a, 'b, A> {
26850    let start = _fbb.start_table();
26851    IdentifiedDimensionStyleBuilder {
26852      fbb_: _fbb,
26853      start_: start,
26854    }
26855  }
26856  #[inline]
26857  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedDimensionStyle<'a>> {
26858    let o = self.fbb_.end_table(self.start_);
26859    flatbuffers::WIPOffset::new(o.value())
26860  }
26861}
26862
26863impl core::fmt::Debug for IdentifiedDimensionStyle<'_> {
26864  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26865    let mut ds = f.debug_struct("IdentifiedDimensionStyle");
26866      ds.field("id", &self.id());
26867      ds.field("style", &self.style());
26868      ds.finish()
26869  }
26870}
26871pub enum IdentifiedLeaderStyleOffset {}
26872#[derive(Copy, Clone, PartialEq)]
26873
26874pub struct IdentifiedLeaderStyle<'a> {
26875  pub _tab: flatbuffers::Table<'a>,
26876}
26877
26878impl<'a> flatbuffers::Follow<'a> for IdentifiedLeaderStyle<'a> {
26879  type Inner = IdentifiedLeaderStyle<'a>;
26880  #[inline]
26881  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26882    Self { _tab: flatbuffers::Table::new(buf, loc) }
26883  }
26884}
26885
26886impl<'a> IdentifiedLeaderStyle<'a> {
26887  pub const VT_ID: flatbuffers::VOffsetT = 4;
26888  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
26889
26890  #[inline]
26891  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
26892    IdentifiedLeaderStyle { _tab: table }
26893  }
26894  #[allow(unused_mut)]
26895  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
26896    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
26897    args: &'args IdentifiedLeaderStyleArgs<'args>
26898  ) -> flatbuffers::WIPOffset<IdentifiedLeaderStyle<'bldr>> {
26899    let mut builder = IdentifiedLeaderStyleBuilder::new(_fbb);
26900    if let Some(x) = args.style { builder.add_style(x); }
26901    if let Some(x) = args.id { builder.add_id(x); }
26902    builder.finish()
26903  }
26904
26905
26906  #[inline]
26907  pub fn id(&self) -> Option<Identifier<'a>> {
26908    // Safety:
26909    // Created from valid Table for this object
26910    // which contains a valid value in this slot
26911    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedLeaderStyle::VT_ID, None)}
26912  }
26913  #[inline]
26914  pub fn style(&self) -> Option<DucLeaderStyle<'a>> {
26915    // Safety:
26916    // Created from valid Table for this object
26917    // which contains a valid value in this slot
26918    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLeaderStyle>>(IdentifiedLeaderStyle::VT_STYLE, None)}
26919  }
26920}
26921
26922impl flatbuffers::Verifiable for IdentifiedLeaderStyle<'_> {
26923  #[inline]
26924  fn run_verifier(
26925    v: &mut flatbuffers::Verifier, pos: usize
26926  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
26927    use self::flatbuffers::Verifiable;
26928    v.visit_table(pos)?
26929     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
26930     .visit_field::<flatbuffers::ForwardsUOffset<DucLeaderStyle>>("style", Self::VT_STYLE, false)?
26931     .finish();
26932    Ok(())
26933  }
26934}
26935pub struct IdentifiedLeaderStyleArgs<'a> {
26936    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
26937    pub style: Option<flatbuffers::WIPOffset<DucLeaderStyle<'a>>>,
26938}
26939impl<'a> Default for IdentifiedLeaderStyleArgs<'a> {
26940  #[inline]
26941  fn default() -> Self {
26942    IdentifiedLeaderStyleArgs {
26943      id: None,
26944      style: None,
26945    }
26946  }
26947}
26948
26949pub struct IdentifiedLeaderStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
26950  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
26951  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
26952}
26953impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedLeaderStyleBuilder<'a, 'b, A> {
26954  #[inline]
26955  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
26956    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedLeaderStyle::VT_ID, id);
26957  }
26958  #[inline]
26959  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucLeaderStyle<'b >>) {
26960    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLeaderStyle>>(IdentifiedLeaderStyle::VT_STYLE, style);
26961  }
26962  #[inline]
26963  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedLeaderStyleBuilder<'a, 'b, A> {
26964    let start = _fbb.start_table();
26965    IdentifiedLeaderStyleBuilder {
26966      fbb_: _fbb,
26967      start_: start,
26968    }
26969  }
26970  #[inline]
26971  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedLeaderStyle<'a>> {
26972    let o = self.fbb_.end_table(self.start_);
26973    flatbuffers::WIPOffset::new(o.value())
26974  }
26975}
26976
26977impl core::fmt::Debug for IdentifiedLeaderStyle<'_> {
26978  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
26979    let mut ds = f.debug_struct("IdentifiedLeaderStyle");
26980      ds.field("id", &self.id());
26981      ds.field("style", &self.style());
26982      ds.finish()
26983  }
26984}
26985pub enum IdentifiedFCFStyleOffset {}
26986#[derive(Copy, Clone, PartialEq)]
26987
26988pub struct IdentifiedFCFStyle<'a> {
26989  pub _tab: flatbuffers::Table<'a>,
26990}
26991
26992impl<'a> flatbuffers::Follow<'a> for IdentifiedFCFStyle<'a> {
26993  type Inner = IdentifiedFCFStyle<'a>;
26994  #[inline]
26995  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
26996    Self { _tab: flatbuffers::Table::new(buf, loc) }
26997  }
26998}
26999
27000impl<'a> IdentifiedFCFStyle<'a> {
27001  pub const VT_ID: flatbuffers::VOffsetT = 4;
27002  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27003
27004  #[inline]
27005  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27006    IdentifiedFCFStyle { _tab: table }
27007  }
27008  #[allow(unused_mut)]
27009  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27010    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27011    args: &'args IdentifiedFCFStyleArgs<'args>
27012  ) -> flatbuffers::WIPOffset<IdentifiedFCFStyle<'bldr>> {
27013    let mut builder = IdentifiedFCFStyleBuilder::new(_fbb);
27014    if let Some(x) = args.style { builder.add_style(x); }
27015    if let Some(x) = args.id { builder.add_id(x); }
27016    builder.finish()
27017  }
27018
27019
27020  #[inline]
27021  pub fn id(&self) -> Option<Identifier<'a>> {
27022    // Safety:
27023    // Created from valid Table for this object
27024    // which contains a valid value in this slot
27025    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedFCFStyle::VT_ID, None)}
27026  }
27027  #[inline]
27028  pub fn style(&self) -> Option<DucFeatureControlFrameStyle<'a>> {
27029    // Safety:
27030    // Created from valid Table for this object
27031    // which contains a valid value in this slot
27032    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucFeatureControlFrameStyle>>(IdentifiedFCFStyle::VT_STYLE, None)}
27033  }
27034}
27035
27036impl flatbuffers::Verifiable for IdentifiedFCFStyle<'_> {
27037  #[inline]
27038  fn run_verifier(
27039    v: &mut flatbuffers::Verifier, pos: usize
27040  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27041    use self::flatbuffers::Verifiable;
27042    v.visit_table(pos)?
27043     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27044     .visit_field::<flatbuffers::ForwardsUOffset<DucFeatureControlFrameStyle>>("style", Self::VT_STYLE, false)?
27045     .finish();
27046    Ok(())
27047  }
27048}
27049pub struct IdentifiedFCFStyleArgs<'a> {
27050    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27051    pub style: Option<flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'a>>>,
27052}
27053impl<'a> Default for IdentifiedFCFStyleArgs<'a> {
27054  #[inline]
27055  fn default() -> Self {
27056    IdentifiedFCFStyleArgs {
27057      id: None,
27058      style: None,
27059    }
27060  }
27061}
27062
27063pub struct IdentifiedFCFStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27064  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27065  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27066}
27067impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedFCFStyleBuilder<'a, 'b, A> {
27068  #[inline]
27069  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27070    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedFCFStyle::VT_ID, id);
27071  }
27072  #[inline]
27073  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucFeatureControlFrameStyle<'b >>) {
27074    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucFeatureControlFrameStyle>>(IdentifiedFCFStyle::VT_STYLE, style);
27075  }
27076  #[inline]
27077  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedFCFStyleBuilder<'a, 'b, A> {
27078    let start = _fbb.start_table();
27079    IdentifiedFCFStyleBuilder {
27080      fbb_: _fbb,
27081      start_: start,
27082    }
27083  }
27084  #[inline]
27085  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedFCFStyle<'a>> {
27086    let o = self.fbb_.end_table(self.start_);
27087    flatbuffers::WIPOffset::new(o.value())
27088  }
27089}
27090
27091impl core::fmt::Debug for IdentifiedFCFStyle<'_> {
27092  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27093    let mut ds = f.debug_struct("IdentifiedFCFStyle");
27094      ds.field("id", &self.id());
27095      ds.field("style", &self.style());
27096      ds.finish()
27097  }
27098}
27099pub enum IdentifiedTableStyleOffset {}
27100#[derive(Copy, Clone, PartialEq)]
27101
27102pub struct IdentifiedTableStyle<'a> {
27103  pub _tab: flatbuffers::Table<'a>,
27104}
27105
27106impl<'a> flatbuffers::Follow<'a> for IdentifiedTableStyle<'a> {
27107  type Inner = IdentifiedTableStyle<'a>;
27108  #[inline]
27109  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27110    Self { _tab: flatbuffers::Table::new(buf, loc) }
27111  }
27112}
27113
27114impl<'a> IdentifiedTableStyle<'a> {
27115  pub const VT_ID: flatbuffers::VOffsetT = 4;
27116  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27117
27118  #[inline]
27119  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27120    IdentifiedTableStyle { _tab: table }
27121  }
27122  #[allow(unused_mut)]
27123  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27124    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27125    args: &'args IdentifiedTableStyleArgs<'args>
27126  ) -> flatbuffers::WIPOffset<IdentifiedTableStyle<'bldr>> {
27127    let mut builder = IdentifiedTableStyleBuilder::new(_fbb);
27128    if let Some(x) = args.style { builder.add_style(x); }
27129    if let Some(x) = args.id { builder.add_id(x); }
27130    builder.finish()
27131  }
27132
27133
27134  #[inline]
27135  pub fn id(&self) -> Option<Identifier<'a>> {
27136    // Safety:
27137    // Created from valid Table for this object
27138    // which contains a valid value in this slot
27139    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedTableStyle::VT_ID, None)}
27140  }
27141  #[inline]
27142  pub fn style(&self) -> Option<DucTableStyle<'a>> {
27143    // Safety:
27144    // Created from valid Table for this object
27145    // which contains a valid value in this slot
27146    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucTableStyle>>(IdentifiedTableStyle::VT_STYLE, None)}
27147  }
27148}
27149
27150impl flatbuffers::Verifiable for IdentifiedTableStyle<'_> {
27151  #[inline]
27152  fn run_verifier(
27153    v: &mut flatbuffers::Verifier, pos: usize
27154  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27155    use self::flatbuffers::Verifiable;
27156    v.visit_table(pos)?
27157     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27158     .visit_field::<flatbuffers::ForwardsUOffset<DucTableStyle>>("style", Self::VT_STYLE, false)?
27159     .finish();
27160    Ok(())
27161  }
27162}
27163pub struct IdentifiedTableStyleArgs<'a> {
27164    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27165    pub style: Option<flatbuffers::WIPOffset<DucTableStyle<'a>>>,
27166}
27167impl<'a> Default for IdentifiedTableStyleArgs<'a> {
27168  #[inline]
27169  fn default() -> Self {
27170    IdentifiedTableStyleArgs {
27171      id: None,
27172      style: None,
27173    }
27174  }
27175}
27176
27177pub struct IdentifiedTableStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27178  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27179  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27180}
27181impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedTableStyleBuilder<'a, 'b, A> {
27182  #[inline]
27183  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27184    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedTableStyle::VT_ID, id);
27185  }
27186  #[inline]
27187  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucTableStyle<'b >>) {
27188    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucTableStyle>>(IdentifiedTableStyle::VT_STYLE, style);
27189  }
27190  #[inline]
27191  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedTableStyleBuilder<'a, 'b, A> {
27192    let start = _fbb.start_table();
27193    IdentifiedTableStyleBuilder {
27194      fbb_: _fbb,
27195      start_: start,
27196    }
27197  }
27198  #[inline]
27199  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedTableStyle<'a>> {
27200    let o = self.fbb_.end_table(self.start_);
27201    flatbuffers::WIPOffset::new(o.value())
27202  }
27203}
27204
27205impl core::fmt::Debug for IdentifiedTableStyle<'_> {
27206  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27207    let mut ds = f.debug_struct("IdentifiedTableStyle");
27208      ds.field("id", &self.id());
27209      ds.field("style", &self.style());
27210      ds.finish()
27211  }
27212}
27213pub enum IdentifiedDocStyleOffset {}
27214#[derive(Copy, Clone, PartialEq)]
27215
27216pub struct IdentifiedDocStyle<'a> {
27217  pub _tab: flatbuffers::Table<'a>,
27218}
27219
27220impl<'a> flatbuffers::Follow<'a> for IdentifiedDocStyle<'a> {
27221  type Inner = IdentifiedDocStyle<'a>;
27222  #[inline]
27223  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27224    Self { _tab: flatbuffers::Table::new(buf, loc) }
27225  }
27226}
27227
27228impl<'a> IdentifiedDocStyle<'a> {
27229  pub const VT_ID: flatbuffers::VOffsetT = 4;
27230  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27231
27232  #[inline]
27233  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27234    IdentifiedDocStyle { _tab: table }
27235  }
27236  #[allow(unused_mut)]
27237  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27238    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27239    args: &'args IdentifiedDocStyleArgs<'args>
27240  ) -> flatbuffers::WIPOffset<IdentifiedDocStyle<'bldr>> {
27241    let mut builder = IdentifiedDocStyleBuilder::new(_fbb);
27242    if let Some(x) = args.style { builder.add_style(x); }
27243    if let Some(x) = args.id { builder.add_id(x); }
27244    builder.finish()
27245  }
27246
27247
27248  #[inline]
27249  pub fn id(&self) -> Option<Identifier<'a>> {
27250    // Safety:
27251    // Created from valid Table for this object
27252    // which contains a valid value in this slot
27253    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedDocStyle::VT_ID, None)}
27254  }
27255  #[inline]
27256  pub fn style(&self) -> Option<DucDocStyle<'a>> {
27257    // Safety:
27258    // Created from valid Table for this object
27259    // which contains a valid value in this slot
27260    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucDocStyle>>(IdentifiedDocStyle::VT_STYLE, None)}
27261  }
27262}
27263
27264impl flatbuffers::Verifiable for IdentifiedDocStyle<'_> {
27265  #[inline]
27266  fn run_verifier(
27267    v: &mut flatbuffers::Verifier, pos: usize
27268  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27269    use self::flatbuffers::Verifiable;
27270    v.visit_table(pos)?
27271     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27272     .visit_field::<flatbuffers::ForwardsUOffset<DucDocStyle>>("style", Self::VT_STYLE, false)?
27273     .finish();
27274    Ok(())
27275  }
27276}
27277pub struct IdentifiedDocStyleArgs<'a> {
27278    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27279    pub style: Option<flatbuffers::WIPOffset<DucDocStyle<'a>>>,
27280}
27281impl<'a> Default for IdentifiedDocStyleArgs<'a> {
27282  #[inline]
27283  fn default() -> Self {
27284    IdentifiedDocStyleArgs {
27285      id: None,
27286      style: None,
27287    }
27288  }
27289}
27290
27291pub struct IdentifiedDocStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27292  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27293  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27294}
27295impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedDocStyleBuilder<'a, 'b, A> {
27296  #[inline]
27297  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27298    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedDocStyle::VT_ID, id);
27299  }
27300  #[inline]
27301  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucDocStyle<'b >>) {
27302    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucDocStyle>>(IdentifiedDocStyle::VT_STYLE, style);
27303  }
27304  #[inline]
27305  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedDocStyleBuilder<'a, 'b, A> {
27306    let start = _fbb.start_table();
27307    IdentifiedDocStyleBuilder {
27308      fbb_: _fbb,
27309      start_: start,
27310    }
27311  }
27312  #[inline]
27313  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedDocStyle<'a>> {
27314    let o = self.fbb_.end_table(self.start_);
27315    flatbuffers::WIPOffset::new(o.value())
27316  }
27317}
27318
27319impl core::fmt::Debug for IdentifiedDocStyle<'_> {
27320  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27321    let mut ds = f.debug_struct("IdentifiedDocStyle");
27322      ds.field("id", &self.id());
27323      ds.field("style", &self.style());
27324      ds.finish()
27325  }
27326}
27327pub enum IdentifiedViewportStyleOffset {}
27328#[derive(Copy, Clone, PartialEq)]
27329
27330pub struct IdentifiedViewportStyle<'a> {
27331  pub _tab: flatbuffers::Table<'a>,
27332}
27333
27334impl<'a> flatbuffers::Follow<'a> for IdentifiedViewportStyle<'a> {
27335  type Inner = IdentifiedViewportStyle<'a>;
27336  #[inline]
27337  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27338    Self { _tab: flatbuffers::Table::new(buf, loc) }
27339  }
27340}
27341
27342impl<'a> IdentifiedViewportStyle<'a> {
27343  pub const VT_ID: flatbuffers::VOffsetT = 4;
27344  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27345
27346  #[inline]
27347  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27348    IdentifiedViewportStyle { _tab: table }
27349  }
27350  #[allow(unused_mut)]
27351  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27352    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27353    args: &'args IdentifiedViewportStyleArgs<'args>
27354  ) -> flatbuffers::WIPOffset<IdentifiedViewportStyle<'bldr>> {
27355    let mut builder = IdentifiedViewportStyleBuilder::new(_fbb);
27356    if let Some(x) = args.style { builder.add_style(x); }
27357    if let Some(x) = args.id { builder.add_id(x); }
27358    builder.finish()
27359  }
27360
27361
27362  #[inline]
27363  pub fn id(&self) -> Option<Identifier<'a>> {
27364    // Safety:
27365    // Created from valid Table for this object
27366    // which contains a valid value in this slot
27367    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedViewportStyle::VT_ID, None)}
27368  }
27369  #[inline]
27370  pub fn style(&self) -> Option<DucViewportStyle<'a>> {
27371    // Safety:
27372    // Created from valid Table for this object
27373    // which contains a valid value in this slot
27374    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucViewportStyle>>(IdentifiedViewportStyle::VT_STYLE, None)}
27375  }
27376}
27377
27378impl flatbuffers::Verifiable for IdentifiedViewportStyle<'_> {
27379  #[inline]
27380  fn run_verifier(
27381    v: &mut flatbuffers::Verifier, pos: usize
27382  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27383    use self::flatbuffers::Verifiable;
27384    v.visit_table(pos)?
27385     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27386     .visit_field::<flatbuffers::ForwardsUOffset<DucViewportStyle>>("style", Self::VT_STYLE, false)?
27387     .finish();
27388    Ok(())
27389  }
27390}
27391pub struct IdentifiedViewportStyleArgs<'a> {
27392    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27393    pub style: Option<flatbuffers::WIPOffset<DucViewportStyle<'a>>>,
27394}
27395impl<'a> Default for IdentifiedViewportStyleArgs<'a> {
27396  #[inline]
27397  fn default() -> Self {
27398    IdentifiedViewportStyleArgs {
27399      id: None,
27400      style: None,
27401    }
27402  }
27403}
27404
27405pub struct IdentifiedViewportStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27406  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27407  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27408}
27409impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedViewportStyleBuilder<'a, 'b, A> {
27410  #[inline]
27411  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27412    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedViewportStyle::VT_ID, id);
27413  }
27414  #[inline]
27415  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucViewportStyle<'b >>) {
27416    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucViewportStyle>>(IdentifiedViewportStyle::VT_STYLE, style);
27417  }
27418  #[inline]
27419  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedViewportStyleBuilder<'a, 'b, A> {
27420    let start = _fbb.start_table();
27421    IdentifiedViewportStyleBuilder {
27422      fbb_: _fbb,
27423      start_: start,
27424    }
27425  }
27426  #[inline]
27427  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedViewportStyle<'a>> {
27428    let o = self.fbb_.end_table(self.start_);
27429    flatbuffers::WIPOffset::new(o.value())
27430  }
27431}
27432
27433impl core::fmt::Debug for IdentifiedViewportStyle<'_> {
27434  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27435    let mut ds = f.debug_struct("IdentifiedViewportStyle");
27436      ds.field("id", &self.id());
27437      ds.field("style", &self.style());
27438      ds.finish()
27439  }
27440}
27441pub enum IdentifiedHatchStyleOffset {}
27442#[derive(Copy, Clone, PartialEq)]
27443
27444pub struct IdentifiedHatchStyle<'a> {
27445  pub _tab: flatbuffers::Table<'a>,
27446}
27447
27448impl<'a> flatbuffers::Follow<'a> for IdentifiedHatchStyle<'a> {
27449  type Inner = IdentifiedHatchStyle<'a>;
27450  #[inline]
27451  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27452    Self { _tab: flatbuffers::Table::new(buf, loc) }
27453  }
27454}
27455
27456impl<'a> IdentifiedHatchStyle<'a> {
27457  pub const VT_ID: flatbuffers::VOffsetT = 4;
27458  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27459
27460  #[inline]
27461  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27462    IdentifiedHatchStyle { _tab: table }
27463  }
27464  #[allow(unused_mut)]
27465  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27466    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27467    args: &'args IdentifiedHatchStyleArgs<'args>
27468  ) -> flatbuffers::WIPOffset<IdentifiedHatchStyle<'bldr>> {
27469    let mut builder = IdentifiedHatchStyleBuilder::new(_fbb);
27470    if let Some(x) = args.style { builder.add_style(x); }
27471    if let Some(x) = args.id { builder.add_id(x); }
27472    builder.finish()
27473  }
27474
27475
27476  #[inline]
27477  pub fn id(&self) -> Option<Identifier<'a>> {
27478    // Safety:
27479    // Created from valid Table for this object
27480    // which contains a valid value in this slot
27481    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedHatchStyle::VT_ID, None)}
27482  }
27483  #[inline]
27484  pub fn style(&self) -> Option<DucHatchStyle<'a>> {
27485    // Safety:
27486    // Created from valid Table for this object
27487    // which contains a valid value in this slot
27488    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucHatchStyle>>(IdentifiedHatchStyle::VT_STYLE, None)}
27489  }
27490}
27491
27492impl flatbuffers::Verifiable for IdentifiedHatchStyle<'_> {
27493  #[inline]
27494  fn run_verifier(
27495    v: &mut flatbuffers::Verifier, pos: usize
27496  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27497    use self::flatbuffers::Verifiable;
27498    v.visit_table(pos)?
27499     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27500     .visit_field::<flatbuffers::ForwardsUOffset<DucHatchStyle>>("style", Self::VT_STYLE, false)?
27501     .finish();
27502    Ok(())
27503  }
27504}
27505pub struct IdentifiedHatchStyleArgs<'a> {
27506    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27507    pub style: Option<flatbuffers::WIPOffset<DucHatchStyle<'a>>>,
27508}
27509impl<'a> Default for IdentifiedHatchStyleArgs<'a> {
27510  #[inline]
27511  fn default() -> Self {
27512    IdentifiedHatchStyleArgs {
27513      id: None,
27514      style: None,
27515    }
27516  }
27517}
27518
27519pub struct IdentifiedHatchStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27520  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27521  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27522}
27523impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedHatchStyleBuilder<'a, 'b, A> {
27524  #[inline]
27525  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27526    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedHatchStyle::VT_ID, id);
27527  }
27528  #[inline]
27529  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucHatchStyle<'b >>) {
27530    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucHatchStyle>>(IdentifiedHatchStyle::VT_STYLE, style);
27531  }
27532  #[inline]
27533  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedHatchStyleBuilder<'a, 'b, A> {
27534    let start = _fbb.start_table();
27535    IdentifiedHatchStyleBuilder {
27536      fbb_: _fbb,
27537      start_: start,
27538    }
27539  }
27540  #[inline]
27541  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedHatchStyle<'a>> {
27542    let o = self.fbb_.end_table(self.start_);
27543    flatbuffers::WIPOffset::new(o.value())
27544  }
27545}
27546
27547impl core::fmt::Debug for IdentifiedHatchStyle<'_> {
27548  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27549    let mut ds = f.debug_struct("IdentifiedHatchStyle");
27550      ds.field("id", &self.id());
27551      ds.field("style", &self.style());
27552      ds.finish()
27553  }
27554}
27555pub enum IdentifiedXRayStyleOffset {}
27556#[derive(Copy, Clone, PartialEq)]
27557
27558pub struct IdentifiedXRayStyle<'a> {
27559  pub _tab: flatbuffers::Table<'a>,
27560}
27561
27562impl<'a> flatbuffers::Follow<'a> for IdentifiedXRayStyle<'a> {
27563  type Inner = IdentifiedXRayStyle<'a>;
27564  #[inline]
27565  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27566    Self { _tab: flatbuffers::Table::new(buf, loc) }
27567  }
27568}
27569
27570impl<'a> IdentifiedXRayStyle<'a> {
27571  pub const VT_ID: flatbuffers::VOffsetT = 4;
27572  pub const VT_STYLE: flatbuffers::VOffsetT = 6;
27573
27574  #[inline]
27575  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27576    IdentifiedXRayStyle { _tab: table }
27577  }
27578  #[allow(unused_mut)]
27579  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27580    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27581    args: &'args IdentifiedXRayStyleArgs<'args>
27582  ) -> flatbuffers::WIPOffset<IdentifiedXRayStyle<'bldr>> {
27583    let mut builder = IdentifiedXRayStyleBuilder::new(_fbb);
27584    if let Some(x) = args.style { builder.add_style(x); }
27585    if let Some(x) = args.id { builder.add_id(x); }
27586    builder.finish()
27587  }
27588
27589
27590  #[inline]
27591  pub fn id(&self) -> Option<Identifier<'a>> {
27592    // Safety:
27593    // Created from valid Table for this object
27594    // which contains a valid value in this slot
27595    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedXRayStyle::VT_ID, None)}
27596  }
27597  #[inline]
27598  pub fn style(&self) -> Option<DucXRayStyle<'a>> {
27599    // Safety:
27600    // Created from valid Table for this object
27601    // which contains a valid value in this slot
27602    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucXRayStyle>>(IdentifiedXRayStyle::VT_STYLE, None)}
27603  }
27604}
27605
27606impl flatbuffers::Verifiable for IdentifiedXRayStyle<'_> {
27607  #[inline]
27608  fn run_verifier(
27609    v: &mut flatbuffers::Verifier, pos: usize
27610  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27611    use self::flatbuffers::Verifiable;
27612    v.visit_table(pos)?
27613     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
27614     .visit_field::<flatbuffers::ForwardsUOffset<DucXRayStyle>>("style", Self::VT_STYLE, false)?
27615     .finish();
27616    Ok(())
27617  }
27618}
27619pub struct IdentifiedXRayStyleArgs<'a> {
27620    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
27621    pub style: Option<flatbuffers::WIPOffset<DucXRayStyle<'a>>>,
27622}
27623impl<'a> Default for IdentifiedXRayStyleArgs<'a> {
27624  #[inline]
27625  fn default() -> Self {
27626    IdentifiedXRayStyleArgs {
27627      id: None,
27628      style: None,
27629    }
27630  }
27631}
27632
27633pub struct IdentifiedXRayStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27634  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27635  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27636}
27637impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedXRayStyleBuilder<'a, 'b, A> {
27638  #[inline]
27639  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
27640    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedXRayStyle::VT_ID, id);
27641  }
27642  #[inline]
27643  pub fn add_style(&mut self, style: flatbuffers::WIPOffset<DucXRayStyle<'b >>) {
27644    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucXRayStyle>>(IdentifiedXRayStyle::VT_STYLE, style);
27645  }
27646  #[inline]
27647  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedXRayStyleBuilder<'a, 'b, A> {
27648    let start = _fbb.start_table();
27649    IdentifiedXRayStyleBuilder {
27650      fbb_: _fbb,
27651      start_: start,
27652    }
27653  }
27654  #[inline]
27655  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedXRayStyle<'a>> {
27656    let o = self.fbb_.end_table(self.start_);
27657    flatbuffers::WIPOffset::new(o.value())
27658  }
27659}
27660
27661impl core::fmt::Debug for IdentifiedXRayStyle<'_> {
27662  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27663    let mut ds = f.debug_struct("IdentifiedXRayStyle");
27664      ds.field("id", &self.id());
27665      ds.field("style", &self.style());
27666      ds.finish()
27667  }
27668}
27669pub enum StandardStylesOffset {}
27670#[derive(Copy, Clone, PartialEq)]
27671
27672pub struct StandardStyles<'a> {
27673  pub _tab: flatbuffers::Table<'a>,
27674}
27675
27676impl<'a> flatbuffers::Follow<'a> for StandardStyles<'a> {
27677  type Inner = StandardStyles<'a>;
27678  #[inline]
27679  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27680    Self { _tab: flatbuffers::Table::new(buf, loc) }
27681  }
27682}
27683
27684impl<'a> StandardStyles<'a> {
27685  pub const VT_COMMON_STYLES: flatbuffers::VOffsetT = 4;
27686  pub const VT_STACK_LIKE_STYLES: flatbuffers::VOffsetT = 6;
27687  pub const VT_TEXT_STYLES: flatbuffers::VOffsetT = 8;
27688  pub const VT_DIMENSION_STYLES: flatbuffers::VOffsetT = 10;
27689  pub const VT_LEADER_STYLES: flatbuffers::VOffsetT = 12;
27690  pub const VT_FEATURE_CONTROL_FRAME_STYLES: flatbuffers::VOffsetT = 14;
27691  pub const VT_TABLE_STYLES: flatbuffers::VOffsetT = 16;
27692  pub const VT_DOC_STYLES: flatbuffers::VOffsetT = 18;
27693  pub const VT_VIEWPORT_STYLES: flatbuffers::VOffsetT = 20;
27694  pub const VT_HATCH_STYLES: flatbuffers::VOffsetT = 22;
27695  pub const VT_XRAY_STYLES: flatbuffers::VOffsetT = 24;
27696
27697  #[inline]
27698  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27699    StandardStyles { _tab: table }
27700  }
27701  #[allow(unused_mut)]
27702  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27703    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27704    args: &'args StandardStylesArgs<'args>
27705  ) -> flatbuffers::WIPOffset<StandardStyles<'bldr>> {
27706    let mut builder = StandardStylesBuilder::new(_fbb);
27707    if let Some(x) = args.xray_styles { builder.add_xray_styles(x); }
27708    if let Some(x) = args.hatch_styles { builder.add_hatch_styles(x); }
27709    if let Some(x) = args.viewport_styles { builder.add_viewport_styles(x); }
27710    if let Some(x) = args.doc_styles { builder.add_doc_styles(x); }
27711    if let Some(x) = args.table_styles { builder.add_table_styles(x); }
27712    if let Some(x) = args.feature_control_frame_styles { builder.add_feature_control_frame_styles(x); }
27713    if let Some(x) = args.leader_styles { builder.add_leader_styles(x); }
27714    if let Some(x) = args.dimension_styles { builder.add_dimension_styles(x); }
27715    if let Some(x) = args.text_styles { builder.add_text_styles(x); }
27716    if let Some(x) = args.stack_like_styles { builder.add_stack_like_styles(x); }
27717    if let Some(x) = args.common_styles { builder.add_common_styles(x); }
27718    builder.finish()
27719  }
27720
27721
27722  #[inline]
27723  pub fn common_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedCommonStyle<'a>>>> {
27724    // Safety:
27725    // Created from valid Table for this object
27726    // which contains a valid value in this slot
27727    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedCommonStyle>>>>(StandardStyles::VT_COMMON_STYLES, None)}
27728  }
27729  #[inline]
27730  pub fn stack_like_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedStackLikeStyle<'a>>>> {
27731    // Safety:
27732    // Created from valid Table for this object
27733    // which contains a valid value in this slot
27734    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedStackLikeStyle>>>>(StandardStyles::VT_STACK_LIKE_STYLES, None)}
27735  }
27736  #[inline]
27737  pub fn text_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTextStyle<'a>>>> {
27738    // Safety:
27739    // Created from valid Table for this object
27740    // which contains a valid value in this slot
27741    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTextStyle>>>>(StandardStyles::VT_TEXT_STYLES, None)}
27742  }
27743  #[inline]
27744  pub fn dimension_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDimensionStyle<'a>>>> {
27745    // Safety:
27746    // Created from valid Table for this object
27747    // which contains a valid value in this slot
27748    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDimensionStyle>>>>(StandardStyles::VT_DIMENSION_STYLES, None)}
27749  }
27750  #[inline]
27751  pub fn leader_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedLeaderStyle<'a>>>> {
27752    // Safety:
27753    // Created from valid Table for this object
27754    // which contains a valid value in this slot
27755    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedLeaderStyle>>>>(StandardStyles::VT_LEADER_STYLES, None)}
27756  }
27757  #[inline]
27758  pub fn feature_control_frame_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedFCFStyle<'a>>>> {
27759    // Safety:
27760    // Created from valid Table for this object
27761    // which contains a valid value in this slot
27762    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedFCFStyle>>>>(StandardStyles::VT_FEATURE_CONTROL_FRAME_STYLES, None)}
27763  }
27764  #[inline]
27765  pub fn table_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTableStyle<'a>>>> {
27766    // Safety:
27767    // Created from valid Table for this object
27768    // which contains a valid value in this slot
27769    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTableStyle>>>>(StandardStyles::VT_TABLE_STYLES, None)}
27770  }
27771  #[inline]
27772  pub fn doc_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDocStyle<'a>>>> {
27773    // Safety:
27774    // Created from valid Table for this object
27775    // which contains a valid value in this slot
27776    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDocStyle>>>>(StandardStyles::VT_DOC_STYLES, None)}
27777  }
27778  #[inline]
27779  pub fn viewport_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedViewportStyle<'a>>>> {
27780    // Safety:
27781    // Created from valid Table for this object
27782    // which contains a valid value in this slot
27783    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedViewportStyle>>>>(StandardStyles::VT_VIEWPORT_STYLES, None)}
27784  }
27785  #[inline]
27786  pub fn hatch_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedHatchStyle<'a>>>> {
27787    // Safety:
27788    // Created from valid Table for this object
27789    // which contains a valid value in this slot
27790    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedHatchStyle>>>>(StandardStyles::VT_HATCH_STYLES, None)}
27791  }
27792  #[inline]
27793  pub fn xray_styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedXRayStyle<'a>>>> {
27794    // Safety:
27795    // Created from valid Table for this object
27796    // which contains a valid value in this slot
27797    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedXRayStyle>>>>(StandardStyles::VT_XRAY_STYLES, None)}
27798  }
27799}
27800
27801impl flatbuffers::Verifiable for StandardStyles<'_> {
27802  #[inline]
27803  fn run_verifier(
27804    v: &mut flatbuffers::Verifier, pos: usize
27805  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
27806    use self::flatbuffers::Verifiable;
27807    v.visit_table(pos)?
27808     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedCommonStyle>>>>("common_styles", Self::VT_COMMON_STYLES, false)?
27809     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedStackLikeStyle>>>>("stack_like_styles", Self::VT_STACK_LIKE_STYLES, false)?
27810     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedTextStyle>>>>("text_styles", Self::VT_TEXT_STYLES, false)?
27811     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedDimensionStyle>>>>("dimension_styles", Self::VT_DIMENSION_STYLES, false)?
27812     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedLeaderStyle>>>>("leader_styles", Self::VT_LEADER_STYLES, false)?
27813     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedFCFStyle>>>>("feature_control_frame_styles", Self::VT_FEATURE_CONTROL_FRAME_STYLES, false)?
27814     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedTableStyle>>>>("table_styles", Self::VT_TABLE_STYLES, false)?
27815     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedDocStyle>>>>("doc_styles", Self::VT_DOC_STYLES, false)?
27816     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedViewportStyle>>>>("viewport_styles", Self::VT_VIEWPORT_STYLES, false)?
27817     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedHatchStyle>>>>("hatch_styles", Self::VT_HATCH_STYLES, false)?
27818     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedXRayStyle>>>>("xray_styles", Self::VT_XRAY_STYLES, false)?
27819     .finish();
27820    Ok(())
27821  }
27822}
27823pub struct StandardStylesArgs<'a> {
27824    pub common_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedCommonStyle<'a>>>>>,
27825    pub stack_like_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedStackLikeStyle<'a>>>>>,
27826    pub text_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTextStyle<'a>>>>>,
27827    pub dimension_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDimensionStyle<'a>>>>>,
27828    pub leader_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedLeaderStyle<'a>>>>>,
27829    pub feature_control_frame_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedFCFStyle<'a>>>>>,
27830    pub table_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedTableStyle<'a>>>>>,
27831    pub doc_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedDocStyle<'a>>>>>,
27832    pub viewport_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedViewportStyle<'a>>>>>,
27833    pub hatch_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedHatchStyle<'a>>>>>,
27834    pub xray_styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedXRayStyle<'a>>>>>,
27835}
27836impl<'a> Default for StandardStylesArgs<'a> {
27837  #[inline]
27838  fn default() -> Self {
27839    StandardStylesArgs {
27840      common_styles: None,
27841      stack_like_styles: None,
27842      text_styles: None,
27843      dimension_styles: None,
27844      leader_styles: None,
27845      feature_control_frame_styles: None,
27846      table_styles: None,
27847      doc_styles: None,
27848      viewport_styles: None,
27849      hatch_styles: None,
27850      xray_styles: None,
27851    }
27852  }
27853}
27854
27855pub struct StandardStylesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
27856  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
27857  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
27858}
27859impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardStylesBuilder<'a, 'b, A> {
27860  #[inline]
27861  pub fn add_common_styles(&mut self, common_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedCommonStyle<'b >>>>) {
27862    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_COMMON_STYLES, common_styles);
27863  }
27864  #[inline]
27865  pub fn add_stack_like_styles(&mut self, stack_like_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedStackLikeStyle<'b >>>>) {
27866    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_STACK_LIKE_STYLES, stack_like_styles);
27867  }
27868  #[inline]
27869  pub fn add_text_styles(&mut self, text_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedTextStyle<'b >>>>) {
27870    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_TEXT_STYLES, text_styles);
27871  }
27872  #[inline]
27873  pub fn add_dimension_styles(&mut self, dimension_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedDimensionStyle<'b >>>>) {
27874    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_DIMENSION_STYLES, dimension_styles);
27875  }
27876  #[inline]
27877  pub fn add_leader_styles(&mut self, leader_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedLeaderStyle<'b >>>>) {
27878    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_LEADER_STYLES, leader_styles);
27879  }
27880  #[inline]
27881  pub fn add_feature_control_frame_styles(&mut self, feature_control_frame_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedFCFStyle<'b >>>>) {
27882    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_FEATURE_CONTROL_FRAME_STYLES, feature_control_frame_styles);
27883  }
27884  #[inline]
27885  pub fn add_table_styles(&mut self, table_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedTableStyle<'b >>>>) {
27886    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_TABLE_STYLES, table_styles);
27887  }
27888  #[inline]
27889  pub fn add_doc_styles(&mut self, doc_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedDocStyle<'b >>>>) {
27890    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_DOC_STYLES, doc_styles);
27891  }
27892  #[inline]
27893  pub fn add_viewport_styles(&mut self, viewport_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedViewportStyle<'b >>>>) {
27894    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_VIEWPORT_STYLES, viewport_styles);
27895  }
27896  #[inline]
27897  pub fn add_hatch_styles(&mut self, hatch_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedHatchStyle<'b >>>>) {
27898    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_HATCH_STYLES, hatch_styles);
27899  }
27900  #[inline]
27901  pub fn add_xray_styles(&mut self, xray_styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedXRayStyle<'b >>>>) {
27902    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardStyles::VT_XRAY_STYLES, xray_styles);
27903  }
27904  #[inline]
27905  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardStylesBuilder<'a, 'b, A> {
27906    let start = _fbb.start_table();
27907    StandardStylesBuilder {
27908      fbb_: _fbb,
27909      start_: start,
27910    }
27911  }
27912  #[inline]
27913  pub fn finish(self) -> flatbuffers::WIPOffset<StandardStyles<'a>> {
27914    let o = self.fbb_.end_table(self.start_);
27915    flatbuffers::WIPOffset::new(o.value())
27916  }
27917}
27918
27919impl core::fmt::Debug for StandardStyles<'_> {
27920  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
27921    let mut ds = f.debug_struct("StandardStyles");
27922      ds.field("common_styles", &self.common_styles());
27923      ds.field("stack_like_styles", &self.stack_like_styles());
27924      ds.field("text_styles", &self.text_styles());
27925      ds.field("dimension_styles", &self.dimension_styles());
27926      ds.field("leader_styles", &self.leader_styles());
27927      ds.field("feature_control_frame_styles", &self.feature_control_frame_styles());
27928      ds.field("table_styles", &self.table_styles());
27929      ds.field("doc_styles", &self.doc_styles());
27930      ds.field("viewport_styles", &self.viewport_styles());
27931      ds.field("hatch_styles", &self.hatch_styles());
27932      ds.field("xray_styles", &self.xray_styles());
27933      ds.finish()
27934  }
27935}
27936pub enum GridStyleOffset {}
27937#[derive(Copy, Clone, PartialEq)]
27938
27939pub struct GridStyle<'a> {
27940  pub _tab: flatbuffers::Table<'a>,
27941}
27942
27943impl<'a> flatbuffers::Follow<'a> for GridStyle<'a> {
27944  type Inner = GridStyle<'a>;
27945  #[inline]
27946  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
27947    Self { _tab: flatbuffers::Table::new(buf, loc) }
27948  }
27949}
27950
27951impl<'a> GridStyle<'a> {
27952  pub const VT_COLOR: flatbuffers::VOffsetT = 4;
27953  pub const VT_OPACITY: flatbuffers::VOffsetT = 6;
27954  pub const VT_DASH_PATTERN: flatbuffers::VOffsetT = 8;
27955
27956  #[inline]
27957  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
27958    GridStyle { _tab: table }
27959  }
27960  #[allow(unused_mut)]
27961  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
27962    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
27963    args: &'args GridStyleArgs<'args>
27964  ) -> flatbuffers::WIPOffset<GridStyle<'bldr>> {
27965    let mut builder = GridStyleBuilder::new(_fbb);
27966    builder.add_opacity(args.opacity);
27967    if let Some(x) = args.dash_pattern { builder.add_dash_pattern(x); }
27968    if let Some(x) = args.color { builder.add_color(x); }
27969    builder.finish()
27970  }
27971
27972
27973  #[inline]
27974  pub fn color(&self) -> Option<&'a str> {
27975    // Safety:
27976    // Created from valid Table for this object
27977    // which contains a valid value in this slot
27978    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(GridStyle::VT_COLOR, None)}
27979  }
27980  #[inline]
27981  pub fn opacity(&self) -> f64 {
27982    // Safety:
27983    // Created from valid Table for this object
27984    // which contains a valid value in this slot
27985    unsafe { self._tab.get::<f64>(GridStyle::VT_OPACITY, Some(0.0)).unwrap()}
27986  }
27987  #[inline]
27988  pub fn dash_pattern(&self) -> Option<flatbuffers::Vector<'a, f64>> {
27989    // Safety:
27990    // Created from valid Table for this object
27991    // which contains a valid value in this slot
27992    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(GridStyle::VT_DASH_PATTERN, None)}
27993  }
27994}
27995
27996impl flatbuffers::Verifiable for GridStyle<'_> {
27997  #[inline]
27998  fn run_verifier(
27999    v: &mut flatbuffers::Verifier, pos: usize
28000  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28001    use self::flatbuffers::Verifiable;
28002    v.visit_table(pos)?
28003     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("color", Self::VT_COLOR, false)?
28004     .visit_field::<f64>("opacity", Self::VT_OPACITY, false)?
28005     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("dash_pattern", Self::VT_DASH_PATTERN, false)?
28006     .finish();
28007    Ok(())
28008  }
28009}
28010pub struct GridStyleArgs<'a> {
28011    pub color: Option<flatbuffers::WIPOffset<&'a str>>,
28012    pub opacity: f64,
28013    pub dash_pattern: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
28014}
28015impl<'a> Default for GridStyleArgs<'a> {
28016  #[inline]
28017  fn default() -> Self {
28018    GridStyleArgs {
28019      color: None,
28020      opacity: 0.0,
28021      dash_pattern: None,
28022    }
28023  }
28024}
28025
28026pub struct GridStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28027  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28028  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28029}
28030impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> GridStyleBuilder<'a, 'b, A> {
28031  #[inline]
28032  pub fn add_color(&mut self, color: flatbuffers::WIPOffset<&'b  str>) {
28033    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(GridStyle::VT_COLOR, color);
28034  }
28035  #[inline]
28036  pub fn add_opacity(&mut self, opacity: f64) {
28037    self.fbb_.push_slot::<f64>(GridStyle::VT_OPACITY, opacity, 0.0);
28038  }
28039  #[inline]
28040  pub fn add_dash_pattern(&mut self, dash_pattern: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
28041    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(GridStyle::VT_DASH_PATTERN, dash_pattern);
28042  }
28043  #[inline]
28044  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> GridStyleBuilder<'a, 'b, A> {
28045    let start = _fbb.start_table();
28046    GridStyleBuilder {
28047      fbb_: _fbb,
28048      start_: start,
28049    }
28050  }
28051  #[inline]
28052  pub fn finish(self) -> flatbuffers::WIPOffset<GridStyle<'a>> {
28053    let o = self.fbb_.end_table(self.start_);
28054    flatbuffers::WIPOffset::new(o.value())
28055  }
28056}
28057
28058impl core::fmt::Debug for GridStyle<'_> {
28059  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28060    let mut ds = f.debug_struct("GridStyle");
28061      ds.field("color", &self.color());
28062      ds.field("opacity", &self.opacity());
28063      ds.field("dash_pattern", &self.dash_pattern());
28064      ds.finish()
28065  }
28066}
28067pub enum PolarGridSettingsOffset {}
28068#[derive(Copy, Clone, PartialEq)]
28069
28070pub struct PolarGridSettings<'a> {
28071  pub _tab: flatbuffers::Table<'a>,
28072}
28073
28074impl<'a> flatbuffers::Follow<'a> for PolarGridSettings<'a> {
28075  type Inner = PolarGridSettings<'a>;
28076  #[inline]
28077  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28078    Self { _tab: flatbuffers::Table::new(buf, loc) }
28079  }
28080}
28081
28082impl<'a> PolarGridSettings<'a> {
28083  pub const VT_RADIAL_DIVISIONS: flatbuffers::VOffsetT = 4;
28084  pub const VT_RADIAL_SPACING: flatbuffers::VOffsetT = 6;
28085  pub const VT_SHOW_LABELS: flatbuffers::VOffsetT = 8;
28086
28087  #[inline]
28088  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28089    PolarGridSettings { _tab: table }
28090  }
28091  #[allow(unused_mut)]
28092  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28093    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28094    args: &'args PolarGridSettingsArgs
28095  ) -> flatbuffers::WIPOffset<PolarGridSettings<'bldr>> {
28096    let mut builder = PolarGridSettingsBuilder::new(_fbb);
28097    builder.add_radial_spacing(args.radial_spacing);
28098    builder.add_radial_divisions(args.radial_divisions);
28099    builder.add_show_labels(args.show_labels);
28100    builder.finish()
28101  }
28102
28103
28104  #[inline]
28105  pub fn radial_divisions(&self) -> i32 {
28106    // Safety:
28107    // Created from valid Table for this object
28108    // which contains a valid value in this slot
28109    unsafe { self._tab.get::<i32>(PolarGridSettings::VT_RADIAL_DIVISIONS, Some(0)).unwrap()}
28110  }
28111  #[inline]
28112  pub fn radial_spacing(&self) -> f64 {
28113    // Safety:
28114    // Created from valid Table for this object
28115    // which contains a valid value in this slot
28116    unsafe { self._tab.get::<f64>(PolarGridSettings::VT_RADIAL_SPACING, Some(0.0)).unwrap()}
28117  }
28118  #[inline]
28119  pub fn show_labels(&self) -> bool {
28120    // Safety:
28121    // Created from valid Table for this object
28122    // which contains a valid value in this slot
28123    unsafe { self._tab.get::<bool>(PolarGridSettings::VT_SHOW_LABELS, Some(false)).unwrap()}
28124  }
28125}
28126
28127impl flatbuffers::Verifiable for PolarGridSettings<'_> {
28128  #[inline]
28129  fn run_verifier(
28130    v: &mut flatbuffers::Verifier, pos: usize
28131  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28132    use self::flatbuffers::Verifiable;
28133    v.visit_table(pos)?
28134     .visit_field::<i32>("radial_divisions", Self::VT_RADIAL_DIVISIONS, false)?
28135     .visit_field::<f64>("radial_spacing", Self::VT_RADIAL_SPACING, false)?
28136     .visit_field::<bool>("show_labels", Self::VT_SHOW_LABELS, false)?
28137     .finish();
28138    Ok(())
28139  }
28140}
28141pub struct PolarGridSettingsArgs {
28142    pub radial_divisions: i32,
28143    pub radial_spacing: f64,
28144    pub show_labels: bool,
28145}
28146impl<'a> Default for PolarGridSettingsArgs {
28147  #[inline]
28148  fn default() -> Self {
28149    PolarGridSettingsArgs {
28150      radial_divisions: 0,
28151      radial_spacing: 0.0,
28152      show_labels: false,
28153    }
28154  }
28155}
28156
28157pub struct PolarGridSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28158  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28159  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28160}
28161impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PolarGridSettingsBuilder<'a, 'b, A> {
28162  #[inline]
28163  pub fn add_radial_divisions(&mut self, radial_divisions: i32) {
28164    self.fbb_.push_slot::<i32>(PolarGridSettings::VT_RADIAL_DIVISIONS, radial_divisions, 0);
28165  }
28166  #[inline]
28167  pub fn add_radial_spacing(&mut self, radial_spacing: f64) {
28168    self.fbb_.push_slot::<f64>(PolarGridSettings::VT_RADIAL_SPACING, radial_spacing, 0.0);
28169  }
28170  #[inline]
28171  pub fn add_show_labels(&mut self, show_labels: bool) {
28172    self.fbb_.push_slot::<bool>(PolarGridSettings::VT_SHOW_LABELS, show_labels, false);
28173  }
28174  #[inline]
28175  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PolarGridSettingsBuilder<'a, 'b, A> {
28176    let start = _fbb.start_table();
28177    PolarGridSettingsBuilder {
28178      fbb_: _fbb,
28179      start_: start,
28180    }
28181  }
28182  #[inline]
28183  pub fn finish(self) -> flatbuffers::WIPOffset<PolarGridSettings<'a>> {
28184    let o = self.fbb_.end_table(self.start_);
28185    flatbuffers::WIPOffset::new(o.value())
28186  }
28187}
28188
28189impl core::fmt::Debug for PolarGridSettings<'_> {
28190  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28191    let mut ds = f.debug_struct("PolarGridSettings");
28192      ds.field("radial_divisions", &self.radial_divisions());
28193      ds.field("radial_spacing", &self.radial_spacing());
28194      ds.field("show_labels", &self.show_labels());
28195      ds.finish()
28196  }
28197}
28198pub enum IsometricGridSettingsOffset {}
28199#[derive(Copy, Clone, PartialEq)]
28200
28201pub struct IsometricGridSettings<'a> {
28202  pub _tab: flatbuffers::Table<'a>,
28203}
28204
28205impl<'a> flatbuffers::Follow<'a> for IsometricGridSettings<'a> {
28206  type Inner = IsometricGridSettings<'a>;
28207  #[inline]
28208  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28209    Self { _tab: flatbuffers::Table::new(buf, loc) }
28210  }
28211}
28212
28213impl<'a> IsometricGridSettings<'a> {
28214  pub const VT_LEFT_ANGLE: flatbuffers::VOffsetT = 4;
28215  pub const VT_RIGHT_ANGLE: flatbuffers::VOffsetT = 6;
28216
28217  #[inline]
28218  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28219    IsometricGridSettings { _tab: table }
28220  }
28221  #[allow(unused_mut)]
28222  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28223    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28224    args: &'args IsometricGridSettingsArgs
28225  ) -> flatbuffers::WIPOffset<IsometricGridSettings<'bldr>> {
28226    let mut builder = IsometricGridSettingsBuilder::new(_fbb);
28227    builder.add_right_angle(args.right_angle);
28228    builder.add_left_angle(args.left_angle);
28229    builder.finish()
28230  }
28231
28232
28233  #[inline]
28234  pub fn left_angle(&self) -> f64 {
28235    // Safety:
28236    // Created from valid Table for this object
28237    // which contains a valid value in this slot
28238    unsafe { self._tab.get::<f64>(IsometricGridSettings::VT_LEFT_ANGLE, Some(0.0)).unwrap()}
28239  }
28240  #[inline]
28241  pub fn right_angle(&self) -> f64 {
28242    // Safety:
28243    // Created from valid Table for this object
28244    // which contains a valid value in this slot
28245    unsafe { self._tab.get::<f64>(IsometricGridSettings::VT_RIGHT_ANGLE, Some(0.0)).unwrap()}
28246  }
28247}
28248
28249impl flatbuffers::Verifiable for IsometricGridSettings<'_> {
28250  #[inline]
28251  fn run_verifier(
28252    v: &mut flatbuffers::Verifier, pos: usize
28253  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28254    use self::flatbuffers::Verifiable;
28255    v.visit_table(pos)?
28256     .visit_field::<f64>("left_angle", Self::VT_LEFT_ANGLE, false)?
28257     .visit_field::<f64>("right_angle", Self::VT_RIGHT_ANGLE, false)?
28258     .finish();
28259    Ok(())
28260  }
28261}
28262pub struct IsometricGridSettingsArgs {
28263    pub left_angle: f64,
28264    pub right_angle: f64,
28265}
28266impl<'a> Default for IsometricGridSettingsArgs {
28267  #[inline]
28268  fn default() -> Self {
28269    IsometricGridSettingsArgs {
28270      left_angle: 0.0,
28271      right_angle: 0.0,
28272    }
28273  }
28274}
28275
28276pub struct IsometricGridSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28277  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28278  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28279}
28280impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IsometricGridSettingsBuilder<'a, 'b, A> {
28281  #[inline]
28282  pub fn add_left_angle(&mut self, left_angle: f64) {
28283    self.fbb_.push_slot::<f64>(IsometricGridSettings::VT_LEFT_ANGLE, left_angle, 0.0);
28284  }
28285  #[inline]
28286  pub fn add_right_angle(&mut self, right_angle: f64) {
28287    self.fbb_.push_slot::<f64>(IsometricGridSettings::VT_RIGHT_ANGLE, right_angle, 0.0);
28288  }
28289  #[inline]
28290  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IsometricGridSettingsBuilder<'a, 'b, A> {
28291    let start = _fbb.start_table();
28292    IsometricGridSettingsBuilder {
28293      fbb_: _fbb,
28294      start_: start,
28295    }
28296  }
28297  #[inline]
28298  pub fn finish(self) -> flatbuffers::WIPOffset<IsometricGridSettings<'a>> {
28299    let o = self.fbb_.end_table(self.start_);
28300    flatbuffers::WIPOffset::new(o.value())
28301  }
28302}
28303
28304impl core::fmt::Debug for IsometricGridSettings<'_> {
28305  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28306    let mut ds = f.debug_struct("IsometricGridSettings");
28307      ds.field("left_angle", &self.left_angle());
28308      ds.field("right_angle", &self.right_angle());
28309      ds.finish()
28310  }
28311}
28312pub enum GridSettingsOffset {}
28313#[derive(Copy, Clone, PartialEq)]
28314
28315pub struct GridSettings<'a> {
28316  pub _tab: flatbuffers::Table<'a>,
28317}
28318
28319impl<'a> flatbuffers::Follow<'a> for GridSettings<'a> {
28320  type Inner = GridSettings<'a>;
28321  #[inline]
28322  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28323    Self { _tab: flatbuffers::Table::new(buf, loc) }
28324  }
28325}
28326
28327impl<'a> GridSettings<'a> {
28328  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
28329  pub const VT_READONLY: flatbuffers::VOffsetT = 6;
28330  pub const VT_DISPLAY_TYPE: flatbuffers::VOffsetT = 8;
28331  pub const VT_IS_ADAPTIVE: flatbuffers::VOffsetT = 10;
28332  pub const VT_X_SPACING: flatbuffers::VOffsetT = 12;
28333  pub const VT_Y_SPACING: flatbuffers::VOffsetT = 14;
28334  pub const VT_SUBDIVISIONS: flatbuffers::VOffsetT = 16;
28335  pub const VT_ORIGIN: flatbuffers::VOffsetT = 18;
28336  pub const VT_ROTATION: flatbuffers::VOffsetT = 20;
28337  pub const VT_FOLLOW_UCS: flatbuffers::VOffsetT = 22;
28338  pub const VT_MAJOR_STYLE: flatbuffers::VOffsetT = 24;
28339  pub const VT_MINOR_STYLE: flatbuffers::VOffsetT = 26;
28340  pub const VT_SHOW_MINOR: flatbuffers::VOffsetT = 28;
28341  pub const VT_MIN_ZOOM: flatbuffers::VOffsetT = 30;
28342  pub const VT_MAX_ZOOM: flatbuffers::VOffsetT = 32;
28343  pub const VT_AUTO_HIDE: flatbuffers::VOffsetT = 34;
28344  pub const VT_POLAR_SETTINGS: flatbuffers::VOffsetT = 36;
28345  pub const VT_ISOMETRIC_SETTINGS: flatbuffers::VOffsetT = 38;
28346  pub const VT_ENABLE_SNAPPING: flatbuffers::VOffsetT = 40;
28347
28348  #[inline]
28349  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28350    GridSettings { _tab: table }
28351  }
28352  #[allow(unused_mut)]
28353  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28354    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28355    args: &'args GridSettingsArgs<'args>
28356  ) -> flatbuffers::WIPOffset<GridSettings<'bldr>> {
28357    let mut builder = GridSettingsBuilder::new(_fbb);
28358    builder.add_max_zoom(args.max_zoom);
28359    builder.add_min_zoom(args.min_zoom);
28360    builder.add_rotation(args.rotation);
28361    builder.add_y_spacing(args.y_spacing);
28362    builder.add_x_spacing(args.x_spacing);
28363    if let Some(x) = args.isometric_settings { builder.add_isometric_settings(x); }
28364    if let Some(x) = args.polar_settings { builder.add_polar_settings(x); }
28365    if let Some(x) = args.minor_style { builder.add_minor_style(x); }
28366    if let Some(x) = args.major_style { builder.add_major_style(x); }
28367    if let Some(x) = args.origin { builder.add_origin(x); }
28368    builder.add_subdivisions(args.subdivisions);
28369    builder.add_enable_snapping(args.enable_snapping);
28370    builder.add_auto_hide(args.auto_hide);
28371    builder.add_show_minor(args.show_minor);
28372    builder.add_follow_ucs(args.follow_ucs);
28373    builder.add_is_adaptive(args.is_adaptive);
28374    if let Some(x) = args.display_type { builder.add_display_type(x); }
28375    builder.add_readonly(args.readonly);
28376    if let Some(x) = args.type_ { builder.add_type_(x); }
28377    builder.finish()
28378  }
28379
28380
28381  #[inline]
28382  pub fn type_(&self) -> Option<GRID_TYPE> {
28383    // Safety:
28384    // Created from valid Table for this object
28385    // which contains a valid value in this slot
28386    unsafe { self._tab.get::<GRID_TYPE>(GridSettings::VT_TYPE_, None)}
28387  }
28388  #[inline]
28389  pub fn readonly(&self) -> bool {
28390    // Safety:
28391    // Created from valid Table for this object
28392    // which contains a valid value in this slot
28393    unsafe { self._tab.get::<bool>(GridSettings::VT_READONLY, Some(false)).unwrap()}
28394  }
28395  #[inline]
28396  pub fn display_type(&self) -> Option<GRID_DISPLAY_TYPE> {
28397    // Safety:
28398    // Created from valid Table for this object
28399    // which contains a valid value in this slot
28400    unsafe { self._tab.get::<GRID_DISPLAY_TYPE>(GridSettings::VT_DISPLAY_TYPE, None)}
28401  }
28402  #[inline]
28403  pub fn is_adaptive(&self) -> bool {
28404    // Safety:
28405    // Created from valid Table for this object
28406    // which contains a valid value in this slot
28407    unsafe { self._tab.get::<bool>(GridSettings::VT_IS_ADAPTIVE, Some(false)).unwrap()}
28408  }
28409  #[inline]
28410  pub fn x_spacing(&self) -> f64 {
28411    // Safety:
28412    // Created from valid Table for this object
28413    // which contains a valid value in this slot
28414    unsafe { self._tab.get::<f64>(GridSettings::VT_X_SPACING, Some(0.0)).unwrap()}
28415  }
28416  #[inline]
28417  pub fn y_spacing(&self) -> f64 {
28418    // Safety:
28419    // Created from valid Table for this object
28420    // which contains a valid value in this slot
28421    unsafe { self._tab.get::<f64>(GridSettings::VT_Y_SPACING, Some(0.0)).unwrap()}
28422  }
28423  #[inline]
28424  pub fn subdivisions(&self) -> i32 {
28425    // Safety:
28426    // Created from valid Table for this object
28427    // which contains a valid value in this slot
28428    unsafe { self._tab.get::<i32>(GridSettings::VT_SUBDIVISIONS, Some(0)).unwrap()}
28429  }
28430  #[inline]
28431  pub fn origin(&self) -> Option<&'a GeometricPoint> {
28432    // Safety:
28433    // Created from valid Table for this object
28434    // which contains a valid value in this slot
28435    unsafe { self._tab.get::<GeometricPoint>(GridSettings::VT_ORIGIN, None)}
28436  }
28437  #[inline]
28438  pub fn rotation(&self) -> f64 {
28439    // Safety:
28440    // Created from valid Table for this object
28441    // which contains a valid value in this slot
28442    unsafe { self._tab.get::<f64>(GridSettings::VT_ROTATION, Some(0.0)).unwrap()}
28443  }
28444  #[inline]
28445  pub fn follow_ucs(&self) -> bool {
28446    // Safety:
28447    // Created from valid Table for this object
28448    // which contains a valid value in this slot
28449    unsafe { self._tab.get::<bool>(GridSettings::VT_FOLLOW_UCS, Some(false)).unwrap()}
28450  }
28451  #[inline]
28452  pub fn major_style(&self) -> Option<GridStyle<'a>> {
28453    // Safety:
28454    // Created from valid Table for this object
28455    // which contains a valid value in this slot
28456    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<GridStyle>>(GridSettings::VT_MAJOR_STYLE, None)}
28457  }
28458  #[inline]
28459  pub fn minor_style(&self) -> Option<GridStyle<'a>> {
28460    // Safety:
28461    // Created from valid Table for this object
28462    // which contains a valid value in this slot
28463    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<GridStyle>>(GridSettings::VT_MINOR_STYLE, None)}
28464  }
28465  #[inline]
28466  pub fn show_minor(&self) -> bool {
28467    // Safety:
28468    // Created from valid Table for this object
28469    // which contains a valid value in this slot
28470    unsafe { self._tab.get::<bool>(GridSettings::VT_SHOW_MINOR, Some(false)).unwrap()}
28471  }
28472  #[inline]
28473  pub fn min_zoom(&self) -> f64 {
28474    // Safety:
28475    // Created from valid Table for this object
28476    // which contains a valid value in this slot
28477    unsafe { self._tab.get::<f64>(GridSettings::VT_MIN_ZOOM, Some(0.0)).unwrap()}
28478  }
28479  #[inline]
28480  pub fn max_zoom(&self) -> f64 {
28481    // Safety:
28482    // Created from valid Table for this object
28483    // which contains a valid value in this slot
28484    unsafe { self._tab.get::<f64>(GridSettings::VT_MAX_ZOOM, Some(0.0)).unwrap()}
28485  }
28486  #[inline]
28487  pub fn auto_hide(&self) -> bool {
28488    // Safety:
28489    // Created from valid Table for this object
28490    // which contains a valid value in this slot
28491    unsafe { self._tab.get::<bool>(GridSettings::VT_AUTO_HIDE, Some(false)).unwrap()}
28492  }
28493  #[inline]
28494  pub fn polar_settings(&self) -> Option<PolarGridSettings<'a>> {
28495    // Safety:
28496    // Created from valid Table for this object
28497    // which contains a valid value in this slot
28498    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PolarGridSettings>>(GridSettings::VT_POLAR_SETTINGS, None)}
28499  }
28500  #[inline]
28501  pub fn isometric_settings(&self) -> Option<IsometricGridSettings<'a>> {
28502    // Safety:
28503    // Created from valid Table for this object
28504    // which contains a valid value in this slot
28505    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<IsometricGridSettings>>(GridSettings::VT_ISOMETRIC_SETTINGS, None)}
28506  }
28507  #[inline]
28508  pub fn enable_snapping(&self) -> bool {
28509    // Safety:
28510    // Created from valid Table for this object
28511    // which contains a valid value in this slot
28512    unsafe { self._tab.get::<bool>(GridSettings::VT_ENABLE_SNAPPING, Some(false)).unwrap()}
28513  }
28514}
28515
28516impl flatbuffers::Verifiable for GridSettings<'_> {
28517  #[inline]
28518  fn run_verifier(
28519    v: &mut flatbuffers::Verifier, pos: usize
28520  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28521    use self::flatbuffers::Verifiable;
28522    v.visit_table(pos)?
28523     .visit_field::<GRID_TYPE>("type_", Self::VT_TYPE_, false)?
28524     .visit_field::<bool>("readonly", Self::VT_READONLY, false)?
28525     .visit_field::<GRID_DISPLAY_TYPE>("display_type", Self::VT_DISPLAY_TYPE, false)?
28526     .visit_field::<bool>("is_adaptive", Self::VT_IS_ADAPTIVE, false)?
28527     .visit_field::<f64>("x_spacing", Self::VT_X_SPACING, false)?
28528     .visit_field::<f64>("y_spacing", Self::VT_Y_SPACING, false)?
28529     .visit_field::<i32>("subdivisions", Self::VT_SUBDIVISIONS, false)?
28530     .visit_field::<GeometricPoint>("origin", Self::VT_ORIGIN, false)?
28531     .visit_field::<f64>("rotation", Self::VT_ROTATION, false)?
28532     .visit_field::<bool>("follow_ucs", Self::VT_FOLLOW_UCS, false)?
28533     .visit_field::<flatbuffers::ForwardsUOffset<GridStyle>>("major_style", Self::VT_MAJOR_STYLE, false)?
28534     .visit_field::<flatbuffers::ForwardsUOffset<GridStyle>>("minor_style", Self::VT_MINOR_STYLE, false)?
28535     .visit_field::<bool>("show_minor", Self::VT_SHOW_MINOR, false)?
28536     .visit_field::<f64>("min_zoom", Self::VT_MIN_ZOOM, false)?
28537     .visit_field::<f64>("max_zoom", Self::VT_MAX_ZOOM, false)?
28538     .visit_field::<bool>("auto_hide", Self::VT_AUTO_HIDE, false)?
28539     .visit_field::<flatbuffers::ForwardsUOffset<PolarGridSettings>>("polar_settings", Self::VT_POLAR_SETTINGS, false)?
28540     .visit_field::<flatbuffers::ForwardsUOffset<IsometricGridSettings>>("isometric_settings", Self::VT_ISOMETRIC_SETTINGS, false)?
28541     .visit_field::<bool>("enable_snapping", Self::VT_ENABLE_SNAPPING, false)?
28542     .finish();
28543    Ok(())
28544  }
28545}
28546pub struct GridSettingsArgs<'a> {
28547    pub type_: Option<GRID_TYPE>,
28548    pub readonly: bool,
28549    pub display_type: Option<GRID_DISPLAY_TYPE>,
28550    pub is_adaptive: bool,
28551    pub x_spacing: f64,
28552    pub y_spacing: f64,
28553    pub subdivisions: i32,
28554    pub origin: Option<&'a GeometricPoint>,
28555    pub rotation: f64,
28556    pub follow_ucs: bool,
28557    pub major_style: Option<flatbuffers::WIPOffset<GridStyle<'a>>>,
28558    pub minor_style: Option<flatbuffers::WIPOffset<GridStyle<'a>>>,
28559    pub show_minor: bool,
28560    pub min_zoom: f64,
28561    pub max_zoom: f64,
28562    pub auto_hide: bool,
28563    pub polar_settings: Option<flatbuffers::WIPOffset<PolarGridSettings<'a>>>,
28564    pub isometric_settings: Option<flatbuffers::WIPOffset<IsometricGridSettings<'a>>>,
28565    pub enable_snapping: bool,
28566}
28567impl<'a> Default for GridSettingsArgs<'a> {
28568  #[inline]
28569  fn default() -> Self {
28570    GridSettingsArgs {
28571      type_: None,
28572      readonly: false,
28573      display_type: None,
28574      is_adaptive: false,
28575      x_spacing: 0.0,
28576      y_spacing: 0.0,
28577      subdivisions: 0,
28578      origin: None,
28579      rotation: 0.0,
28580      follow_ucs: false,
28581      major_style: None,
28582      minor_style: None,
28583      show_minor: false,
28584      min_zoom: 0.0,
28585      max_zoom: 0.0,
28586      auto_hide: false,
28587      polar_settings: None,
28588      isometric_settings: None,
28589      enable_snapping: false,
28590    }
28591  }
28592}
28593
28594pub struct GridSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28595  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28596  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28597}
28598impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> GridSettingsBuilder<'a, 'b, A> {
28599  #[inline]
28600  pub fn add_type_(&mut self, type_: GRID_TYPE) {
28601    self.fbb_.push_slot_always::<GRID_TYPE>(GridSettings::VT_TYPE_, type_);
28602  }
28603  #[inline]
28604  pub fn add_readonly(&mut self, readonly: bool) {
28605    self.fbb_.push_slot::<bool>(GridSettings::VT_READONLY, readonly, false);
28606  }
28607  #[inline]
28608  pub fn add_display_type(&mut self, display_type: GRID_DISPLAY_TYPE) {
28609    self.fbb_.push_slot_always::<GRID_DISPLAY_TYPE>(GridSettings::VT_DISPLAY_TYPE, display_type);
28610  }
28611  #[inline]
28612  pub fn add_is_adaptive(&mut self, is_adaptive: bool) {
28613    self.fbb_.push_slot::<bool>(GridSettings::VT_IS_ADAPTIVE, is_adaptive, false);
28614  }
28615  #[inline]
28616  pub fn add_x_spacing(&mut self, x_spacing: f64) {
28617    self.fbb_.push_slot::<f64>(GridSettings::VT_X_SPACING, x_spacing, 0.0);
28618  }
28619  #[inline]
28620  pub fn add_y_spacing(&mut self, y_spacing: f64) {
28621    self.fbb_.push_slot::<f64>(GridSettings::VT_Y_SPACING, y_spacing, 0.0);
28622  }
28623  #[inline]
28624  pub fn add_subdivisions(&mut self, subdivisions: i32) {
28625    self.fbb_.push_slot::<i32>(GridSettings::VT_SUBDIVISIONS, subdivisions, 0);
28626  }
28627  #[inline]
28628  pub fn add_origin(&mut self, origin: &GeometricPoint) {
28629    self.fbb_.push_slot_always::<&GeometricPoint>(GridSettings::VT_ORIGIN, origin);
28630  }
28631  #[inline]
28632  pub fn add_rotation(&mut self, rotation: f64) {
28633    self.fbb_.push_slot::<f64>(GridSettings::VT_ROTATION, rotation, 0.0);
28634  }
28635  #[inline]
28636  pub fn add_follow_ucs(&mut self, follow_ucs: bool) {
28637    self.fbb_.push_slot::<bool>(GridSettings::VT_FOLLOW_UCS, follow_ucs, false);
28638  }
28639  #[inline]
28640  pub fn add_major_style(&mut self, major_style: flatbuffers::WIPOffset<GridStyle<'b >>) {
28641    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<GridStyle>>(GridSettings::VT_MAJOR_STYLE, major_style);
28642  }
28643  #[inline]
28644  pub fn add_minor_style(&mut self, minor_style: flatbuffers::WIPOffset<GridStyle<'b >>) {
28645    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<GridStyle>>(GridSettings::VT_MINOR_STYLE, minor_style);
28646  }
28647  #[inline]
28648  pub fn add_show_minor(&mut self, show_minor: bool) {
28649    self.fbb_.push_slot::<bool>(GridSettings::VT_SHOW_MINOR, show_minor, false);
28650  }
28651  #[inline]
28652  pub fn add_min_zoom(&mut self, min_zoom: f64) {
28653    self.fbb_.push_slot::<f64>(GridSettings::VT_MIN_ZOOM, min_zoom, 0.0);
28654  }
28655  #[inline]
28656  pub fn add_max_zoom(&mut self, max_zoom: f64) {
28657    self.fbb_.push_slot::<f64>(GridSettings::VT_MAX_ZOOM, max_zoom, 0.0);
28658  }
28659  #[inline]
28660  pub fn add_auto_hide(&mut self, auto_hide: bool) {
28661    self.fbb_.push_slot::<bool>(GridSettings::VT_AUTO_HIDE, auto_hide, false);
28662  }
28663  #[inline]
28664  pub fn add_polar_settings(&mut self, polar_settings: flatbuffers::WIPOffset<PolarGridSettings<'b >>) {
28665    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PolarGridSettings>>(GridSettings::VT_POLAR_SETTINGS, polar_settings);
28666  }
28667  #[inline]
28668  pub fn add_isometric_settings(&mut self, isometric_settings: flatbuffers::WIPOffset<IsometricGridSettings<'b >>) {
28669    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<IsometricGridSettings>>(GridSettings::VT_ISOMETRIC_SETTINGS, isometric_settings);
28670  }
28671  #[inline]
28672  pub fn add_enable_snapping(&mut self, enable_snapping: bool) {
28673    self.fbb_.push_slot::<bool>(GridSettings::VT_ENABLE_SNAPPING, enable_snapping, false);
28674  }
28675  #[inline]
28676  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> GridSettingsBuilder<'a, 'b, A> {
28677    let start = _fbb.start_table();
28678    GridSettingsBuilder {
28679      fbb_: _fbb,
28680      start_: start,
28681    }
28682  }
28683  #[inline]
28684  pub fn finish(self) -> flatbuffers::WIPOffset<GridSettings<'a>> {
28685    let o = self.fbb_.end_table(self.start_);
28686    flatbuffers::WIPOffset::new(o.value())
28687  }
28688}
28689
28690impl core::fmt::Debug for GridSettings<'_> {
28691  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28692    let mut ds = f.debug_struct("GridSettings");
28693      ds.field("type_", &self.type_());
28694      ds.field("readonly", &self.readonly());
28695      ds.field("display_type", &self.display_type());
28696      ds.field("is_adaptive", &self.is_adaptive());
28697      ds.field("x_spacing", &self.x_spacing());
28698      ds.field("y_spacing", &self.y_spacing());
28699      ds.field("subdivisions", &self.subdivisions());
28700      ds.field("origin", &self.origin());
28701      ds.field("rotation", &self.rotation());
28702      ds.field("follow_ucs", &self.follow_ucs());
28703      ds.field("major_style", &self.major_style());
28704      ds.field("minor_style", &self.minor_style());
28705      ds.field("show_minor", &self.show_minor());
28706      ds.field("min_zoom", &self.min_zoom());
28707      ds.field("max_zoom", &self.max_zoom());
28708      ds.field("auto_hide", &self.auto_hide());
28709      ds.field("polar_settings", &self.polar_settings());
28710      ds.field("isometric_settings", &self.isometric_settings());
28711      ds.field("enable_snapping", &self.enable_snapping());
28712      ds.finish()
28713  }
28714}
28715pub enum SnapOverrideOffset {}
28716#[derive(Copy, Clone, PartialEq)]
28717
28718pub struct SnapOverride<'a> {
28719  pub _tab: flatbuffers::Table<'a>,
28720}
28721
28722impl<'a> flatbuffers::Follow<'a> for SnapOverride<'a> {
28723  type Inner = SnapOverride<'a>;
28724  #[inline]
28725  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28726    Self { _tab: flatbuffers::Table::new(buf, loc) }
28727  }
28728}
28729
28730impl<'a> SnapOverride<'a> {
28731  pub const VT_KEY: flatbuffers::VOffsetT = 4;
28732  pub const VT_BEHAVIOR: flatbuffers::VOffsetT = 6;
28733
28734  #[inline]
28735  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28736    SnapOverride { _tab: table }
28737  }
28738  #[allow(unused_mut)]
28739  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28740    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28741    args: &'args SnapOverrideArgs<'args>
28742  ) -> flatbuffers::WIPOffset<SnapOverride<'bldr>> {
28743    let mut builder = SnapOverrideBuilder::new(_fbb);
28744    if let Some(x) = args.key { builder.add_key(x); }
28745    if let Some(x) = args.behavior { builder.add_behavior(x); }
28746    builder.finish()
28747  }
28748
28749
28750  #[inline]
28751  pub fn key(&self) -> Option<&'a str> {
28752    // Safety:
28753    // Created from valid Table for this object
28754    // which contains a valid value in this slot
28755    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(SnapOverride::VT_KEY, None)}
28756  }
28757  #[inline]
28758  pub fn behavior(&self) -> Option<SNAP_OVERRIDE_BEHAVIOR> {
28759    // Safety:
28760    // Created from valid Table for this object
28761    // which contains a valid value in this slot
28762    unsafe { self._tab.get::<SNAP_OVERRIDE_BEHAVIOR>(SnapOverride::VT_BEHAVIOR, None)}
28763  }
28764}
28765
28766impl flatbuffers::Verifiable for SnapOverride<'_> {
28767  #[inline]
28768  fn run_verifier(
28769    v: &mut flatbuffers::Verifier, pos: usize
28770  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28771    use self::flatbuffers::Verifiable;
28772    v.visit_table(pos)?
28773     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, false)?
28774     .visit_field::<SNAP_OVERRIDE_BEHAVIOR>("behavior", Self::VT_BEHAVIOR, false)?
28775     .finish();
28776    Ok(())
28777  }
28778}
28779pub struct SnapOverrideArgs<'a> {
28780    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
28781    pub behavior: Option<SNAP_OVERRIDE_BEHAVIOR>,
28782}
28783impl<'a> Default for SnapOverrideArgs<'a> {
28784  #[inline]
28785  fn default() -> Self {
28786    SnapOverrideArgs {
28787      key: None,
28788      behavior: None,
28789    }
28790  }
28791}
28792
28793pub struct SnapOverrideBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28794  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28795  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28796}
28797impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SnapOverrideBuilder<'a, 'b, A> {
28798  #[inline]
28799  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
28800    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapOverride::VT_KEY, key);
28801  }
28802  #[inline]
28803  pub fn add_behavior(&mut self, behavior: SNAP_OVERRIDE_BEHAVIOR) {
28804    self.fbb_.push_slot_always::<SNAP_OVERRIDE_BEHAVIOR>(SnapOverride::VT_BEHAVIOR, behavior);
28805  }
28806  #[inline]
28807  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SnapOverrideBuilder<'a, 'b, A> {
28808    let start = _fbb.start_table();
28809    SnapOverrideBuilder {
28810      fbb_: _fbb,
28811      start_: start,
28812    }
28813  }
28814  #[inline]
28815  pub fn finish(self) -> flatbuffers::WIPOffset<SnapOverride<'a>> {
28816    let o = self.fbb_.end_table(self.start_);
28817    flatbuffers::WIPOffset::new(o.value())
28818  }
28819}
28820
28821impl core::fmt::Debug for SnapOverride<'_> {
28822  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28823    let mut ds = f.debug_struct("SnapOverride");
28824      ds.field("key", &self.key());
28825      ds.field("behavior", &self.behavior());
28826      ds.finish()
28827  }
28828}
28829pub enum DynamicSnapSettingsOffset {}
28830#[derive(Copy, Clone, PartialEq)]
28831
28832pub struct DynamicSnapSettings<'a> {
28833  pub _tab: flatbuffers::Table<'a>,
28834}
28835
28836impl<'a> flatbuffers::Follow<'a> for DynamicSnapSettings<'a> {
28837  type Inner = DynamicSnapSettings<'a>;
28838  #[inline]
28839  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28840    Self { _tab: flatbuffers::Table::new(buf, loc) }
28841  }
28842}
28843
28844impl<'a> DynamicSnapSettings<'a> {
28845  pub const VT_ENABLED_DURING_DRAG: flatbuffers::VOffsetT = 4;
28846  pub const VT_ENABLED_DURING_ROTATION: flatbuffers::VOffsetT = 6;
28847  pub const VT_ENABLED_DURING_SCALE: flatbuffers::VOffsetT = 8;
28848
28849  #[inline]
28850  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28851    DynamicSnapSettings { _tab: table }
28852  }
28853  #[allow(unused_mut)]
28854  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28855    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28856    args: &'args DynamicSnapSettingsArgs
28857  ) -> flatbuffers::WIPOffset<DynamicSnapSettings<'bldr>> {
28858    let mut builder = DynamicSnapSettingsBuilder::new(_fbb);
28859    builder.add_enabled_during_scale(args.enabled_during_scale);
28860    builder.add_enabled_during_rotation(args.enabled_during_rotation);
28861    builder.add_enabled_during_drag(args.enabled_during_drag);
28862    builder.finish()
28863  }
28864
28865
28866  #[inline]
28867  pub fn enabled_during_drag(&self) -> bool {
28868    // Safety:
28869    // Created from valid Table for this object
28870    // which contains a valid value in this slot
28871    unsafe { self._tab.get::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_DRAG, Some(false)).unwrap()}
28872  }
28873  #[inline]
28874  pub fn enabled_during_rotation(&self) -> bool {
28875    // Safety:
28876    // Created from valid Table for this object
28877    // which contains a valid value in this slot
28878    unsafe { self._tab.get::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_ROTATION, Some(false)).unwrap()}
28879  }
28880  #[inline]
28881  pub fn enabled_during_scale(&self) -> bool {
28882    // Safety:
28883    // Created from valid Table for this object
28884    // which contains a valid value in this slot
28885    unsafe { self._tab.get::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_SCALE, Some(false)).unwrap()}
28886  }
28887}
28888
28889impl flatbuffers::Verifiable for DynamicSnapSettings<'_> {
28890  #[inline]
28891  fn run_verifier(
28892    v: &mut flatbuffers::Verifier, pos: usize
28893  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
28894    use self::flatbuffers::Verifiable;
28895    v.visit_table(pos)?
28896     .visit_field::<bool>("enabled_during_drag", Self::VT_ENABLED_DURING_DRAG, false)?
28897     .visit_field::<bool>("enabled_during_rotation", Self::VT_ENABLED_DURING_ROTATION, false)?
28898     .visit_field::<bool>("enabled_during_scale", Self::VT_ENABLED_DURING_SCALE, false)?
28899     .finish();
28900    Ok(())
28901  }
28902}
28903pub struct DynamicSnapSettingsArgs {
28904    pub enabled_during_drag: bool,
28905    pub enabled_during_rotation: bool,
28906    pub enabled_during_scale: bool,
28907}
28908impl<'a> Default for DynamicSnapSettingsArgs {
28909  #[inline]
28910  fn default() -> Self {
28911    DynamicSnapSettingsArgs {
28912      enabled_during_drag: false,
28913      enabled_during_rotation: false,
28914      enabled_during_scale: false,
28915    }
28916  }
28917}
28918
28919pub struct DynamicSnapSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
28920  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
28921  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
28922}
28923impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DynamicSnapSettingsBuilder<'a, 'b, A> {
28924  #[inline]
28925  pub fn add_enabled_during_drag(&mut self, enabled_during_drag: bool) {
28926    self.fbb_.push_slot::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_DRAG, enabled_during_drag, false);
28927  }
28928  #[inline]
28929  pub fn add_enabled_during_rotation(&mut self, enabled_during_rotation: bool) {
28930    self.fbb_.push_slot::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_ROTATION, enabled_during_rotation, false);
28931  }
28932  #[inline]
28933  pub fn add_enabled_during_scale(&mut self, enabled_during_scale: bool) {
28934    self.fbb_.push_slot::<bool>(DynamicSnapSettings::VT_ENABLED_DURING_SCALE, enabled_during_scale, false);
28935  }
28936  #[inline]
28937  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DynamicSnapSettingsBuilder<'a, 'b, A> {
28938    let start = _fbb.start_table();
28939    DynamicSnapSettingsBuilder {
28940      fbb_: _fbb,
28941      start_: start,
28942    }
28943  }
28944  #[inline]
28945  pub fn finish(self) -> flatbuffers::WIPOffset<DynamicSnapSettings<'a>> {
28946    let o = self.fbb_.end_table(self.start_);
28947    flatbuffers::WIPOffset::new(o.value())
28948  }
28949}
28950
28951impl core::fmt::Debug for DynamicSnapSettings<'_> {
28952  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
28953    let mut ds = f.debug_struct("DynamicSnapSettings");
28954      ds.field("enabled_during_drag", &self.enabled_during_drag());
28955      ds.field("enabled_during_rotation", &self.enabled_during_rotation());
28956      ds.field("enabled_during_scale", &self.enabled_during_scale());
28957      ds.finish()
28958  }
28959}
28960pub enum PolarTrackingSettingsOffset {}
28961#[derive(Copy, Clone, PartialEq)]
28962
28963pub struct PolarTrackingSettings<'a> {
28964  pub _tab: flatbuffers::Table<'a>,
28965}
28966
28967impl<'a> flatbuffers::Follow<'a> for PolarTrackingSettings<'a> {
28968  type Inner = PolarTrackingSettings<'a>;
28969  #[inline]
28970  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
28971    Self { _tab: flatbuffers::Table::new(buf, loc) }
28972  }
28973}
28974
28975impl<'a> PolarTrackingSettings<'a> {
28976  pub const VT_ENABLED: flatbuffers::VOffsetT = 4;
28977  pub const VT_ANGLES: flatbuffers::VOffsetT = 6;
28978  pub const VT_INCREMENT_ANGLE: flatbuffers::VOffsetT = 8;
28979  pub const VT_TRACK_FROM_LAST_POINT: flatbuffers::VOffsetT = 10;
28980  pub const VT_SHOW_POLAR_COORDINATES: flatbuffers::VOffsetT = 12;
28981
28982  #[inline]
28983  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
28984    PolarTrackingSettings { _tab: table }
28985  }
28986  #[allow(unused_mut)]
28987  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
28988    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
28989    args: &'args PolarTrackingSettingsArgs<'args>
28990  ) -> flatbuffers::WIPOffset<PolarTrackingSettings<'bldr>> {
28991    let mut builder = PolarTrackingSettingsBuilder::new(_fbb);
28992    builder.add_increment_angle(args.increment_angle);
28993    if let Some(x) = args.angles { builder.add_angles(x); }
28994    builder.add_show_polar_coordinates(args.show_polar_coordinates);
28995    builder.add_track_from_last_point(args.track_from_last_point);
28996    builder.add_enabled(args.enabled);
28997    builder.finish()
28998  }
28999
29000
29001  #[inline]
29002  pub fn enabled(&self) -> bool {
29003    // Safety:
29004    // Created from valid Table for this object
29005    // which contains a valid value in this slot
29006    unsafe { self._tab.get::<bool>(PolarTrackingSettings::VT_ENABLED, Some(false)).unwrap()}
29007  }
29008  #[inline]
29009  pub fn angles(&self) -> Option<flatbuffers::Vector<'a, f64>> {
29010    // Safety:
29011    // Created from valid Table for this object
29012    // which contains a valid value in this slot
29013    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(PolarTrackingSettings::VT_ANGLES, None)}
29014  }
29015  #[inline]
29016  pub fn increment_angle(&self) -> f64 {
29017    // Safety:
29018    // Created from valid Table for this object
29019    // which contains a valid value in this slot
29020    unsafe { self._tab.get::<f64>(PolarTrackingSettings::VT_INCREMENT_ANGLE, Some(0.0)).unwrap()}
29021  }
29022  #[inline]
29023  pub fn track_from_last_point(&self) -> bool {
29024    // Safety:
29025    // Created from valid Table for this object
29026    // which contains a valid value in this slot
29027    unsafe { self._tab.get::<bool>(PolarTrackingSettings::VT_TRACK_FROM_LAST_POINT, Some(false)).unwrap()}
29028  }
29029  #[inline]
29030  pub fn show_polar_coordinates(&self) -> bool {
29031    // Safety:
29032    // Created from valid Table for this object
29033    // which contains a valid value in this slot
29034    unsafe { self._tab.get::<bool>(PolarTrackingSettings::VT_SHOW_POLAR_COORDINATES, Some(false)).unwrap()}
29035  }
29036}
29037
29038impl flatbuffers::Verifiable for PolarTrackingSettings<'_> {
29039  #[inline]
29040  fn run_verifier(
29041    v: &mut flatbuffers::Verifier, pos: usize
29042  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29043    use self::flatbuffers::Verifiable;
29044    v.visit_table(pos)?
29045     .visit_field::<bool>("enabled", Self::VT_ENABLED, false)?
29046     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("angles", Self::VT_ANGLES, false)?
29047     .visit_field::<f64>("increment_angle", Self::VT_INCREMENT_ANGLE, false)?
29048     .visit_field::<bool>("track_from_last_point", Self::VT_TRACK_FROM_LAST_POINT, false)?
29049     .visit_field::<bool>("show_polar_coordinates", Self::VT_SHOW_POLAR_COORDINATES, false)?
29050     .finish();
29051    Ok(())
29052  }
29053}
29054pub struct PolarTrackingSettingsArgs<'a> {
29055    pub enabled: bool,
29056    pub angles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
29057    pub increment_angle: f64,
29058    pub track_from_last_point: bool,
29059    pub show_polar_coordinates: bool,
29060}
29061impl<'a> Default for PolarTrackingSettingsArgs<'a> {
29062  #[inline]
29063  fn default() -> Self {
29064    PolarTrackingSettingsArgs {
29065      enabled: false,
29066      angles: None,
29067      increment_angle: 0.0,
29068      track_from_last_point: false,
29069      show_polar_coordinates: false,
29070    }
29071  }
29072}
29073
29074pub struct PolarTrackingSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29075  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29076  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29077}
29078impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> PolarTrackingSettingsBuilder<'a, 'b, A> {
29079  #[inline]
29080  pub fn add_enabled(&mut self, enabled: bool) {
29081    self.fbb_.push_slot::<bool>(PolarTrackingSettings::VT_ENABLED, enabled, false);
29082  }
29083  #[inline]
29084  pub fn add_angles(&mut self, angles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
29085    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(PolarTrackingSettings::VT_ANGLES, angles);
29086  }
29087  #[inline]
29088  pub fn add_increment_angle(&mut self, increment_angle: f64) {
29089    self.fbb_.push_slot::<f64>(PolarTrackingSettings::VT_INCREMENT_ANGLE, increment_angle, 0.0);
29090  }
29091  #[inline]
29092  pub fn add_track_from_last_point(&mut self, track_from_last_point: bool) {
29093    self.fbb_.push_slot::<bool>(PolarTrackingSettings::VT_TRACK_FROM_LAST_POINT, track_from_last_point, false);
29094  }
29095  #[inline]
29096  pub fn add_show_polar_coordinates(&mut self, show_polar_coordinates: bool) {
29097    self.fbb_.push_slot::<bool>(PolarTrackingSettings::VT_SHOW_POLAR_COORDINATES, show_polar_coordinates, false);
29098  }
29099  #[inline]
29100  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> PolarTrackingSettingsBuilder<'a, 'b, A> {
29101    let start = _fbb.start_table();
29102    PolarTrackingSettingsBuilder {
29103      fbb_: _fbb,
29104      start_: start,
29105    }
29106  }
29107  #[inline]
29108  pub fn finish(self) -> flatbuffers::WIPOffset<PolarTrackingSettings<'a>> {
29109    let o = self.fbb_.end_table(self.start_);
29110    flatbuffers::WIPOffset::new(o.value())
29111  }
29112}
29113
29114impl core::fmt::Debug for PolarTrackingSettings<'_> {
29115  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29116    let mut ds = f.debug_struct("PolarTrackingSettings");
29117      ds.field("enabled", &self.enabled());
29118      ds.field("angles", &self.angles());
29119      ds.field("increment_angle", &self.increment_angle());
29120      ds.field("track_from_last_point", &self.track_from_last_point());
29121      ds.field("show_polar_coordinates", &self.show_polar_coordinates());
29122      ds.finish()
29123  }
29124}
29125pub enum TrackingLineStyleOffset {}
29126#[derive(Copy, Clone, PartialEq)]
29127
29128pub struct TrackingLineStyle<'a> {
29129  pub _tab: flatbuffers::Table<'a>,
29130}
29131
29132impl<'a> flatbuffers::Follow<'a> for TrackingLineStyle<'a> {
29133  type Inner = TrackingLineStyle<'a>;
29134  #[inline]
29135  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29136    Self { _tab: flatbuffers::Table::new(buf, loc) }
29137  }
29138}
29139
29140impl<'a> TrackingLineStyle<'a> {
29141  pub const VT_COLOR: flatbuffers::VOffsetT = 4;
29142  pub const VT_OPACITY: flatbuffers::VOffsetT = 6;
29143  pub const VT_DASH_PATTERN: flatbuffers::VOffsetT = 8;
29144
29145  #[inline]
29146  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29147    TrackingLineStyle { _tab: table }
29148  }
29149  #[allow(unused_mut)]
29150  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29151    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29152    args: &'args TrackingLineStyleArgs<'args>
29153  ) -> flatbuffers::WIPOffset<TrackingLineStyle<'bldr>> {
29154    let mut builder = TrackingLineStyleBuilder::new(_fbb);
29155    builder.add_opacity(args.opacity);
29156    if let Some(x) = args.dash_pattern { builder.add_dash_pattern(x); }
29157    if let Some(x) = args.color { builder.add_color(x); }
29158    builder.finish()
29159  }
29160
29161
29162  #[inline]
29163  pub fn color(&self) -> Option<&'a str> {
29164    // Safety:
29165    // Created from valid Table for this object
29166    // which contains a valid value in this slot
29167    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(TrackingLineStyle::VT_COLOR, None)}
29168  }
29169  #[inline]
29170  pub fn opacity(&self) -> f64 {
29171    // Safety:
29172    // Created from valid Table for this object
29173    // which contains a valid value in this slot
29174    unsafe { self._tab.get::<f64>(TrackingLineStyle::VT_OPACITY, Some(0.0)).unwrap()}
29175  }
29176  #[inline]
29177  pub fn dash_pattern(&self) -> Option<flatbuffers::Vector<'a, f64>> {
29178    // Safety:
29179    // Created from valid Table for this object
29180    // which contains a valid value in this slot
29181    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, f64>>>(TrackingLineStyle::VT_DASH_PATTERN, None)}
29182  }
29183}
29184
29185impl flatbuffers::Verifiable for TrackingLineStyle<'_> {
29186  #[inline]
29187  fn run_verifier(
29188    v: &mut flatbuffers::Verifier, pos: usize
29189  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29190    use self::flatbuffers::Verifiable;
29191    v.visit_table(pos)?
29192     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("color", Self::VT_COLOR, false)?
29193     .visit_field::<f64>("opacity", Self::VT_OPACITY, false)?
29194     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, f64>>>("dash_pattern", Self::VT_DASH_PATTERN, false)?
29195     .finish();
29196    Ok(())
29197  }
29198}
29199pub struct TrackingLineStyleArgs<'a> {
29200    pub color: Option<flatbuffers::WIPOffset<&'a str>>,
29201    pub opacity: f64,
29202    pub dash_pattern: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, f64>>>,
29203}
29204impl<'a> Default for TrackingLineStyleArgs<'a> {
29205  #[inline]
29206  fn default() -> Self {
29207    TrackingLineStyleArgs {
29208      color: None,
29209      opacity: 0.0,
29210      dash_pattern: None,
29211    }
29212  }
29213}
29214
29215pub struct TrackingLineStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29216  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29217  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29218}
29219impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> TrackingLineStyleBuilder<'a, 'b, A> {
29220  #[inline]
29221  pub fn add_color(&mut self, color: flatbuffers::WIPOffset<&'b  str>) {
29222    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TrackingLineStyle::VT_COLOR, color);
29223  }
29224  #[inline]
29225  pub fn add_opacity(&mut self, opacity: f64) {
29226    self.fbb_.push_slot::<f64>(TrackingLineStyle::VT_OPACITY, opacity, 0.0);
29227  }
29228  #[inline]
29229  pub fn add_dash_pattern(&mut self, dash_pattern: flatbuffers::WIPOffset<flatbuffers::Vector<'b , f64>>) {
29230    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(TrackingLineStyle::VT_DASH_PATTERN, dash_pattern);
29231  }
29232  #[inline]
29233  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> TrackingLineStyleBuilder<'a, 'b, A> {
29234    let start = _fbb.start_table();
29235    TrackingLineStyleBuilder {
29236      fbb_: _fbb,
29237      start_: start,
29238    }
29239  }
29240  #[inline]
29241  pub fn finish(self) -> flatbuffers::WIPOffset<TrackingLineStyle<'a>> {
29242    let o = self.fbb_.end_table(self.start_);
29243    flatbuffers::WIPOffset::new(o.value())
29244  }
29245}
29246
29247impl core::fmt::Debug for TrackingLineStyle<'_> {
29248  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29249    let mut ds = f.debug_struct("TrackingLineStyle");
29250      ds.field("color", &self.color());
29251      ds.field("opacity", &self.opacity());
29252      ds.field("dash_pattern", &self.dash_pattern());
29253      ds.finish()
29254  }
29255}
29256pub enum LayerSnapFiltersOffset {}
29257#[derive(Copy, Clone, PartialEq)]
29258
29259pub struct LayerSnapFilters<'a> {
29260  pub _tab: flatbuffers::Table<'a>,
29261}
29262
29263impl<'a> flatbuffers::Follow<'a> for LayerSnapFilters<'a> {
29264  type Inner = LayerSnapFilters<'a>;
29265  #[inline]
29266  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29267    Self { _tab: flatbuffers::Table::new(buf, loc) }
29268  }
29269}
29270
29271impl<'a> LayerSnapFilters<'a> {
29272  pub const VT_INCLUDE_LAYERS: flatbuffers::VOffsetT = 4;
29273  pub const VT_EXCLUDE_LAYERS: flatbuffers::VOffsetT = 6;
29274
29275  #[inline]
29276  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29277    LayerSnapFilters { _tab: table }
29278  }
29279  #[allow(unused_mut)]
29280  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29281    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29282    args: &'args LayerSnapFiltersArgs<'args>
29283  ) -> flatbuffers::WIPOffset<LayerSnapFilters<'bldr>> {
29284    let mut builder = LayerSnapFiltersBuilder::new(_fbb);
29285    if let Some(x) = args.exclude_layers { builder.add_exclude_layers(x); }
29286    if let Some(x) = args.include_layers { builder.add_include_layers(x); }
29287    builder.finish()
29288  }
29289
29290
29291  #[inline]
29292  pub fn include_layers(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
29293    // Safety:
29294    // Created from valid Table for this object
29295    // which contains a valid value in this slot
29296    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(LayerSnapFilters::VT_INCLUDE_LAYERS, None)}
29297  }
29298  #[inline]
29299  pub fn exclude_layers(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
29300    // Safety:
29301    // Created from valid Table for this object
29302    // which contains a valid value in this slot
29303    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(LayerSnapFilters::VT_EXCLUDE_LAYERS, None)}
29304  }
29305}
29306
29307impl flatbuffers::Verifiable for LayerSnapFilters<'_> {
29308  #[inline]
29309  fn run_verifier(
29310    v: &mut flatbuffers::Verifier, pos: usize
29311  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29312    use self::flatbuffers::Verifiable;
29313    v.visit_table(pos)?
29314     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("include_layers", Self::VT_INCLUDE_LAYERS, false)?
29315     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("exclude_layers", Self::VT_EXCLUDE_LAYERS, false)?
29316     .finish();
29317    Ok(())
29318  }
29319}
29320pub struct LayerSnapFiltersArgs<'a> {
29321    pub include_layers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
29322    pub exclude_layers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
29323}
29324impl<'a> Default for LayerSnapFiltersArgs<'a> {
29325  #[inline]
29326  fn default() -> Self {
29327    LayerSnapFiltersArgs {
29328      include_layers: None,
29329      exclude_layers: None,
29330    }
29331  }
29332}
29333
29334pub struct LayerSnapFiltersBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29335  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29336  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29337}
29338impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LayerSnapFiltersBuilder<'a, 'b, A> {
29339  #[inline]
29340  pub fn add_include_layers(&mut self, include_layers: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
29341    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LayerSnapFilters::VT_INCLUDE_LAYERS, include_layers);
29342  }
29343  #[inline]
29344  pub fn add_exclude_layers(&mut self, exclude_layers: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
29345    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LayerSnapFilters::VT_EXCLUDE_LAYERS, exclude_layers);
29346  }
29347  #[inline]
29348  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LayerSnapFiltersBuilder<'a, 'b, A> {
29349    let start = _fbb.start_table();
29350    LayerSnapFiltersBuilder {
29351      fbb_: _fbb,
29352      start_: start,
29353    }
29354  }
29355  #[inline]
29356  pub fn finish(self) -> flatbuffers::WIPOffset<LayerSnapFilters<'a>> {
29357    let o = self.fbb_.end_table(self.start_);
29358    flatbuffers::WIPOffset::new(o.value())
29359  }
29360}
29361
29362impl core::fmt::Debug for LayerSnapFilters<'_> {
29363  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29364    let mut ds = f.debug_struct("LayerSnapFilters");
29365      ds.field("include_layers", &self.include_layers());
29366      ds.field("exclude_layers", &self.exclude_layers());
29367      ds.finish()
29368  }
29369}
29370pub enum SnapMarkerStyleOffset {}
29371#[derive(Copy, Clone, PartialEq)]
29372
29373pub struct SnapMarkerStyle<'a> {
29374  pub _tab: flatbuffers::Table<'a>,
29375}
29376
29377impl<'a> flatbuffers::Follow<'a> for SnapMarkerStyle<'a> {
29378  type Inner = SnapMarkerStyle<'a>;
29379  #[inline]
29380  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29381    Self { _tab: flatbuffers::Table::new(buf, loc) }
29382  }
29383}
29384
29385impl<'a> SnapMarkerStyle<'a> {
29386  pub const VT_SHAPE: flatbuffers::VOffsetT = 4;
29387  pub const VT_COLOR: flatbuffers::VOffsetT = 6;
29388
29389  #[inline]
29390  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29391    SnapMarkerStyle { _tab: table }
29392  }
29393  #[allow(unused_mut)]
29394  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29395    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29396    args: &'args SnapMarkerStyleArgs<'args>
29397  ) -> flatbuffers::WIPOffset<SnapMarkerStyle<'bldr>> {
29398    let mut builder = SnapMarkerStyleBuilder::new(_fbb);
29399    if let Some(x) = args.color { builder.add_color(x); }
29400    if let Some(x) = args.shape { builder.add_shape(x); }
29401    builder.finish()
29402  }
29403
29404
29405  #[inline]
29406  pub fn shape(&self) -> Option<SNAP_MARKER_SHAPE> {
29407    // Safety:
29408    // Created from valid Table for this object
29409    // which contains a valid value in this slot
29410    unsafe { self._tab.get::<SNAP_MARKER_SHAPE>(SnapMarkerStyle::VT_SHAPE, None)}
29411  }
29412  #[inline]
29413  pub fn color(&self) -> Option<&'a str> {
29414    // Safety:
29415    // Created from valid Table for this object
29416    // which contains a valid value in this slot
29417    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(SnapMarkerStyle::VT_COLOR, None)}
29418  }
29419}
29420
29421impl flatbuffers::Verifiable for SnapMarkerStyle<'_> {
29422  #[inline]
29423  fn run_verifier(
29424    v: &mut flatbuffers::Verifier, pos: usize
29425  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29426    use self::flatbuffers::Verifiable;
29427    v.visit_table(pos)?
29428     .visit_field::<SNAP_MARKER_SHAPE>("shape", Self::VT_SHAPE, false)?
29429     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("color", Self::VT_COLOR, false)?
29430     .finish();
29431    Ok(())
29432  }
29433}
29434pub struct SnapMarkerStyleArgs<'a> {
29435    pub shape: Option<SNAP_MARKER_SHAPE>,
29436    pub color: Option<flatbuffers::WIPOffset<&'a str>>,
29437}
29438impl<'a> Default for SnapMarkerStyleArgs<'a> {
29439  #[inline]
29440  fn default() -> Self {
29441    SnapMarkerStyleArgs {
29442      shape: None,
29443      color: None,
29444    }
29445  }
29446}
29447
29448pub struct SnapMarkerStyleBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29449  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29450  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29451}
29452impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SnapMarkerStyleBuilder<'a, 'b, A> {
29453  #[inline]
29454  pub fn add_shape(&mut self, shape: SNAP_MARKER_SHAPE) {
29455    self.fbb_.push_slot_always::<SNAP_MARKER_SHAPE>(SnapMarkerStyle::VT_SHAPE, shape);
29456  }
29457  #[inline]
29458  pub fn add_color(&mut self, color: flatbuffers::WIPOffset<&'b  str>) {
29459    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapMarkerStyle::VT_COLOR, color);
29460  }
29461  #[inline]
29462  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SnapMarkerStyleBuilder<'a, 'b, A> {
29463    let start = _fbb.start_table();
29464    SnapMarkerStyleBuilder {
29465      fbb_: _fbb,
29466      start_: start,
29467    }
29468  }
29469  #[inline]
29470  pub fn finish(self) -> flatbuffers::WIPOffset<SnapMarkerStyle<'a>> {
29471    let o = self.fbb_.end_table(self.start_);
29472    flatbuffers::WIPOffset::new(o.value())
29473  }
29474}
29475
29476impl core::fmt::Debug for SnapMarkerStyle<'_> {
29477  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29478    let mut ds = f.debug_struct("SnapMarkerStyle");
29479      ds.field("shape", &self.shape());
29480      ds.field("color", &self.color());
29481      ds.finish()
29482  }
29483}
29484pub enum SnapMarkerStyleEntryOffset {}
29485#[derive(Copy, Clone, PartialEq)]
29486
29487pub struct SnapMarkerStyleEntry<'a> {
29488  pub _tab: flatbuffers::Table<'a>,
29489}
29490
29491impl<'a> flatbuffers::Follow<'a> for SnapMarkerStyleEntry<'a> {
29492  type Inner = SnapMarkerStyleEntry<'a>;
29493  #[inline]
29494  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29495    Self { _tab: flatbuffers::Table::new(buf, loc) }
29496  }
29497}
29498
29499impl<'a> SnapMarkerStyleEntry<'a> {
29500  pub const VT_KEY: flatbuffers::VOffsetT = 4;
29501  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
29502
29503  #[inline]
29504  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29505    SnapMarkerStyleEntry { _tab: table }
29506  }
29507  #[allow(unused_mut)]
29508  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29509    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29510    args: &'args SnapMarkerStyleEntryArgs<'args>
29511  ) -> flatbuffers::WIPOffset<SnapMarkerStyleEntry<'bldr>> {
29512    let mut builder = SnapMarkerStyleEntryBuilder::new(_fbb);
29513    if let Some(x) = args.value { builder.add_value(x); }
29514    if let Some(x) = args.key { builder.add_key(x); }
29515    builder.finish()
29516  }
29517
29518
29519  #[inline]
29520  pub fn key(&self) -> Option<OBJECT_SNAP_MODE> {
29521    // Safety:
29522    // Created from valid Table for this object
29523    // which contains a valid value in this slot
29524    unsafe { self._tab.get::<OBJECT_SNAP_MODE>(SnapMarkerStyleEntry::VT_KEY, None)}
29525  }
29526  #[inline]
29527  pub fn value(&self) -> Option<SnapMarkerStyle<'a>> {
29528    // Safety:
29529    // Created from valid Table for this object
29530    // which contains a valid value in this slot
29531    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<SnapMarkerStyle>>(SnapMarkerStyleEntry::VT_VALUE, None)}
29532  }
29533}
29534
29535impl flatbuffers::Verifiable for SnapMarkerStyleEntry<'_> {
29536  #[inline]
29537  fn run_verifier(
29538    v: &mut flatbuffers::Verifier, pos: usize
29539  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29540    use self::flatbuffers::Verifiable;
29541    v.visit_table(pos)?
29542     .visit_field::<OBJECT_SNAP_MODE>("key", Self::VT_KEY, false)?
29543     .visit_field::<flatbuffers::ForwardsUOffset<SnapMarkerStyle>>("value", Self::VT_VALUE, false)?
29544     .finish();
29545    Ok(())
29546  }
29547}
29548pub struct SnapMarkerStyleEntryArgs<'a> {
29549    pub key: Option<OBJECT_SNAP_MODE>,
29550    pub value: Option<flatbuffers::WIPOffset<SnapMarkerStyle<'a>>>,
29551}
29552impl<'a> Default for SnapMarkerStyleEntryArgs<'a> {
29553  #[inline]
29554  fn default() -> Self {
29555    SnapMarkerStyleEntryArgs {
29556      key: None,
29557      value: None,
29558    }
29559  }
29560}
29561
29562pub struct SnapMarkerStyleEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29563  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29564  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29565}
29566impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SnapMarkerStyleEntryBuilder<'a, 'b, A> {
29567  #[inline]
29568  pub fn add_key(&mut self, key: OBJECT_SNAP_MODE) {
29569    self.fbb_.push_slot_always::<OBJECT_SNAP_MODE>(SnapMarkerStyleEntry::VT_KEY, key);
29570  }
29571  #[inline]
29572  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<SnapMarkerStyle<'b >>) {
29573    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<SnapMarkerStyle>>(SnapMarkerStyleEntry::VT_VALUE, value);
29574  }
29575  #[inline]
29576  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SnapMarkerStyleEntryBuilder<'a, 'b, A> {
29577    let start = _fbb.start_table();
29578    SnapMarkerStyleEntryBuilder {
29579      fbb_: _fbb,
29580      start_: start,
29581    }
29582  }
29583  #[inline]
29584  pub fn finish(self) -> flatbuffers::WIPOffset<SnapMarkerStyleEntry<'a>> {
29585    let o = self.fbb_.end_table(self.start_);
29586    flatbuffers::WIPOffset::new(o.value())
29587  }
29588}
29589
29590impl core::fmt::Debug for SnapMarkerStyleEntry<'_> {
29591  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29592    let mut ds = f.debug_struct("SnapMarkerStyleEntry");
29593      ds.field("key", &self.key());
29594      ds.field("value", &self.value());
29595      ds.finish()
29596  }
29597}
29598pub enum SnapMarkerSettingsOffset {}
29599#[derive(Copy, Clone, PartialEq)]
29600
29601pub struct SnapMarkerSettings<'a> {
29602  pub _tab: flatbuffers::Table<'a>,
29603}
29604
29605impl<'a> flatbuffers::Follow<'a> for SnapMarkerSettings<'a> {
29606  type Inner = SnapMarkerSettings<'a>;
29607  #[inline]
29608  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29609    Self { _tab: flatbuffers::Table::new(buf, loc) }
29610  }
29611}
29612
29613impl<'a> SnapMarkerSettings<'a> {
29614  pub const VT_ENABLED: flatbuffers::VOffsetT = 4;
29615  pub const VT_SIZE: flatbuffers::VOffsetT = 6;
29616  pub const VT_DURATION: flatbuffers::VOffsetT = 8;
29617  pub const VT_STYLES: flatbuffers::VOffsetT = 10;
29618
29619  #[inline]
29620  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29621    SnapMarkerSettings { _tab: table }
29622  }
29623  #[allow(unused_mut)]
29624  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29625    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29626    args: &'args SnapMarkerSettingsArgs<'args>
29627  ) -> flatbuffers::WIPOffset<SnapMarkerSettings<'bldr>> {
29628    let mut builder = SnapMarkerSettingsBuilder::new(_fbb);
29629    if let Some(x) = args.styles { builder.add_styles(x); }
29630    builder.add_duration(args.duration);
29631    builder.add_size(args.size);
29632    builder.add_enabled(args.enabled);
29633    builder.finish()
29634  }
29635
29636
29637  #[inline]
29638  pub fn enabled(&self) -> bool {
29639    // Safety:
29640    // Created from valid Table for this object
29641    // which contains a valid value in this slot
29642    unsafe { self._tab.get::<bool>(SnapMarkerSettings::VT_ENABLED, Some(false)).unwrap()}
29643  }
29644  #[inline]
29645  pub fn size(&self) -> i32 {
29646    // Safety:
29647    // Created from valid Table for this object
29648    // which contains a valid value in this slot
29649    unsafe { self._tab.get::<i32>(SnapMarkerSettings::VT_SIZE, Some(0)).unwrap()}
29650  }
29651  #[inline]
29652  pub fn duration(&self) -> i32 {
29653    // Safety:
29654    // Created from valid Table for this object
29655    // which contains a valid value in this slot
29656    unsafe { self._tab.get::<i32>(SnapMarkerSettings::VT_DURATION, Some(0)).unwrap()}
29657  }
29658  #[inline]
29659  pub fn styles(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapMarkerStyleEntry<'a>>>> {
29660    // Safety:
29661    // Created from valid Table for this object
29662    // which contains a valid value in this slot
29663    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapMarkerStyleEntry>>>>(SnapMarkerSettings::VT_STYLES, None)}
29664  }
29665}
29666
29667impl flatbuffers::Verifiable for SnapMarkerSettings<'_> {
29668  #[inline]
29669  fn run_verifier(
29670    v: &mut flatbuffers::Verifier, pos: usize
29671  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29672    use self::flatbuffers::Verifiable;
29673    v.visit_table(pos)?
29674     .visit_field::<bool>("enabled", Self::VT_ENABLED, false)?
29675     .visit_field::<i32>("size", Self::VT_SIZE, false)?
29676     .visit_field::<i32>("duration", Self::VT_DURATION, false)?
29677     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<SnapMarkerStyleEntry>>>>("styles", Self::VT_STYLES, false)?
29678     .finish();
29679    Ok(())
29680  }
29681}
29682pub struct SnapMarkerSettingsArgs<'a> {
29683    pub enabled: bool,
29684    pub size: i32,
29685    pub duration: i32,
29686    pub styles: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapMarkerStyleEntry<'a>>>>>,
29687}
29688impl<'a> Default for SnapMarkerSettingsArgs<'a> {
29689  #[inline]
29690  fn default() -> Self {
29691    SnapMarkerSettingsArgs {
29692      enabled: false,
29693      size: 0,
29694      duration: 0,
29695      styles: None,
29696    }
29697  }
29698}
29699
29700pub struct SnapMarkerSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
29701  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
29702  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
29703}
29704impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SnapMarkerSettingsBuilder<'a, 'b, A> {
29705  #[inline]
29706  pub fn add_enabled(&mut self, enabled: bool) {
29707    self.fbb_.push_slot::<bool>(SnapMarkerSettings::VT_ENABLED, enabled, false);
29708  }
29709  #[inline]
29710  pub fn add_size(&mut self, size: i32) {
29711    self.fbb_.push_slot::<i32>(SnapMarkerSettings::VT_SIZE, size, 0);
29712  }
29713  #[inline]
29714  pub fn add_duration(&mut self, duration: i32) {
29715    self.fbb_.push_slot::<i32>(SnapMarkerSettings::VT_DURATION, duration, 0);
29716  }
29717  #[inline]
29718  pub fn add_styles(&mut self, styles: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<SnapMarkerStyleEntry<'b >>>>) {
29719    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapMarkerSettings::VT_STYLES, styles);
29720  }
29721  #[inline]
29722  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SnapMarkerSettingsBuilder<'a, 'b, A> {
29723    let start = _fbb.start_table();
29724    SnapMarkerSettingsBuilder {
29725      fbb_: _fbb,
29726      start_: start,
29727    }
29728  }
29729  #[inline]
29730  pub fn finish(self) -> flatbuffers::WIPOffset<SnapMarkerSettings<'a>> {
29731    let o = self.fbb_.end_table(self.start_);
29732    flatbuffers::WIPOffset::new(o.value())
29733  }
29734}
29735
29736impl core::fmt::Debug for SnapMarkerSettings<'_> {
29737  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
29738    let mut ds = f.debug_struct("SnapMarkerSettings");
29739      ds.field("enabled", &self.enabled());
29740      ds.field("size", &self.size());
29741      ds.field("duration", &self.duration());
29742      ds.field("styles", &self.styles());
29743      ds.finish()
29744  }
29745}
29746pub enum SnapSettingsOffset {}
29747#[derive(Copy, Clone, PartialEq)]
29748
29749pub struct SnapSettings<'a> {
29750  pub _tab: flatbuffers::Table<'a>,
29751}
29752
29753impl<'a> flatbuffers::Follow<'a> for SnapSettings<'a> {
29754  type Inner = SnapSettings<'a>;
29755  #[inline]
29756  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
29757    Self { _tab: flatbuffers::Table::new(buf, loc) }
29758  }
29759}
29760
29761impl<'a> SnapSettings<'a> {
29762  pub const VT_READONLY: flatbuffers::VOffsetT = 4;
29763  pub const VT_TWIST_ANGLE: flatbuffers::VOffsetT = 6;
29764  pub const VT_SNAP_TOLERANCE: flatbuffers::VOffsetT = 8;
29765  pub const VT_OBJECT_SNAP_APERTURE: flatbuffers::VOffsetT = 10;
29766  pub const VT_IS_ORTHO_MODE_ON: flatbuffers::VOffsetT = 12;
29767  pub const VT_POLAR_TRACKING: flatbuffers::VOffsetT = 14;
29768  pub const VT_IS_OBJECT_SNAP_ON: flatbuffers::VOffsetT = 16;
29769  pub const VT_ACTIVE_OBJECT_SNAP_MODES: flatbuffers::VOffsetT = 18;
29770  pub const VT_SNAP_PRIORITY: flatbuffers::VOffsetT = 20;
29771  pub const VT_SHOW_TRACKING_LINES: flatbuffers::VOffsetT = 22;
29772  pub const VT_TRACKING_LINE_STYLE: flatbuffers::VOffsetT = 24;
29773  pub const VT_DYNAMIC_SNAP: flatbuffers::VOffsetT = 26;
29774  pub const VT_TEMPORARY_OVERRIDES: flatbuffers::VOffsetT = 28;
29775  pub const VT_INCREMENTAL_DISTANCE: flatbuffers::VOffsetT = 30;
29776  pub const VT_MAGNETIC_STRENGTH: flatbuffers::VOffsetT = 32;
29777  pub const VT_LAYER_SNAP_FILTERS: flatbuffers::VOffsetT = 34;
29778  pub const VT_ELEMENT_TYPE_FILTERS: flatbuffers::VOffsetT = 36;
29779  pub const VT_SNAP_MODE: flatbuffers::VOffsetT = 38;
29780  pub const VT_SNAP_MARKERS: flatbuffers::VOffsetT = 40;
29781  pub const VT_CONSTRUCTION_SNAP_ENABLED: flatbuffers::VOffsetT = 42;
29782  pub const VT_SNAP_TO_GRID_INTERSECTIONS: flatbuffers::VOffsetT = 44;
29783
29784  #[inline]
29785  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
29786    SnapSettings { _tab: table }
29787  }
29788  #[allow(unused_mut)]
29789  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
29790    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
29791    args: &'args SnapSettingsArgs<'args>
29792  ) -> flatbuffers::WIPOffset<SnapSettings<'bldr>> {
29793    let mut builder = SnapSettingsBuilder::new(_fbb);
29794    builder.add_magnetic_strength(args.magnetic_strength);
29795    builder.add_incremental_distance(args.incremental_distance);
29796    builder.add_twist_angle(args.twist_angle);
29797    if let Some(x) = args.snap_markers { builder.add_snap_markers(x); }
29798    if let Some(x) = args.element_type_filters { builder.add_element_type_filters(x); }
29799    if let Some(x) = args.layer_snap_filters { builder.add_layer_snap_filters(x); }
29800    if let Some(x) = args.temporary_overrides { builder.add_temporary_overrides(x); }
29801    if let Some(x) = args.dynamic_snap { builder.add_dynamic_snap(x); }
29802    if let Some(x) = args.tracking_line_style { builder.add_tracking_line_style(x); }
29803    if let Some(x) = args.snap_priority { builder.add_snap_priority(x); }
29804    if let Some(x) = args.active_object_snap_modes { builder.add_active_object_snap_modes(x); }
29805    if let Some(x) = args.polar_tracking { builder.add_polar_tracking(x); }
29806    builder.add_object_snap_aperture(args.object_snap_aperture);
29807    builder.add_snap_tolerance(args.snap_tolerance);
29808    builder.add_snap_to_grid_intersections(args.snap_to_grid_intersections);
29809    builder.add_construction_snap_enabled(args.construction_snap_enabled);
29810    if let Some(x) = args.snap_mode { builder.add_snap_mode(x); }
29811    builder.add_show_tracking_lines(args.show_tracking_lines);
29812    builder.add_is_object_snap_on(args.is_object_snap_on);
29813    builder.add_is_ortho_mode_on(args.is_ortho_mode_on);
29814    builder.add_readonly(args.readonly);
29815    builder.finish()
29816  }
29817
29818
29819  #[inline]
29820  pub fn readonly(&self) -> bool {
29821    // Safety:
29822    // Created from valid Table for this object
29823    // which contains a valid value in this slot
29824    unsafe { self._tab.get::<bool>(SnapSettings::VT_READONLY, Some(false)).unwrap()}
29825  }
29826  #[inline]
29827  pub fn twist_angle(&self) -> f64 {
29828    // Safety:
29829    // Created from valid Table for this object
29830    // which contains a valid value in this slot
29831    unsafe { self._tab.get::<f64>(SnapSettings::VT_TWIST_ANGLE, Some(0.0)).unwrap()}
29832  }
29833  #[inline]
29834  pub fn snap_tolerance(&self) -> i32 {
29835    // Safety:
29836    // Created from valid Table for this object
29837    // which contains a valid value in this slot
29838    unsafe { self._tab.get::<i32>(SnapSettings::VT_SNAP_TOLERANCE, Some(0)).unwrap()}
29839  }
29840  #[inline]
29841  pub fn object_snap_aperture(&self) -> i32 {
29842    // Safety:
29843    // Created from valid Table for this object
29844    // which contains a valid value in this slot
29845    unsafe { self._tab.get::<i32>(SnapSettings::VT_OBJECT_SNAP_APERTURE, Some(0)).unwrap()}
29846  }
29847  #[inline]
29848  pub fn is_ortho_mode_on(&self) -> bool {
29849    // Safety:
29850    // Created from valid Table for this object
29851    // which contains a valid value in this slot
29852    unsafe { self._tab.get::<bool>(SnapSettings::VT_IS_ORTHO_MODE_ON, Some(false)).unwrap()}
29853  }
29854  #[inline]
29855  pub fn polar_tracking(&self) -> Option<PolarTrackingSettings<'a>> {
29856    // Safety:
29857    // Created from valid Table for this object
29858    // which contains a valid value in this slot
29859    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<PolarTrackingSettings>>(SnapSettings::VT_POLAR_TRACKING, None)}
29860  }
29861  #[inline]
29862  pub fn is_object_snap_on(&self) -> bool {
29863    // Safety:
29864    // Created from valid Table for this object
29865    // which contains a valid value in this slot
29866    unsafe { self._tab.get::<bool>(SnapSettings::VT_IS_OBJECT_SNAP_ON, Some(false)).unwrap()}
29867  }
29868  #[inline]
29869  pub fn active_object_snap_modes(&self) -> Option<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>> {
29870    // Safety:
29871    // Created from valid Table for this object
29872    // which contains a valid value in this slot
29873    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>>>(SnapSettings::VT_ACTIVE_OBJECT_SNAP_MODES, None)}
29874  }
29875  #[inline]
29876  pub fn snap_priority(&self) -> Option<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>> {
29877    // Safety:
29878    // Created from valid Table for this object
29879    // which contains a valid value in this slot
29880    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>>>(SnapSettings::VT_SNAP_PRIORITY, None)}
29881  }
29882  #[inline]
29883  pub fn show_tracking_lines(&self) -> bool {
29884    // Safety:
29885    // Created from valid Table for this object
29886    // which contains a valid value in this slot
29887    unsafe { self._tab.get::<bool>(SnapSettings::VT_SHOW_TRACKING_LINES, Some(false)).unwrap()}
29888  }
29889  #[inline]
29890  pub fn tracking_line_style(&self) -> Option<TrackingLineStyle<'a>> {
29891    // Safety:
29892    // Created from valid Table for this object
29893    // which contains a valid value in this slot
29894    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<TrackingLineStyle>>(SnapSettings::VT_TRACKING_LINE_STYLE, None)}
29895  }
29896  #[inline]
29897  pub fn dynamic_snap(&self) -> Option<DynamicSnapSettings<'a>> {
29898    // Safety:
29899    // Created from valid Table for this object
29900    // which contains a valid value in this slot
29901    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DynamicSnapSettings>>(SnapSettings::VT_DYNAMIC_SNAP, None)}
29902  }
29903  #[inline]
29904  pub fn temporary_overrides(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapOverride<'a>>>> {
29905    // Safety:
29906    // Created from valid Table for this object
29907    // which contains a valid value in this slot
29908    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapOverride>>>>(SnapSettings::VT_TEMPORARY_OVERRIDES, None)}
29909  }
29910  #[inline]
29911  pub fn incremental_distance(&self) -> f64 {
29912    // Safety:
29913    // Created from valid Table for this object
29914    // which contains a valid value in this slot
29915    unsafe { self._tab.get::<f64>(SnapSettings::VT_INCREMENTAL_DISTANCE, Some(0.0)).unwrap()}
29916  }
29917  #[inline]
29918  pub fn magnetic_strength(&self) -> f64 {
29919    // Safety:
29920    // Created from valid Table for this object
29921    // which contains a valid value in this slot
29922    unsafe { self._tab.get::<f64>(SnapSettings::VT_MAGNETIC_STRENGTH, Some(0.0)).unwrap()}
29923  }
29924  #[inline]
29925  pub fn layer_snap_filters(&self) -> Option<LayerSnapFilters<'a>> {
29926    // Safety:
29927    // Created from valid Table for this object
29928    // which contains a valid value in this slot
29929    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<LayerSnapFilters>>(SnapSettings::VT_LAYER_SNAP_FILTERS, None)}
29930  }
29931  #[inline]
29932  pub fn element_type_filters(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
29933    // Safety:
29934    // Created from valid Table for this object
29935    // which contains a valid value in this slot
29936    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(SnapSettings::VT_ELEMENT_TYPE_FILTERS, None)}
29937  }
29938  #[inline]
29939  pub fn snap_mode(&self) -> Option<SNAP_MODE> {
29940    // Safety:
29941    // Created from valid Table for this object
29942    // which contains a valid value in this slot
29943    unsafe { self._tab.get::<SNAP_MODE>(SnapSettings::VT_SNAP_MODE, None)}
29944  }
29945  #[inline]
29946  pub fn snap_markers(&self) -> Option<SnapMarkerSettings<'a>> {
29947    // Safety:
29948    // Created from valid Table for this object
29949    // which contains a valid value in this slot
29950    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<SnapMarkerSettings>>(SnapSettings::VT_SNAP_MARKERS, None)}
29951  }
29952  #[inline]
29953  pub fn construction_snap_enabled(&self) -> bool {
29954    // Safety:
29955    // Created from valid Table for this object
29956    // which contains a valid value in this slot
29957    unsafe { self._tab.get::<bool>(SnapSettings::VT_CONSTRUCTION_SNAP_ENABLED, Some(false)).unwrap()}
29958  }
29959  #[inline]
29960  pub fn snap_to_grid_intersections(&self) -> bool {
29961    // Safety:
29962    // Created from valid Table for this object
29963    // which contains a valid value in this slot
29964    unsafe { self._tab.get::<bool>(SnapSettings::VT_SNAP_TO_GRID_INTERSECTIONS, Some(false)).unwrap()}
29965  }
29966}
29967
29968impl flatbuffers::Verifiable for SnapSettings<'_> {
29969  #[inline]
29970  fn run_verifier(
29971    v: &mut flatbuffers::Verifier, pos: usize
29972  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
29973    use self::flatbuffers::Verifiable;
29974    v.visit_table(pos)?
29975     .visit_field::<bool>("readonly", Self::VT_READONLY, false)?
29976     .visit_field::<f64>("twist_angle", Self::VT_TWIST_ANGLE, false)?
29977     .visit_field::<i32>("snap_tolerance", Self::VT_SNAP_TOLERANCE, false)?
29978     .visit_field::<i32>("object_snap_aperture", Self::VT_OBJECT_SNAP_APERTURE, false)?
29979     .visit_field::<bool>("is_ortho_mode_on", Self::VT_IS_ORTHO_MODE_ON, false)?
29980     .visit_field::<flatbuffers::ForwardsUOffset<PolarTrackingSettings>>("polar_tracking", Self::VT_POLAR_TRACKING, false)?
29981     .visit_field::<bool>("is_object_snap_on", Self::VT_IS_OBJECT_SNAP_ON, false)?
29982     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, OBJECT_SNAP_MODE>>>("active_object_snap_modes", Self::VT_ACTIVE_OBJECT_SNAP_MODES, false)?
29983     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, OBJECT_SNAP_MODE>>>("snap_priority", Self::VT_SNAP_PRIORITY, false)?
29984     .visit_field::<bool>("show_tracking_lines", Self::VT_SHOW_TRACKING_LINES, false)?
29985     .visit_field::<flatbuffers::ForwardsUOffset<TrackingLineStyle>>("tracking_line_style", Self::VT_TRACKING_LINE_STYLE, false)?
29986     .visit_field::<flatbuffers::ForwardsUOffset<DynamicSnapSettings>>("dynamic_snap", Self::VT_DYNAMIC_SNAP, false)?
29987     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<SnapOverride>>>>("temporary_overrides", Self::VT_TEMPORARY_OVERRIDES, false)?
29988     .visit_field::<f64>("incremental_distance", Self::VT_INCREMENTAL_DISTANCE, false)?
29989     .visit_field::<f64>("magnetic_strength", Self::VT_MAGNETIC_STRENGTH, false)?
29990     .visit_field::<flatbuffers::ForwardsUOffset<LayerSnapFilters>>("layer_snap_filters", Self::VT_LAYER_SNAP_FILTERS, false)?
29991     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("element_type_filters", Self::VT_ELEMENT_TYPE_FILTERS, false)?
29992     .visit_field::<SNAP_MODE>("snap_mode", Self::VT_SNAP_MODE, false)?
29993     .visit_field::<flatbuffers::ForwardsUOffset<SnapMarkerSettings>>("snap_markers", Self::VT_SNAP_MARKERS, false)?
29994     .visit_field::<bool>("construction_snap_enabled", Self::VT_CONSTRUCTION_SNAP_ENABLED, false)?
29995     .visit_field::<bool>("snap_to_grid_intersections", Self::VT_SNAP_TO_GRID_INTERSECTIONS, false)?
29996     .finish();
29997    Ok(())
29998  }
29999}
30000pub struct SnapSettingsArgs<'a> {
30001    pub readonly: bool,
30002    pub twist_angle: f64,
30003    pub snap_tolerance: i32,
30004    pub object_snap_aperture: i32,
30005    pub is_ortho_mode_on: bool,
30006    pub polar_tracking: Option<flatbuffers::WIPOffset<PolarTrackingSettings<'a>>>,
30007    pub is_object_snap_on: bool,
30008    pub active_object_snap_modes: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>>>,
30009    pub snap_priority: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, OBJECT_SNAP_MODE>>>,
30010    pub show_tracking_lines: bool,
30011    pub tracking_line_style: Option<flatbuffers::WIPOffset<TrackingLineStyle<'a>>>,
30012    pub dynamic_snap: Option<flatbuffers::WIPOffset<DynamicSnapSettings<'a>>>,
30013    pub temporary_overrides: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<SnapOverride<'a>>>>>,
30014    pub incremental_distance: f64,
30015    pub magnetic_strength: f64,
30016    pub layer_snap_filters: Option<flatbuffers::WIPOffset<LayerSnapFilters<'a>>>,
30017    pub element_type_filters: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
30018    pub snap_mode: Option<SNAP_MODE>,
30019    pub snap_markers: Option<flatbuffers::WIPOffset<SnapMarkerSettings<'a>>>,
30020    pub construction_snap_enabled: bool,
30021    pub snap_to_grid_intersections: bool,
30022}
30023impl<'a> Default for SnapSettingsArgs<'a> {
30024  #[inline]
30025  fn default() -> Self {
30026    SnapSettingsArgs {
30027      readonly: false,
30028      twist_angle: 0.0,
30029      snap_tolerance: 0,
30030      object_snap_aperture: 0,
30031      is_ortho_mode_on: false,
30032      polar_tracking: None,
30033      is_object_snap_on: false,
30034      active_object_snap_modes: None,
30035      snap_priority: None,
30036      show_tracking_lines: false,
30037      tracking_line_style: None,
30038      dynamic_snap: None,
30039      temporary_overrides: None,
30040      incremental_distance: 0.0,
30041      magnetic_strength: 0.0,
30042      layer_snap_filters: None,
30043      element_type_filters: None,
30044      snap_mode: None,
30045      snap_markers: None,
30046      construction_snap_enabled: false,
30047      snap_to_grid_intersections: false,
30048    }
30049  }
30050}
30051
30052pub struct SnapSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30053  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30054  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30055}
30056impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> SnapSettingsBuilder<'a, 'b, A> {
30057  #[inline]
30058  pub fn add_readonly(&mut self, readonly: bool) {
30059    self.fbb_.push_slot::<bool>(SnapSettings::VT_READONLY, readonly, false);
30060  }
30061  #[inline]
30062  pub fn add_twist_angle(&mut self, twist_angle: f64) {
30063    self.fbb_.push_slot::<f64>(SnapSettings::VT_TWIST_ANGLE, twist_angle, 0.0);
30064  }
30065  #[inline]
30066  pub fn add_snap_tolerance(&mut self, snap_tolerance: i32) {
30067    self.fbb_.push_slot::<i32>(SnapSettings::VT_SNAP_TOLERANCE, snap_tolerance, 0);
30068  }
30069  #[inline]
30070  pub fn add_object_snap_aperture(&mut self, object_snap_aperture: i32) {
30071    self.fbb_.push_slot::<i32>(SnapSettings::VT_OBJECT_SNAP_APERTURE, object_snap_aperture, 0);
30072  }
30073  #[inline]
30074  pub fn add_is_ortho_mode_on(&mut self, is_ortho_mode_on: bool) {
30075    self.fbb_.push_slot::<bool>(SnapSettings::VT_IS_ORTHO_MODE_ON, is_ortho_mode_on, false);
30076  }
30077  #[inline]
30078  pub fn add_polar_tracking(&mut self, polar_tracking: flatbuffers::WIPOffset<PolarTrackingSettings<'b >>) {
30079    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<PolarTrackingSettings>>(SnapSettings::VT_POLAR_TRACKING, polar_tracking);
30080  }
30081  #[inline]
30082  pub fn add_is_object_snap_on(&mut self, is_object_snap_on: bool) {
30083    self.fbb_.push_slot::<bool>(SnapSettings::VT_IS_OBJECT_SNAP_ON, is_object_snap_on, false);
30084  }
30085  #[inline]
30086  pub fn add_active_object_snap_modes(&mut self, active_object_snap_modes: flatbuffers::WIPOffset<flatbuffers::Vector<'b , OBJECT_SNAP_MODE>>) {
30087    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapSettings::VT_ACTIVE_OBJECT_SNAP_MODES, active_object_snap_modes);
30088  }
30089  #[inline]
30090  pub fn add_snap_priority(&mut self, snap_priority: flatbuffers::WIPOffset<flatbuffers::Vector<'b , OBJECT_SNAP_MODE>>) {
30091    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapSettings::VT_SNAP_PRIORITY, snap_priority);
30092  }
30093  #[inline]
30094  pub fn add_show_tracking_lines(&mut self, show_tracking_lines: bool) {
30095    self.fbb_.push_slot::<bool>(SnapSettings::VT_SHOW_TRACKING_LINES, show_tracking_lines, false);
30096  }
30097  #[inline]
30098  pub fn add_tracking_line_style(&mut self, tracking_line_style: flatbuffers::WIPOffset<TrackingLineStyle<'b >>) {
30099    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<TrackingLineStyle>>(SnapSettings::VT_TRACKING_LINE_STYLE, tracking_line_style);
30100  }
30101  #[inline]
30102  pub fn add_dynamic_snap(&mut self, dynamic_snap: flatbuffers::WIPOffset<DynamicSnapSettings<'b >>) {
30103    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DynamicSnapSettings>>(SnapSettings::VT_DYNAMIC_SNAP, dynamic_snap);
30104  }
30105  #[inline]
30106  pub fn add_temporary_overrides(&mut self, temporary_overrides: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<SnapOverride<'b >>>>) {
30107    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapSettings::VT_TEMPORARY_OVERRIDES, temporary_overrides);
30108  }
30109  #[inline]
30110  pub fn add_incremental_distance(&mut self, incremental_distance: f64) {
30111    self.fbb_.push_slot::<f64>(SnapSettings::VT_INCREMENTAL_DISTANCE, incremental_distance, 0.0);
30112  }
30113  #[inline]
30114  pub fn add_magnetic_strength(&mut self, magnetic_strength: f64) {
30115    self.fbb_.push_slot::<f64>(SnapSettings::VT_MAGNETIC_STRENGTH, magnetic_strength, 0.0);
30116  }
30117  #[inline]
30118  pub fn add_layer_snap_filters(&mut self, layer_snap_filters: flatbuffers::WIPOffset<LayerSnapFilters<'b >>) {
30119    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<LayerSnapFilters>>(SnapSettings::VT_LAYER_SNAP_FILTERS, layer_snap_filters);
30120  }
30121  #[inline]
30122  pub fn add_element_type_filters(&mut self, element_type_filters: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
30123    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(SnapSettings::VT_ELEMENT_TYPE_FILTERS, element_type_filters);
30124  }
30125  #[inline]
30126  pub fn add_snap_mode(&mut self, snap_mode: SNAP_MODE) {
30127    self.fbb_.push_slot_always::<SNAP_MODE>(SnapSettings::VT_SNAP_MODE, snap_mode);
30128  }
30129  #[inline]
30130  pub fn add_snap_markers(&mut self, snap_markers: flatbuffers::WIPOffset<SnapMarkerSettings<'b >>) {
30131    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<SnapMarkerSettings>>(SnapSettings::VT_SNAP_MARKERS, snap_markers);
30132  }
30133  #[inline]
30134  pub fn add_construction_snap_enabled(&mut self, construction_snap_enabled: bool) {
30135    self.fbb_.push_slot::<bool>(SnapSettings::VT_CONSTRUCTION_SNAP_ENABLED, construction_snap_enabled, false);
30136  }
30137  #[inline]
30138  pub fn add_snap_to_grid_intersections(&mut self, snap_to_grid_intersections: bool) {
30139    self.fbb_.push_slot::<bool>(SnapSettings::VT_SNAP_TO_GRID_INTERSECTIONS, snap_to_grid_intersections, false);
30140  }
30141  #[inline]
30142  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> SnapSettingsBuilder<'a, 'b, A> {
30143    let start = _fbb.start_table();
30144    SnapSettingsBuilder {
30145      fbb_: _fbb,
30146      start_: start,
30147    }
30148  }
30149  #[inline]
30150  pub fn finish(self) -> flatbuffers::WIPOffset<SnapSettings<'a>> {
30151    let o = self.fbb_.end_table(self.start_);
30152    flatbuffers::WIPOffset::new(o.value())
30153  }
30154}
30155
30156impl core::fmt::Debug for SnapSettings<'_> {
30157  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30158    let mut ds = f.debug_struct("SnapSettings");
30159      ds.field("readonly", &self.readonly());
30160      ds.field("twist_angle", &self.twist_angle());
30161      ds.field("snap_tolerance", &self.snap_tolerance());
30162      ds.field("object_snap_aperture", &self.object_snap_aperture());
30163      ds.field("is_ortho_mode_on", &self.is_ortho_mode_on());
30164      ds.field("polar_tracking", &self.polar_tracking());
30165      ds.field("is_object_snap_on", &self.is_object_snap_on());
30166      ds.field("active_object_snap_modes", &self.active_object_snap_modes());
30167      ds.field("snap_priority", &self.snap_priority());
30168      ds.field("show_tracking_lines", &self.show_tracking_lines());
30169      ds.field("tracking_line_style", &self.tracking_line_style());
30170      ds.field("dynamic_snap", &self.dynamic_snap());
30171      ds.field("temporary_overrides", &self.temporary_overrides());
30172      ds.field("incremental_distance", &self.incremental_distance());
30173      ds.field("magnetic_strength", &self.magnetic_strength());
30174      ds.field("layer_snap_filters", &self.layer_snap_filters());
30175      ds.field("element_type_filters", &self.element_type_filters());
30176      ds.field("snap_mode", &self.snap_mode());
30177      ds.field("snap_markers", &self.snap_markers());
30178      ds.field("construction_snap_enabled", &self.construction_snap_enabled());
30179      ds.field("snap_to_grid_intersections", &self.snap_to_grid_intersections());
30180      ds.finish()
30181  }
30182}
30183pub enum IdentifiedGridSettingsOffset {}
30184#[derive(Copy, Clone, PartialEq)]
30185
30186pub struct IdentifiedGridSettings<'a> {
30187  pub _tab: flatbuffers::Table<'a>,
30188}
30189
30190impl<'a> flatbuffers::Follow<'a> for IdentifiedGridSettings<'a> {
30191  type Inner = IdentifiedGridSettings<'a>;
30192  #[inline]
30193  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30194    Self { _tab: flatbuffers::Table::new(buf, loc) }
30195  }
30196}
30197
30198impl<'a> IdentifiedGridSettings<'a> {
30199  pub const VT_ID: flatbuffers::VOffsetT = 4;
30200  pub const VT_SETTINGS: flatbuffers::VOffsetT = 6;
30201
30202  #[inline]
30203  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30204    IdentifiedGridSettings { _tab: table }
30205  }
30206  #[allow(unused_mut)]
30207  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30208    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30209    args: &'args IdentifiedGridSettingsArgs<'args>
30210  ) -> flatbuffers::WIPOffset<IdentifiedGridSettings<'bldr>> {
30211    let mut builder = IdentifiedGridSettingsBuilder::new(_fbb);
30212    if let Some(x) = args.settings { builder.add_settings(x); }
30213    if let Some(x) = args.id { builder.add_id(x); }
30214    builder.finish()
30215  }
30216
30217
30218  #[inline]
30219  pub fn id(&self) -> Option<Identifier<'a>> {
30220    // Safety:
30221    // Created from valid Table for this object
30222    // which contains a valid value in this slot
30223    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedGridSettings::VT_ID, None)}
30224  }
30225  #[inline]
30226  pub fn settings(&self) -> Option<GridSettings<'a>> {
30227    // Safety:
30228    // Created from valid Table for this object
30229    // which contains a valid value in this slot
30230    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<GridSettings>>(IdentifiedGridSettings::VT_SETTINGS, None)}
30231  }
30232}
30233
30234impl flatbuffers::Verifiable for IdentifiedGridSettings<'_> {
30235  #[inline]
30236  fn run_verifier(
30237    v: &mut flatbuffers::Verifier, pos: usize
30238  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30239    use self::flatbuffers::Verifiable;
30240    v.visit_table(pos)?
30241     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
30242     .visit_field::<flatbuffers::ForwardsUOffset<GridSettings>>("settings", Self::VT_SETTINGS, false)?
30243     .finish();
30244    Ok(())
30245  }
30246}
30247pub struct IdentifiedGridSettingsArgs<'a> {
30248    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
30249    pub settings: Option<flatbuffers::WIPOffset<GridSettings<'a>>>,
30250}
30251impl<'a> Default for IdentifiedGridSettingsArgs<'a> {
30252  #[inline]
30253  fn default() -> Self {
30254    IdentifiedGridSettingsArgs {
30255      id: None,
30256      settings: None,
30257    }
30258  }
30259}
30260
30261pub struct IdentifiedGridSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30262  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30263  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30264}
30265impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedGridSettingsBuilder<'a, 'b, A> {
30266  #[inline]
30267  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
30268    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedGridSettings::VT_ID, id);
30269  }
30270  #[inline]
30271  pub fn add_settings(&mut self, settings: flatbuffers::WIPOffset<GridSettings<'b >>) {
30272    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<GridSettings>>(IdentifiedGridSettings::VT_SETTINGS, settings);
30273  }
30274  #[inline]
30275  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedGridSettingsBuilder<'a, 'b, A> {
30276    let start = _fbb.start_table();
30277    IdentifiedGridSettingsBuilder {
30278      fbb_: _fbb,
30279      start_: start,
30280    }
30281  }
30282  #[inline]
30283  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedGridSettings<'a>> {
30284    let o = self.fbb_.end_table(self.start_);
30285    flatbuffers::WIPOffset::new(o.value())
30286  }
30287}
30288
30289impl core::fmt::Debug for IdentifiedGridSettings<'_> {
30290  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30291    let mut ds = f.debug_struct("IdentifiedGridSettings");
30292      ds.field("id", &self.id());
30293      ds.field("settings", &self.settings());
30294      ds.finish()
30295  }
30296}
30297pub enum IdentifiedSnapSettingsOffset {}
30298#[derive(Copy, Clone, PartialEq)]
30299
30300pub struct IdentifiedSnapSettings<'a> {
30301  pub _tab: flatbuffers::Table<'a>,
30302}
30303
30304impl<'a> flatbuffers::Follow<'a> for IdentifiedSnapSettings<'a> {
30305  type Inner = IdentifiedSnapSettings<'a>;
30306  #[inline]
30307  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30308    Self { _tab: flatbuffers::Table::new(buf, loc) }
30309  }
30310}
30311
30312impl<'a> IdentifiedSnapSettings<'a> {
30313  pub const VT_ID: flatbuffers::VOffsetT = 4;
30314  pub const VT_SETTINGS: flatbuffers::VOffsetT = 6;
30315
30316  #[inline]
30317  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30318    IdentifiedSnapSettings { _tab: table }
30319  }
30320  #[allow(unused_mut)]
30321  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30322    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30323    args: &'args IdentifiedSnapSettingsArgs<'args>
30324  ) -> flatbuffers::WIPOffset<IdentifiedSnapSettings<'bldr>> {
30325    let mut builder = IdentifiedSnapSettingsBuilder::new(_fbb);
30326    if let Some(x) = args.settings { builder.add_settings(x); }
30327    if let Some(x) = args.id { builder.add_id(x); }
30328    builder.finish()
30329  }
30330
30331
30332  #[inline]
30333  pub fn id(&self) -> Option<Identifier<'a>> {
30334    // Safety:
30335    // Created from valid Table for this object
30336    // which contains a valid value in this slot
30337    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedSnapSettings::VT_ID, None)}
30338  }
30339  #[inline]
30340  pub fn settings(&self) -> Option<SnapSettings<'a>> {
30341    // Safety:
30342    // Created from valid Table for this object
30343    // which contains a valid value in this slot
30344    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<SnapSettings>>(IdentifiedSnapSettings::VT_SETTINGS, None)}
30345  }
30346}
30347
30348impl flatbuffers::Verifiable for IdentifiedSnapSettings<'_> {
30349  #[inline]
30350  fn run_verifier(
30351    v: &mut flatbuffers::Verifier, pos: usize
30352  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30353    use self::flatbuffers::Verifiable;
30354    v.visit_table(pos)?
30355     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
30356     .visit_field::<flatbuffers::ForwardsUOffset<SnapSettings>>("settings", Self::VT_SETTINGS, false)?
30357     .finish();
30358    Ok(())
30359  }
30360}
30361pub struct IdentifiedSnapSettingsArgs<'a> {
30362    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
30363    pub settings: Option<flatbuffers::WIPOffset<SnapSettings<'a>>>,
30364}
30365impl<'a> Default for IdentifiedSnapSettingsArgs<'a> {
30366  #[inline]
30367  fn default() -> Self {
30368    IdentifiedSnapSettingsArgs {
30369      id: None,
30370      settings: None,
30371    }
30372  }
30373}
30374
30375pub struct IdentifiedSnapSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30376  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30377  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30378}
30379impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedSnapSettingsBuilder<'a, 'b, A> {
30380  #[inline]
30381  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
30382    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedSnapSettings::VT_ID, id);
30383  }
30384  #[inline]
30385  pub fn add_settings(&mut self, settings: flatbuffers::WIPOffset<SnapSettings<'b >>) {
30386    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<SnapSettings>>(IdentifiedSnapSettings::VT_SETTINGS, settings);
30387  }
30388  #[inline]
30389  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedSnapSettingsBuilder<'a, 'b, A> {
30390    let start = _fbb.start_table();
30391    IdentifiedSnapSettingsBuilder {
30392      fbb_: _fbb,
30393      start_: start,
30394    }
30395  }
30396  #[inline]
30397  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedSnapSettings<'a>> {
30398    let o = self.fbb_.end_table(self.start_);
30399    flatbuffers::WIPOffset::new(o.value())
30400  }
30401}
30402
30403impl core::fmt::Debug for IdentifiedSnapSettings<'_> {
30404  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30405    let mut ds = f.debug_struct("IdentifiedSnapSettings");
30406      ds.field("id", &self.id());
30407      ds.field("settings", &self.settings());
30408      ds.finish()
30409  }
30410}
30411pub enum IdentifiedUcsOffset {}
30412#[derive(Copy, Clone, PartialEq)]
30413
30414pub struct IdentifiedUcs<'a> {
30415  pub _tab: flatbuffers::Table<'a>,
30416}
30417
30418impl<'a> flatbuffers::Follow<'a> for IdentifiedUcs<'a> {
30419  type Inner = IdentifiedUcs<'a>;
30420  #[inline]
30421  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30422    Self { _tab: flatbuffers::Table::new(buf, loc) }
30423  }
30424}
30425
30426impl<'a> IdentifiedUcs<'a> {
30427  pub const VT_ID: flatbuffers::VOffsetT = 4;
30428  pub const VT_UCS: flatbuffers::VOffsetT = 6;
30429
30430  #[inline]
30431  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30432    IdentifiedUcs { _tab: table }
30433  }
30434  #[allow(unused_mut)]
30435  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30436    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30437    args: &'args IdentifiedUcsArgs<'args>
30438  ) -> flatbuffers::WIPOffset<IdentifiedUcs<'bldr>> {
30439    let mut builder = IdentifiedUcsBuilder::new(_fbb);
30440    if let Some(x) = args.ucs { builder.add_ucs(x); }
30441    if let Some(x) = args.id { builder.add_id(x); }
30442    builder.finish()
30443  }
30444
30445
30446  #[inline]
30447  pub fn id(&self) -> Option<Identifier<'a>> {
30448    // Safety:
30449    // Created from valid Table for this object
30450    // which contains a valid value in this slot
30451    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedUcs::VT_ID, None)}
30452  }
30453  #[inline]
30454  pub fn ucs(&self) -> Option<DucUcs<'a>> {
30455    // Safety:
30456    // Created from valid Table for this object
30457    // which contains a valid value in this slot
30458    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucUcs>>(IdentifiedUcs::VT_UCS, None)}
30459  }
30460}
30461
30462impl flatbuffers::Verifiable for IdentifiedUcs<'_> {
30463  #[inline]
30464  fn run_verifier(
30465    v: &mut flatbuffers::Verifier, pos: usize
30466  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30467    use self::flatbuffers::Verifiable;
30468    v.visit_table(pos)?
30469     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
30470     .visit_field::<flatbuffers::ForwardsUOffset<DucUcs>>("ucs", Self::VT_UCS, false)?
30471     .finish();
30472    Ok(())
30473  }
30474}
30475pub struct IdentifiedUcsArgs<'a> {
30476    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
30477    pub ucs: Option<flatbuffers::WIPOffset<DucUcs<'a>>>,
30478}
30479impl<'a> Default for IdentifiedUcsArgs<'a> {
30480  #[inline]
30481  fn default() -> Self {
30482    IdentifiedUcsArgs {
30483      id: None,
30484      ucs: None,
30485    }
30486  }
30487}
30488
30489pub struct IdentifiedUcsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30490  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30491  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30492}
30493impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedUcsBuilder<'a, 'b, A> {
30494  #[inline]
30495  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
30496    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedUcs::VT_ID, id);
30497  }
30498  #[inline]
30499  pub fn add_ucs(&mut self, ucs: flatbuffers::WIPOffset<DucUcs<'b >>) {
30500    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucUcs>>(IdentifiedUcs::VT_UCS, ucs);
30501  }
30502  #[inline]
30503  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedUcsBuilder<'a, 'b, A> {
30504    let start = _fbb.start_table();
30505    IdentifiedUcsBuilder {
30506      fbb_: _fbb,
30507      start_: start,
30508    }
30509  }
30510  #[inline]
30511  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedUcs<'a>> {
30512    let o = self.fbb_.end_table(self.start_);
30513    flatbuffers::WIPOffset::new(o.value())
30514  }
30515}
30516
30517impl core::fmt::Debug for IdentifiedUcs<'_> {
30518  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30519    let mut ds = f.debug_struct("IdentifiedUcs");
30520      ds.field("id", &self.id());
30521      ds.field("ucs", &self.ucs());
30522      ds.finish()
30523  }
30524}
30525pub enum IdentifiedViewOffset {}
30526#[derive(Copy, Clone, PartialEq)]
30527
30528pub struct IdentifiedView<'a> {
30529  pub _tab: flatbuffers::Table<'a>,
30530}
30531
30532impl<'a> flatbuffers::Follow<'a> for IdentifiedView<'a> {
30533  type Inner = IdentifiedView<'a>;
30534  #[inline]
30535  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30536    Self { _tab: flatbuffers::Table::new(buf, loc) }
30537  }
30538}
30539
30540impl<'a> IdentifiedView<'a> {
30541  pub const VT_ID: flatbuffers::VOffsetT = 4;
30542  pub const VT_VIEW: flatbuffers::VOffsetT = 6;
30543
30544  #[inline]
30545  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30546    IdentifiedView { _tab: table }
30547  }
30548  #[allow(unused_mut)]
30549  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30550    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30551    args: &'args IdentifiedViewArgs<'args>
30552  ) -> flatbuffers::WIPOffset<IdentifiedView<'bldr>> {
30553    let mut builder = IdentifiedViewBuilder::new(_fbb);
30554    if let Some(x) = args.view { builder.add_view(x); }
30555    if let Some(x) = args.id { builder.add_id(x); }
30556    builder.finish()
30557  }
30558
30559
30560  #[inline]
30561  pub fn id(&self) -> Option<Identifier<'a>> {
30562    // Safety:
30563    // Created from valid Table for this object
30564    // which contains a valid value in this slot
30565    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(IdentifiedView::VT_ID, None)}
30566  }
30567  #[inline]
30568  pub fn view(&self) -> Option<DucView<'a>> {
30569    // Safety:
30570    // Created from valid Table for this object
30571    // which contains a valid value in this slot
30572    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucView>>(IdentifiedView::VT_VIEW, None)}
30573  }
30574}
30575
30576impl flatbuffers::Verifiable for IdentifiedView<'_> {
30577  #[inline]
30578  fn run_verifier(
30579    v: &mut flatbuffers::Verifier, pos: usize
30580  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30581    use self::flatbuffers::Verifiable;
30582    v.visit_table(pos)?
30583     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("id", Self::VT_ID, false)?
30584     .visit_field::<flatbuffers::ForwardsUOffset<DucView>>("view", Self::VT_VIEW, false)?
30585     .finish();
30586    Ok(())
30587  }
30588}
30589pub struct IdentifiedViewArgs<'a> {
30590    pub id: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
30591    pub view: Option<flatbuffers::WIPOffset<DucView<'a>>>,
30592}
30593impl<'a> Default for IdentifiedViewArgs<'a> {
30594  #[inline]
30595  fn default() -> Self {
30596    IdentifiedViewArgs {
30597      id: None,
30598      view: None,
30599    }
30600  }
30601}
30602
30603pub struct IdentifiedViewBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30604  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30605  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30606}
30607impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> IdentifiedViewBuilder<'a, 'b, A> {
30608  #[inline]
30609  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<Identifier<'b >>) {
30610    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(IdentifiedView::VT_ID, id);
30611  }
30612  #[inline]
30613  pub fn add_view(&mut self, view: flatbuffers::WIPOffset<DucView<'b >>) {
30614    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucView>>(IdentifiedView::VT_VIEW, view);
30615  }
30616  #[inline]
30617  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> IdentifiedViewBuilder<'a, 'b, A> {
30618    let start = _fbb.start_table();
30619    IdentifiedViewBuilder {
30620      fbb_: _fbb,
30621      start_: start,
30622    }
30623  }
30624  #[inline]
30625  pub fn finish(self) -> flatbuffers::WIPOffset<IdentifiedView<'a>> {
30626    let o = self.fbb_.end_table(self.start_);
30627    flatbuffers::WIPOffset::new(o.value())
30628  }
30629}
30630
30631impl core::fmt::Debug for IdentifiedView<'_> {
30632  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30633    let mut ds = f.debug_struct("IdentifiedView");
30634      ds.field("id", &self.id());
30635      ds.field("view", &self.view());
30636      ds.finish()
30637  }
30638}
30639pub enum StandardViewSettingsOffset {}
30640#[derive(Copy, Clone, PartialEq)]
30641
30642pub struct StandardViewSettings<'a> {
30643  pub _tab: flatbuffers::Table<'a>,
30644}
30645
30646impl<'a> flatbuffers::Follow<'a> for StandardViewSettings<'a> {
30647  type Inner = StandardViewSettings<'a>;
30648  #[inline]
30649  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30650    Self { _tab: flatbuffers::Table::new(buf, loc) }
30651  }
30652}
30653
30654impl<'a> StandardViewSettings<'a> {
30655  pub const VT_VIEWS: flatbuffers::VOffsetT = 4;
30656  pub const VT_UCS: flatbuffers::VOffsetT = 6;
30657  pub const VT_GRID_SETTINGS: flatbuffers::VOffsetT = 8;
30658  pub const VT_SNAP_SETTINGS: flatbuffers::VOffsetT = 10;
30659
30660  #[inline]
30661  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30662    StandardViewSettings { _tab: table }
30663  }
30664  #[allow(unused_mut)]
30665  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30666    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30667    args: &'args StandardViewSettingsArgs<'args>
30668  ) -> flatbuffers::WIPOffset<StandardViewSettings<'bldr>> {
30669    let mut builder = StandardViewSettingsBuilder::new(_fbb);
30670    if let Some(x) = args.snap_settings { builder.add_snap_settings(x); }
30671    if let Some(x) = args.grid_settings { builder.add_grid_settings(x); }
30672    if let Some(x) = args.ucs { builder.add_ucs(x); }
30673    if let Some(x) = args.views { builder.add_views(x); }
30674    builder.finish()
30675  }
30676
30677
30678  #[inline]
30679  pub fn views(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedView<'a>>>> {
30680    // Safety:
30681    // Created from valid Table for this object
30682    // which contains a valid value in this slot
30683    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedView>>>>(StandardViewSettings::VT_VIEWS, None)}
30684  }
30685  #[inline]
30686  pub fn ucs(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedUcs<'a>>>> {
30687    // Safety:
30688    // Created from valid Table for this object
30689    // which contains a valid value in this slot
30690    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedUcs>>>>(StandardViewSettings::VT_UCS, None)}
30691  }
30692  #[inline]
30693  pub fn grid_settings(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedGridSettings<'a>>>> {
30694    // Safety:
30695    // Created from valid Table for this object
30696    // which contains a valid value in this slot
30697    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedGridSettings>>>>(StandardViewSettings::VT_GRID_SETTINGS, None)}
30698  }
30699  #[inline]
30700  pub fn snap_settings(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedSnapSettings<'a>>>> {
30701    // Safety:
30702    // Created from valid Table for this object
30703    // which contains a valid value in this slot
30704    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedSnapSettings>>>>(StandardViewSettings::VT_SNAP_SETTINGS, None)}
30705  }
30706}
30707
30708impl flatbuffers::Verifiable for StandardViewSettings<'_> {
30709  #[inline]
30710  fn run_verifier(
30711    v: &mut flatbuffers::Verifier, pos: usize
30712  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30713    use self::flatbuffers::Verifiable;
30714    v.visit_table(pos)?
30715     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedView>>>>("views", Self::VT_VIEWS, false)?
30716     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedUcs>>>>("ucs", Self::VT_UCS, false)?
30717     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedGridSettings>>>>("grid_settings", Self::VT_GRID_SETTINGS, false)?
30718     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<IdentifiedSnapSettings>>>>("snap_settings", Self::VT_SNAP_SETTINGS, false)?
30719     .finish();
30720    Ok(())
30721  }
30722}
30723pub struct StandardViewSettingsArgs<'a> {
30724    pub views: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedView<'a>>>>>,
30725    pub ucs: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedUcs<'a>>>>>,
30726    pub grid_settings: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedGridSettings<'a>>>>>,
30727    pub snap_settings: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<IdentifiedSnapSettings<'a>>>>>,
30728}
30729impl<'a> Default for StandardViewSettingsArgs<'a> {
30730  #[inline]
30731  fn default() -> Self {
30732    StandardViewSettingsArgs {
30733      views: None,
30734      ucs: None,
30735      grid_settings: None,
30736      snap_settings: None,
30737    }
30738  }
30739}
30740
30741pub struct StandardViewSettingsBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30742  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30743  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30744}
30745impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardViewSettingsBuilder<'a, 'b, A> {
30746  #[inline]
30747  pub fn add_views(&mut self, views: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedView<'b >>>>) {
30748    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardViewSettings::VT_VIEWS, views);
30749  }
30750  #[inline]
30751  pub fn add_ucs(&mut self, ucs: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedUcs<'b >>>>) {
30752    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardViewSettings::VT_UCS, ucs);
30753  }
30754  #[inline]
30755  pub fn add_grid_settings(&mut self, grid_settings: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedGridSettings<'b >>>>) {
30756    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardViewSettings::VT_GRID_SETTINGS, grid_settings);
30757  }
30758  #[inline]
30759  pub fn add_snap_settings(&mut self, snap_settings: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<IdentifiedSnapSettings<'b >>>>) {
30760    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(StandardViewSettings::VT_SNAP_SETTINGS, snap_settings);
30761  }
30762  #[inline]
30763  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardViewSettingsBuilder<'a, 'b, A> {
30764    let start = _fbb.start_table();
30765    StandardViewSettingsBuilder {
30766      fbb_: _fbb,
30767      start_: start,
30768    }
30769  }
30770  #[inline]
30771  pub fn finish(self) -> flatbuffers::WIPOffset<StandardViewSettings<'a>> {
30772    let o = self.fbb_.end_table(self.start_);
30773    flatbuffers::WIPOffset::new(o.value())
30774  }
30775}
30776
30777impl core::fmt::Debug for StandardViewSettings<'_> {
30778  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30779    let mut ds = f.debug_struct("StandardViewSettings");
30780      ds.field("views", &self.views());
30781      ds.field("ucs", &self.ucs());
30782      ds.field("grid_settings", &self.grid_settings());
30783      ds.field("snap_settings", &self.snap_settings());
30784      ds.finish()
30785  }
30786}
30787pub enum DimensionValidationRulesOffset {}
30788#[derive(Copy, Clone, PartialEq)]
30789
30790pub struct DimensionValidationRules<'a> {
30791  pub _tab: flatbuffers::Table<'a>,
30792}
30793
30794impl<'a> flatbuffers::Follow<'a> for DimensionValidationRules<'a> {
30795  type Inner = DimensionValidationRules<'a>;
30796  #[inline]
30797  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30798    Self { _tab: flatbuffers::Table::new(buf, loc) }
30799  }
30800}
30801
30802impl<'a> DimensionValidationRules<'a> {
30803  pub const VT_MIN_TEXT_HEIGHT: flatbuffers::VOffsetT = 4;
30804  pub const VT_MAX_TEXT_HEIGHT: flatbuffers::VOffsetT = 6;
30805  pub const VT_ALLOWED_PRECISIONS: flatbuffers::VOffsetT = 8;
30806
30807  #[inline]
30808  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30809    DimensionValidationRules { _tab: table }
30810  }
30811  #[allow(unused_mut)]
30812  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30813    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30814    args: &'args DimensionValidationRulesArgs<'args>
30815  ) -> flatbuffers::WIPOffset<DimensionValidationRules<'bldr>> {
30816    let mut builder = DimensionValidationRulesBuilder::new(_fbb);
30817    builder.add_max_text_height(args.max_text_height);
30818    builder.add_min_text_height(args.min_text_height);
30819    if let Some(x) = args.allowed_precisions { builder.add_allowed_precisions(x); }
30820    builder.finish()
30821  }
30822
30823
30824  #[inline]
30825  pub fn min_text_height(&self) -> f64 {
30826    // Safety:
30827    // Created from valid Table for this object
30828    // which contains a valid value in this slot
30829    unsafe { self._tab.get::<f64>(DimensionValidationRules::VT_MIN_TEXT_HEIGHT, Some(0.0)).unwrap()}
30830  }
30831  #[inline]
30832  pub fn max_text_height(&self) -> f64 {
30833    // Safety:
30834    // Created from valid Table for this object
30835    // which contains a valid value in this slot
30836    unsafe { self._tab.get::<f64>(DimensionValidationRules::VT_MAX_TEXT_HEIGHT, Some(0.0)).unwrap()}
30837  }
30838  #[inline]
30839  pub fn allowed_precisions(&self) -> Option<flatbuffers::Vector<'a, i32>> {
30840    // Safety:
30841    // Created from valid Table for this object
30842    // which contains a valid value in this slot
30843    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, i32>>>(DimensionValidationRules::VT_ALLOWED_PRECISIONS, None)}
30844  }
30845}
30846
30847impl flatbuffers::Verifiable for DimensionValidationRules<'_> {
30848  #[inline]
30849  fn run_verifier(
30850    v: &mut flatbuffers::Verifier, pos: usize
30851  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30852    use self::flatbuffers::Verifiable;
30853    v.visit_table(pos)?
30854     .visit_field::<f64>("min_text_height", Self::VT_MIN_TEXT_HEIGHT, false)?
30855     .visit_field::<f64>("max_text_height", Self::VT_MAX_TEXT_HEIGHT, false)?
30856     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, i32>>>("allowed_precisions", Self::VT_ALLOWED_PRECISIONS, false)?
30857     .finish();
30858    Ok(())
30859  }
30860}
30861pub struct DimensionValidationRulesArgs<'a> {
30862    pub min_text_height: f64,
30863    pub max_text_height: f64,
30864    pub allowed_precisions: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, i32>>>,
30865}
30866impl<'a> Default for DimensionValidationRulesArgs<'a> {
30867  #[inline]
30868  fn default() -> Self {
30869    DimensionValidationRulesArgs {
30870      min_text_height: 0.0,
30871      max_text_height: 0.0,
30872      allowed_precisions: None,
30873    }
30874  }
30875}
30876
30877pub struct DimensionValidationRulesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30878  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30879  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30880}
30881impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DimensionValidationRulesBuilder<'a, 'b, A> {
30882  #[inline]
30883  pub fn add_min_text_height(&mut self, min_text_height: f64) {
30884    self.fbb_.push_slot::<f64>(DimensionValidationRules::VT_MIN_TEXT_HEIGHT, min_text_height, 0.0);
30885  }
30886  #[inline]
30887  pub fn add_max_text_height(&mut self, max_text_height: f64) {
30888    self.fbb_.push_slot::<f64>(DimensionValidationRules::VT_MAX_TEXT_HEIGHT, max_text_height, 0.0);
30889  }
30890  #[inline]
30891  pub fn add_allowed_precisions(&mut self, allowed_precisions: flatbuffers::WIPOffset<flatbuffers::Vector<'b , i32>>) {
30892    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DimensionValidationRules::VT_ALLOWED_PRECISIONS, allowed_precisions);
30893  }
30894  #[inline]
30895  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DimensionValidationRulesBuilder<'a, 'b, A> {
30896    let start = _fbb.start_table();
30897    DimensionValidationRulesBuilder {
30898      fbb_: _fbb,
30899      start_: start,
30900    }
30901  }
30902  #[inline]
30903  pub fn finish(self) -> flatbuffers::WIPOffset<DimensionValidationRules<'a>> {
30904    let o = self.fbb_.end_table(self.start_);
30905    flatbuffers::WIPOffset::new(o.value())
30906  }
30907}
30908
30909impl core::fmt::Debug for DimensionValidationRules<'_> {
30910  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
30911    let mut ds = f.debug_struct("DimensionValidationRules");
30912      ds.field("min_text_height", &self.min_text_height());
30913      ds.field("max_text_height", &self.max_text_height());
30914      ds.field("allowed_precisions", &self.allowed_precisions());
30915      ds.finish()
30916  }
30917}
30918pub enum LayerValidationRulesOffset {}
30919#[derive(Copy, Clone, PartialEq)]
30920
30921pub struct LayerValidationRules<'a> {
30922  pub _tab: flatbuffers::Table<'a>,
30923}
30924
30925impl<'a> flatbuffers::Follow<'a> for LayerValidationRules<'a> {
30926  type Inner = LayerValidationRules<'a>;
30927  #[inline]
30928  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
30929    Self { _tab: flatbuffers::Table::new(buf, loc) }
30930  }
30931}
30932
30933impl<'a> LayerValidationRules<'a> {
30934  pub const VT_PROHIBITED_LAYER_NAMES: flatbuffers::VOffsetT = 4;
30935
30936  #[inline]
30937  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
30938    LayerValidationRules { _tab: table }
30939  }
30940  #[allow(unused_mut)]
30941  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
30942    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
30943    args: &'args LayerValidationRulesArgs<'args>
30944  ) -> flatbuffers::WIPOffset<LayerValidationRules<'bldr>> {
30945    let mut builder = LayerValidationRulesBuilder::new(_fbb);
30946    if let Some(x) = args.prohibited_layer_names { builder.add_prohibited_layer_names(x); }
30947    builder.finish()
30948  }
30949
30950
30951  #[inline]
30952  pub fn prohibited_layer_names(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>> {
30953    // Safety:
30954    // Created from valid Table for this object
30955    // which contains a valid value in this slot
30956    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>(LayerValidationRules::VT_PROHIBITED_LAYER_NAMES, None)}
30957  }
30958}
30959
30960impl flatbuffers::Verifiable for LayerValidationRules<'_> {
30961  #[inline]
30962  fn run_verifier(
30963    v: &mut flatbuffers::Verifier, pos: usize
30964  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
30965    use self::flatbuffers::Verifiable;
30966    v.visit_table(pos)?
30967     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<&'_ str>>>>("prohibited_layer_names", Self::VT_PROHIBITED_LAYER_NAMES, false)?
30968     .finish();
30969    Ok(())
30970  }
30971}
30972pub struct LayerValidationRulesArgs<'a> {
30973    pub prohibited_layer_names: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<&'a str>>>>,
30974}
30975impl<'a> Default for LayerValidationRulesArgs<'a> {
30976  #[inline]
30977  fn default() -> Self {
30978    LayerValidationRulesArgs {
30979      prohibited_layer_names: None,
30980    }
30981  }
30982}
30983
30984pub struct LayerValidationRulesBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
30985  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
30986  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
30987}
30988impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> LayerValidationRulesBuilder<'a, 'b, A> {
30989  #[inline]
30990  pub fn add_prohibited_layer_names(&mut self, prohibited_layer_names: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<&'b  str>>>) {
30991    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(LayerValidationRules::VT_PROHIBITED_LAYER_NAMES, prohibited_layer_names);
30992  }
30993  #[inline]
30994  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> LayerValidationRulesBuilder<'a, 'b, A> {
30995    let start = _fbb.start_table();
30996    LayerValidationRulesBuilder {
30997      fbb_: _fbb,
30998      start_: start,
30999    }
31000  }
31001  #[inline]
31002  pub fn finish(self) -> flatbuffers::WIPOffset<LayerValidationRules<'a>> {
31003    let o = self.fbb_.end_table(self.start_);
31004    flatbuffers::WIPOffset::new(o.value())
31005  }
31006}
31007
31008impl core::fmt::Debug for LayerValidationRules<'_> {
31009  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31010    let mut ds = f.debug_struct("LayerValidationRules");
31011      ds.field("prohibited_layer_names", &self.prohibited_layer_names());
31012      ds.finish()
31013  }
31014}
31015pub enum StandardValidationOffset {}
31016#[derive(Copy, Clone, PartialEq)]
31017
31018pub struct StandardValidation<'a> {
31019  pub _tab: flatbuffers::Table<'a>,
31020}
31021
31022impl<'a> flatbuffers::Follow<'a> for StandardValidation<'a> {
31023  type Inner = StandardValidation<'a>;
31024  #[inline]
31025  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31026    Self { _tab: flatbuffers::Table::new(buf, loc) }
31027  }
31028}
31029
31030impl<'a> StandardValidation<'a> {
31031  pub const VT_DIMENSION_RULES: flatbuffers::VOffsetT = 4;
31032  pub const VT_LAYER_RULES: flatbuffers::VOffsetT = 6;
31033
31034  #[inline]
31035  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31036    StandardValidation { _tab: table }
31037  }
31038  #[allow(unused_mut)]
31039  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31040    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31041    args: &'args StandardValidationArgs<'args>
31042  ) -> flatbuffers::WIPOffset<StandardValidation<'bldr>> {
31043    let mut builder = StandardValidationBuilder::new(_fbb);
31044    if let Some(x) = args.layer_rules { builder.add_layer_rules(x); }
31045    if let Some(x) = args.dimension_rules { builder.add_dimension_rules(x); }
31046    builder.finish()
31047  }
31048
31049
31050  #[inline]
31051  pub fn dimension_rules(&self) -> Option<DimensionValidationRules<'a>> {
31052    // Safety:
31053    // Created from valid Table for this object
31054    // which contains a valid value in this slot
31055    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DimensionValidationRules>>(StandardValidation::VT_DIMENSION_RULES, None)}
31056  }
31057  #[inline]
31058  pub fn layer_rules(&self) -> Option<LayerValidationRules<'a>> {
31059    // Safety:
31060    // Created from valid Table for this object
31061    // which contains a valid value in this slot
31062    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<LayerValidationRules>>(StandardValidation::VT_LAYER_RULES, None)}
31063  }
31064}
31065
31066impl flatbuffers::Verifiable for StandardValidation<'_> {
31067  #[inline]
31068  fn run_verifier(
31069    v: &mut flatbuffers::Verifier, pos: usize
31070  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31071    use self::flatbuffers::Verifiable;
31072    v.visit_table(pos)?
31073     .visit_field::<flatbuffers::ForwardsUOffset<DimensionValidationRules>>("dimension_rules", Self::VT_DIMENSION_RULES, false)?
31074     .visit_field::<flatbuffers::ForwardsUOffset<LayerValidationRules>>("layer_rules", Self::VT_LAYER_RULES, false)?
31075     .finish();
31076    Ok(())
31077  }
31078}
31079pub struct StandardValidationArgs<'a> {
31080    pub dimension_rules: Option<flatbuffers::WIPOffset<DimensionValidationRules<'a>>>,
31081    pub layer_rules: Option<flatbuffers::WIPOffset<LayerValidationRules<'a>>>,
31082}
31083impl<'a> Default for StandardValidationArgs<'a> {
31084  #[inline]
31085  fn default() -> Self {
31086    StandardValidationArgs {
31087      dimension_rules: None,
31088      layer_rules: None,
31089    }
31090  }
31091}
31092
31093pub struct StandardValidationBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31094  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31095  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31096}
31097impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardValidationBuilder<'a, 'b, A> {
31098  #[inline]
31099  pub fn add_dimension_rules(&mut self, dimension_rules: flatbuffers::WIPOffset<DimensionValidationRules<'b >>) {
31100    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DimensionValidationRules>>(StandardValidation::VT_DIMENSION_RULES, dimension_rules);
31101  }
31102  #[inline]
31103  pub fn add_layer_rules(&mut self, layer_rules: flatbuffers::WIPOffset<LayerValidationRules<'b >>) {
31104    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<LayerValidationRules>>(StandardValidation::VT_LAYER_RULES, layer_rules);
31105  }
31106  #[inline]
31107  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardValidationBuilder<'a, 'b, A> {
31108    let start = _fbb.start_table();
31109    StandardValidationBuilder {
31110      fbb_: _fbb,
31111      start_: start,
31112    }
31113  }
31114  #[inline]
31115  pub fn finish(self) -> flatbuffers::WIPOffset<StandardValidation<'a>> {
31116    let o = self.fbb_.end_table(self.start_);
31117    flatbuffers::WIPOffset::new(o.value())
31118  }
31119}
31120
31121impl core::fmt::Debug for StandardValidation<'_> {
31122  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31123    let mut ds = f.debug_struct("StandardValidation");
31124      ds.field("dimension_rules", &self.dimension_rules());
31125      ds.field("layer_rules", &self.layer_rules());
31126      ds.finish()
31127  }
31128}
31129pub enum StandardOffset {}
31130#[derive(Copy, Clone, PartialEq)]
31131
31132pub struct Standard<'a> {
31133  pub _tab: flatbuffers::Table<'a>,
31134}
31135
31136impl<'a> flatbuffers::Follow<'a> for Standard<'a> {
31137  type Inner = Standard<'a>;
31138  #[inline]
31139  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31140    Self { _tab: flatbuffers::Table::new(buf, loc) }
31141  }
31142}
31143
31144impl<'a> Standard<'a> {
31145  pub const VT_IDENTIFIER: flatbuffers::VOffsetT = 4;
31146  pub const VT_VERSION: flatbuffers::VOffsetT = 6;
31147  pub const VT_READONLY: flatbuffers::VOffsetT = 8;
31148  pub const VT_OVERRIDES: flatbuffers::VOffsetT = 10;
31149  pub const VT_STYLES: flatbuffers::VOffsetT = 12;
31150  pub const VT_VIEW_SETTINGS: flatbuffers::VOffsetT = 14;
31151  pub const VT_UNITS: flatbuffers::VOffsetT = 16;
31152  pub const VT_VALIDATION: flatbuffers::VOffsetT = 18;
31153
31154  #[inline]
31155  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31156    Standard { _tab: table }
31157  }
31158  #[allow(unused_mut)]
31159  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31160    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31161    args: &'args StandardArgs<'args>
31162  ) -> flatbuffers::WIPOffset<Standard<'bldr>> {
31163    let mut builder = StandardBuilder::new(_fbb);
31164    if let Some(x) = args.validation { builder.add_validation(x); }
31165    if let Some(x) = args.units { builder.add_units(x); }
31166    if let Some(x) = args.view_settings { builder.add_view_settings(x); }
31167    if let Some(x) = args.styles { builder.add_styles(x); }
31168    if let Some(x) = args.overrides { builder.add_overrides(x); }
31169    if let Some(x) = args.version { builder.add_version(x); }
31170    if let Some(x) = args.identifier { builder.add_identifier(x); }
31171    builder.add_readonly(args.readonly);
31172    builder.finish()
31173  }
31174
31175
31176  #[inline]
31177  pub fn identifier(&self) -> Option<Identifier<'a>> {
31178    // Safety:
31179    // Created from valid Table for this object
31180    // which contains a valid value in this slot
31181    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<Identifier>>(Standard::VT_IDENTIFIER, None)}
31182  }
31183  #[inline]
31184  pub fn version(&self) -> Option<&'a str> {
31185    // Safety:
31186    // Created from valid Table for this object
31187    // which contains a valid value in this slot
31188    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(Standard::VT_VERSION, None)}
31189  }
31190  #[inline]
31191  pub fn readonly(&self) -> bool {
31192    // Safety:
31193    // Created from valid Table for this object
31194    // which contains a valid value in this slot
31195    unsafe { self._tab.get::<bool>(Standard::VT_READONLY, Some(false)).unwrap()}
31196  }
31197  #[inline]
31198  pub fn overrides(&self) -> Option<StandardOverrides<'a>> {
31199    // Safety:
31200    // Created from valid Table for this object
31201    // which contains a valid value in this slot
31202    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StandardOverrides>>(Standard::VT_OVERRIDES, None)}
31203  }
31204  #[inline]
31205  pub fn styles(&self) -> Option<StandardStyles<'a>> {
31206    // Safety:
31207    // Created from valid Table for this object
31208    // which contains a valid value in this slot
31209    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StandardStyles>>(Standard::VT_STYLES, None)}
31210  }
31211  #[inline]
31212  pub fn view_settings(&self) -> Option<StandardViewSettings<'a>> {
31213    // Safety:
31214    // Created from valid Table for this object
31215    // which contains a valid value in this slot
31216    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StandardViewSettings>>(Standard::VT_VIEW_SETTINGS, None)}
31217  }
31218  #[inline]
31219  pub fn units(&self) -> Option<StandardUnits<'a>> {
31220    // Safety:
31221    // Created from valid Table for this object
31222    // which contains a valid value in this slot
31223    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StandardUnits>>(Standard::VT_UNITS, None)}
31224  }
31225  #[inline]
31226  pub fn validation(&self) -> Option<StandardValidation<'a>> {
31227    // Safety:
31228    // Created from valid Table for this object
31229    // which contains a valid value in this slot
31230    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<StandardValidation>>(Standard::VT_VALIDATION, None)}
31231  }
31232}
31233
31234impl flatbuffers::Verifiable for Standard<'_> {
31235  #[inline]
31236  fn run_verifier(
31237    v: &mut flatbuffers::Verifier, pos: usize
31238  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31239    use self::flatbuffers::Verifiable;
31240    v.visit_table(pos)?
31241     .visit_field::<flatbuffers::ForwardsUOffset<Identifier>>("identifier", Self::VT_IDENTIFIER, false)?
31242     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("version", Self::VT_VERSION, false)?
31243     .visit_field::<bool>("readonly", Self::VT_READONLY, false)?
31244     .visit_field::<flatbuffers::ForwardsUOffset<StandardOverrides>>("overrides", Self::VT_OVERRIDES, false)?
31245     .visit_field::<flatbuffers::ForwardsUOffset<StandardStyles>>("styles", Self::VT_STYLES, false)?
31246     .visit_field::<flatbuffers::ForwardsUOffset<StandardViewSettings>>("view_settings", Self::VT_VIEW_SETTINGS, false)?
31247     .visit_field::<flatbuffers::ForwardsUOffset<StandardUnits>>("units", Self::VT_UNITS, false)?
31248     .visit_field::<flatbuffers::ForwardsUOffset<StandardValidation>>("validation", Self::VT_VALIDATION, false)?
31249     .finish();
31250    Ok(())
31251  }
31252}
31253pub struct StandardArgs<'a> {
31254    pub identifier: Option<flatbuffers::WIPOffset<Identifier<'a>>>,
31255    pub version: Option<flatbuffers::WIPOffset<&'a str>>,
31256    pub readonly: bool,
31257    pub overrides: Option<flatbuffers::WIPOffset<StandardOverrides<'a>>>,
31258    pub styles: Option<flatbuffers::WIPOffset<StandardStyles<'a>>>,
31259    pub view_settings: Option<flatbuffers::WIPOffset<StandardViewSettings<'a>>>,
31260    pub units: Option<flatbuffers::WIPOffset<StandardUnits<'a>>>,
31261    pub validation: Option<flatbuffers::WIPOffset<StandardValidation<'a>>>,
31262}
31263impl<'a> Default for StandardArgs<'a> {
31264  #[inline]
31265  fn default() -> Self {
31266    StandardArgs {
31267      identifier: None,
31268      version: None,
31269      readonly: false,
31270      overrides: None,
31271      styles: None,
31272      view_settings: None,
31273      units: None,
31274      validation: None,
31275    }
31276  }
31277}
31278
31279pub struct StandardBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31280  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31281  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31282}
31283impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> StandardBuilder<'a, 'b, A> {
31284  #[inline]
31285  pub fn add_identifier(&mut self, identifier: flatbuffers::WIPOffset<Identifier<'b >>) {
31286    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<Identifier>>(Standard::VT_IDENTIFIER, identifier);
31287  }
31288  #[inline]
31289  pub fn add_version(&mut self, version: flatbuffers::WIPOffset<&'b  str>) {
31290    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Standard::VT_VERSION, version);
31291  }
31292  #[inline]
31293  pub fn add_readonly(&mut self, readonly: bool) {
31294    self.fbb_.push_slot::<bool>(Standard::VT_READONLY, readonly, false);
31295  }
31296  #[inline]
31297  pub fn add_overrides(&mut self, overrides: flatbuffers::WIPOffset<StandardOverrides<'b >>) {
31298    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StandardOverrides>>(Standard::VT_OVERRIDES, overrides);
31299  }
31300  #[inline]
31301  pub fn add_styles(&mut self, styles: flatbuffers::WIPOffset<StandardStyles<'b >>) {
31302    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StandardStyles>>(Standard::VT_STYLES, styles);
31303  }
31304  #[inline]
31305  pub fn add_view_settings(&mut self, view_settings: flatbuffers::WIPOffset<StandardViewSettings<'b >>) {
31306    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StandardViewSettings>>(Standard::VT_VIEW_SETTINGS, view_settings);
31307  }
31308  #[inline]
31309  pub fn add_units(&mut self, units: flatbuffers::WIPOffset<StandardUnits<'b >>) {
31310    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StandardUnits>>(Standard::VT_UNITS, units);
31311  }
31312  #[inline]
31313  pub fn add_validation(&mut self, validation: flatbuffers::WIPOffset<StandardValidation<'b >>) {
31314    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<StandardValidation>>(Standard::VT_VALIDATION, validation);
31315  }
31316  #[inline]
31317  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> StandardBuilder<'a, 'b, A> {
31318    let start = _fbb.start_table();
31319    StandardBuilder {
31320      fbb_: _fbb,
31321      start_: start,
31322    }
31323  }
31324  #[inline]
31325  pub fn finish(self) -> flatbuffers::WIPOffset<Standard<'a>> {
31326    let o = self.fbb_.end_table(self.start_);
31327    flatbuffers::WIPOffset::new(o.value())
31328  }
31329}
31330
31331impl core::fmt::Debug for Standard<'_> {
31332  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31333    let mut ds = f.debug_struct("Standard");
31334      ds.field("identifier", &self.identifier());
31335      ds.field("version", &self.version());
31336      ds.field("readonly", &self.readonly());
31337      ds.field("overrides", &self.overrides());
31338      ds.field("styles", &self.styles());
31339      ds.field("view_settings", &self.view_settings());
31340      ds.field("units", &self.units());
31341      ds.field("validation", &self.validation());
31342      ds.finish()
31343  }
31344}
31345pub enum VersionBaseOffset {}
31346#[derive(Copy, Clone, PartialEq)]
31347
31348pub struct VersionBase<'a> {
31349  pub _tab: flatbuffers::Table<'a>,
31350}
31351
31352impl<'a> flatbuffers::Follow<'a> for VersionBase<'a> {
31353  type Inner = VersionBase<'a>;
31354  #[inline]
31355  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31356    Self { _tab: flatbuffers::Table::new(buf, loc) }
31357  }
31358}
31359
31360impl<'a> VersionBase<'a> {
31361  pub const VT_ID: flatbuffers::VOffsetT = 4;
31362  pub const VT_PARENT_ID: flatbuffers::VOffsetT = 6;
31363  pub const VT_TIMESTAMP: flatbuffers::VOffsetT = 8;
31364  pub const VT_DESCRIPTION: flatbuffers::VOffsetT = 10;
31365  pub const VT_IS_MANUAL_SAVE: flatbuffers::VOffsetT = 12;
31366  pub const VT_USER_ID: flatbuffers::VOffsetT = 14;
31367
31368  #[inline]
31369  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31370    VersionBase { _tab: table }
31371  }
31372  #[allow(unused_mut)]
31373  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31374    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31375    args: &'args VersionBaseArgs<'args>
31376  ) -> flatbuffers::WIPOffset<VersionBase<'bldr>> {
31377    let mut builder = VersionBaseBuilder::new(_fbb);
31378    builder.add_timestamp(args.timestamp);
31379    if let Some(x) = args.user_id { builder.add_user_id(x); }
31380    if let Some(x) = args.description { builder.add_description(x); }
31381    if let Some(x) = args.parent_id { builder.add_parent_id(x); }
31382    if let Some(x) = args.id { builder.add_id(x); }
31383    builder.add_is_manual_save(args.is_manual_save);
31384    builder.finish()
31385  }
31386
31387
31388  #[inline]
31389  pub fn id(&self) -> Option<&'a str> {
31390    // Safety:
31391    // Created from valid Table for this object
31392    // which contains a valid value in this slot
31393    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionBase::VT_ID, None)}
31394  }
31395  #[inline]
31396  pub fn parent_id(&self) -> Option<&'a str> {
31397    // Safety:
31398    // Created from valid Table for this object
31399    // which contains a valid value in this slot
31400    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionBase::VT_PARENT_ID, None)}
31401  }
31402  #[inline]
31403  pub fn timestamp(&self) -> i64 {
31404    // Safety:
31405    // Created from valid Table for this object
31406    // which contains a valid value in this slot
31407    unsafe { self._tab.get::<i64>(VersionBase::VT_TIMESTAMP, Some(0)).unwrap()}
31408  }
31409  #[inline]
31410  pub fn description(&self) -> Option<&'a str> {
31411    // Safety:
31412    // Created from valid Table for this object
31413    // which contains a valid value in this slot
31414    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionBase::VT_DESCRIPTION, None)}
31415  }
31416  #[inline]
31417  pub fn is_manual_save(&self) -> bool {
31418    // Safety:
31419    // Created from valid Table for this object
31420    // which contains a valid value in this slot
31421    unsafe { self._tab.get::<bool>(VersionBase::VT_IS_MANUAL_SAVE, Some(false)).unwrap()}
31422  }
31423  #[inline]
31424  pub fn user_id(&self) -> Option<&'a str> {
31425    // Safety:
31426    // Created from valid Table for this object
31427    // which contains a valid value in this slot
31428    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionBase::VT_USER_ID, None)}
31429  }
31430}
31431
31432impl flatbuffers::Verifiable for VersionBase<'_> {
31433  #[inline]
31434  fn run_verifier(
31435    v: &mut flatbuffers::Verifier, pos: usize
31436  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31437    use self::flatbuffers::Verifiable;
31438    v.visit_table(pos)?
31439     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
31440     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("parent_id", Self::VT_PARENT_ID, false)?
31441     .visit_field::<i64>("timestamp", Self::VT_TIMESTAMP, false)?
31442     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("description", Self::VT_DESCRIPTION, false)?
31443     .visit_field::<bool>("is_manual_save", Self::VT_IS_MANUAL_SAVE, false)?
31444     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("user_id", Self::VT_USER_ID, false)?
31445     .finish();
31446    Ok(())
31447  }
31448}
31449pub struct VersionBaseArgs<'a> {
31450    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
31451    pub parent_id: Option<flatbuffers::WIPOffset<&'a str>>,
31452    pub timestamp: i64,
31453    pub description: Option<flatbuffers::WIPOffset<&'a str>>,
31454    pub is_manual_save: bool,
31455    pub user_id: Option<flatbuffers::WIPOffset<&'a str>>,
31456}
31457impl<'a> Default for VersionBaseArgs<'a> {
31458  #[inline]
31459  fn default() -> Self {
31460    VersionBaseArgs {
31461      id: None,
31462      parent_id: None,
31463      timestamp: 0,
31464      description: None,
31465      is_manual_save: false,
31466      user_id: None,
31467    }
31468  }
31469}
31470
31471pub struct VersionBaseBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31472  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31473  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31474}
31475impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> VersionBaseBuilder<'a, 'b, A> {
31476  #[inline]
31477  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
31478    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionBase::VT_ID, id);
31479  }
31480  #[inline]
31481  pub fn add_parent_id(&mut self, parent_id: flatbuffers::WIPOffset<&'b  str>) {
31482    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionBase::VT_PARENT_ID, parent_id);
31483  }
31484  #[inline]
31485  pub fn add_timestamp(&mut self, timestamp: i64) {
31486    self.fbb_.push_slot::<i64>(VersionBase::VT_TIMESTAMP, timestamp, 0);
31487  }
31488  #[inline]
31489  pub fn add_description(&mut self, description: flatbuffers::WIPOffset<&'b  str>) {
31490    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionBase::VT_DESCRIPTION, description);
31491  }
31492  #[inline]
31493  pub fn add_is_manual_save(&mut self, is_manual_save: bool) {
31494    self.fbb_.push_slot::<bool>(VersionBase::VT_IS_MANUAL_SAVE, is_manual_save, false);
31495  }
31496  #[inline]
31497  pub fn add_user_id(&mut self, user_id: flatbuffers::WIPOffset<&'b  str>) {
31498    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionBase::VT_USER_ID, user_id);
31499  }
31500  #[inline]
31501  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> VersionBaseBuilder<'a, 'b, A> {
31502    let start = _fbb.start_table();
31503    VersionBaseBuilder {
31504      fbb_: _fbb,
31505      start_: start,
31506    }
31507  }
31508  #[inline]
31509  pub fn finish(self) -> flatbuffers::WIPOffset<VersionBase<'a>> {
31510    let o = self.fbb_.end_table(self.start_);
31511    flatbuffers::WIPOffset::new(o.value())
31512  }
31513}
31514
31515impl core::fmt::Debug for VersionBase<'_> {
31516  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31517    let mut ds = f.debug_struct("VersionBase");
31518      ds.field("id", &self.id());
31519      ds.field("parent_id", &self.parent_id());
31520      ds.field("timestamp", &self.timestamp());
31521      ds.field("description", &self.description());
31522      ds.field("is_manual_save", &self.is_manual_save());
31523      ds.field("user_id", &self.user_id());
31524      ds.finish()
31525  }
31526}
31527pub enum CheckpointOffset {}
31528#[derive(Copy, Clone, PartialEq)]
31529
31530pub struct Checkpoint<'a> {
31531  pub _tab: flatbuffers::Table<'a>,
31532}
31533
31534impl<'a> flatbuffers::Follow<'a> for Checkpoint<'a> {
31535  type Inner = Checkpoint<'a>;
31536  #[inline]
31537  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31538    Self { _tab: flatbuffers::Table::new(buf, loc) }
31539  }
31540}
31541
31542impl<'a> Checkpoint<'a> {
31543  pub const VT_BASE: flatbuffers::VOffsetT = 4;
31544  pub const VT_DATA: flatbuffers::VOffsetT = 6;
31545  pub const VT_SIZE_BYTES: flatbuffers::VOffsetT = 8;
31546
31547  #[inline]
31548  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31549    Checkpoint { _tab: table }
31550  }
31551  #[allow(unused_mut)]
31552  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31553    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31554    args: &'args CheckpointArgs<'args>
31555  ) -> flatbuffers::WIPOffset<Checkpoint<'bldr>> {
31556    let mut builder = CheckpointBuilder::new(_fbb);
31557    builder.add_size_bytes(args.size_bytes);
31558    if let Some(x) = args.data { builder.add_data(x); }
31559    if let Some(x) = args.base { builder.add_base(x); }
31560    builder.finish()
31561  }
31562
31563
31564  #[inline]
31565  pub fn base(&self) -> Option<VersionBase<'a>> {
31566    // Safety:
31567    // Created from valid Table for this object
31568    // which contains a valid value in this slot
31569    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<VersionBase>>(Checkpoint::VT_BASE, None)}
31570  }
31571  #[inline]
31572  pub fn data(&self) -> Option<flatbuffers::Vector<'a, u8>> {
31573    // Safety:
31574    // Created from valid Table for this object
31575    // which contains a valid value in this slot
31576    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(Checkpoint::VT_DATA, None)}
31577  }
31578  #[inline]
31579  pub fn size_bytes(&self) -> i64 {
31580    // Safety:
31581    // Created from valid Table for this object
31582    // which contains a valid value in this slot
31583    unsafe { self._tab.get::<i64>(Checkpoint::VT_SIZE_BYTES, Some(0)).unwrap()}
31584  }
31585}
31586
31587impl flatbuffers::Verifiable for Checkpoint<'_> {
31588  #[inline]
31589  fn run_verifier(
31590    v: &mut flatbuffers::Verifier, pos: usize
31591  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31592    use self::flatbuffers::Verifiable;
31593    v.visit_table(pos)?
31594     .visit_field::<flatbuffers::ForwardsUOffset<VersionBase>>("base", Self::VT_BASE, false)?
31595     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("data", Self::VT_DATA, false)?
31596     .visit_field::<i64>("size_bytes", Self::VT_SIZE_BYTES, false)?
31597     .finish();
31598    Ok(())
31599  }
31600}
31601pub struct CheckpointArgs<'a> {
31602    pub base: Option<flatbuffers::WIPOffset<VersionBase<'a>>>,
31603    pub data: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
31604    pub size_bytes: i64,
31605}
31606impl<'a> Default for CheckpointArgs<'a> {
31607  #[inline]
31608  fn default() -> Self {
31609    CheckpointArgs {
31610      base: None,
31611      data: None,
31612      size_bytes: 0,
31613    }
31614  }
31615}
31616
31617pub struct CheckpointBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31618  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31619  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31620}
31621impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> CheckpointBuilder<'a, 'b, A> {
31622  #[inline]
31623  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<VersionBase<'b >>) {
31624    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<VersionBase>>(Checkpoint::VT_BASE, base);
31625  }
31626  #[inline]
31627  pub fn add_data(&mut self, data: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
31628    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Checkpoint::VT_DATA, data);
31629  }
31630  #[inline]
31631  pub fn add_size_bytes(&mut self, size_bytes: i64) {
31632    self.fbb_.push_slot::<i64>(Checkpoint::VT_SIZE_BYTES, size_bytes, 0);
31633  }
31634  #[inline]
31635  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> CheckpointBuilder<'a, 'b, A> {
31636    let start = _fbb.start_table();
31637    CheckpointBuilder {
31638      fbb_: _fbb,
31639      start_: start,
31640    }
31641  }
31642  #[inline]
31643  pub fn finish(self) -> flatbuffers::WIPOffset<Checkpoint<'a>> {
31644    let o = self.fbb_.end_table(self.start_);
31645    flatbuffers::WIPOffset::new(o.value())
31646  }
31647}
31648
31649impl core::fmt::Debug for Checkpoint<'_> {
31650  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31651    let mut ds = f.debug_struct("Checkpoint");
31652      ds.field("base", &self.base());
31653      ds.field("data", &self.data());
31654      ds.field("size_bytes", &self.size_bytes());
31655      ds.finish()
31656  }
31657}
31658pub enum JSONPatchOperationOffset {}
31659#[derive(Copy, Clone, PartialEq)]
31660
31661pub struct JSONPatchOperation<'a> {
31662  pub _tab: flatbuffers::Table<'a>,
31663}
31664
31665impl<'a> flatbuffers::Follow<'a> for JSONPatchOperation<'a> {
31666  type Inner = JSONPatchOperation<'a>;
31667  #[inline]
31668  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31669    Self { _tab: flatbuffers::Table::new(buf, loc) }
31670  }
31671}
31672
31673impl<'a> JSONPatchOperation<'a> {
31674  pub const VT_OP: flatbuffers::VOffsetT = 4;
31675  pub const VT_PATH: flatbuffers::VOffsetT = 6;
31676  pub const VT_FROM: flatbuffers::VOffsetT = 8;
31677  pub const VT_VALUE: flatbuffers::VOffsetT = 10;
31678
31679  #[inline]
31680  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31681    JSONPatchOperation { _tab: table }
31682  }
31683  #[allow(unused_mut)]
31684  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31685    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31686    args: &'args JSONPatchOperationArgs<'args>
31687  ) -> flatbuffers::WIPOffset<JSONPatchOperation<'bldr>> {
31688    let mut builder = JSONPatchOperationBuilder::new(_fbb);
31689    if let Some(x) = args.value { builder.add_value(x); }
31690    if let Some(x) = args.from { builder.add_from(x); }
31691    if let Some(x) = args.path { builder.add_path(x); }
31692    if let Some(x) = args.op { builder.add_op(x); }
31693    builder.finish()
31694  }
31695
31696
31697  #[inline]
31698  pub fn op(&self) -> Option<&'a str> {
31699    // Safety:
31700    // Created from valid Table for this object
31701    // which contains a valid value in this slot
31702    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(JSONPatchOperation::VT_OP, None)}
31703  }
31704  #[inline]
31705  pub fn path(&self) -> Option<&'a str> {
31706    // Safety:
31707    // Created from valid Table for this object
31708    // which contains a valid value in this slot
31709    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(JSONPatchOperation::VT_PATH, None)}
31710  }
31711  #[inline]
31712  pub fn from(&self) -> Option<&'a str> {
31713    // Safety:
31714    // Created from valid Table for this object
31715    // which contains a valid value in this slot
31716    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(JSONPatchOperation::VT_FROM, None)}
31717  }
31718  #[inline]
31719  pub fn value(&self) -> Option<&'a str> {
31720    // Safety:
31721    // Created from valid Table for this object
31722    // which contains a valid value in this slot
31723    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(JSONPatchOperation::VT_VALUE, None)}
31724  }
31725}
31726
31727impl flatbuffers::Verifiable for JSONPatchOperation<'_> {
31728  #[inline]
31729  fn run_verifier(
31730    v: &mut flatbuffers::Verifier, pos: usize
31731  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31732    use self::flatbuffers::Verifiable;
31733    v.visit_table(pos)?
31734     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("op", Self::VT_OP, false)?
31735     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("path", Self::VT_PATH, false)?
31736     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("from", Self::VT_FROM, false)?
31737     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("value", Self::VT_VALUE, false)?
31738     .finish();
31739    Ok(())
31740  }
31741}
31742pub struct JSONPatchOperationArgs<'a> {
31743    pub op: Option<flatbuffers::WIPOffset<&'a str>>,
31744    pub path: Option<flatbuffers::WIPOffset<&'a str>>,
31745    pub from: Option<flatbuffers::WIPOffset<&'a str>>,
31746    pub value: Option<flatbuffers::WIPOffset<&'a str>>,
31747}
31748impl<'a> Default for JSONPatchOperationArgs<'a> {
31749  #[inline]
31750  fn default() -> Self {
31751    JSONPatchOperationArgs {
31752      op: None,
31753      path: None,
31754      from: None,
31755      value: None,
31756    }
31757  }
31758}
31759
31760pub struct JSONPatchOperationBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31761  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31762  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31763}
31764impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> JSONPatchOperationBuilder<'a, 'b, A> {
31765  #[inline]
31766  pub fn add_op(&mut self, op: flatbuffers::WIPOffset<&'b  str>) {
31767    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(JSONPatchOperation::VT_OP, op);
31768  }
31769  #[inline]
31770  pub fn add_path(&mut self, path: flatbuffers::WIPOffset<&'b  str>) {
31771    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(JSONPatchOperation::VT_PATH, path);
31772  }
31773  #[inline]
31774  pub fn add_from(&mut self, from: flatbuffers::WIPOffset<&'b  str>) {
31775    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(JSONPatchOperation::VT_FROM, from);
31776  }
31777  #[inline]
31778  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<&'b  str>) {
31779    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(JSONPatchOperation::VT_VALUE, value);
31780  }
31781  #[inline]
31782  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> JSONPatchOperationBuilder<'a, 'b, A> {
31783    let start = _fbb.start_table();
31784    JSONPatchOperationBuilder {
31785      fbb_: _fbb,
31786      start_: start,
31787    }
31788  }
31789  #[inline]
31790  pub fn finish(self) -> flatbuffers::WIPOffset<JSONPatchOperation<'a>> {
31791    let o = self.fbb_.end_table(self.start_);
31792    flatbuffers::WIPOffset::new(o.value())
31793  }
31794}
31795
31796impl core::fmt::Debug for JSONPatchOperation<'_> {
31797  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31798    let mut ds = f.debug_struct("JSONPatchOperation");
31799      ds.field("op", &self.op());
31800      ds.field("path", &self.path());
31801      ds.field("from", &self.from());
31802      ds.field("value", &self.value());
31803      ds.finish()
31804  }
31805}
31806pub enum DeltaOffset {}
31807#[derive(Copy, Clone, PartialEq)]
31808
31809pub struct Delta<'a> {
31810  pub _tab: flatbuffers::Table<'a>,
31811}
31812
31813impl<'a> flatbuffers::Follow<'a> for Delta<'a> {
31814  type Inner = Delta<'a>;
31815  #[inline]
31816  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31817    Self { _tab: flatbuffers::Table::new(buf, loc) }
31818  }
31819}
31820
31821impl<'a> Delta<'a> {
31822  pub const VT_BASE: flatbuffers::VOffsetT = 4;
31823  pub const VT_SIZE_BYTES: flatbuffers::VOffsetT = 8;
31824  pub const VT_PATCH: flatbuffers::VOffsetT = 10;
31825
31826  #[inline]
31827  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31828    Delta { _tab: table }
31829  }
31830  #[allow(unused_mut)]
31831  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31832    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31833    args: &'args DeltaArgs<'args>
31834  ) -> flatbuffers::WIPOffset<Delta<'bldr>> {
31835    let mut builder = DeltaBuilder::new(_fbb);
31836    builder.add_size_bytes(args.size_bytes);
31837    if let Some(x) = args.patch { builder.add_patch(x); }
31838    if let Some(x) = args.base { builder.add_base(x); }
31839    builder.finish()
31840  }
31841
31842
31843  #[inline]
31844  pub fn base(&self) -> Option<VersionBase<'a>> {
31845    // Safety:
31846    // Created from valid Table for this object
31847    // which contains a valid value in this slot
31848    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<VersionBase>>(Delta::VT_BASE, None)}
31849  }
31850  #[inline]
31851  pub fn size_bytes(&self) -> i64 {
31852    // Safety:
31853    // Created from valid Table for this object
31854    // which contains a valid value in this slot
31855    unsafe { self._tab.get::<i64>(Delta::VT_SIZE_BYTES, Some(0)).unwrap()}
31856  }
31857  #[inline]
31858  pub fn patch(&self) -> Option<flatbuffers::Vector<'a, u8>> {
31859    // Safety:
31860    // Created from valid Table for this object
31861    // which contains a valid value in this slot
31862    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(Delta::VT_PATCH, None)}
31863  }
31864}
31865
31866impl flatbuffers::Verifiable for Delta<'_> {
31867  #[inline]
31868  fn run_verifier(
31869    v: &mut flatbuffers::Verifier, pos: usize
31870  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31871    use self::flatbuffers::Verifiable;
31872    v.visit_table(pos)?
31873     .visit_field::<flatbuffers::ForwardsUOffset<VersionBase>>("base", Self::VT_BASE, false)?
31874     .visit_field::<i64>("size_bytes", Self::VT_SIZE_BYTES, false)?
31875     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("patch", Self::VT_PATCH, false)?
31876     .finish();
31877    Ok(())
31878  }
31879}
31880pub struct DeltaArgs<'a> {
31881    pub base: Option<flatbuffers::WIPOffset<VersionBase<'a>>>,
31882    pub size_bytes: i64,
31883    pub patch: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
31884}
31885impl<'a> Default for DeltaArgs<'a> {
31886  #[inline]
31887  fn default() -> Self {
31888    DeltaArgs {
31889      base: None,
31890      size_bytes: 0,
31891      patch: None,
31892    }
31893  }
31894}
31895
31896pub struct DeltaBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
31897  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
31898  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
31899}
31900impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DeltaBuilder<'a, 'b, A> {
31901  #[inline]
31902  pub fn add_base(&mut self, base: flatbuffers::WIPOffset<VersionBase<'b >>) {
31903    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<VersionBase>>(Delta::VT_BASE, base);
31904  }
31905  #[inline]
31906  pub fn add_size_bytes(&mut self, size_bytes: i64) {
31907    self.fbb_.push_slot::<i64>(Delta::VT_SIZE_BYTES, size_bytes, 0);
31908  }
31909  #[inline]
31910  pub fn add_patch(&mut self, patch: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
31911    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(Delta::VT_PATCH, patch);
31912  }
31913  #[inline]
31914  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DeltaBuilder<'a, 'b, A> {
31915    let start = _fbb.start_table();
31916    DeltaBuilder {
31917      fbb_: _fbb,
31918      start_: start,
31919    }
31920  }
31921  #[inline]
31922  pub fn finish(self) -> flatbuffers::WIPOffset<Delta<'a>> {
31923    let o = self.fbb_.end_table(self.start_);
31924    flatbuffers::WIPOffset::new(o.value())
31925  }
31926}
31927
31928impl core::fmt::Debug for Delta<'_> {
31929  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
31930    let mut ds = f.debug_struct("Delta");
31931      ds.field("base", &self.base());
31932      ds.field("size_bytes", &self.size_bytes());
31933      ds.field("patch", &self.patch());
31934      ds.finish()
31935  }
31936}
31937pub enum VersionGraphMetadataOffset {}
31938#[derive(Copy, Clone, PartialEq)]
31939
31940pub struct VersionGraphMetadata<'a> {
31941  pub _tab: flatbuffers::Table<'a>,
31942}
31943
31944impl<'a> flatbuffers::Follow<'a> for VersionGraphMetadata<'a> {
31945  type Inner = VersionGraphMetadata<'a>;
31946  #[inline]
31947  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
31948    Self { _tab: flatbuffers::Table::new(buf, loc) }
31949  }
31950}
31951
31952impl<'a> VersionGraphMetadata<'a> {
31953  pub const VT_LAST_PRUNED: flatbuffers::VOffsetT = 4;
31954  pub const VT_TOTAL_SIZE: flatbuffers::VOffsetT = 6;
31955
31956  #[inline]
31957  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
31958    VersionGraphMetadata { _tab: table }
31959  }
31960  #[allow(unused_mut)]
31961  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
31962    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
31963    args: &'args VersionGraphMetadataArgs
31964  ) -> flatbuffers::WIPOffset<VersionGraphMetadata<'bldr>> {
31965    let mut builder = VersionGraphMetadataBuilder::new(_fbb);
31966    builder.add_total_size(args.total_size);
31967    builder.add_last_pruned(args.last_pruned);
31968    builder.finish()
31969  }
31970
31971
31972  #[inline]
31973  pub fn last_pruned(&self) -> i64 {
31974    // Safety:
31975    // Created from valid Table for this object
31976    // which contains a valid value in this slot
31977    unsafe { self._tab.get::<i64>(VersionGraphMetadata::VT_LAST_PRUNED, Some(0)).unwrap()}
31978  }
31979  #[inline]
31980  pub fn total_size(&self) -> i64 {
31981    // Safety:
31982    // Created from valid Table for this object
31983    // which contains a valid value in this slot
31984    unsafe { self._tab.get::<i64>(VersionGraphMetadata::VT_TOTAL_SIZE, Some(0)).unwrap()}
31985  }
31986}
31987
31988impl flatbuffers::Verifiable for VersionGraphMetadata<'_> {
31989  #[inline]
31990  fn run_verifier(
31991    v: &mut flatbuffers::Verifier, pos: usize
31992  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
31993    use self::flatbuffers::Verifiable;
31994    v.visit_table(pos)?
31995     .visit_field::<i64>("last_pruned", Self::VT_LAST_PRUNED, false)?
31996     .visit_field::<i64>("total_size", Self::VT_TOTAL_SIZE, false)?
31997     .finish();
31998    Ok(())
31999  }
32000}
32001pub struct VersionGraphMetadataArgs {
32002    pub last_pruned: i64,
32003    pub total_size: i64,
32004}
32005impl<'a> Default for VersionGraphMetadataArgs {
32006  #[inline]
32007  fn default() -> Self {
32008    VersionGraphMetadataArgs {
32009      last_pruned: 0,
32010      total_size: 0,
32011    }
32012  }
32013}
32014
32015pub struct VersionGraphMetadataBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
32016  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32017  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
32018}
32019impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> VersionGraphMetadataBuilder<'a, 'b, A> {
32020  #[inline]
32021  pub fn add_last_pruned(&mut self, last_pruned: i64) {
32022    self.fbb_.push_slot::<i64>(VersionGraphMetadata::VT_LAST_PRUNED, last_pruned, 0);
32023  }
32024  #[inline]
32025  pub fn add_total_size(&mut self, total_size: i64) {
32026    self.fbb_.push_slot::<i64>(VersionGraphMetadata::VT_TOTAL_SIZE, total_size, 0);
32027  }
32028  #[inline]
32029  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> VersionGraphMetadataBuilder<'a, 'b, A> {
32030    let start = _fbb.start_table();
32031    VersionGraphMetadataBuilder {
32032      fbb_: _fbb,
32033      start_: start,
32034    }
32035  }
32036  #[inline]
32037  pub fn finish(self) -> flatbuffers::WIPOffset<VersionGraphMetadata<'a>> {
32038    let o = self.fbb_.end_table(self.start_);
32039    flatbuffers::WIPOffset::new(o.value())
32040  }
32041}
32042
32043impl core::fmt::Debug for VersionGraphMetadata<'_> {
32044  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32045    let mut ds = f.debug_struct("VersionGraphMetadata");
32046      ds.field("last_pruned", &self.last_pruned());
32047      ds.field("total_size", &self.total_size());
32048      ds.finish()
32049  }
32050}
32051pub enum VersionGraphOffset {}
32052#[derive(Copy, Clone, PartialEq)]
32053
32054pub struct VersionGraph<'a> {
32055  pub _tab: flatbuffers::Table<'a>,
32056}
32057
32058impl<'a> flatbuffers::Follow<'a> for VersionGraph<'a> {
32059  type Inner = VersionGraph<'a>;
32060  #[inline]
32061  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
32062    Self { _tab: flatbuffers::Table::new(buf, loc) }
32063  }
32064}
32065
32066impl<'a> VersionGraph<'a> {
32067  pub const VT_USER_CHECKPOINT_VERSION_ID: flatbuffers::VOffsetT = 4;
32068  pub const VT_LATEST_VERSION_ID: flatbuffers::VOffsetT = 6;
32069  pub const VT_CHECKPOINTS: flatbuffers::VOffsetT = 8;
32070  pub const VT_DELTAS: flatbuffers::VOffsetT = 10;
32071  pub const VT_METADATA: flatbuffers::VOffsetT = 12;
32072
32073  #[inline]
32074  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
32075    VersionGraph { _tab: table }
32076  }
32077  #[allow(unused_mut)]
32078  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
32079    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
32080    args: &'args VersionGraphArgs<'args>
32081  ) -> flatbuffers::WIPOffset<VersionGraph<'bldr>> {
32082    let mut builder = VersionGraphBuilder::new(_fbb);
32083    if let Some(x) = args.metadata { builder.add_metadata(x); }
32084    if let Some(x) = args.deltas { builder.add_deltas(x); }
32085    if let Some(x) = args.checkpoints { builder.add_checkpoints(x); }
32086    if let Some(x) = args.latest_version_id { builder.add_latest_version_id(x); }
32087    if let Some(x) = args.user_checkpoint_version_id { builder.add_user_checkpoint_version_id(x); }
32088    builder.finish()
32089  }
32090
32091
32092  #[inline]
32093  pub fn user_checkpoint_version_id(&self) -> Option<&'a str> {
32094    // Safety:
32095    // Created from valid Table for this object
32096    // which contains a valid value in this slot
32097    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionGraph::VT_USER_CHECKPOINT_VERSION_ID, None)}
32098  }
32099  #[inline]
32100  pub fn latest_version_id(&self) -> Option<&'a str> {
32101    // Safety:
32102    // Created from valid Table for this object
32103    // which contains a valid value in this slot
32104    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(VersionGraph::VT_LATEST_VERSION_ID, None)}
32105  }
32106  #[inline]
32107  pub fn checkpoints(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Checkpoint<'a>>>> {
32108    // Safety:
32109    // Created from valid Table for this object
32110    // which contains a valid value in this slot
32111    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Checkpoint>>>>(VersionGraph::VT_CHECKPOINTS, None)}
32112  }
32113  #[inline]
32114  pub fn deltas(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Delta<'a>>>> {
32115    // Safety:
32116    // Created from valid Table for this object
32117    // which contains a valid value in this slot
32118    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Delta>>>>(VersionGraph::VT_DELTAS, None)}
32119  }
32120  #[inline]
32121  pub fn metadata(&self) -> Option<VersionGraphMetadata<'a>> {
32122    // Safety:
32123    // Created from valid Table for this object
32124    // which contains a valid value in this slot
32125    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<VersionGraphMetadata>>(VersionGraph::VT_METADATA, None)}
32126  }
32127}
32128
32129impl flatbuffers::Verifiable for VersionGraph<'_> {
32130  #[inline]
32131  fn run_verifier(
32132    v: &mut flatbuffers::Verifier, pos: usize
32133  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
32134    use self::flatbuffers::Verifiable;
32135    v.visit_table(pos)?
32136     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("user_checkpoint_version_id", Self::VT_USER_CHECKPOINT_VERSION_ID, false)?
32137     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("latest_version_id", Self::VT_LATEST_VERSION_ID, false)?
32138     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Checkpoint>>>>("checkpoints", Self::VT_CHECKPOINTS, false)?
32139     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Delta>>>>("deltas", Self::VT_DELTAS, false)?
32140     .visit_field::<flatbuffers::ForwardsUOffset<VersionGraphMetadata>>("metadata", Self::VT_METADATA, false)?
32141     .finish();
32142    Ok(())
32143  }
32144}
32145pub struct VersionGraphArgs<'a> {
32146    pub user_checkpoint_version_id: Option<flatbuffers::WIPOffset<&'a str>>,
32147    pub latest_version_id: Option<flatbuffers::WIPOffset<&'a str>>,
32148    pub checkpoints: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Checkpoint<'a>>>>>,
32149    pub deltas: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Delta<'a>>>>>,
32150    pub metadata: Option<flatbuffers::WIPOffset<VersionGraphMetadata<'a>>>,
32151}
32152impl<'a> Default for VersionGraphArgs<'a> {
32153  #[inline]
32154  fn default() -> Self {
32155    VersionGraphArgs {
32156      user_checkpoint_version_id: None,
32157      latest_version_id: None,
32158      checkpoints: None,
32159      deltas: None,
32160      metadata: None,
32161    }
32162  }
32163}
32164
32165pub struct VersionGraphBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
32166  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32167  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
32168}
32169impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> VersionGraphBuilder<'a, 'b, A> {
32170  #[inline]
32171  pub fn add_user_checkpoint_version_id(&mut self, user_checkpoint_version_id: flatbuffers::WIPOffset<&'b  str>) {
32172    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionGraph::VT_USER_CHECKPOINT_VERSION_ID, user_checkpoint_version_id);
32173  }
32174  #[inline]
32175  pub fn add_latest_version_id(&mut self, latest_version_id: flatbuffers::WIPOffset<&'b  str>) {
32176    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionGraph::VT_LATEST_VERSION_ID, latest_version_id);
32177  }
32178  #[inline]
32179  pub fn add_checkpoints(&mut self, checkpoints: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Checkpoint<'b >>>>) {
32180    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionGraph::VT_CHECKPOINTS, checkpoints);
32181  }
32182  #[inline]
32183  pub fn add_deltas(&mut self, deltas: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Delta<'b >>>>) {
32184    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(VersionGraph::VT_DELTAS, deltas);
32185  }
32186  #[inline]
32187  pub fn add_metadata(&mut self, metadata: flatbuffers::WIPOffset<VersionGraphMetadata<'b >>) {
32188    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<VersionGraphMetadata>>(VersionGraph::VT_METADATA, metadata);
32189  }
32190  #[inline]
32191  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> VersionGraphBuilder<'a, 'b, A> {
32192    let start = _fbb.start_table();
32193    VersionGraphBuilder {
32194      fbb_: _fbb,
32195      start_: start,
32196    }
32197  }
32198  #[inline]
32199  pub fn finish(self) -> flatbuffers::WIPOffset<VersionGraph<'a>> {
32200    let o = self.fbb_.end_table(self.start_);
32201    flatbuffers::WIPOffset::new(o.value())
32202  }
32203}
32204
32205impl core::fmt::Debug for VersionGraph<'_> {
32206  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32207    let mut ds = f.debug_struct("VersionGraph");
32208      ds.field("user_checkpoint_version_id", &self.user_checkpoint_version_id());
32209      ds.field("latest_version_id", &self.latest_version_id());
32210      ds.field("checkpoints", &self.checkpoints());
32211      ds.field("deltas", &self.deltas());
32212      ds.field("metadata", &self.metadata());
32213      ds.finish()
32214  }
32215}
32216pub enum DucExternalFileDataOffset {}
32217#[derive(Copy, Clone, PartialEq)]
32218
32219pub struct DucExternalFileData<'a> {
32220  pub _tab: flatbuffers::Table<'a>,
32221}
32222
32223impl<'a> flatbuffers::Follow<'a> for DucExternalFileData<'a> {
32224  type Inner = DucExternalFileData<'a>;
32225  #[inline]
32226  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
32227    Self { _tab: flatbuffers::Table::new(buf, loc) }
32228  }
32229}
32230
32231impl<'a> DucExternalFileData<'a> {
32232  pub const VT_MIME_TYPE: flatbuffers::VOffsetT = 4;
32233  pub const VT_ID: flatbuffers::VOffsetT = 6;
32234  pub const VT_DATA: flatbuffers::VOffsetT = 8;
32235  pub const VT_CREATED: flatbuffers::VOffsetT = 10;
32236  pub const VT_LAST_RETRIEVED: flatbuffers::VOffsetT = 12;
32237
32238  #[inline]
32239  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
32240    DucExternalFileData { _tab: table }
32241  }
32242  #[allow(unused_mut)]
32243  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
32244    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
32245    args: &'args DucExternalFileDataArgs<'args>
32246  ) -> flatbuffers::WIPOffset<DucExternalFileData<'bldr>> {
32247    let mut builder = DucExternalFileDataBuilder::new(_fbb);
32248    if let Some(x) = args.last_retrieved { builder.add_last_retrieved(x); }
32249    builder.add_created(args.created);
32250    if let Some(x) = args.data { builder.add_data(x); }
32251    if let Some(x) = args.id { builder.add_id(x); }
32252    if let Some(x) = args.mime_type { builder.add_mime_type(x); }
32253    builder.finish()
32254  }
32255
32256
32257  #[inline]
32258  pub fn mime_type(&self) -> Option<&'a str> {
32259    // Safety:
32260    // Created from valid Table for this object
32261    // which contains a valid value in this slot
32262    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucExternalFileData::VT_MIME_TYPE, None)}
32263  }
32264  #[inline]
32265  pub fn id(&self) -> &'a str {
32266    // Safety:
32267    // Created from valid Table for this object
32268    // which contains a valid value in this slot
32269    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucExternalFileData::VT_ID, None).unwrap()}
32270  }
32271  #[inline]
32272  pub fn key_compare_less_than(&self, o: &DucExternalFileData) -> bool {
32273    self.id() < o.id()
32274  }
32275
32276  #[inline]
32277  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
32278    let key = self.id();
32279    key.cmp(val)
32280  }
32281  #[inline]
32282  pub fn data(&self) -> Option<flatbuffers::Vector<'a, u8>> {
32283    // Safety:
32284    // Created from valid Table for this object
32285    // which contains a valid value in this slot
32286    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(DucExternalFileData::VT_DATA, None)}
32287  }
32288  #[inline]
32289  pub fn created(&self) -> i64 {
32290    // Safety:
32291    // Created from valid Table for this object
32292    // which contains a valid value in this slot
32293    unsafe { self._tab.get::<i64>(DucExternalFileData::VT_CREATED, Some(0)).unwrap()}
32294  }
32295  #[inline]
32296  pub fn last_retrieved(&self) -> Option<i64> {
32297    // Safety:
32298    // Created from valid Table for this object
32299    // which contains a valid value in this slot
32300    unsafe { self._tab.get::<i64>(DucExternalFileData::VT_LAST_RETRIEVED, None)}
32301  }
32302}
32303
32304impl flatbuffers::Verifiable for DucExternalFileData<'_> {
32305  #[inline]
32306  fn run_verifier(
32307    v: &mut flatbuffers::Verifier, pos: usize
32308  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
32309    use self::flatbuffers::Verifiable;
32310    v.visit_table(pos)?
32311     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("mime_type", Self::VT_MIME_TYPE, false)?
32312     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, true)?
32313     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("data", Self::VT_DATA, false)?
32314     .visit_field::<i64>("created", Self::VT_CREATED, false)?
32315     .visit_field::<i64>("last_retrieved", Self::VT_LAST_RETRIEVED, false)?
32316     .finish();
32317    Ok(())
32318  }
32319}
32320pub struct DucExternalFileDataArgs<'a> {
32321    pub mime_type: Option<flatbuffers::WIPOffset<&'a str>>,
32322    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
32323    pub data: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
32324    pub created: i64,
32325    pub last_retrieved: Option<i64>,
32326}
32327impl<'a> Default for DucExternalFileDataArgs<'a> {
32328  #[inline]
32329  fn default() -> Self {
32330    DucExternalFileDataArgs {
32331      mime_type: None,
32332      id: None, // required field
32333      data: None,
32334      created: 0,
32335      last_retrieved: None,
32336    }
32337  }
32338}
32339
32340pub struct DucExternalFileDataBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
32341  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32342  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
32343}
32344impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucExternalFileDataBuilder<'a, 'b, A> {
32345  #[inline]
32346  pub fn add_mime_type(&mut self, mime_type: flatbuffers::WIPOffset<&'b  str>) {
32347    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucExternalFileData::VT_MIME_TYPE, mime_type);
32348  }
32349  #[inline]
32350  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
32351    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucExternalFileData::VT_ID, id);
32352  }
32353  #[inline]
32354  pub fn add_data(&mut self, data: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
32355    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucExternalFileData::VT_DATA, data);
32356  }
32357  #[inline]
32358  pub fn add_created(&mut self, created: i64) {
32359    self.fbb_.push_slot::<i64>(DucExternalFileData::VT_CREATED, created, 0);
32360  }
32361  #[inline]
32362  pub fn add_last_retrieved(&mut self, last_retrieved: i64) {
32363    self.fbb_.push_slot_always::<i64>(DucExternalFileData::VT_LAST_RETRIEVED, last_retrieved);
32364  }
32365  #[inline]
32366  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucExternalFileDataBuilder<'a, 'b, A> {
32367    let start = _fbb.start_table();
32368    DucExternalFileDataBuilder {
32369      fbb_: _fbb,
32370      start_: start,
32371    }
32372  }
32373  #[inline]
32374  pub fn finish(self) -> flatbuffers::WIPOffset<DucExternalFileData<'a>> {
32375    let o = self.fbb_.end_table(self.start_);
32376    self.fbb_.required(o, DucExternalFileData::VT_ID,"id");
32377    flatbuffers::WIPOffset::new(o.value())
32378  }
32379}
32380
32381impl core::fmt::Debug for DucExternalFileData<'_> {
32382  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32383    let mut ds = f.debug_struct("DucExternalFileData");
32384      ds.field("mime_type", &self.mime_type());
32385      ds.field("id", &self.id());
32386      ds.field("data", &self.data());
32387      ds.field("created", &self.created());
32388      ds.field("last_retrieved", &self.last_retrieved());
32389      ds.finish()
32390  }
32391}
32392pub enum DucExternalFileEntryOffset {}
32393#[derive(Copy, Clone, PartialEq)]
32394
32395pub struct DucExternalFileEntry<'a> {
32396  pub _tab: flatbuffers::Table<'a>,
32397}
32398
32399impl<'a> flatbuffers::Follow<'a> for DucExternalFileEntry<'a> {
32400  type Inner = DucExternalFileEntry<'a>;
32401  #[inline]
32402  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
32403    Self { _tab: flatbuffers::Table::new(buf, loc) }
32404  }
32405}
32406
32407impl<'a> DucExternalFileEntry<'a> {
32408  pub const VT_KEY: flatbuffers::VOffsetT = 4;
32409  pub const VT_VALUE: flatbuffers::VOffsetT = 6;
32410
32411  #[inline]
32412  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
32413    DucExternalFileEntry { _tab: table }
32414  }
32415  #[allow(unused_mut)]
32416  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
32417    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
32418    args: &'args DucExternalFileEntryArgs<'args>
32419  ) -> flatbuffers::WIPOffset<DucExternalFileEntry<'bldr>> {
32420    let mut builder = DucExternalFileEntryBuilder::new(_fbb);
32421    if let Some(x) = args.value { builder.add_value(x); }
32422    if let Some(x) = args.key { builder.add_key(x); }
32423    builder.finish()
32424  }
32425
32426
32427  #[inline]
32428  pub fn key(&self) -> &'a str {
32429    // Safety:
32430    // Created from valid Table for this object
32431    // which contains a valid value in this slot
32432    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(DucExternalFileEntry::VT_KEY, None).unwrap()}
32433  }
32434  #[inline]
32435  pub fn key_compare_less_than(&self, o: &DucExternalFileEntry) -> bool {
32436    self.key() < o.key()
32437  }
32438
32439  #[inline]
32440  pub fn key_compare_with_value(&self, val: & str) -> ::core::cmp::Ordering {
32441    let key = self.key();
32442    key.cmp(val)
32443  }
32444  #[inline]
32445  pub fn value(&self) -> Option<DucExternalFileData<'a>> {
32446    // Safety:
32447    // Created from valid Table for this object
32448    // which contains a valid value in this slot
32449    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucExternalFileData>>(DucExternalFileEntry::VT_VALUE, None)}
32450  }
32451}
32452
32453impl flatbuffers::Verifiable for DucExternalFileEntry<'_> {
32454  #[inline]
32455  fn run_verifier(
32456    v: &mut flatbuffers::Verifier, pos: usize
32457  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
32458    use self::flatbuffers::Verifiable;
32459    v.visit_table(pos)?
32460     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("key", Self::VT_KEY, true)?
32461     .visit_field::<flatbuffers::ForwardsUOffset<DucExternalFileData>>("value", Self::VT_VALUE, false)?
32462     .finish();
32463    Ok(())
32464  }
32465}
32466pub struct DucExternalFileEntryArgs<'a> {
32467    pub key: Option<flatbuffers::WIPOffset<&'a str>>,
32468    pub value: Option<flatbuffers::WIPOffset<DucExternalFileData<'a>>>,
32469}
32470impl<'a> Default for DucExternalFileEntryArgs<'a> {
32471  #[inline]
32472  fn default() -> Self {
32473    DucExternalFileEntryArgs {
32474      key: None, // required field
32475      value: None,
32476    }
32477  }
32478}
32479
32480pub struct DucExternalFileEntryBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
32481  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32482  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
32483}
32484impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> DucExternalFileEntryBuilder<'a, 'b, A> {
32485  #[inline]
32486  pub fn add_key(&mut self, key: flatbuffers::WIPOffset<&'b  str>) {
32487    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(DucExternalFileEntry::VT_KEY, key);
32488  }
32489  #[inline]
32490  pub fn add_value(&mut self, value: flatbuffers::WIPOffset<DucExternalFileData<'b >>) {
32491    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucExternalFileData>>(DucExternalFileEntry::VT_VALUE, value);
32492  }
32493  #[inline]
32494  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> DucExternalFileEntryBuilder<'a, 'b, A> {
32495    let start = _fbb.start_table();
32496    DucExternalFileEntryBuilder {
32497      fbb_: _fbb,
32498      start_: start,
32499    }
32500  }
32501  #[inline]
32502  pub fn finish(self) -> flatbuffers::WIPOffset<DucExternalFileEntry<'a>> {
32503    let o = self.fbb_.end_table(self.start_);
32504    self.fbb_.required(o, DucExternalFileEntry::VT_KEY,"key");
32505    flatbuffers::WIPOffset::new(o.value())
32506  }
32507}
32508
32509impl core::fmt::Debug for DucExternalFileEntry<'_> {
32510  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32511    let mut ds = f.debug_struct("DucExternalFileEntry");
32512      ds.field("key", &self.key());
32513      ds.field("value", &self.value());
32514      ds.finish()
32515  }
32516}
32517pub enum ExportedDataStateOffset {}
32518#[derive(Copy, Clone, PartialEq)]
32519
32520pub struct ExportedDataState<'a> {
32521  pub _tab: flatbuffers::Table<'a>,
32522}
32523
32524impl<'a> flatbuffers::Follow<'a> for ExportedDataState<'a> {
32525  type Inner = ExportedDataState<'a>;
32526  #[inline]
32527  unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner {
32528    Self { _tab: flatbuffers::Table::new(buf, loc) }
32529  }
32530}
32531
32532impl<'a> ExportedDataState<'a> {
32533  pub const VT_TYPE_: flatbuffers::VOffsetT = 4;
32534  pub const VT_VERSION_LEGACY: flatbuffers::VOffsetT = 6;
32535  pub const VT_SOURCE: flatbuffers::VOffsetT = 8;
32536  pub const VT_VERSION: flatbuffers::VOffsetT = 10;
32537  pub const VT_THUMBNAIL: flatbuffers::VOffsetT = 12;
32538  pub const VT_DICTIONARY: flatbuffers::VOffsetT = 14;
32539  pub const VT_ELEMENTS: flatbuffers::VOffsetT = 16;
32540  pub const VT_BLOCKS: flatbuffers::VOffsetT = 18;
32541  pub const VT_GROUPS: flatbuffers::VOffsetT = 20;
32542  pub const VT_REGIONS: flatbuffers::VOffsetT = 22;
32543  pub const VT_LAYERS: flatbuffers::VOffsetT = 24;
32544  pub const VT_STANDARDS: flatbuffers::VOffsetT = 26;
32545  pub const VT_DUC_LOCAL_STATE: flatbuffers::VOffsetT = 28;
32546  pub const VT_DUC_GLOBAL_STATE: flatbuffers::VOffsetT = 30;
32547  pub const VT_EXTERNAL_FILES: flatbuffers::VOffsetT = 32;
32548  pub const VT_VERSION_GRAPH: flatbuffers::VOffsetT = 34;
32549  pub const VT_ID: flatbuffers::VOffsetT = 36;
32550  pub const VT_BLOCKINSTANCES: flatbuffers::VOffsetT = 38;
32551  pub const VT_BLOCKCOLLECTIONS: flatbuffers::VOffsetT = 40;
32552
32553  #[inline]
32554  pub unsafe fn init_from_table(table: flatbuffers::Table<'a>) -> Self {
32555    ExportedDataState { _tab: table }
32556  }
32557  #[allow(unused_mut)]
32558  pub fn create<'bldr: 'args, 'args: 'mut_bldr, 'mut_bldr, A: flatbuffers::Allocator + 'bldr>(
32559    _fbb: &'mut_bldr mut flatbuffers::FlatBufferBuilder<'bldr, A>,
32560    args: &'args ExportedDataStateArgs<'args>
32561  ) -> flatbuffers::WIPOffset<ExportedDataState<'bldr>> {
32562    let mut builder = ExportedDataStateBuilder::new(_fbb);
32563    if let Some(x) = args.blockCollections { builder.add_blockCollections(x); }
32564    if let Some(x) = args.blockInstances { builder.add_blockInstances(x); }
32565    if let Some(x) = args.id { builder.add_id(x); }
32566    if let Some(x) = args.version_graph { builder.add_version_graph(x); }
32567    if let Some(x) = args.external_files { builder.add_external_files(x); }
32568    if let Some(x) = args.duc_global_state { builder.add_duc_global_state(x); }
32569    if let Some(x) = args.duc_local_state { builder.add_duc_local_state(x); }
32570    if let Some(x) = args.standards { builder.add_standards(x); }
32571    if let Some(x) = args.layers { builder.add_layers(x); }
32572    if let Some(x) = args.regions { builder.add_regions(x); }
32573    if let Some(x) = args.groups { builder.add_groups(x); }
32574    if let Some(x) = args.blocks { builder.add_blocks(x); }
32575    if let Some(x) = args.elements { builder.add_elements(x); }
32576    if let Some(x) = args.dictionary { builder.add_dictionary(x); }
32577    if let Some(x) = args.thumbnail { builder.add_thumbnail(x); }
32578    if let Some(x) = args.version { builder.add_version(x); }
32579    if let Some(x) = args.source { builder.add_source(x); }
32580    builder.add_version_legacy(args.version_legacy);
32581    if let Some(x) = args.type_ { builder.add_type_(x); }
32582    builder.finish()
32583  }
32584
32585
32586  #[inline]
32587  pub fn type_(&self) -> Option<&'a str> {
32588    // Safety:
32589    // Created from valid Table for this object
32590    // which contains a valid value in this slot
32591    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ExportedDataState::VT_TYPE_, None)}
32592  }
32593  #[inline]
32594  pub fn version_legacy(&self) -> i32 {
32595    // Safety:
32596    // Created from valid Table for this object
32597    // which contains a valid value in this slot
32598    unsafe { self._tab.get::<i32>(ExportedDataState::VT_VERSION_LEGACY, Some(0)).unwrap()}
32599  }
32600  #[inline]
32601  pub fn source(&self) -> Option<&'a str> {
32602    // Safety:
32603    // Created from valid Table for this object
32604    // which contains a valid value in this slot
32605    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ExportedDataState::VT_SOURCE, None)}
32606  }
32607  #[inline]
32608  pub fn version(&self) -> Option<&'a str> {
32609    // Safety:
32610    // Created from valid Table for this object
32611    // which contains a valid value in this slot
32612    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ExportedDataState::VT_VERSION, None)}
32613  }
32614  #[inline]
32615  pub fn thumbnail(&self) -> Option<flatbuffers::Vector<'a, u8>> {
32616    // Safety:
32617    // Created from valid Table for this object
32618    // which contains a valid value in this slot
32619    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, u8>>>(ExportedDataState::VT_THUMBNAIL, None)}
32620  }
32621  #[inline]
32622  pub fn dictionary(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DictionaryEntry<'a>>>> {
32623    // Safety:
32624    // Created from valid Table for this object
32625    // which contains a valid value in this slot
32626    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DictionaryEntry>>>>(ExportedDataState::VT_DICTIONARY, None)}
32627  }
32628  #[inline]
32629  pub fn elements(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementWrapper<'a>>>> {
32630    // Safety:
32631    // Created from valid Table for this object
32632    // which contains a valid value in this slot
32633    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementWrapper>>>>(ExportedDataState::VT_ELEMENTS, None)}
32634  }
32635  #[inline]
32636  pub fn blocks(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlock<'a>>>> {
32637    // Safety:
32638    // Created from valid Table for this object
32639    // which contains a valid value in this slot
32640    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlock>>>>(ExportedDataState::VT_BLOCKS, None)}
32641  }
32642  #[inline]
32643  pub fn groups(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucGroup<'a>>>> {
32644    // Safety:
32645    // Created from valid Table for this object
32646    // which contains a valid value in this slot
32647    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucGroup>>>>(ExportedDataState::VT_GROUPS, None)}
32648  }
32649  #[inline]
32650  pub fn regions(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucRegion<'a>>>> {
32651    // Safety:
32652    // Created from valid Table for this object
32653    // which contains a valid value in this slot
32654    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucRegion>>>>(ExportedDataState::VT_REGIONS, None)}
32655  }
32656  #[inline]
32657  pub fn layers(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLayer<'a>>>> {
32658    // Safety:
32659    // Created from valid Table for this object
32660    // which contains a valid value in this slot
32661    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLayer>>>>(ExportedDataState::VT_LAYERS, None)}
32662  }
32663  #[inline]
32664  pub fn standards(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Standard<'a>>>> {
32665    // Safety:
32666    // Created from valid Table for this object
32667    // which contains a valid value in this slot
32668    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Standard>>>>(ExportedDataState::VT_STANDARDS, None)}
32669  }
32670  #[inline]
32671  pub fn duc_local_state(&self) -> Option<DucLocalState<'a>> {
32672    // Safety:
32673    // Created from valid Table for this object
32674    // which contains a valid value in this slot
32675    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucLocalState>>(ExportedDataState::VT_DUC_LOCAL_STATE, None)}
32676  }
32677  #[inline]
32678  pub fn duc_global_state(&self) -> Option<DucGlobalState<'a>> {
32679    // Safety:
32680    // Created from valid Table for this object
32681    // which contains a valid value in this slot
32682    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<DucGlobalState>>(ExportedDataState::VT_DUC_GLOBAL_STATE, None)}
32683  }
32684  #[inline]
32685  pub fn external_files(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucExternalFileEntry<'a>>>> {
32686    // Safety:
32687    // Created from valid Table for this object
32688    // which contains a valid value in this slot
32689    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucExternalFileEntry>>>>(ExportedDataState::VT_EXTERNAL_FILES, None)}
32690  }
32691  #[inline]
32692  pub fn version_graph(&self) -> Option<VersionGraph<'a>> {
32693    // Safety:
32694    // Created from valid Table for this object
32695    // which contains a valid value in this slot
32696    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<VersionGraph>>(ExportedDataState::VT_VERSION_GRAPH, None)}
32697  }
32698  #[inline]
32699  pub fn id(&self) -> Option<&'a str> {
32700    // Safety:
32701    // Created from valid Table for this object
32702    // which contains a valid value in this slot
32703    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<&str>>(ExportedDataState::VT_ID, None)}
32704  }
32705  #[inline]
32706  pub fn blockInstances(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockInstance<'a>>>> {
32707    // Safety:
32708    // Created from valid Table for this object
32709    // which contains a valid value in this slot
32710    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockInstance>>>>(ExportedDataState::VT_BLOCKINSTANCES, None)}
32711  }
32712  #[inline]
32713  pub fn blockCollections(&self) -> Option<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollection<'a>>>> {
32714    // Safety:
32715    // Created from valid Table for this object
32716    // which contains a valid value in this slot
32717    unsafe { self._tab.get::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollection>>>>(ExportedDataState::VT_BLOCKCOLLECTIONS, None)}
32718  }
32719}
32720
32721impl flatbuffers::Verifiable for ExportedDataState<'_> {
32722  #[inline]
32723  fn run_verifier(
32724    v: &mut flatbuffers::Verifier, pos: usize
32725  ) -> Result<(), flatbuffers::InvalidFlatbuffer> {
32726    use self::flatbuffers::Verifiable;
32727    v.visit_table(pos)?
32728     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("type_", Self::VT_TYPE_, false)?
32729     .visit_field::<i32>("version_legacy", Self::VT_VERSION_LEGACY, false)?
32730     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("source", Self::VT_SOURCE, false)?
32731     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("version", Self::VT_VERSION, false)?
32732     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, u8>>>("thumbnail", Self::VT_THUMBNAIL, false)?
32733     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DictionaryEntry>>>>("dictionary", Self::VT_DICTIONARY, false)?
32734     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<ElementWrapper>>>>("elements", Self::VT_ELEMENTS, false)?
32735     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucBlock>>>>("blocks", Self::VT_BLOCKS, false)?
32736     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucGroup>>>>("groups", Self::VT_GROUPS, false)?
32737     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucRegion>>>>("regions", Self::VT_REGIONS, false)?
32738     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucLayer>>>>("layers", Self::VT_LAYERS, false)?
32739     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<Standard>>>>("standards", Self::VT_STANDARDS, false)?
32740     .visit_field::<flatbuffers::ForwardsUOffset<DucLocalState>>("duc_local_state", Self::VT_DUC_LOCAL_STATE, false)?
32741     .visit_field::<flatbuffers::ForwardsUOffset<DucGlobalState>>("duc_global_state", Self::VT_DUC_GLOBAL_STATE, false)?
32742     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucExternalFileEntry>>>>("external_files", Self::VT_EXTERNAL_FILES, false)?
32743     .visit_field::<flatbuffers::ForwardsUOffset<VersionGraph>>("version_graph", Self::VT_VERSION_GRAPH, false)?
32744     .visit_field::<flatbuffers::ForwardsUOffset<&str>>("id", Self::VT_ID, false)?
32745     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucBlockInstance>>>>("blockInstances", Self::VT_BLOCKINSTANCES, false)?
32746     .visit_field::<flatbuffers::ForwardsUOffset<flatbuffers::Vector<'_, flatbuffers::ForwardsUOffset<DucBlockCollection>>>>("blockCollections", Self::VT_BLOCKCOLLECTIONS, false)?
32747     .finish();
32748    Ok(())
32749  }
32750}
32751pub struct ExportedDataStateArgs<'a> {
32752    pub type_: Option<flatbuffers::WIPOffset<&'a str>>,
32753    pub version_legacy: i32,
32754    pub source: Option<flatbuffers::WIPOffset<&'a str>>,
32755    pub version: Option<flatbuffers::WIPOffset<&'a str>>,
32756    pub thumbnail: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, u8>>>,
32757    pub dictionary: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DictionaryEntry<'a>>>>>,
32758    pub elements: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<ElementWrapper<'a>>>>>,
32759    pub blocks: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlock<'a>>>>>,
32760    pub groups: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucGroup<'a>>>>>,
32761    pub regions: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucRegion<'a>>>>>,
32762    pub layers: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucLayer<'a>>>>>,
32763    pub standards: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<Standard<'a>>>>>,
32764    pub duc_local_state: Option<flatbuffers::WIPOffset<DucLocalState<'a>>>,
32765    pub duc_global_state: Option<flatbuffers::WIPOffset<DucGlobalState<'a>>>,
32766    pub external_files: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucExternalFileEntry<'a>>>>>,
32767    pub version_graph: Option<flatbuffers::WIPOffset<VersionGraph<'a>>>,
32768    pub id: Option<flatbuffers::WIPOffset<&'a str>>,
32769    pub blockInstances: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockInstance<'a>>>>>,
32770    pub blockCollections: Option<flatbuffers::WIPOffset<flatbuffers::Vector<'a, flatbuffers::ForwardsUOffset<DucBlockCollection<'a>>>>>,
32771}
32772impl<'a> Default for ExportedDataStateArgs<'a> {
32773  #[inline]
32774  fn default() -> Self {
32775    ExportedDataStateArgs {
32776      type_: None,
32777      version_legacy: 0,
32778      source: None,
32779      version: None,
32780      thumbnail: None,
32781      dictionary: None,
32782      elements: None,
32783      blocks: None,
32784      groups: None,
32785      regions: None,
32786      layers: None,
32787      standards: None,
32788      duc_local_state: None,
32789      duc_global_state: None,
32790      external_files: None,
32791      version_graph: None,
32792      id: None,
32793      blockInstances: None,
32794      blockCollections: None,
32795    }
32796  }
32797}
32798
32799pub struct ExportedDataStateBuilder<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> {
32800  fbb_: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32801  start_: flatbuffers::WIPOffset<flatbuffers::TableUnfinishedWIPOffset>,
32802}
32803impl<'a: 'b, 'b, A: flatbuffers::Allocator + 'a> ExportedDataStateBuilder<'a, 'b, A> {
32804  #[inline]
32805  pub fn add_type_(&mut self, type_: flatbuffers::WIPOffset<&'b  str>) {
32806    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_TYPE_, type_);
32807  }
32808  #[inline]
32809  pub fn add_version_legacy(&mut self, version_legacy: i32) {
32810    self.fbb_.push_slot::<i32>(ExportedDataState::VT_VERSION_LEGACY, version_legacy, 0);
32811  }
32812  #[inline]
32813  pub fn add_source(&mut self, source: flatbuffers::WIPOffset<&'b  str>) {
32814    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_SOURCE, source);
32815  }
32816  #[inline]
32817  pub fn add_version(&mut self, version: flatbuffers::WIPOffset<&'b  str>) {
32818    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_VERSION, version);
32819  }
32820  #[inline]
32821  pub fn add_thumbnail(&mut self, thumbnail: flatbuffers::WIPOffset<flatbuffers::Vector<'b , u8>>) {
32822    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_THUMBNAIL, thumbnail);
32823  }
32824  #[inline]
32825  pub fn add_dictionary(&mut self, dictionary: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DictionaryEntry<'b >>>>) {
32826    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_DICTIONARY, dictionary);
32827  }
32828  #[inline]
32829  pub fn add_elements(&mut self, elements: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<ElementWrapper<'b >>>>) {
32830    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_ELEMENTS, elements);
32831  }
32832  #[inline]
32833  pub fn add_blocks(&mut self, blocks: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucBlock<'b >>>>) {
32834    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_BLOCKS, blocks);
32835  }
32836  #[inline]
32837  pub fn add_groups(&mut self, groups: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucGroup<'b >>>>) {
32838    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_GROUPS, groups);
32839  }
32840  #[inline]
32841  pub fn add_regions(&mut self, regions: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucRegion<'b >>>>) {
32842    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_REGIONS, regions);
32843  }
32844  #[inline]
32845  pub fn add_layers(&mut self, layers: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucLayer<'b >>>>) {
32846    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_LAYERS, layers);
32847  }
32848  #[inline]
32849  pub fn add_standards(&mut self, standards: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<Standard<'b >>>>) {
32850    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_STANDARDS, standards);
32851  }
32852  #[inline]
32853  pub fn add_duc_local_state(&mut self, duc_local_state: flatbuffers::WIPOffset<DucLocalState<'b >>) {
32854    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucLocalState>>(ExportedDataState::VT_DUC_LOCAL_STATE, duc_local_state);
32855  }
32856  #[inline]
32857  pub fn add_duc_global_state(&mut self, duc_global_state: flatbuffers::WIPOffset<DucGlobalState<'b >>) {
32858    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<DucGlobalState>>(ExportedDataState::VT_DUC_GLOBAL_STATE, duc_global_state);
32859  }
32860  #[inline]
32861  pub fn add_external_files(&mut self, external_files: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucExternalFileEntry<'b >>>>) {
32862    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_EXTERNAL_FILES, external_files);
32863  }
32864  #[inline]
32865  pub fn add_version_graph(&mut self, version_graph: flatbuffers::WIPOffset<VersionGraph<'b >>) {
32866    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<VersionGraph>>(ExportedDataState::VT_VERSION_GRAPH, version_graph);
32867  }
32868  #[inline]
32869  pub fn add_id(&mut self, id: flatbuffers::WIPOffset<&'b  str>) {
32870    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_ID, id);
32871  }
32872  #[inline]
32873  pub fn add_blockInstances(&mut self, blockInstances: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucBlockInstance<'b >>>>) {
32874    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_BLOCKINSTANCES, blockInstances);
32875  }
32876  #[inline]
32877  pub fn add_blockCollections(&mut self, blockCollections: flatbuffers::WIPOffset<flatbuffers::Vector<'b , flatbuffers::ForwardsUOffset<DucBlockCollection<'b >>>>) {
32878    self.fbb_.push_slot_always::<flatbuffers::WIPOffset<_>>(ExportedDataState::VT_BLOCKCOLLECTIONS, blockCollections);
32879  }
32880  #[inline]
32881  pub fn new(_fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>) -> ExportedDataStateBuilder<'a, 'b, A> {
32882    let start = _fbb.start_table();
32883    ExportedDataStateBuilder {
32884      fbb_: _fbb,
32885      start_: start,
32886    }
32887  }
32888  #[inline]
32889  pub fn finish(self) -> flatbuffers::WIPOffset<ExportedDataState<'a>> {
32890    let o = self.fbb_.end_table(self.start_);
32891    flatbuffers::WIPOffset::new(o.value())
32892  }
32893}
32894
32895impl core::fmt::Debug for ExportedDataState<'_> {
32896  fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
32897    let mut ds = f.debug_struct("ExportedDataState");
32898      ds.field("type_", &self.type_());
32899      ds.field("version_legacy", &self.version_legacy());
32900      ds.field("source", &self.source());
32901      ds.field("version", &self.version());
32902      ds.field("thumbnail", &self.thumbnail());
32903      ds.field("dictionary", &self.dictionary());
32904      ds.field("elements", &self.elements());
32905      ds.field("blocks", &self.blocks());
32906      ds.field("groups", &self.groups());
32907      ds.field("regions", &self.regions());
32908      ds.field("layers", &self.layers());
32909      ds.field("standards", &self.standards());
32910      ds.field("duc_local_state", &self.duc_local_state());
32911      ds.field("duc_global_state", &self.duc_global_state());
32912      ds.field("external_files", &self.external_files());
32913      ds.field("version_graph", &self.version_graph());
32914      ds.field("id", &self.id());
32915      ds.field("blockInstances", &self.blockInstances());
32916      ds.field("blockCollections", &self.blockCollections());
32917      ds.finish()
32918  }
32919}
32920#[inline]
32921/// Verifies that a buffer of bytes contains a `ExportedDataState`
32922/// and returns it.
32923/// Note that verification is still experimental and may not
32924/// catch every error, or be maximally performant. For the
32925/// previous, unchecked, behavior use
32926/// `root_as_exported_data_state_unchecked`.
32927pub fn root_as_exported_data_state(buf: &[u8]) -> Result<ExportedDataState, flatbuffers::InvalidFlatbuffer> {
32928  flatbuffers::root::<ExportedDataState>(buf)
32929}
32930#[inline]
32931/// Verifies that a buffer of bytes contains a size prefixed
32932/// `ExportedDataState` and returns it.
32933/// Note that verification is still experimental and may not
32934/// catch every error, or be maximally performant. For the
32935/// previous, unchecked, behavior use
32936/// `size_prefixed_root_as_exported_data_state_unchecked`.
32937pub fn size_prefixed_root_as_exported_data_state(buf: &[u8]) -> Result<ExportedDataState, flatbuffers::InvalidFlatbuffer> {
32938  flatbuffers::size_prefixed_root::<ExportedDataState>(buf)
32939}
32940#[inline]
32941/// Verifies, with the given options, that a buffer of bytes
32942/// contains a `ExportedDataState` and returns it.
32943/// Note that verification is still experimental and may not
32944/// catch every error, or be maximally performant. For the
32945/// previous, unchecked, behavior use
32946/// `root_as_exported_data_state_unchecked`.
32947pub fn root_as_exported_data_state_with_opts<'b, 'o>(
32948  opts: &'o flatbuffers::VerifierOptions,
32949  buf: &'b [u8],
32950) -> Result<ExportedDataState<'b>, flatbuffers::InvalidFlatbuffer> {
32951  flatbuffers::root_with_opts::<ExportedDataState<'b>>(opts, buf)
32952}
32953#[inline]
32954/// Verifies, with the given verifier options, that a buffer of
32955/// bytes contains a size prefixed `ExportedDataState` and returns
32956/// it. Note that verification is still experimental and may not
32957/// catch every error, or be maximally performant. For the
32958/// previous, unchecked, behavior use
32959/// `root_as_exported_data_state_unchecked`.
32960pub fn size_prefixed_root_as_exported_data_state_with_opts<'b, 'o>(
32961  opts: &'o flatbuffers::VerifierOptions,
32962  buf: &'b [u8],
32963) -> Result<ExportedDataState<'b>, flatbuffers::InvalidFlatbuffer> {
32964  flatbuffers::size_prefixed_root_with_opts::<ExportedDataState<'b>>(opts, buf)
32965}
32966#[inline]
32967/// Assumes, without verification, that a buffer of bytes contains a ExportedDataState and returns it.
32968/// # Safety
32969/// Callers must trust the given bytes do indeed contain a valid `ExportedDataState`.
32970pub unsafe fn root_as_exported_data_state_unchecked(buf: &[u8]) -> ExportedDataState {
32971  flatbuffers::root_unchecked::<ExportedDataState>(buf)
32972}
32973#[inline]
32974/// Assumes, without verification, that a buffer of bytes contains a size prefixed ExportedDataState and returns it.
32975/// # Safety
32976/// Callers must trust the given bytes do indeed contain a valid size prefixed `ExportedDataState`.
32977pub unsafe fn size_prefixed_root_as_exported_data_state_unchecked(buf: &[u8]) -> ExportedDataState {
32978  flatbuffers::size_prefixed_root_unchecked::<ExportedDataState>(buf)
32979}
32980pub const EXPORTED_DATA_STATE_IDENTIFIER: &str = "DUC_";
32981
32982#[inline]
32983pub fn exported_data_state_buffer_has_identifier(buf: &[u8]) -> bool {
32984  flatbuffers::buffer_has_identifier(buf, EXPORTED_DATA_STATE_IDENTIFIER, false)
32985}
32986
32987#[inline]
32988pub fn exported_data_state_size_prefixed_buffer_has_identifier(buf: &[u8]) -> bool {
32989  flatbuffers::buffer_has_identifier(buf, EXPORTED_DATA_STATE_IDENTIFIER, true)
32990}
32991
32992#[inline]
32993pub fn finish_exported_data_state_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(
32994    fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>,
32995    root: flatbuffers::WIPOffset<ExportedDataState<'a>>) {
32996  fbb.finish(root, Some(EXPORTED_DATA_STATE_IDENTIFIER));
32997}
32998
32999#[inline]
33000pub fn finish_size_prefixed_exported_data_state_buffer<'a, 'b, A: flatbuffers::Allocator + 'a>(fbb: &'b mut flatbuffers::FlatBufferBuilder<'a, A>, root: flatbuffers::WIPOffset<ExportedDataState<'a>>) {
33001  fbb.finish_size_prefixed(root, Some(EXPORTED_DATA_STATE_IDENTIFIER));
33002}
33003}  // pub mod Duc
33004