1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 
4 #ifndef FLATBUFFERS_GENERATED_DATETIME_LIBTEXTCLASSIFIER3_GRAMMAR_DATETIME_H_
5 #define FLATBUFFERS_GENERATED_DATETIME_LIBTEXTCLASSIFIER3_GRAMMAR_DATETIME_H_
6 
7 #include "flatbuffers/flatbuffers.h"
8 
9 // Ensure the included flatbuffers.h is the same version as when this file was
10 // generated, otherwise it may not be compatible.
11 static_assert(FLATBUFFERS_VERSION_MAJOR == 2 &&
12               FLATBUFFERS_VERSION_MINOR == 0 &&
13               FLATBUFFERS_VERSION_REVISION == 7,
14              "Non-compatible flatbuffers version included");
15 
16 namespace libtextclassifier3 {
17 namespace grammar {
18 namespace datetime {
19 
20 struct TimeZone;
21 struct TimeZoneBuilder;
22 struct TimeZoneT;
23 
24 struct RelativeDatetimeComponent;
25 struct RelativeDatetimeComponentBuilder;
26 struct RelativeDatetimeComponentT;
27 
28 struct AbsoluteDateTime;
29 struct AbsoluteDateTimeBuilder;
30 struct AbsoluteDateTimeT;
31 
32 struct RelativeDateTime;
33 struct RelativeDateTimeBuilder;
34 struct RelativeDateTimeT;
35 
36 struct UngroundedDatetime;
37 struct UngroundedDatetimeBuilder;
38 struct UngroundedDatetimeT;
39 
40 enum Meridiem : int32_t {
41   Meridiem_UNKNOWN = 0,
42   Meridiem_AM = 1,
43   Meridiem_PM = 2,
44   Meridiem_MIN = Meridiem_UNKNOWN,
45   Meridiem_MAX = Meridiem_PM
46 };
47 
EnumValuesMeridiem()48 inline const Meridiem (&EnumValuesMeridiem())[3] {
49   static const Meridiem values[] = {
50     Meridiem_UNKNOWN,
51     Meridiem_AM,
52     Meridiem_PM
53   };
54   return values;
55 }
56 
EnumNamesMeridiem()57 inline const char * const *EnumNamesMeridiem() {
58   static const char * const names[4] = {
59     "UNKNOWN",
60     "AM",
61     "PM",
62     nullptr
63   };
64   return names;
65 }
66 
EnumNameMeridiem(Meridiem e)67 inline const char *EnumNameMeridiem(Meridiem e) {
68   if (flatbuffers::IsOutRange(e, Meridiem_UNKNOWN, Meridiem_PM)) return "";
69   const size_t index = static_cast<size_t>(e);
70   return EnumNamesMeridiem()[index];
71 }
72 
73 enum ComponentType : int32_t {
74   ComponentType_UNSPECIFIED = 0,
75   ComponentType_YEAR = 1,
76   ComponentType_MONTH = 2,
77   ComponentType_WEEK = 3,
78   ComponentType_DAY_OF_WEEK = 4,
79   ComponentType_DAY_OF_MONTH = 5,
80   ComponentType_HOUR = 6,
81   ComponentType_MINUTE = 7,
82   ComponentType_SECOND = 8,
83   ComponentType_MERIDIEM = 9,
84   ComponentType_MIN = ComponentType_UNSPECIFIED,
85   ComponentType_MAX = ComponentType_MERIDIEM
86 };
87 
EnumValuesComponentType()88 inline const ComponentType (&EnumValuesComponentType())[10] {
89   static const ComponentType values[] = {
90     ComponentType_UNSPECIFIED,
91     ComponentType_YEAR,
92     ComponentType_MONTH,
93     ComponentType_WEEK,
94     ComponentType_DAY_OF_WEEK,
95     ComponentType_DAY_OF_MONTH,
96     ComponentType_HOUR,
97     ComponentType_MINUTE,
98     ComponentType_SECOND,
99     ComponentType_MERIDIEM
100   };
101   return values;
102 }
103 
EnumNamesComponentType()104 inline const char * const *EnumNamesComponentType() {
105   static const char * const names[11] = {
106     "UNSPECIFIED",
107     "YEAR",
108     "MONTH",
109     "WEEK",
110     "DAY_OF_WEEK",
111     "DAY_OF_MONTH",
112     "HOUR",
113     "MINUTE",
114     "SECOND",
115     "MERIDIEM",
116     nullptr
117   };
118   return names;
119 }
120 
EnumNameComponentType(ComponentType e)121 inline const char *EnumNameComponentType(ComponentType e) {
122   if (flatbuffers::IsOutRange(e, ComponentType_UNSPECIFIED, ComponentType_MERIDIEM)) return "";
123   const size_t index = static_cast<size_t>(e);
124   return EnumNamesComponentType()[index];
125 }
126 
127 namespace RelativeDatetimeComponent_ {
128 
129 enum Modifier : int32_t {
130   Modifier_UNSPECIFIED = 0,
131   Modifier_NEXT = 1,
132   Modifier_THIS = 2,
133   Modifier_LAST = 3,
134   Modifier_NOW = 4,
135   Modifier_TOMORROW = 5,
136   Modifier_YESTERDAY = 6,
137   Modifier_PAST = 7,
138   Modifier_FUTURE = 8,
139   Modifier_MIN = Modifier_UNSPECIFIED,
140   Modifier_MAX = Modifier_FUTURE
141 };
142 
EnumValuesModifier()143 inline const Modifier (&EnumValuesModifier())[9] {
144   static const Modifier values[] = {
145     Modifier_UNSPECIFIED,
146     Modifier_NEXT,
147     Modifier_THIS,
148     Modifier_LAST,
149     Modifier_NOW,
150     Modifier_TOMORROW,
151     Modifier_YESTERDAY,
152     Modifier_PAST,
153     Modifier_FUTURE
154   };
155   return values;
156 }
157 
EnumNamesModifier()158 inline const char * const *EnumNamesModifier() {
159   static const char * const names[10] = {
160     "UNSPECIFIED",
161     "NEXT",
162     "THIS",
163     "LAST",
164     "NOW",
165     "TOMORROW",
166     "YESTERDAY",
167     "PAST",
168     "FUTURE",
169     nullptr
170   };
171   return names;
172 }
173 
EnumNameModifier(Modifier e)174 inline const char *EnumNameModifier(Modifier e) {
175   if (flatbuffers::IsOutRange(e, Modifier_UNSPECIFIED, Modifier_FUTURE)) return "";
176   const size_t index = static_cast<size_t>(e);
177   return EnumNamesModifier()[index];
178 }
179 
180 }  // namespace RelativeDatetimeComponent_
181 
182 struct TimeZoneT : public flatbuffers::NativeTable {
183   typedef TimeZone TableType;
184   int32_t utc_offset_mins = 0;
185 };
186 
187 struct TimeZone FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
188   typedef TimeZoneT NativeTableType;
189   typedef TimeZoneBuilder Builder;
190   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
191     VT_UTC_OFFSET_MINS = 4
192   };
utc_offset_minsFLATBUFFERS_FINAL_CLASS193   int32_t utc_offset_mins() const {
194     return GetField<int32_t>(VT_UTC_OFFSET_MINS, 0);
195   }
VerifyFLATBUFFERS_FINAL_CLASS196   bool Verify(flatbuffers::Verifier &verifier) const {
197     return VerifyTableStart(verifier) &&
198            VerifyField<int32_t>(verifier, VT_UTC_OFFSET_MINS, 4) &&
199            verifier.EndTable();
200   }
201   TimeZoneT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
202   void UnPackTo(TimeZoneT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
203   static flatbuffers::Offset<TimeZone> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeZoneT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
204 };
205 
206 struct TimeZoneBuilder {
207   typedef TimeZone Table;
208   flatbuffers::FlatBufferBuilder &fbb_;
209   flatbuffers::uoffset_t start_;
add_utc_offset_minsTimeZoneBuilder210   void add_utc_offset_mins(int32_t utc_offset_mins) {
211     fbb_.AddElement<int32_t>(TimeZone::VT_UTC_OFFSET_MINS, utc_offset_mins, 0);
212   }
TimeZoneBuilderTimeZoneBuilder213   explicit TimeZoneBuilder(flatbuffers::FlatBufferBuilder &_fbb)
214         : fbb_(_fbb) {
215     start_ = fbb_.StartTable();
216   }
FinishTimeZoneBuilder217   flatbuffers::Offset<TimeZone> Finish() {
218     const auto end = fbb_.EndTable(start_);
219     auto o = flatbuffers::Offset<TimeZone>(end);
220     return o;
221   }
222 };
223 
224 inline flatbuffers::Offset<TimeZone> CreateTimeZone(
225     flatbuffers::FlatBufferBuilder &_fbb,
226     int32_t utc_offset_mins = 0) {
227   TimeZoneBuilder builder_(_fbb);
228   builder_.add_utc_offset_mins(utc_offset_mins);
229   return builder_.Finish();
230 }
231 
232 flatbuffers::Offset<TimeZone> CreateTimeZone(flatbuffers::FlatBufferBuilder &_fbb, const TimeZoneT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
233 
234 struct RelativeDatetimeComponentT : public flatbuffers::NativeTable {
235   typedef RelativeDatetimeComponent TableType;
236   libtextclassifier3::grammar::datetime::ComponentType component_type = libtextclassifier3::grammar::datetime::ComponentType_UNSPECIFIED;
237   libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier modifier = libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier_UNSPECIFIED;
238   int32_t value = 0;
239 };
240 
241 struct RelativeDatetimeComponent FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
242   typedef RelativeDatetimeComponentT NativeTableType;
243   typedef RelativeDatetimeComponentBuilder Builder;
244   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
245     VT_COMPONENT_TYPE = 4,
246     VT_MODIFIER = 6,
247     VT_VALUE = 8
248   };
component_typeFLATBUFFERS_FINAL_CLASS249   libtextclassifier3::grammar::datetime::ComponentType component_type() const {
250     return static_cast<libtextclassifier3::grammar::datetime::ComponentType>(GetField<int32_t>(VT_COMPONENT_TYPE, 0));
251   }
modifierFLATBUFFERS_FINAL_CLASS252   libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier modifier() const {
253     return static_cast<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier>(GetField<int32_t>(VT_MODIFIER, 0));
254   }
valueFLATBUFFERS_FINAL_CLASS255   int32_t value() const {
256     return GetField<int32_t>(VT_VALUE, 0);
257   }
VerifyFLATBUFFERS_FINAL_CLASS258   bool Verify(flatbuffers::Verifier &verifier) const {
259     return VerifyTableStart(verifier) &&
260            VerifyField<int32_t>(verifier, VT_COMPONENT_TYPE, 4) &&
261            VerifyField<int32_t>(verifier, VT_MODIFIER, 4) &&
262            VerifyField<int32_t>(verifier, VT_VALUE, 4) &&
263            verifier.EndTable();
264   }
265   RelativeDatetimeComponentT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
266   void UnPackTo(RelativeDatetimeComponentT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
267   static flatbuffers::Offset<RelativeDatetimeComponent> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDatetimeComponentT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
268 };
269 
270 struct RelativeDatetimeComponentBuilder {
271   typedef RelativeDatetimeComponent Table;
272   flatbuffers::FlatBufferBuilder &fbb_;
273   flatbuffers::uoffset_t start_;
add_component_typeRelativeDatetimeComponentBuilder274   void add_component_type(libtextclassifier3::grammar::datetime::ComponentType component_type) {
275     fbb_.AddElement<int32_t>(RelativeDatetimeComponent::VT_COMPONENT_TYPE, static_cast<int32_t>(component_type), 0);
276   }
add_modifierRelativeDatetimeComponentBuilder277   void add_modifier(libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier modifier) {
278     fbb_.AddElement<int32_t>(RelativeDatetimeComponent::VT_MODIFIER, static_cast<int32_t>(modifier), 0);
279   }
add_valueRelativeDatetimeComponentBuilder280   void add_value(int32_t value) {
281     fbb_.AddElement<int32_t>(RelativeDatetimeComponent::VT_VALUE, value, 0);
282   }
RelativeDatetimeComponentBuilderRelativeDatetimeComponentBuilder283   explicit RelativeDatetimeComponentBuilder(flatbuffers::FlatBufferBuilder &_fbb)
284         : fbb_(_fbb) {
285     start_ = fbb_.StartTable();
286   }
FinishRelativeDatetimeComponentBuilder287   flatbuffers::Offset<RelativeDatetimeComponent> Finish() {
288     const auto end = fbb_.EndTable(start_);
289     auto o = flatbuffers::Offset<RelativeDatetimeComponent>(end);
290     return o;
291   }
292 };
293 
294 inline flatbuffers::Offset<RelativeDatetimeComponent> CreateRelativeDatetimeComponent(
295     flatbuffers::FlatBufferBuilder &_fbb,
296     libtextclassifier3::grammar::datetime::ComponentType component_type = libtextclassifier3::grammar::datetime::ComponentType_UNSPECIFIED,
297     libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier modifier = libtextclassifier3::grammar::datetime::RelativeDatetimeComponent_::Modifier_UNSPECIFIED,
298     int32_t value = 0) {
299   RelativeDatetimeComponentBuilder builder_(_fbb);
300   builder_.add_value(value);
301   builder_.add_modifier(modifier);
302   builder_.add_component_type(component_type);
303   return builder_.Finish();
304 }
305 
306 flatbuffers::Offset<RelativeDatetimeComponent> CreateRelativeDatetimeComponent(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDatetimeComponentT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
307 
308 struct AbsoluteDateTimeT : public flatbuffers::NativeTable {
309   typedef AbsoluteDateTime TableType;
310   int32_t year = -1;
311   int32_t month = -1;
312   int32_t day = -1;
313   int32_t week_day = -1;
314   int32_t hour = -1;
315   int32_t minute = -1;
316   int32_t second = -1;
317   double partial_second = -1.0;
318   libtextclassifier3::grammar::datetime::Meridiem meridiem = libtextclassifier3::grammar::datetime::Meridiem_UNKNOWN;
319   std::unique_ptr<libtextclassifier3::grammar::datetime::TimeZoneT> time_zone{};
320   AbsoluteDateTimeT() = default;
321   AbsoluteDateTimeT(const AbsoluteDateTimeT &o);
322   AbsoluteDateTimeT(AbsoluteDateTimeT&&) FLATBUFFERS_NOEXCEPT = default;
323   AbsoluteDateTimeT &operator=(AbsoluteDateTimeT o) FLATBUFFERS_NOEXCEPT;
324 };
325 
326 struct AbsoluteDateTime FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
327   typedef AbsoluteDateTimeT NativeTableType;
328   typedef AbsoluteDateTimeBuilder Builder;
329   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
330     VT_YEAR = 4,
331     VT_MONTH = 6,
332     VT_DAY = 8,
333     VT_WEEK_DAY = 10,
334     VT_HOUR = 12,
335     VT_MINUTE = 14,
336     VT_SECOND = 16,
337     VT_PARTIAL_SECOND = 18,
338     VT_MERIDIEM = 20,
339     VT_TIME_ZONE = 22
340   };
yearFLATBUFFERS_FINAL_CLASS341   int32_t year() const {
342     return GetField<int32_t>(VT_YEAR, -1);
343   }
monthFLATBUFFERS_FINAL_CLASS344   int32_t month() const {
345     return GetField<int32_t>(VT_MONTH, -1);
346   }
dayFLATBUFFERS_FINAL_CLASS347   int32_t day() const {
348     return GetField<int32_t>(VT_DAY, -1);
349   }
week_dayFLATBUFFERS_FINAL_CLASS350   int32_t week_day() const {
351     return GetField<int32_t>(VT_WEEK_DAY, -1);
352   }
hourFLATBUFFERS_FINAL_CLASS353   int32_t hour() const {
354     return GetField<int32_t>(VT_HOUR, -1);
355   }
minuteFLATBUFFERS_FINAL_CLASS356   int32_t minute() const {
357     return GetField<int32_t>(VT_MINUTE, -1);
358   }
secondFLATBUFFERS_FINAL_CLASS359   int32_t second() const {
360     return GetField<int32_t>(VT_SECOND, -1);
361   }
partial_secondFLATBUFFERS_FINAL_CLASS362   double partial_second() const {
363     return GetField<double>(VT_PARTIAL_SECOND, -1.0);
364   }
meridiemFLATBUFFERS_FINAL_CLASS365   libtextclassifier3::grammar::datetime::Meridiem meridiem() const {
366     return static_cast<libtextclassifier3::grammar::datetime::Meridiem>(GetField<int32_t>(VT_MERIDIEM, 0));
367   }
time_zoneFLATBUFFERS_FINAL_CLASS368   const libtextclassifier3::grammar::datetime::TimeZone *time_zone() const {
369     return GetPointer<const libtextclassifier3::grammar::datetime::TimeZone *>(VT_TIME_ZONE);
370   }
VerifyFLATBUFFERS_FINAL_CLASS371   bool Verify(flatbuffers::Verifier &verifier) const {
372     return VerifyTableStart(verifier) &&
373            VerifyField<int32_t>(verifier, VT_YEAR, 4) &&
374            VerifyField<int32_t>(verifier, VT_MONTH, 4) &&
375            VerifyField<int32_t>(verifier, VT_DAY, 4) &&
376            VerifyField<int32_t>(verifier, VT_WEEK_DAY, 4) &&
377            VerifyField<int32_t>(verifier, VT_HOUR, 4) &&
378            VerifyField<int32_t>(verifier, VT_MINUTE, 4) &&
379            VerifyField<int32_t>(verifier, VT_SECOND, 4) &&
380            VerifyField<double>(verifier, VT_PARTIAL_SECOND, 8) &&
381            VerifyField<int32_t>(verifier, VT_MERIDIEM, 4) &&
382            VerifyOffset(verifier, VT_TIME_ZONE) &&
383            verifier.VerifyTable(time_zone()) &&
384            verifier.EndTable();
385   }
386   AbsoluteDateTimeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
387   void UnPackTo(AbsoluteDateTimeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
388   static flatbuffers::Offset<AbsoluteDateTime> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsoluteDateTimeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
389 };
390 
391 struct AbsoluteDateTimeBuilder {
392   typedef AbsoluteDateTime Table;
393   flatbuffers::FlatBufferBuilder &fbb_;
394   flatbuffers::uoffset_t start_;
add_yearAbsoluteDateTimeBuilder395   void add_year(int32_t year) {
396     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_YEAR, year, -1);
397   }
add_monthAbsoluteDateTimeBuilder398   void add_month(int32_t month) {
399     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_MONTH, month, -1);
400   }
add_dayAbsoluteDateTimeBuilder401   void add_day(int32_t day) {
402     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_DAY, day, -1);
403   }
add_week_dayAbsoluteDateTimeBuilder404   void add_week_day(int32_t week_day) {
405     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_WEEK_DAY, week_day, -1);
406   }
add_hourAbsoluteDateTimeBuilder407   void add_hour(int32_t hour) {
408     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_HOUR, hour, -1);
409   }
add_minuteAbsoluteDateTimeBuilder410   void add_minute(int32_t minute) {
411     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_MINUTE, minute, -1);
412   }
add_secondAbsoluteDateTimeBuilder413   void add_second(int32_t second) {
414     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_SECOND, second, -1);
415   }
add_partial_secondAbsoluteDateTimeBuilder416   void add_partial_second(double partial_second) {
417     fbb_.AddElement<double>(AbsoluteDateTime::VT_PARTIAL_SECOND, partial_second, -1.0);
418   }
add_meridiemAbsoluteDateTimeBuilder419   void add_meridiem(libtextclassifier3::grammar::datetime::Meridiem meridiem) {
420     fbb_.AddElement<int32_t>(AbsoluteDateTime::VT_MERIDIEM, static_cast<int32_t>(meridiem), 0);
421   }
add_time_zoneAbsoluteDateTimeBuilder422   void add_time_zone(flatbuffers::Offset<libtextclassifier3::grammar::datetime::TimeZone> time_zone) {
423     fbb_.AddOffset(AbsoluteDateTime::VT_TIME_ZONE, time_zone);
424   }
AbsoluteDateTimeBuilderAbsoluteDateTimeBuilder425   explicit AbsoluteDateTimeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
426         : fbb_(_fbb) {
427     start_ = fbb_.StartTable();
428   }
FinishAbsoluteDateTimeBuilder429   flatbuffers::Offset<AbsoluteDateTime> Finish() {
430     const auto end = fbb_.EndTable(start_);
431     auto o = flatbuffers::Offset<AbsoluteDateTime>(end);
432     return o;
433   }
434 };
435 
436 inline flatbuffers::Offset<AbsoluteDateTime> CreateAbsoluteDateTime(
437     flatbuffers::FlatBufferBuilder &_fbb,
438     int32_t year = -1,
439     int32_t month = -1,
440     int32_t day = -1,
441     int32_t week_day = -1,
442     int32_t hour = -1,
443     int32_t minute = -1,
444     int32_t second = -1,
445     double partial_second = -1.0,
446     libtextclassifier3::grammar::datetime::Meridiem meridiem = libtextclassifier3::grammar::datetime::Meridiem_UNKNOWN,
447     flatbuffers::Offset<libtextclassifier3::grammar::datetime::TimeZone> time_zone = 0) {
448   AbsoluteDateTimeBuilder builder_(_fbb);
449   builder_.add_partial_second(partial_second);
450   builder_.add_time_zone(time_zone);
451   builder_.add_meridiem(meridiem);
452   builder_.add_second(second);
453   builder_.add_minute(minute);
454   builder_.add_hour(hour);
455   builder_.add_week_day(week_day);
456   builder_.add_day(day);
457   builder_.add_month(month);
458   builder_.add_year(year);
459   return builder_.Finish();
460 }
461 
462 flatbuffers::Offset<AbsoluteDateTime> CreateAbsoluteDateTime(flatbuffers::FlatBufferBuilder &_fbb, const AbsoluteDateTimeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
463 
464 struct RelativeDateTimeT : public flatbuffers::NativeTable {
465   typedef RelativeDateTime TableType;
466   std::vector<std::unique_ptr<libtextclassifier3::grammar::datetime::RelativeDatetimeComponentT>> relative_datetime_component{};
467   std::unique_ptr<libtextclassifier3::grammar::datetime::AbsoluteDateTimeT> base{};
468   RelativeDateTimeT() = default;
469   RelativeDateTimeT(const RelativeDateTimeT &o);
470   RelativeDateTimeT(RelativeDateTimeT&&) FLATBUFFERS_NOEXCEPT = default;
471   RelativeDateTimeT &operator=(RelativeDateTimeT o) FLATBUFFERS_NOEXCEPT;
472 };
473 
474 struct RelativeDateTime FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
475   typedef RelativeDateTimeT NativeTableType;
476   typedef RelativeDateTimeBuilder Builder;
477   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
478     VT_RELATIVE_DATETIME_COMPONENT = 4,
479     VT_BASE = 6
480   };
relative_datetime_componentFLATBUFFERS_FINAL_CLASS481   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>> *relative_datetime_component() const {
482     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>> *>(VT_RELATIVE_DATETIME_COMPONENT);
483   }
baseFLATBUFFERS_FINAL_CLASS484   const libtextclassifier3::grammar::datetime::AbsoluteDateTime *base() const {
485     return GetPointer<const libtextclassifier3::grammar::datetime::AbsoluteDateTime *>(VT_BASE);
486   }
VerifyFLATBUFFERS_FINAL_CLASS487   bool Verify(flatbuffers::Verifier &verifier) const {
488     return VerifyTableStart(verifier) &&
489            VerifyOffset(verifier, VT_RELATIVE_DATETIME_COMPONENT) &&
490            verifier.VerifyVector(relative_datetime_component()) &&
491            verifier.VerifyVectorOfTables(relative_datetime_component()) &&
492            VerifyOffset(verifier, VT_BASE) &&
493            verifier.VerifyTable(base()) &&
494            verifier.EndTable();
495   }
496   RelativeDateTimeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
497   void UnPackTo(RelativeDateTimeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
498   static flatbuffers::Offset<RelativeDateTime> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDateTimeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
499 };
500 
501 struct RelativeDateTimeBuilder {
502   typedef RelativeDateTime Table;
503   flatbuffers::FlatBufferBuilder &fbb_;
504   flatbuffers::uoffset_t start_;
add_relative_datetime_componentRelativeDateTimeBuilder505   void add_relative_datetime_component(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>>> relative_datetime_component) {
506     fbb_.AddOffset(RelativeDateTime::VT_RELATIVE_DATETIME_COMPONENT, relative_datetime_component);
507   }
add_baseRelativeDateTimeBuilder508   void add_base(flatbuffers::Offset<libtextclassifier3::grammar::datetime::AbsoluteDateTime> base) {
509     fbb_.AddOffset(RelativeDateTime::VT_BASE, base);
510   }
RelativeDateTimeBuilderRelativeDateTimeBuilder511   explicit RelativeDateTimeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
512         : fbb_(_fbb) {
513     start_ = fbb_.StartTable();
514   }
FinishRelativeDateTimeBuilder515   flatbuffers::Offset<RelativeDateTime> Finish() {
516     const auto end = fbb_.EndTable(start_);
517     auto o = flatbuffers::Offset<RelativeDateTime>(end);
518     return o;
519   }
520 };
521 
522 inline flatbuffers::Offset<RelativeDateTime> CreateRelativeDateTime(
523     flatbuffers::FlatBufferBuilder &_fbb,
524     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>>> relative_datetime_component = 0,
525     flatbuffers::Offset<libtextclassifier3::grammar::datetime::AbsoluteDateTime> base = 0) {
526   RelativeDateTimeBuilder builder_(_fbb);
527   builder_.add_base(base);
528   builder_.add_relative_datetime_component(relative_datetime_component);
529   return builder_.Finish();
530 }
531 
532 inline flatbuffers::Offset<RelativeDateTime> CreateRelativeDateTimeDirect(
533     flatbuffers::FlatBufferBuilder &_fbb,
534     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>> *relative_datetime_component = nullptr,
535     flatbuffers::Offset<libtextclassifier3::grammar::datetime::AbsoluteDateTime> base = 0) {
536   auto relative_datetime_component__ = relative_datetime_component ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>>(*relative_datetime_component) : 0;
537   return libtextclassifier3::grammar::datetime::CreateRelativeDateTime(
538       _fbb,
539       relative_datetime_component__,
540       base);
541 }
542 
543 flatbuffers::Offset<RelativeDateTime> CreateRelativeDateTime(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDateTimeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
544 
545 struct UngroundedDatetimeT : public flatbuffers::NativeTable {
546   typedef UngroundedDatetime TableType;
547   std::unique_ptr<libtextclassifier3::grammar::datetime::AbsoluteDateTimeT> absolute_datetime{};
548   std::unique_ptr<libtextclassifier3::grammar::datetime::RelativeDateTimeT> relative_datetime{};
549   uint32_t annotation_usecases = 4294967295;
550   UngroundedDatetimeT() = default;
551   UngroundedDatetimeT(const UngroundedDatetimeT &o);
552   UngroundedDatetimeT(UngroundedDatetimeT&&) FLATBUFFERS_NOEXCEPT = default;
553   UngroundedDatetimeT &operator=(UngroundedDatetimeT o) FLATBUFFERS_NOEXCEPT;
554 };
555 
556 struct UngroundedDatetime FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
557   typedef UngroundedDatetimeT NativeTableType;
558   typedef UngroundedDatetimeBuilder Builder;
559   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
560     VT_ABSOLUTE_DATETIME = 4,
561     VT_RELATIVE_DATETIME = 6,
562     VT_ANNOTATION_USECASES = 8
563   };
absolute_datetimeFLATBUFFERS_FINAL_CLASS564   const libtextclassifier3::grammar::datetime::AbsoluteDateTime *absolute_datetime() const {
565     return GetPointer<const libtextclassifier3::grammar::datetime::AbsoluteDateTime *>(VT_ABSOLUTE_DATETIME);
566   }
relative_datetimeFLATBUFFERS_FINAL_CLASS567   const libtextclassifier3::grammar::datetime::RelativeDateTime *relative_datetime() const {
568     return GetPointer<const libtextclassifier3::grammar::datetime::RelativeDateTime *>(VT_RELATIVE_DATETIME);
569   }
annotation_usecasesFLATBUFFERS_FINAL_CLASS570   uint32_t annotation_usecases() const {
571     return GetField<uint32_t>(VT_ANNOTATION_USECASES, 4294967295);
572   }
VerifyFLATBUFFERS_FINAL_CLASS573   bool Verify(flatbuffers::Verifier &verifier) const {
574     return VerifyTableStart(verifier) &&
575            VerifyOffset(verifier, VT_ABSOLUTE_DATETIME) &&
576            verifier.VerifyTable(absolute_datetime()) &&
577            VerifyOffset(verifier, VT_RELATIVE_DATETIME) &&
578            verifier.VerifyTable(relative_datetime()) &&
579            VerifyField<uint32_t>(verifier, VT_ANNOTATION_USECASES, 4) &&
580            verifier.EndTable();
581   }
582   UngroundedDatetimeT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
583   void UnPackTo(UngroundedDatetimeT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
584   static flatbuffers::Offset<UngroundedDatetime> Pack(flatbuffers::FlatBufferBuilder &_fbb, const UngroundedDatetimeT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
585 };
586 
587 struct UngroundedDatetimeBuilder {
588   typedef UngroundedDatetime Table;
589   flatbuffers::FlatBufferBuilder &fbb_;
590   flatbuffers::uoffset_t start_;
add_absolute_datetimeUngroundedDatetimeBuilder591   void add_absolute_datetime(flatbuffers::Offset<libtextclassifier3::grammar::datetime::AbsoluteDateTime> absolute_datetime) {
592     fbb_.AddOffset(UngroundedDatetime::VT_ABSOLUTE_DATETIME, absolute_datetime);
593   }
add_relative_datetimeUngroundedDatetimeBuilder594   void add_relative_datetime(flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDateTime> relative_datetime) {
595     fbb_.AddOffset(UngroundedDatetime::VT_RELATIVE_DATETIME, relative_datetime);
596   }
add_annotation_usecasesUngroundedDatetimeBuilder597   void add_annotation_usecases(uint32_t annotation_usecases) {
598     fbb_.AddElement<uint32_t>(UngroundedDatetime::VT_ANNOTATION_USECASES, annotation_usecases, 4294967295);
599   }
UngroundedDatetimeBuilderUngroundedDatetimeBuilder600   explicit UngroundedDatetimeBuilder(flatbuffers::FlatBufferBuilder &_fbb)
601         : fbb_(_fbb) {
602     start_ = fbb_.StartTable();
603   }
FinishUngroundedDatetimeBuilder604   flatbuffers::Offset<UngroundedDatetime> Finish() {
605     const auto end = fbb_.EndTable(start_);
606     auto o = flatbuffers::Offset<UngroundedDatetime>(end);
607     return o;
608   }
609 };
610 
611 inline flatbuffers::Offset<UngroundedDatetime> CreateUngroundedDatetime(
612     flatbuffers::FlatBufferBuilder &_fbb,
613     flatbuffers::Offset<libtextclassifier3::grammar::datetime::AbsoluteDateTime> absolute_datetime = 0,
614     flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDateTime> relative_datetime = 0,
615     uint32_t annotation_usecases = 4294967295) {
616   UngroundedDatetimeBuilder builder_(_fbb);
617   builder_.add_annotation_usecases(annotation_usecases);
618   builder_.add_relative_datetime(relative_datetime);
619   builder_.add_absolute_datetime(absolute_datetime);
620   return builder_.Finish();
621 }
622 
623 flatbuffers::Offset<UngroundedDatetime> CreateUngroundedDatetime(flatbuffers::FlatBufferBuilder &_fbb, const UngroundedDatetimeT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
624 
UnPack(const flatbuffers::resolver_function_t * _resolver)625 inline TimeZoneT *TimeZone::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
626   auto _o = std::unique_ptr<TimeZoneT>(new TimeZoneT());
627   UnPackTo(_o.get(), _resolver);
628   return _o.release();
629 }
630 
UnPackTo(TimeZoneT * _o,const flatbuffers::resolver_function_t * _resolver)631 inline void TimeZone::UnPackTo(TimeZoneT *_o, const flatbuffers::resolver_function_t *_resolver) const {
632   (void)_o;
633   (void)_resolver;
634   { auto _e = utc_offset_mins(); _o->utc_offset_mins = _e; }
635 }
636 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const TimeZoneT * _o,const flatbuffers::rehasher_function_t * _rehasher)637 inline flatbuffers::Offset<TimeZone> TimeZone::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TimeZoneT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
638   return CreateTimeZone(_fbb, _o, _rehasher);
639 }
640 
CreateTimeZone(flatbuffers::FlatBufferBuilder & _fbb,const TimeZoneT * _o,const flatbuffers::rehasher_function_t * _rehasher)641 inline flatbuffers::Offset<TimeZone> CreateTimeZone(flatbuffers::FlatBufferBuilder &_fbb, const TimeZoneT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
642   (void)_rehasher;
643   (void)_o;
644   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TimeZoneT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
645   auto _utc_offset_mins = _o->utc_offset_mins;
646   return libtextclassifier3::grammar::datetime::CreateTimeZone(
647       _fbb,
648       _utc_offset_mins);
649 }
650 
UnPack(const flatbuffers::resolver_function_t * _resolver)651 inline RelativeDatetimeComponentT *RelativeDatetimeComponent::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
652   auto _o = std::unique_ptr<RelativeDatetimeComponentT>(new RelativeDatetimeComponentT());
653   UnPackTo(_o.get(), _resolver);
654   return _o.release();
655 }
656 
UnPackTo(RelativeDatetimeComponentT * _o,const flatbuffers::resolver_function_t * _resolver)657 inline void RelativeDatetimeComponent::UnPackTo(RelativeDatetimeComponentT *_o, const flatbuffers::resolver_function_t *_resolver) const {
658   (void)_o;
659   (void)_resolver;
660   { auto _e = component_type(); _o->component_type = _e; }
661   { auto _e = modifier(); _o->modifier = _e; }
662   { auto _e = value(); _o->value = _e; }
663 }
664 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const RelativeDatetimeComponentT * _o,const flatbuffers::rehasher_function_t * _rehasher)665 inline flatbuffers::Offset<RelativeDatetimeComponent> RelativeDatetimeComponent::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDatetimeComponentT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
666   return CreateRelativeDatetimeComponent(_fbb, _o, _rehasher);
667 }
668 
CreateRelativeDatetimeComponent(flatbuffers::FlatBufferBuilder & _fbb,const RelativeDatetimeComponentT * _o,const flatbuffers::rehasher_function_t * _rehasher)669 inline flatbuffers::Offset<RelativeDatetimeComponent> CreateRelativeDatetimeComponent(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDatetimeComponentT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
670   (void)_rehasher;
671   (void)_o;
672   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RelativeDatetimeComponentT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
673   auto _component_type = _o->component_type;
674   auto _modifier = _o->modifier;
675   auto _value = _o->value;
676   return libtextclassifier3::grammar::datetime::CreateRelativeDatetimeComponent(
677       _fbb,
678       _component_type,
679       _modifier,
680       _value);
681 }
682 
AbsoluteDateTimeT(const AbsoluteDateTimeT & o)683 inline AbsoluteDateTimeT::AbsoluteDateTimeT(const AbsoluteDateTimeT &o)
684       : year(o.year),
685         month(o.month),
686         day(o.day),
687         week_day(o.week_day),
688         hour(o.hour),
689         minute(o.minute),
690         second(o.second),
691         partial_second(o.partial_second),
692         meridiem(o.meridiem),
693         time_zone((o.time_zone) ? new libtextclassifier3::grammar::datetime::TimeZoneT(*o.time_zone) : nullptr) {
694 }
695 
696 inline AbsoluteDateTimeT &AbsoluteDateTimeT::operator=(AbsoluteDateTimeT o) FLATBUFFERS_NOEXCEPT {
697   std::swap(year, o.year);
698   std::swap(month, o.month);
699   std::swap(day, o.day);
700   std::swap(week_day, o.week_day);
701   std::swap(hour, o.hour);
702   std::swap(minute, o.minute);
703   std::swap(second, o.second);
704   std::swap(partial_second, o.partial_second);
705   std::swap(meridiem, o.meridiem);
706   std::swap(time_zone, o.time_zone);
707   return *this;
708 }
709 
UnPack(const flatbuffers::resolver_function_t * _resolver)710 inline AbsoluteDateTimeT *AbsoluteDateTime::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
711   auto _o = std::unique_ptr<AbsoluteDateTimeT>(new AbsoluteDateTimeT());
712   UnPackTo(_o.get(), _resolver);
713   return _o.release();
714 }
715 
UnPackTo(AbsoluteDateTimeT * _o,const flatbuffers::resolver_function_t * _resolver)716 inline void AbsoluteDateTime::UnPackTo(AbsoluteDateTimeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
717   (void)_o;
718   (void)_resolver;
719   { auto _e = year(); _o->year = _e; }
720   { auto _e = month(); _o->month = _e; }
721   { auto _e = day(); _o->day = _e; }
722   { auto _e = week_day(); _o->week_day = _e; }
723   { auto _e = hour(); _o->hour = _e; }
724   { auto _e = minute(); _o->minute = _e; }
725   { auto _e = second(); _o->second = _e; }
726   { auto _e = partial_second(); _o->partial_second = _e; }
727   { auto _e = meridiem(); _o->meridiem = _e; }
728   { auto _e = time_zone(); if (_e) _o->time_zone = std::unique_ptr<libtextclassifier3::grammar::datetime::TimeZoneT>(_e->UnPack(_resolver)); }
729 }
730 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const AbsoluteDateTimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)731 inline flatbuffers::Offset<AbsoluteDateTime> AbsoluteDateTime::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AbsoluteDateTimeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
732   return CreateAbsoluteDateTime(_fbb, _o, _rehasher);
733 }
734 
CreateAbsoluteDateTime(flatbuffers::FlatBufferBuilder & _fbb,const AbsoluteDateTimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)735 inline flatbuffers::Offset<AbsoluteDateTime> CreateAbsoluteDateTime(flatbuffers::FlatBufferBuilder &_fbb, const AbsoluteDateTimeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
736   (void)_rehasher;
737   (void)_o;
738   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AbsoluteDateTimeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
739   auto _year = _o->year;
740   auto _month = _o->month;
741   auto _day = _o->day;
742   auto _week_day = _o->week_day;
743   auto _hour = _o->hour;
744   auto _minute = _o->minute;
745   auto _second = _o->second;
746   auto _partial_second = _o->partial_second;
747   auto _meridiem = _o->meridiem;
748   auto _time_zone = _o->time_zone ? CreateTimeZone(_fbb, _o->time_zone.get(), _rehasher) : 0;
749   return libtextclassifier3::grammar::datetime::CreateAbsoluteDateTime(
750       _fbb,
751       _year,
752       _month,
753       _day,
754       _week_day,
755       _hour,
756       _minute,
757       _second,
758       _partial_second,
759       _meridiem,
760       _time_zone);
761 }
762 
RelativeDateTimeT(const RelativeDateTimeT & o)763 inline RelativeDateTimeT::RelativeDateTimeT(const RelativeDateTimeT &o)
764       : base((o.base) ? new libtextclassifier3::grammar::datetime::AbsoluteDateTimeT(*o.base) : nullptr) {
765   relative_datetime_component.reserve(o.relative_datetime_component.size());
766   for (const auto &relative_datetime_component_ : o.relative_datetime_component) { relative_datetime_component.emplace_back((relative_datetime_component_) ? new libtextclassifier3::grammar::datetime::RelativeDatetimeComponentT(*relative_datetime_component_) : nullptr); }
767 }
768 
769 inline RelativeDateTimeT &RelativeDateTimeT::operator=(RelativeDateTimeT o) FLATBUFFERS_NOEXCEPT {
770   std::swap(relative_datetime_component, o.relative_datetime_component);
771   std::swap(base, o.base);
772   return *this;
773 }
774 
UnPack(const flatbuffers::resolver_function_t * _resolver)775 inline RelativeDateTimeT *RelativeDateTime::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
776   auto _o = std::unique_ptr<RelativeDateTimeT>(new RelativeDateTimeT());
777   UnPackTo(_o.get(), _resolver);
778   return _o.release();
779 }
780 
UnPackTo(RelativeDateTimeT * _o,const flatbuffers::resolver_function_t * _resolver)781 inline void RelativeDateTime::UnPackTo(RelativeDateTimeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
782   (void)_o;
783   (void)_resolver;
784   { auto _e = relative_datetime_component(); if (_e) { _o->relative_datetime_component.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->relative_datetime_component[_i] = std::unique_ptr<libtextclassifier3::grammar::datetime::RelativeDatetimeComponentT>(_e->Get(_i)->UnPack(_resolver)); } } }
785   { auto _e = base(); if (_e) _o->base = std::unique_ptr<libtextclassifier3::grammar::datetime::AbsoluteDateTimeT>(_e->UnPack(_resolver)); }
786 }
787 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const RelativeDateTimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)788 inline flatbuffers::Offset<RelativeDateTime> RelativeDateTime::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDateTimeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
789   return CreateRelativeDateTime(_fbb, _o, _rehasher);
790 }
791 
CreateRelativeDateTime(flatbuffers::FlatBufferBuilder & _fbb,const RelativeDateTimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)792 inline flatbuffers::Offset<RelativeDateTime> CreateRelativeDateTime(flatbuffers::FlatBufferBuilder &_fbb, const RelativeDateTimeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
793   (void)_rehasher;
794   (void)_o;
795   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RelativeDateTimeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
796   auto _relative_datetime_component = _o->relative_datetime_component.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::datetime::RelativeDatetimeComponent>> (_o->relative_datetime_component.size(), [](size_t i, _VectorArgs *__va) { return CreateRelativeDatetimeComponent(*__va->__fbb, __va->__o->relative_datetime_component[i].get(), __va->__rehasher); }, &_va ) : 0;
797   auto _base = _o->base ? CreateAbsoluteDateTime(_fbb, _o->base.get(), _rehasher) : 0;
798   return libtextclassifier3::grammar::datetime::CreateRelativeDateTime(
799       _fbb,
800       _relative_datetime_component,
801       _base);
802 }
803 
UngroundedDatetimeT(const UngroundedDatetimeT & o)804 inline UngroundedDatetimeT::UngroundedDatetimeT(const UngroundedDatetimeT &o)
805       : absolute_datetime((o.absolute_datetime) ? new libtextclassifier3::grammar::datetime::AbsoluteDateTimeT(*o.absolute_datetime) : nullptr),
806         relative_datetime((o.relative_datetime) ? new libtextclassifier3::grammar::datetime::RelativeDateTimeT(*o.relative_datetime) : nullptr),
807         annotation_usecases(o.annotation_usecases) {
808 }
809 
810 inline UngroundedDatetimeT &UngroundedDatetimeT::operator=(UngroundedDatetimeT o) FLATBUFFERS_NOEXCEPT {
811   std::swap(absolute_datetime, o.absolute_datetime);
812   std::swap(relative_datetime, o.relative_datetime);
813   std::swap(annotation_usecases, o.annotation_usecases);
814   return *this;
815 }
816 
UnPack(const flatbuffers::resolver_function_t * _resolver)817 inline UngroundedDatetimeT *UngroundedDatetime::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
818   auto _o = std::unique_ptr<UngroundedDatetimeT>(new UngroundedDatetimeT());
819   UnPackTo(_o.get(), _resolver);
820   return _o.release();
821 }
822 
UnPackTo(UngroundedDatetimeT * _o,const flatbuffers::resolver_function_t * _resolver)823 inline void UngroundedDatetime::UnPackTo(UngroundedDatetimeT *_o, const flatbuffers::resolver_function_t *_resolver) const {
824   (void)_o;
825   (void)_resolver;
826   { auto _e = absolute_datetime(); if (_e) _o->absolute_datetime = std::unique_ptr<libtextclassifier3::grammar::datetime::AbsoluteDateTimeT>(_e->UnPack(_resolver)); }
827   { auto _e = relative_datetime(); if (_e) _o->relative_datetime = std::unique_ptr<libtextclassifier3::grammar::datetime::RelativeDateTimeT>(_e->UnPack(_resolver)); }
828   { auto _e = annotation_usecases(); _o->annotation_usecases = _e; }
829 }
830 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const UngroundedDatetimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)831 inline flatbuffers::Offset<UngroundedDatetime> UngroundedDatetime::Pack(flatbuffers::FlatBufferBuilder &_fbb, const UngroundedDatetimeT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
832   return CreateUngroundedDatetime(_fbb, _o, _rehasher);
833 }
834 
CreateUngroundedDatetime(flatbuffers::FlatBufferBuilder & _fbb,const UngroundedDatetimeT * _o,const flatbuffers::rehasher_function_t * _rehasher)835 inline flatbuffers::Offset<UngroundedDatetime> CreateUngroundedDatetime(flatbuffers::FlatBufferBuilder &_fbb, const UngroundedDatetimeT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
836   (void)_rehasher;
837   (void)_o;
838   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const UngroundedDatetimeT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
839   auto _absolute_datetime = _o->absolute_datetime ? CreateAbsoluteDateTime(_fbb, _o->absolute_datetime.get(), _rehasher) : 0;
840   auto _relative_datetime = _o->relative_datetime ? CreateRelativeDateTime(_fbb, _o->relative_datetime.get(), _rehasher) : 0;
841   auto _annotation_usecases = _o->annotation_usecases;
842   return libtextclassifier3::grammar::datetime::CreateUngroundedDatetime(
843       _fbb,
844       _absolute_datetime,
845       _relative_datetime,
846       _annotation_usecases);
847 }
848 
849 }  // namespace datetime
850 }  // namespace grammar
851 }  // namespace libtextclassifier3
852 
853 #endif  // FLATBUFFERS_GENERATED_DATETIME_LIBTEXTCLASSIFIER3_GRAMMAR_DATETIME_H_
854