1 // automatically generated by the FlatBuffers compiler, do not modify
2 
3 
4 #ifndef FLATBUFFERS_GENERATED_RULES_LIBTEXTCLASSIFIER3_GRAMMAR_H_
5 #define FLATBUFFERS_GENERATED_RULES_LIBTEXTCLASSIFIER3_GRAMMAR_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 #include "utils/grammar/semantics/expression_generated.h"
17 #include "utils/i18n/language-tag_generated.h"
18 #include "utils/zlib/buffer_generated.h"
19 
20 namespace libtextclassifier3 {
21 namespace grammar {
22 namespace RulesSet_ {
23 namespace Rules_ {
24 
25 struct TerminalRulesMap;
26 struct TerminalRulesMapBuilder;
27 struct TerminalRulesMapT;
28 
29 struct UnaryRulesEntry;
30 
31 struct BinaryRule;
32 
33 struct BinaryRuleTableBucket;
34 struct BinaryRuleTableBucketBuilder;
35 struct BinaryRuleTableBucketT;
36 
37 }  // namespace Rules_
38 
39 struct Rules;
40 struct RulesBuilder;
41 struct RulesT;
42 
43 struct LhsSet;
44 struct LhsSetBuilder;
45 struct LhsSetT;
46 
47 struct Lhs;
48 
49 namespace Nonterminals_ {
50 
51 struct AnnotationNtEntry;
52 struct AnnotationNtEntryBuilder;
53 struct AnnotationNtEntryT;
54 
55 }  // namespace Nonterminals_
56 
57 struct Nonterminals;
58 struct NonterminalsBuilder;
59 struct NonterminalsT;
60 
61 namespace DebugInformation_ {
62 
63 struct NonterminalNamesEntry;
64 struct NonterminalNamesEntryBuilder;
65 struct NonterminalNamesEntryT;
66 
67 }  // namespace DebugInformation_
68 
69 struct DebugInformation;
70 struct DebugInformationBuilder;
71 struct DebugInformationT;
72 
73 struct RegexAnnotator;
74 struct RegexAnnotatorBuilder;
75 struct RegexAnnotatorT;
76 
77 }  // namespace RulesSet_
78 
79 struct RulesSet;
80 struct RulesSetBuilder;
81 struct RulesSetT;
82 
83 namespace RulesSet_ {
84 namespace Rules_ {
85 
86 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) UnaryRulesEntry FLATBUFFERS_FINAL_CLASS {
87  private:
88   uint32_t key_;
89   uint32_t value_;
90 
91  public:
UnaryRulesEntry()92   UnaryRulesEntry()
93       : key_(0),
94         value_(0) {
95   }
UnaryRulesEntry(uint32_t _key,uint32_t _value)96   UnaryRulesEntry(uint32_t _key, uint32_t _value)
97       : key_(flatbuffers::EndianScalar(_key)),
98         value_(flatbuffers::EndianScalar(_value)) {
99   }
key()100   uint32_t key() const {
101     return flatbuffers::EndianScalar(key_);
102   }
KeyCompareLessThan(const UnaryRulesEntry * o)103   bool KeyCompareLessThan(const UnaryRulesEntry *o) const {
104     return key() < o->key();
105   }
KeyCompareWithValue(uint32_t _key)106   int KeyCompareWithValue(uint32_t _key) const {
107     return static_cast<int>(key() > _key) - static_cast<int>(key() < _key);
108   }
value()109   uint32_t value() const {
110     return flatbuffers::EndianScalar(value_);
111   }
112 };
113 FLATBUFFERS_STRUCT_END(UnaryRulesEntry, 8);
114 
115 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(4) BinaryRule FLATBUFFERS_FINAL_CLASS {
116  private:
117   uint32_t rhs_first_;
118   uint32_t rhs_second_;
119   uint32_t lhs_set_index_;
120 
121  public:
BinaryRule()122   BinaryRule()
123       : rhs_first_(0),
124         rhs_second_(0),
125         lhs_set_index_(0) {
126   }
BinaryRule(uint32_t _rhs_first,uint32_t _rhs_second,uint32_t _lhs_set_index)127   BinaryRule(uint32_t _rhs_first, uint32_t _rhs_second, uint32_t _lhs_set_index)
128       : rhs_first_(flatbuffers::EndianScalar(_rhs_first)),
129         rhs_second_(flatbuffers::EndianScalar(_rhs_second)),
130         lhs_set_index_(flatbuffers::EndianScalar(_lhs_set_index)) {
131   }
rhs_first()132   uint32_t rhs_first() const {
133     return flatbuffers::EndianScalar(rhs_first_);
134   }
rhs_second()135   uint32_t rhs_second() const {
136     return flatbuffers::EndianScalar(rhs_second_);
137   }
lhs_set_index()138   uint32_t lhs_set_index() const {
139     return flatbuffers::EndianScalar(lhs_set_index_);
140   }
141 };
142 FLATBUFFERS_STRUCT_END(BinaryRule, 12);
143 
144 }  // namespace Rules_
145 
146 FLATBUFFERS_MANUALLY_ALIGNED_STRUCT(8) Lhs FLATBUFFERS_FINAL_CLASS {
147  private:
148   uint32_t nonterminal_;
149   uint32_t callback_id_;
150   uint64_t callback_param_;
151   int8_t max_whitespace_gap_;
152   int8_t padding0__;  int16_t padding1__;  int32_t padding2__;
153 
154  public:
Lhs()155   Lhs()
156       : nonterminal_(0),
157         callback_id_(0),
158         callback_param_(0),
159         max_whitespace_gap_(0),
160         padding0__(0),
161         padding1__(0),
162         padding2__(0) {
163     (void)padding0__;
164     (void)padding1__;
165     (void)padding2__;
166   }
Lhs(uint32_t _nonterminal,uint32_t _callback_id,uint64_t _callback_param,int8_t _max_whitespace_gap)167   Lhs(uint32_t _nonterminal, uint32_t _callback_id, uint64_t _callback_param, int8_t _max_whitespace_gap)
168       : nonterminal_(flatbuffers::EndianScalar(_nonterminal)),
169         callback_id_(flatbuffers::EndianScalar(_callback_id)),
170         callback_param_(flatbuffers::EndianScalar(_callback_param)),
171         max_whitespace_gap_(flatbuffers::EndianScalar(_max_whitespace_gap)),
172         padding0__(0),
173         padding1__(0),
174         padding2__(0) {
175     (void)padding0__;
176     (void)padding1__;
177     (void)padding2__;
178   }
nonterminal()179   uint32_t nonterminal() const {
180     return flatbuffers::EndianScalar(nonterminal_);
181   }
callback_id()182   uint32_t callback_id() const {
183     return flatbuffers::EndianScalar(callback_id_);
184   }
callback_param()185   uint64_t callback_param() const {
186     return flatbuffers::EndianScalar(callback_param_);
187   }
max_whitespace_gap()188   int8_t max_whitespace_gap() const {
189     return flatbuffers::EndianScalar(max_whitespace_gap_);
190   }
191 };
192 FLATBUFFERS_STRUCT_END(Lhs, 24);
193 
194 namespace Rules_ {
195 
196 struct TerminalRulesMapT : public flatbuffers::NativeTable {
197   typedef TerminalRulesMap TableType;
198   std::vector<uint32_t> terminal_offsets{};
199   std::vector<uint32_t> lhs_set_index{};
200   int32_t min_terminal_length = 0;
201   int32_t max_terminal_length = 0;
202 };
203 
204 struct TerminalRulesMap FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
205   typedef TerminalRulesMapT NativeTableType;
206   typedef TerminalRulesMapBuilder Builder;
207   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
208     VT_TERMINAL_OFFSETS = 4,
209     VT_LHS_SET_INDEX = 6,
210     VT_MIN_TERMINAL_LENGTH = 8,
211     VT_MAX_TERMINAL_LENGTH = 10
212   };
terminal_offsetsFLATBUFFERS_FINAL_CLASS213   const flatbuffers::Vector<uint32_t> *terminal_offsets() const {
214     return GetPointer<const flatbuffers::Vector<uint32_t> *>(VT_TERMINAL_OFFSETS);
215   }
lhs_set_indexFLATBUFFERS_FINAL_CLASS216   const flatbuffers::Vector<uint32_t> *lhs_set_index() const {
217     return GetPointer<const flatbuffers::Vector<uint32_t> *>(VT_LHS_SET_INDEX);
218   }
min_terminal_lengthFLATBUFFERS_FINAL_CLASS219   int32_t min_terminal_length() const {
220     return GetField<int32_t>(VT_MIN_TERMINAL_LENGTH, 0);
221   }
max_terminal_lengthFLATBUFFERS_FINAL_CLASS222   int32_t max_terminal_length() const {
223     return GetField<int32_t>(VT_MAX_TERMINAL_LENGTH, 0);
224   }
VerifyFLATBUFFERS_FINAL_CLASS225   bool Verify(flatbuffers::Verifier &verifier) const {
226     return VerifyTableStart(verifier) &&
227            VerifyOffset(verifier, VT_TERMINAL_OFFSETS) &&
228            verifier.VerifyVector(terminal_offsets()) &&
229            VerifyOffset(verifier, VT_LHS_SET_INDEX) &&
230            verifier.VerifyVector(lhs_set_index()) &&
231            VerifyField<int32_t>(verifier, VT_MIN_TERMINAL_LENGTH, 4) &&
232            VerifyField<int32_t>(verifier, VT_MAX_TERMINAL_LENGTH, 4) &&
233            verifier.EndTable();
234   }
235   TerminalRulesMapT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
236   void UnPackTo(TerminalRulesMapT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
237   static flatbuffers::Offset<TerminalRulesMap> Pack(flatbuffers::FlatBufferBuilder &_fbb, const TerminalRulesMapT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
238 };
239 
240 struct TerminalRulesMapBuilder {
241   typedef TerminalRulesMap Table;
242   flatbuffers::FlatBufferBuilder &fbb_;
243   flatbuffers::uoffset_t start_;
add_terminal_offsetsTerminalRulesMapBuilder244   void add_terminal_offsets(flatbuffers::Offset<flatbuffers::Vector<uint32_t>> terminal_offsets) {
245     fbb_.AddOffset(TerminalRulesMap::VT_TERMINAL_OFFSETS, terminal_offsets);
246   }
add_lhs_set_indexTerminalRulesMapBuilder247   void add_lhs_set_index(flatbuffers::Offset<flatbuffers::Vector<uint32_t>> lhs_set_index) {
248     fbb_.AddOffset(TerminalRulesMap::VT_LHS_SET_INDEX, lhs_set_index);
249   }
add_min_terminal_lengthTerminalRulesMapBuilder250   void add_min_terminal_length(int32_t min_terminal_length) {
251     fbb_.AddElement<int32_t>(TerminalRulesMap::VT_MIN_TERMINAL_LENGTH, min_terminal_length, 0);
252   }
add_max_terminal_lengthTerminalRulesMapBuilder253   void add_max_terminal_length(int32_t max_terminal_length) {
254     fbb_.AddElement<int32_t>(TerminalRulesMap::VT_MAX_TERMINAL_LENGTH, max_terminal_length, 0);
255   }
TerminalRulesMapBuilderTerminalRulesMapBuilder256   explicit TerminalRulesMapBuilder(flatbuffers::FlatBufferBuilder &_fbb)
257         : fbb_(_fbb) {
258     start_ = fbb_.StartTable();
259   }
FinishTerminalRulesMapBuilder260   flatbuffers::Offset<TerminalRulesMap> Finish() {
261     const auto end = fbb_.EndTable(start_);
262     auto o = flatbuffers::Offset<TerminalRulesMap>(end);
263     return o;
264   }
265 };
266 
267 inline flatbuffers::Offset<TerminalRulesMap> CreateTerminalRulesMap(
268     flatbuffers::FlatBufferBuilder &_fbb,
269     flatbuffers::Offset<flatbuffers::Vector<uint32_t>> terminal_offsets = 0,
270     flatbuffers::Offset<flatbuffers::Vector<uint32_t>> lhs_set_index = 0,
271     int32_t min_terminal_length = 0,
272     int32_t max_terminal_length = 0) {
273   TerminalRulesMapBuilder builder_(_fbb);
274   builder_.add_max_terminal_length(max_terminal_length);
275   builder_.add_min_terminal_length(min_terminal_length);
276   builder_.add_lhs_set_index(lhs_set_index);
277   builder_.add_terminal_offsets(terminal_offsets);
278   return builder_.Finish();
279 }
280 
281 inline flatbuffers::Offset<TerminalRulesMap> CreateTerminalRulesMapDirect(
282     flatbuffers::FlatBufferBuilder &_fbb,
283     const std::vector<uint32_t> *terminal_offsets = nullptr,
284     const std::vector<uint32_t> *lhs_set_index = nullptr,
285     int32_t min_terminal_length = 0,
286     int32_t max_terminal_length = 0) {
287   auto terminal_offsets__ = terminal_offsets ? _fbb.CreateVector<uint32_t>(*terminal_offsets) : 0;
288   auto lhs_set_index__ = lhs_set_index ? _fbb.CreateVector<uint32_t>(*lhs_set_index) : 0;
289   return libtextclassifier3::grammar::RulesSet_::Rules_::CreateTerminalRulesMap(
290       _fbb,
291       terminal_offsets__,
292       lhs_set_index__,
293       min_terminal_length,
294       max_terminal_length);
295 }
296 
297 flatbuffers::Offset<TerminalRulesMap> CreateTerminalRulesMap(flatbuffers::FlatBufferBuilder &_fbb, const TerminalRulesMapT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
298 
299 struct BinaryRuleTableBucketT : public flatbuffers::NativeTable {
300   typedef BinaryRuleTableBucket TableType;
301   std::vector<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule> rules{};
302 };
303 
304 struct BinaryRuleTableBucket FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
305   typedef BinaryRuleTableBucketT NativeTableType;
306   typedef BinaryRuleTableBucketBuilder Builder;
307   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
308     VT_RULES = 4
309   };
rulesFLATBUFFERS_FINAL_CLASS310   const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule *> *rules() const {
311     return GetPointer<const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule *> *>(VT_RULES);
312   }
VerifyFLATBUFFERS_FINAL_CLASS313   bool Verify(flatbuffers::Verifier &verifier) const {
314     return VerifyTableStart(verifier) &&
315            VerifyOffset(verifier, VT_RULES) &&
316            verifier.VerifyVector(rules()) &&
317            verifier.EndTable();
318   }
319   BinaryRuleTableBucketT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
320   void UnPackTo(BinaryRuleTableBucketT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
321   static flatbuffers::Offset<BinaryRuleTableBucket> Pack(flatbuffers::FlatBufferBuilder &_fbb, const BinaryRuleTableBucketT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
322 };
323 
324 struct BinaryRuleTableBucketBuilder {
325   typedef BinaryRuleTableBucket Table;
326   flatbuffers::FlatBufferBuilder &fbb_;
327   flatbuffers::uoffset_t start_;
add_rulesBinaryRuleTableBucketBuilder328   void add_rules(flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule *>> rules) {
329     fbb_.AddOffset(BinaryRuleTableBucket::VT_RULES, rules);
330   }
BinaryRuleTableBucketBuilderBinaryRuleTableBucketBuilder331   explicit BinaryRuleTableBucketBuilder(flatbuffers::FlatBufferBuilder &_fbb)
332         : fbb_(_fbb) {
333     start_ = fbb_.StartTable();
334   }
FinishBinaryRuleTableBucketBuilder335   flatbuffers::Offset<BinaryRuleTableBucket> Finish() {
336     const auto end = fbb_.EndTable(start_);
337     auto o = flatbuffers::Offset<BinaryRuleTableBucket>(end);
338     return o;
339   }
340 };
341 
342 inline flatbuffers::Offset<BinaryRuleTableBucket> CreateBinaryRuleTableBucket(
343     flatbuffers::FlatBufferBuilder &_fbb,
344     flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule *>> rules = 0) {
345   BinaryRuleTableBucketBuilder builder_(_fbb);
346   builder_.add_rules(rules);
347   return builder_.Finish();
348 }
349 
350 inline flatbuffers::Offset<BinaryRuleTableBucket> CreateBinaryRuleTableBucketDirect(
351     flatbuffers::FlatBufferBuilder &_fbb,
352     const std::vector<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule> *rules = nullptr) {
353   auto rules__ = rules ? _fbb.CreateVectorOfStructs<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRule>(*rules) : 0;
354   return libtextclassifier3::grammar::RulesSet_::Rules_::CreateBinaryRuleTableBucket(
355       _fbb,
356       rules__);
357 }
358 
359 flatbuffers::Offset<BinaryRuleTableBucket> CreateBinaryRuleTableBucket(flatbuffers::FlatBufferBuilder &_fbb, const BinaryRuleTableBucketT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
360 
361 }  // namespace Rules_
362 
363 struct RulesT : public flatbuffers::NativeTable {
364   typedef Rules TableType;
365   std::vector<std::unique_ptr<libtextclassifier3::LanguageTagT>> locale{};
366   std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT> terminal_rules{};
367   std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT> lowercase_terminal_rules{};
368   std::vector<libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry> unary_rules{};
369   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucketT>> binary_rules{};
370   RulesT() = default;
371   RulesT(const RulesT &o);
372   RulesT(RulesT&&) FLATBUFFERS_NOEXCEPT = default;
373   RulesT &operator=(RulesT o) FLATBUFFERS_NOEXCEPT;
374 };
375 
376 struct Rules FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
377   typedef RulesT NativeTableType;
378   typedef RulesBuilder Builder;
379   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
380     VT_LOCALE = 4,
381     VT_TERMINAL_RULES = 6,
382     VT_LOWERCASE_TERMINAL_RULES = 8,
383     VT_UNARY_RULES = 10,
384     VT_BINARY_RULES = 12
385   };
localeFLATBUFFERS_FINAL_CLASS386   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::LanguageTag>> *locale() const {
387     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::LanguageTag>> *>(VT_LOCALE);
388   }
terminal_rulesFLATBUFFERS_FINAL_CLASS389   const libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap *terminal_rules() const {
390     return GetPointer<const libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap *>(VT_TERMINAL_RULES);
391   }
lowercase_terminal_rulesFLATBUFFERS_FINAL_CLASS392   const libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap *lowercase_terminal_rules() const {
393     return GetPointer<const libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap *>(VT_LOWERCASE_TERMINAL_RULES);
394   }
unary_rulesFLATBUFFERS_FINAL_CLASS395   const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry *> *unary_rules() const {
396     return GetPointer<const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry *> *>(VT_UNARY_RULES);
397   }
binary_rulesFLATBUFFERS_FINAL_CLASS398   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>> *binary_rules() const {
399     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>> *>(VT_BINARY_RULES);
400   }
VerifyFLATBUFFERS_FINAL_CLASS401   bool Verify(flatbuffers::Verifier &verifier) const {
402     return VerifyTableStart(verifier) &&
403            VerifyOffset(verifier, VT_LOCALE) &&
404            verifier.VerifyVector(locale()) &&
405            verifier.VerifyVectorOfTables(locale()) &&
406            VerifyOffset(verifier, VT_TERMINAL_RULES) &&
407            verifier.VerifyTable(terminal_rules()) &&
408            VerifyOffset(verifier, VT_LOWERCASE_TERMINAL_RULES) &&
409            verifier.VerifyTable(lowercase_terminal_rules()) &&
410            VerifyOffset(verifier, VT_UNARY_RULES) &&
411            verifier.VerifyVector(unary_rules()) &&
412            VerifyOffset(verifier, VT_BINARY_RULES) &&
413            verifier.VerifyVector(binary_rules()) &&
414            verifier.VerifyVectorOfTables(binary_rules()) &&
415            verifier.EndTable();
416   }
417   RulesT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
418   void UnPackTo(RulesT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
419   static flatbuffers::Offset<Rules> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RulesT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
420 };
421 
422 struct RulesBuilder {
423   typedef Rules Table;
424   flatbuffers::FlatBufferBuilder &fbb_;
425   flatbuffers::uoffset_t start_;
add_localeRulesBuilder426   void add_locale(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::LanguageTag>>> locale) {
427     fbb_.AddOffset(Rules::VT_LOCALE, locale);
428   }
add_terminal_rulesRulesBuilder429   void add_terminal_rules(flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> terminal_rules) {
430     fbb_.AddOffset(Rules::VT_TERMINAL_RULES, terminal_rules);
431   }
add_lowercase_terminal_rulesRulesBuilder432   void add_lowercase_terminal_rules(flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> lowercase_terminal_rules) {
433     fbb_.AddOffset(Rules::VT_LOWERCASE_TERMINAL_RULES, lowercase_terminal_rules);
434   }
add_unary_rulesRulesBuilder435   void add_unary_rules(flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry *>> unary_rules) {
436     fbb_.AddOffset(Rules::VT_UNARY_RULES, unary_rules);
437   }
add_binary_rulesRulesBuilder438   void add_binary_rules(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>>> binary_rules) {
439     fbb_.AddOffset(Rules::VT_BINARY_RULES, binary_rules);
440   }
RulesBuilderRulesBuilder441   explicit RulesBuilder(flatbuffers::FlatBufferBuilder &_fbb)
442         : fbb_(_fbb) {
443     start_ = fbb_.StartTable();
444   }
FinishRulesBuilder445   flatbuffers::Offset<Rules> Finish() {
446     const auto end = fbb_.EndTable(start_);
447     auto o = flatbuffers::Offset<Rules>(end);
448     return o;
449   }
450 };
451 
452 inline flatbuffers::Offset<Rules> CreateRules(
453     flatbuffers::FlatBufferBuilder &_fbb,
454     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::LanguageTag>>> locale = 0,
455     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> terminal_rules = 0,
456     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> lowercase_terminal_rules = 0,
457     flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry *>> unary_rules = 0,
458     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>>> binary_rules = 0) {
459   RulesBuilder builder_(_fbb);
460   builder_.add_binary_rules(binary_rules);
461   builder_.add_unary_rules(unary_rules);
462   builder_.add_lowercase_terminal_rules(lowercase_terminal_rules);
463   builder_.add_terminal_rules(terminal_rules);
464   builder_.add_locale(locale);
465   return builder_.Finish();
466 }
467 
468 inline flatbuffers::Offset<Rules> CreateRulesDirect(
469     flatbuffers::FlatBufferBuilder &_fbb,
470     const std::vector<flatbuffers::Offset<libtextclassifier3::LanguageTag>> *locale = nullptr,
471     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> terminal_rules = 0,
472     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMap> lowercase_terminal_rules = 0,
473     std::vector<libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry> *unary_rules = nullptr,
474     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>> *binary_rules = nullptr) {
475   auto locale__ = locale ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::LanguageTag>>(*locale) : 0;
476   auto unary_rules__ = unary_rules ? _fbb.CreateVectorOfSortedStructs<libtextclassifier3::grammar::RulesSet_::Rules_::UnaryRulesEntry>(unary_rules) : 0;
477   auto binary_rules__ = binary_rules ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>>(*binary_rules) : 0;
478   return libtextclassifier3::grammar::RulesSet_::CreateRules(
479       _fbb,
480       locale__,
481       terminal_rules,
482       lowercase_terminal_rules,
483       unary_rules__,
484       binary_rules__);
485 }
486 
487 flatbuffers::Offset<Rules> CreateRules(flatbuffers::FlatBufferBuilder &_fbb, const RulesT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
488 
489 struct LhsSetT : public flatbuffers::NativeTable {
490   typedef LhsSet TableType;
491   std::vector<int32_t> lhs{};
492 };
493 
494 struct LhsSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
495   typedef LhsSetT NativeTableType;
496   typedef LhsSetBuilder Builder;
497   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
498     VT_LHS = 4
499   };
lhsFLATBUFFERS_FINAL_CLASS500   const flatbuffers::Vector<int32_t> *lhs() const {
501     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_LHS);
502   }
VerifyFLATBUFFERS_FINAL_CLASS503   bool Verify(flatbuffers::Verifier &verifier) const {
504     return VerifyTableStart(verifier) &&
505            VerifyOffset(verifier, VT_LHS) &&
506            verifier.VerifyVector(lhs()) &&
507            verifier.EndTable();
508   }
509   LhsSetT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
510   void UnPackTo(LhsSetT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
511   static flatbuffers::Offset<LhsSet> Pack(flatbuffers::FlatBufferBuilder &_fbb, const LhsSetT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
512 };
513 
514 struct LhsSetBuilder {
515   typedef LhsSet Table;
516   flatbuffers::FlatBufferBuilder &fbb_;
517   flatbuffers::uoffset_t start_;
add_lhsLhsSetBuilder518   void add_lhs(flatbuffers::Offset<flatbuffers::Vector<int32_t>> lhs) {
519     fbb_.AddOffset(LhsSet::VT_LHS, lhs);
520   }
LhsSetBuilderLhsSetBuilder521   explicit LhsSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
522         : fbb_(_fbb) {
523     start_ = fbb_.StartTable();
524   }
FinishLhsSetBuilder525   flatbuffers::Offset<LhsSet> Finish() {
526     const auto end = fbb_.EndTable(start_);
527     auto o = flatbuffers::Offset<LhsSet>(end);
528     return o;
529   }
530 };
531 
532 inline flatbuffers::Offset<LhsSet> CreateLhsSet(
533     flatbuffers::FlatBufferBuilder &_fbb,
534     flatbuffers::Offset<flatbuffers::Vector<int32_t>> lhs = 0) {
535   LhsSetBuilder builder_(_fbb);
536   builder_.add_lhs(lhs);
537   return builder_.Finish();
538 }
539 
540 inline flatbuffers::Offset<LhsSet> CreateLhsSetDirect(
541     flatbuffers::FlatBufferBuilder &_fbb,
542     const std::vector<int32_t> *lhs = nullptr) {
543   auto lhs__ = lhs ? _fbb.CreateVector<int32_t>(*lhs) : 0;
544   return libtextclassifier3::grammar::RulesSet_::CreateLhsSet(
545       _fbb,
546       lhs__);
547 }
548 
549 flatbuffers::Offset<LhsSet> CreateLhsSet(flatbuffers::FlatBufferBuilder &_fbb, const LhsSetT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
550 
551 namespace Nonterminals_ {
552 
553 struct AnnotationNtEntryT : public flatbuffers::NativeTable {
554   typedef AnnotationNtEntry TableType;
555   std::string key{};
556   int32_t value = 0;
557 };
558 
559 struct AnnotationNtEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
560   typedef AnnotationNtEntryT NativeTableType;
561   typedef AnnotationNtEntryBuilder Builder;
562   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
563     VT_KEY = 4,
564     VT_VALUE = 6
565   };
keyFLATBUFFERS_FINAL_CLASS566   const flatbuffers::String *key() const {
567     return GetPointer<const flatbuffers::String *>(VT_KEY);
568   }
KeyCompareLessThanFLATBUFFERS_FINAL_CLASS569   bool KeyCompareLessThan(const AnnotationNtEntry *o) const {
570     return *key() < *o->key();
571   }
KeyCompareWithValueFLATBUFFERS_FINAL_CLASS572   int KeyCompareWithValue(const char *_key) const {
573     return strcmp(key()->c_str(), _key);
574   }
valueFLATBUFFERS_FINAL_CLASS575   int32_t value() const {
576     return GetField<int32_t>(VT_VALUE, 0);
577   }
VerifyFLATBUFFERS_FINAL_CLASS578   bool Verify(flatbuffers::Verifier &verifier) const {
579     return VerifyTableStart(verifier) &&
580            VerifyOffsetRequired(verifier, VT_KEY) &&
581            verifier.VerifyString(key()) &&
582            VerifyField<int32_t>(verifier, VT_VALUE, 4) &&
583            verifier.EndTable();
584   }
585   AnnotationNtEntryT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
586   void UnPackTo(AnnotationNtEntryT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
587   static flatbuffers::Offset<AnnotationNtEntry> Pack(flatbuffers::FlatBufferBuilder &_fbb, const AnnotationNtEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
588 };
589 
590 struct AnnotationNtEntryBuilder {
591   typedef AnnotationNtEntry Table;
592   flatbuffers::FlatBufferBuilder &fbb_;
593   flatbuffers::uoffset_t start_;
add_keyAnnotationNtEntryBuilder594   void add_key(flatbuffers::Offset<flatbuffers::String> key) {
595     fbb_.AddOffset(AnnotationNtEntry::VT_KEY, key);
596   }
add_valueAnnotationNtEntryBuilder597   void add_value(int32_t value) {
598     fbb_.AddElement<int32_t>(AnnotationNtEntry::VT_VALUE, value, 0);
599   }
AnnotationNtEntryBuilderAnnotationNtEntryBuilder600   explicit AnnotationNtEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
601         : fbb_(_fbb) {
602     start_ = fbb_.StartTable();
603   }
FinishAnnotationNtEntryBuilder604   flatbuffers::Offset<AnnotationNtEntry> Finish() {
605     const auto end = fbb_.EndTable(start_);
606     auto o = flatbuffers::Offset<AnnotationNtEntry>(end);
607     fbb_.Required(o, AnnotationNtEntry::VT_KEY);
608     return o;
609   }
610 };
611 
612 inline flatbuffers::Offset<AnnotationNtEntry> CreateAnnotationNtEntry(
613     flatbuffers::FlatBufferBuilder &_fbb,
614     flatbuffers::Offset<flatbuffers::String> key = 0,
615     int32_t value = 0) {
616   AnnotationNtEntryBuilder builder_(_fbb);
617   builder_.add_value(value);
618   builder_.add_key(key);
619   return builder_.Finish();
620 }
621 
622 inline flatbuffers::Offset<AnnotationNtEntry> CreateAnnotationNtEntryDirect(
623     flatbuffers::FlatBufferBuilder &_fbb,
624     const char *key = nullptr,
625     int32_t value = 0) {
626   auto key__ = key ? _fbb.CreateSharedString(key) : 0;
627   return libtextclassifier3::grammar::RulesSet_::Nonterminals_::CreateAnnotationNtEntry(
628       _fbb,
629       key__,
630       value);
631 }
632 
633 flatbuffers::Offset<AnnotationNtEntry> CreateAnnotationNtEntry(flatbuffers::FlatBufferBuilder &_fbb, const AnnotationNtEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
634 
635 }  // namespace Nonterminals_
636 
637 struct NonterminalsT : public flatbuffers::NativeTable {
638   typedef Nonterminals TableType;
639   int32_t start_nt = 0;
640   int32_t end_nt = 0;
641   int32_t token_nt = 0;
642   int32_t digits_nt = 0;
643   std::vector<int32_t> n_digits_nt{};
644   int32_t wordbreak_nt = 0;
645   int32_t uppercase_token_nt = 0;
646   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntryT>> annotation_nt{};
647   NonterminalsT() = default;
648   NonterminalsT(const NonterminalsT &o);
649   NonterminalsT(NonterminalsT&&) FLATBUFFERS_NOEXCEPT = default;
650   NonterminalsT &operator=(NonterminalsT o) FLATBUFFERS_NOEXCEPT;
651 };
652 
653 struct Nonterminals FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
654   typedef NonterminalsT NativeTableType;
655   typedef NonterminalsBuilder Builder;
656   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
657     VT_START_NT = 4,
658     VT_END_NT = 6,
659     VT_TOKEN_NT = 8,
660     VT_DIGITS_NT = 10,
661     VT_N_DIGITS_NT = 12,
662     VT_WORDBREAK_NT = 14,
663     VT_UPPERCASE_TOKEN_NT = 16,
664     VT_ANNOTATION_NT = 18
665   };
start_ntFLATBUFFERS_FINAL_CLASS666   int32_t start_nt() const {
667     return GetField<int32_t>(VT_START_NT, 0);
668   }
end_ntFLATBUFFERS_FINAL_CLASS669   int32_t end_nt() const {
670     return GetField<int32_t>(VT_END_NT, 0);
671   }
token_ntFLATBUFFERS_FINAL_CLASS672   int32_t token_nt() const {
673     return GetField<int32_t>(VT_TOKEN_NT, 0);
674   }
digits_ntFLATBUFFERS_FINAL_CLASS675   int32_t digits_nt() const {
676     return GetField<int32_t>(VT_DIGITS_NT, 0);
677   }
n_digits_ntFLATBUFFERS_FINAL_CLASS678   const flatbuffers::Vector<int32_t> *n_digits_nt() const {
679     return GetPointer<const flatbuffers::Vector<int32_t> *>(VT_N_DIGITS_NT);
680   }
wordbreak_ntFLATBUFFERS_FINAL_CLASS681   int32_t wordbreak_nt() const {
682     return GetField<int32_t>(VT_WORDBREAK_NT, 0);
683   }
uppercase_token_ntFLATBUFFERS_FINAL_CLASS684   int32_t uppercase_token_nt() const {
685     return GetField<int32_t>(VT_UPPERCASE_TOKEN_NT, 0);
686   }
annotation_ntFLATBUFFERS_FINAL_CLASS687   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>> *annotation_nt() const {
688     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>> *>(VT_ANNOTATION_NT);
689   }
VerifyFLATBUFFERS_FINAL_CLASS690   bool Verify(flatbuffers::Verifier &verifier) const {
691     return VerifyTableStart(verifier) &&
692            VerifyField<int32_t>(verifier, VT_START_NT, 4) &&
693            VerifyField<int32_t>(verifier, VT_END_NT, 4) &&
694            VerifyField<int32_t>(verifier, VT_TOKEN_NT, 4) &&
695            VerifyField<int32_t>(verifier, VT_DIGITS_NT, 4) &&
696            VerifyOffset(verifier, VT_N_DIGITS_NT) &&
697            verifier.VerifyVector(n_digits_nt()) &&
698            VerifyField<int32_t>(verifier, VT_WORDBREAK_NT, 4) &&
699            VerifyField<int32_t>(verifier, VT_UPPERCASE_TOKEN_NT, 4) &&
700            VerifyOffset(verifier, VT_ANNOTATION_NT) &&
701            verifier.VerifyVector(annotation_nt()) &&
702            verifier.VerifyVectorOfTables(annotation_nt()) &&
703            verifier.EndTable();
704   }
705   NonterminalsT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
706   void UnPackTo(NonterminalsT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
707   static flatbuffers::Offset<Nonterminals> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalsT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
708 };
709 
710 struct NonterminalsBuilder {
711   typedef Nonterminals Table;
712   flatbuffers::FlatBufferBuilder &fbb_;
713   flatbuffers::uoffset_t start_;
add_start_ntNonterminalsBuilder714   void add_start_nt(int32_t start_nt) {
715     fbb_.AddElement<int32_t>(Nonterminals::VT_START_NT, start_nt, 0);
716   }
add_end_ntNonterminalsBuilder717   void add_end_nt(int32_t end_nt) {
718     fbb_.AddElement<int32_t>(Nonterminals::VT_END_NT, end_nt, 0);
719   }
add_token_ntNonterminalsBuilder720   void add_token_nt(int32_t token_nt) {
721     fbb_.AddElement<int32_t>(Nonterminals::VT_TOKEN_NT, token_nt, 0);
722   }
add_digits_ntNonterminalsBuilder723   void add_digits_nt(int32_t digits_nt) {
724     fbb_.AddElement<int32_t>(Nonterminals::VT_DIGITS_NT, digits_nt, 0);
725   }
add_n_digits_ntNonterminalsBuilder726   void add_n_digits_nt(flatbuffers::Offset<flatbuffers::Vector<int32_t>> n_digits_nt) {
727     fbb_.AddOffset(Nonterminals::VT_N_DIGITS_NT, n_digits_nt);
728   }
add_wordbreak_ntNonterminalsBuilder729   void add_wordbreak_nt(int32_t wordbreak_nt) {
730     fbb_.AddElement<int32_t>(Nonterminals::VT_WORDBREAK_NT, wordbreak_nt, 0);
731   }
add_uppercase_token_ntNonterminalsBuilder732   void add_uppercase_token_nt(int32_t uppercase_token_nt) {
733     fbb_.AddElement<int32_t>(Nonterminals::VT_UPPERCASE_TOKEN_NT, uppercase_token_nt, 0);
734   }
add_annotation_ntNonterminalsBuilder735   void add_annotation_nt(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>>> annotation_nt) {
736     fbb_.AddOffset(Nonterminals::VT_ANNOTATION_NT, annotation_nt);
737   }
NonterminalsBuilderNonterminalsBuilder738   explicit NonterminalsBuilder(flatbuffers::FlatBufferBuilder &_fbb)
739         : fbb_(_fbb) {
740     start_ = fbb_.StartTable();
741   }
FinishNonterminalsBuilder742   flatbuffers::Offset<Nonterminals> Finish() {
743     const auto end = fbb_.EndTable(start_);
744     auto o = flatbuffers::Offset<Nonterminals>(end);
745     return o;
746   }
747 };
748 
749 inline flatbuffers::Offset<Nonterminals> CreateNonterminals(
750     flatbuffers::FlatBufferBuilder &_fbb,
751     int32_t start_nt = 0,
752     int32_t end_nt = 0,
753     int32_t token_nt = 0,
754     int32_t digits_nt = 0,
755     flatbuffers::Offset<flatbuffers::Vector<int32_t>> n_digits_nt = 0,
756     int32_t wordbreak_nt = 0,
757     int32_t uppercase_token_nt = 0,
758     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>>> annotation_nt = 0) {
759   NonterminalsBuilder builder_(_fbb);
760   builder_.add_annotation_nt(annotation_nt);
761   builder_.add_uppercase_token_nt(uppercase_token_nt);
762   builder_.add_wordbreak_nt(wordbreak_nt);
763   builder_.add_n_digits_nt(n_digits_nt);
764   builder_.add_digits_nt(digits_nt);
765   builder_.add_token_nt(token_nt);
766   builder_.add_end_nt(end_nt);
767   builder_.add_start_nt(start_nt);
768   return builder_.Finish();
769 }
770 
771 inline flatbuffers::Offset<Nonterminals> CreateNonterminalsDirect(
772     flatbuffers::FlatBufferBuilder &_fbb,
773     int32_t start_nt = 0,
774     int32_t end_nt = 0,
775     int32_t token_nt = 0,
776     int32_t digits_nt = 0,
777     const std::vector<int32_t> *n_digits_nt = nullptr,
778     int32_t wordbreak_nt = 0,
779     int32_t uppercase_token_nt = 0,
780     std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>> *annotation_nt = nullptr) {
781   auto n_digits_nt__ = n_digits_nt ? _fbb.CreateVector<int32_t>(*n_digits_nt) : 0;
782   auto annotation_nt__ = annotation_nt ? _fbb.CreateVectorOfSortedTables<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>(annotation_nt) : 0;
783   return libtextclassifier3::grammar::RulesSet_::CreateNonterminals(
784       _fbb,
785       start_nt,
786       end_nt,
787       token_nt,
788       digits_nt,
789       n_digits_nt__,
790       wordbreak_nt,
791       uppercase_token_nt,
792       annotation_nt__);
793 }
794 
795 flatbuffers::Offset<Nonterminals> CreateNonterminals(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalsT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
796 
797 namespace DebugInformation_ {
798 
799 struct NonterminalNamesEntryT : public flatbuffers::NativeTable {
800   typedef NonterminalNamesEntry TableType;
801   int32_t key = 0;
802   std::string value{};
803 };
804 
805 struct NonterminalNamesEntry FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
806   typedef NonterminalNamesEntryT NativeTableType;
807   typedef NonterminalNamesEntryBuilder Builder;
808   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
809     VT_KEY = 4,
810     VT_VALUE = 6
811   };
keyFLATBUFFERS_FINAL_CLASS812   int32_t key() const {
813     return GetField<int32_t>(VT_KEY, 0);
814   }
KeyCompareLessThanFLATBUFFERS_FINAL_CLASS815   bool KeyCompareLessThan(const NonterminalNamesEntry *o) const {
816     return key() < o->key();
817   }
KeyCompareWithValueFLATBUFFERS_FINAL_CLASS818   int KeyCompareWithValue(int32_t _key) const {
819     return static_cast<int>(key() > _key) - static_cast<int>(key() < _key);
820   }
valueFLATBUFFERS_FINAL_CLASS821   const flatbuffers::String *value() const {
822     return GetPointer<const flatbuffers::String *>(VT_VALUE);
823   }
VerifyFLATBUFFERS_FINAL_CLASS824   bool Verify(flatbuffers::Verifier &verifier) const {
825     return VerifyTableStart(verifier) &&
826            VerifyField<int32_t>(verifier, VT_KEY, 4) &&
827            VerifyOffset(verifier, VT_VALUE) &&
828            verifier.VerifyString(value()) &&
829            verifier.EndTable();
830   }
831   NonterminalNamesEntryT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
832   void UnPackTo(NonterminalNamesEntryT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
833   static flatbuffers::Offset<NonterminalNamesEntry> Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalNamesEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
834 };
835 
836 struct NonterminalNamesEntryBuilder {
837   typedef NonterminalNamesEntry Table;
838   flatbuffers::FlatBufferBuilder &fbb_;
839   flatbuffers::uoffset_t start_;
add_keyNonterminalNamesEntryBuilder840   void add_key(int32_t key) {
841     fbb_.AddElement<int32_t>(NonterminalNamesEntry::VT_KEY, key, 0);
842   }
add_valueNonterminalNamesEntryBuilder843   void add_value(flatbuffers::Offset<flatbuffers::String> value) {
844     fbb_.AddOffset(NonterminalNamesEntry::VT_VALUE, value);
845   }
NonterminalNamesEntryBuilderNonterminalNamesEntryBuilder846   explicit NonterminalNamesEntryBuilder(flatbuffers::FlatBufferBuilder &_fbb)
847         : fbb_(_fbb) {
848     start_ = fbb_.StartTable();
849   }
FinishNonterminalNamesEntryBuilder850   flatbuffers::Offset<NonterminalNamesEntry> Finish() {
851     const auto end = fbb_.EndTable(start_);
852     auto o = flatbuffers::Offset<NonterminalNamesEntry>(end);
853     return o;
854   }
855 };
856 
857 inline flatbuffers::Offset<NonterminalNamesEntry> CreateNonterminalNamesEntry(
858     flatbuffers::FlatBufferBuilder &_fbb,
859     int32_t key = 0,
860     flatbuffers::Offset<flatbuffers::String> value = 0) {
861   NonterminalNamesEntryBuilder builder_(_fbb);
862   builder_.add_value(value);
863   builder_.add_key(key);
864   return builder_.Finish();
865 }
866 
867 inline flatbuffers::Offset<NonterminalNamesEntry> CreateNonterminalNamesEntryDirect(
868     flatbuffers::FlatBufferBuilder &_fbb,
869     int32_t key = 0,
870     const char *value = nullptr) {
871   auto value__ = value ? _fbb.CreateSharedString(value) : 0;
872   return libtextclassifier3::grammar::RulesSet_::DebugInformation_::CreateNonterminalNamesEntry(
873       _fbb,
874       key,
875       value__);
876 }
877 
878 flatbuffers::Offset<NonterminalNamesEntry> CreateNonterminalNamesEntry(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalNamesEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
879 
880 }  // namespace DebugInformation_
881 
882 struct DebugInformationT : public flatbuffers::NativeTable {
883   typedef DebugInformation TableType;
884   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntryT>> nonterminal_names{};
885   DebugInformationT() = default;
886   DebugInformationT(const DebugInformationT &o);
887   DebugInformationT(DebugInformationT&&) FLATBUFFERS_NOEXCEPT = default;
888   DebugInformationT &operator=(DebugInformationT o) FLATBUFFERS_NOEXCEPT;
889 };
890 
891 struct DebugInformation FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
892   typedef DebugInformationT NativeTableType;
893   typedef DebugInformationBuilder Builder;
894   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
895     VT_NONTERMINAL_NAMES = 4
896   };
nonterminal_namesFLATBUFFERS_FINAL_CLASS897   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>> *nonterminal_names() const {
898     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>> *>(VT_NONTERMINAL_NAMES);
899   }
VerifyFLATBUFFERS_FINAL_CLASS900   bool Verify(flatbuffers::Verifier &verifier) const {
901     return VerifyTableStart(verifier) &&
902            VerifyOffset(verifier, VT_NONTERMINAL_NAMES) &&
903            verifier.VerifyVector(nonterminal_names()) &&
904            verifier.VerifyVectorOfTables(nonterminal_names()) &&
905            verifier.EndTable();
906   }
907   DebugInformationT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
908   void UnPackTo(DebugInformationT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
909   static flatbuffers::Offset<DebugInformation> Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugInformationT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
910 };
911 
912 struct DebugInformationBuilder {
913   typedef DebugInformation Table;
914   flatbuffers::FlatBufferBuilder &fbb_;
915   flatbuffers::uoffset_t start_;
add_nonterminal_namesDebugInformationBuilder916   void add_nonterminal_names(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>>> nonterminal_names) {
917     fbb_.AddOffset(DebugInformation::VT_NONTERMINAL_NAMES, nonterminal_names);
918   }
DebugInformationBuilderDebugInformationBuilder919   explicit DebugInformationBuilder(flatbuffers::FlatBufferBuilder &_fbb)
920         : fbb_(_fbb) {
921     start_ = fbb_.StartTable();
922   }
FinishDebugInformationBuilder923   flatbuffers::Offset<DebugInformation> Finish() {
924     const auto end = fbb_.EndTable(start_);
925     auto o = flatbuffers::Offset<DebugInformation>(end);
926     return o;
927   }
928 };
929 
930 inline flatbuffers::Offset<DebugInformation> CreateDebugInformation(
931     flatbuffers::FlatBufferBuilder &_fbb,
932     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>>> nonterminal_names = 0) {
933   DebugInformationBuilder builder_(_fbb);
934   builder_.add_nonterminal_names(nonterminal_names);
935   return builder_.Finish();
936 }
937 
938 inline flatbuffers::Offset<DebugInformation> CreateDebugInformationDirect(
939     flatbuffers::FlatBufferBuilder &_fbb,
940     std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>> *nonterminal_names = nullptr) {
941   auto nonterminal_names__ = nonterminal_names ? _fbb.CreateVectorOfSortedTables<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>(nonterminal_names) : 0;
942   return libtextclassifier3::grammar::RulesSet_::CreateDebugInformation(
943       _fbb,
944       nonterminal_names__);
945 }
946 
947 flatbuffers::Offset<DebugInformation> CreateDebugInformation(flatbuffers::FlatBufferBuilder &_fbb, const DebugInformationT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
948 
949 struct RegexAnnotatorT : public flatbuffers::NativeTable {
950   typedef RegexAnnotator TableType;
951   std::string pattern{};
952   std::unique_ptr<libtextclassifier3::CompressedBufferT> compressed_pattern{};
953   uint32_t nonterminal = 0;
954   RegexAnnotatorT() = default;
955   RegexAnnotatorT(const RegexAnnotatorT &o);
956   RegexAnnotatorT(RegexAnnotatorT&&) FLATBUFFERS_NOEXCEPT = default;
957   RegexAnnotatorT &operator=(RegexAnnotatorT o) FLATBUFFERS_NOEXCEPT;
958 };
959 
960 struct RegexAnnotator FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
961   typedef RegexAnnotatorT NativeTableType;
962   typedef RegexAnnotatorBuilder Builder;
963   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
964     VT_PATTERN = 4,
965     VT_COMPRESSED_PATTERN = 6,
966     VT_NONTERMINAL = 8
967   };
patternFLATBUFFERS_FINAL_CLASS968   const flatbuffers::String *pattern() const {
969     return GetPointer<const flatbuffers::String *>(VT_PATTERN);
970   }
compressed_patternFLATBUFFERS_FINAL_CLASS971   const libtextclassifier3::CompressedBuffer *compressed_pattern() const {
972     return GetPointer<const libtextclassifier3::CompressedBuffer *>(VT_COMPRESSED_PATTERN);
973   }
nonterminalFLATBUFFERS_FINAL_CLASS974   uint32_t nonterminal() const {
975     return GetField<uint32_t>(VT_NONTERMINAL, 0);
976   }
VerifyFLATBUFFERS_FINAL_CLASS977   bool Verify(flatbuffers::Verifier &verifier) const {
978     return VerifyTableStart(verifier) &&
979            VerifyOffset(verifier, VT_PATTERN) &&
980            verifier.VerifyString(pattern()) &&
981            VerifyOffset(verifier, VT_COMPRESSED_PATTERN) &&
982            verifier.VerifyTable(compressed_pattern()) &&
983            VerifyField<uint32_t>(verifier, VT_NONTERMINAL, 4) &&
984            verifier.EndTable();
985   }
986   RegexAnnotatorT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
987   void UnPackTo(RegexAnnotatorT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
988   static flatbuffers::Offset<RegexAnnotator> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegexAnnotatorT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
989 };
990 
991 struct RegexAnnotatorBuilder {
992   typedef RegexAnnotator Table;
993   flatbuffers::FlatBufferBuilder &fbb_;
994   flatbuffers::uoffset_t start_;
add_patternRegexAnnotatorBuilder995   void add_pattern(flatbuffers::Offset<flatbuffers::String> pattern) {
996     fbb_.AddOffset(RegexAnnotator::VT_PATTERN, pattern);
997   }
add_compressed_patternRegexAnnotatorBuilder998   void add_compressed_pattern(flatbuffers::Offset<libtextclassifier3::CompressedBuffer> compressed_pattern) {
999     fbb_.AddOffset(RegexAnnotator::VT_COMPRESSED_PATTERN, compressed_pattern);
1000   }
add_nonterminalRegexAnnotatorBuilder1001   void add_nonterminal(uint32_t nonterminal) {
1002     fbb_.AddElement<uint32_t>(RegexAnnotator::VT_NONTERMINAL, nonterminal, 0);
1003   }
RegexAnnotatorBuilderRegexAnnotatorBuilder1004   explicit RegexAnnotatorBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1005         : fbb_(_fbb) {
1006     start_ = fbb_.StartTable();
1007   }
FinishRegexAnnotatorBuilder1008   flatbuffers::Offset<RegexAnnotator> Finish() {
1009     const auto end = fbb_.EndTable(start_);
1010     auto o = flatbuffers::Offset<RegexAnnotator>(end);
1011     return o;
1012   }
1013 };
1014 
1015 inline flatbuffers::Offset<RegexAnnotator> CreateRegexAnnotator(
1016     flatbuffers::FlatBufferBuilder &_fbb,
1017     flatbuffers::Offset<flatbuffers::String> pattern = 0,
1018     flatbuffers::Offset<libtextclassifier3::CompressedBuffer> compressed_pattern = 0,
1019     uint32_t nonterminal = 0) {
1020   RegexAnnotatorBuilder builder_(_fbb);
1021   builder_.add_nonterminal(nonterminal);
1022   builder_.add_compressed_pattern(compressed_pattern);
1023   builder_.add_pattern(pattern);
1024   return builder_.Finish();
1025 }
1026 
1027 inline flatbuffers::Offset<RegexAnnotator> CreateRegexAnnotatorDirect(
1028     flatbuffers::FlatBufferBuilder &_fbb,
1029     const char *pattern = nullptr,
1030     flatbuffers::Offset<libtextclassifier3::CompressedBuffer> compressed_pattern = 0,
1031     uint32_t nonterminal = 0) {
1032   auto pattern__ = pattern ? _fbb.CreateSharedString(pattern) : 0;
1033   return libtextclassifier3::grammar::RulesSet_::CreateRegexAnnotator(
1034       _fbb,
1035       pattern__,
1036       compressed_pattern,
1037       nonterminal);
1038 }
1039 
1040 flatbuffers::Offset<RegexAnnotator> CreateRegexAnnotator(flatbuffers::FlatBufferBuilder &_fbb, const RegexAnnotatorT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1041 
1042 }  // namespace RulesSet_
1043 
1044 struct RulesSetT : public flatbuffers::NativeTable {
1045   typedef RulesSet TableType;
1046   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::RulesT>> rules{};
1047   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::LhsSetT>> lhs_set{};
1048   std::vector<libtextclassifier3::grammar::RulesSet_::Lhs> lhs{};
1049   std::string terminals{};
1050   std::unique_ptr<libtextclassifier3::grammar::RulesSet_::NonterminalsT> nonterminals{};
1051   std::unique_ptr<libtextclassifier3::grammar::RulesSet_::DebugInformationT> debug_information{};
1052   std::vector<std::unique_ptr<libtextclassifier3::grammar::RulesSet_::RegexAnnotatorT>> regex_annotator{};
1053   bool lazy_regex_compilation = false;
1054   std::vector<std::unique_ptr<libtextclassifier3::grammar::SemanticExpressionT>> semantic_expression{};
1055   std::vector<uint8_t> semantic_values_schema{};
1056   RulesSetT() = default;
1057   RulesSetT(const RulesSetT &o);
1058   RulesSetT(RulesSetT&&) FLATBUFFERS_NOEXCEPT = default;
1059   RulesSetT &operator=(RulesSetT o) FLATBUFFERS_NOEXCEPT;
1060 };
1061 
1062 struct RulesSet FLATBUFFERS_FINAL_CLASS : private flatbuffers::Table {
1063   typedef RulesSetT NativeTableType;
1064   typedef RulesSetBuilder Builder;
1065   enum FlatBuffersVTableOffset FLATBUFFERS_VTABLE_UNDERLYING_TYPE {
1066     VT_RULES = 4,
1067     VT_LHS_SET = 6,
1068     VT_LHS = 8,
1069     VT_TERMINALS = 10,
1070     VT_NONTERMINALS = 12,
1071     VT_DEBUG_INFORMATION = 16,
1072     VT_REGEX_ANNOTATOR = 18,
1073     VT_LAZY_REGEX_COMPILATION = 20,
1074     VT_SEMANTIC_EXPRESSION = 22,
1075     VT_SEMANTIC_VALUES_SCHEMA = 24
1076   };
rulesFLATBUFFERS_FINAL_CLASS1077   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>> *rules() const {
1078     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>> *>(VT_RULES);
1079   }
lhs_setFLATBUFFERS_FINAL_CLASS1080   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>> *lhs_set() const {
1081     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>> *>(VT_LHS_SET);
1082   }
lhsFLATBUFFERS_FINAL_CLASS1083   const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Lhs *> *lhs() const {
1084     return GetPointer<const flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Lhs *> *>(VT_LHS);
1085   }
terminalsFLATBUFFERS_FINAL_CLASS1086   const flatbuffers::String *terminals() const {
1087     return GetPointer<const flatbuffers::String *>(VT_TERMINALS);
1088   }
nonterminalsFLATBUFFERS_FINAL_CLASS1089   const libtextclassifier3::grammar::RulesSet_::Nonterminals *nonterminals() const {
1090     return GetPointer<const libtextclassifier3::grammar::RulesSet_::Nonterminals *>(VT_NONTERMINALS);
1091   }
debug_informationFLATBUFFERS_FINAL_CLASS1092   const libtextclassifier3::grammar::RulesSet_::DebugInformation *debug_information() const {
1093     return GetPointer<const libtextclassifier3::grammar::RulesSet_::DebugInformation *>(VT_DEBUG_INFORMATION);
1094   }
regex_annotatorFLATBUFFERS_FINAL_CLASS1095   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>> *regex_annotator() const {
1096     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>> *>(VT_REGEX_ANNOTATOR);
1097   }
lazy_regex_compilationFLATBUFFERS_FINAL_CLASS1098   bool lazy_regex_compilation() const {
1099     return GetField<uint8_t>(VT_LAZY_REGEX_COMPILATION, 0) != 0;
1100   }
semantic_expressionFLATBUFFERS_FINAL_CLASS1101   const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>> *semantic_expression() const {
1102     return GetPointer<const flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>> *>(VT_SEMANTIC_EXPRESSION);
1103   }
semantic_values_schemaFLATBUFFERS_FINAL_CLASS1104   const flatbuffers::Vector<uint8_t> *semantic_values_schema() const {
1105     return GetPointer<const flatbuffers::Vector<uint8_t> *>(VT_SEMANTIC_VALUES_SCHEMA);
1106   }
VerifyFLATBUFFERS_FINAL_CLASS1107   bool Verify(flatbuffers::Verifier &verifier) const {
1108     return VerifyTableStart(verifier) &&
1109            VerifyOffset(verifier, VT_RULES) &&
1110            verifier.VerifyVector(rules()) &&
1111            verifier.VerifyVectorOfTables(rules()) &&
1112            VerifyOffset(verifier, VT_LHS_SET) &&
1113            verifier.VerifyVector(lhs_set()) &&
1114            verifier.VerifyVectorOfTables(lhs_set()) &&
1115            VerifyOffset(verifier, VT_LHS) &&
1116            verifier.VerifyVector(lhs()) &&
1117            VerifyOffset(verifier, VT_TERMINALS) &&
1118            verifier.VerifyString(terminals()) &&
1119            VerifyOffset(verifier, VT_NONTERMINALS) &&
1120            verifier.VerifyTable(nonterminals()) &&
1121            VerifyOffset(verifier, VT_DEBUG_INFORMATION) &&
1122            verifier.VerifyTable(debug_information()) &&
1123            VerifyOffset(verifier, VT_REGEX_ANNOTATOR) &&
1124            verifier.VerifyVector(regex_annotator()) &&
1125            verifier.VerifyVectorOfTables(regex_annotator()) &&
1126            VerifyField<uint8_t>(verifier, VT_LAZY_REGEX_COMPILATION, 1) &&
1127            VerifyOffset(verifier, VT_SEMANTIC_EXPRESSION) &&
1128            verifier.VerifyVector(semantic_expression()) &&
1129            verifier.VerifyVectorOfTables(semantic_expression()) &&
1130            VerifyOffset(verifier, VT_SEMANTIC_VALUES_SCHEMA) &&
1131            verifier.VerifyVector(semantic_values_schema()) &&
1132            verifier.EndTable();
1133   }
1134   RulesSetT *UnPack(const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1135   void UnPackTo(RulesSetT *_o, const flatbuffers::resolver_function_t *_resolver = nullptr) const;
1136   static flatbuffers::Offset<RulesSet> Pack(flatbuffers::FlatBufferBuilder &_fbb, const RulesSetT* _o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1137 };
1138 
1139 struct RulesSetBuilder {
1140   typedef RulesSet Table;
1141   flatbuffers::FlatBufferBuilder &fbb_;
1142   flatbuffers::uoffset_t start_;
add_rulesRulesSetBuilder1143   void add_rules(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>>> rules) {
1144     fbb_.AddOffset(RulesSet::VT_RULES, rules);
1145   }
add_lhs_setRulesSetBuilder1146   void add_lhs_set(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>>> lhs_set) {
1147     fbb_.AddOffset(RulesSet::VT_LHS_SET, lhs_set);
1148   }
add_lhsRulesSetBuilder1149   void add_lhs(flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Lhs *>> lhs) {
1150     fbb_.AddOffset(RulesSet::VT_LHS, lhs);
1151   }
add_terminalsRulesSetBuilder1152   void add_terminals(flatbuffers::Offset<flatbuffers::String> terminals) {
1153     fbb_.AddOffset(RulesSet::VT_TERMINALS, terminals);
1154   }
add_nonterminalsRulesSetBuilder1155   void add_nonterminals(flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals> nonterminals) {
1156     fbb_.AddOffset(RulesSet::VT_NONTERMINALS, nonterminals);
1157   }
add_debug_informationRulesSetBuilder1158   void add_debug_information(flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation> debug_information) {
1159     fbb_.AddOffset(RulesSet::VT_DEBUG_INFORMATION, debug_information);
1160   }
add_regex_annotatorRulesSetBuilder1161   void add_regex_annotator(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>>> regex_annotator) {
1162     fbb_.AddOffset(RulesSet::VT_REGEX_ANNOTATOR, regex_annotator);
1163   }
add_lazy_regex_compilationRulesSetBuilder1164   void add_lazy_regex_compilation(bool lazy_regex_compilation) {
1165     fbb_.AddElement<uint8_t>(RulesSet::VT_LAZY_REGEX_COMPILATION, static_cast<uint8_t>(lazy_regex_compilation), 0);
1166   }
add_semantic_expressionRulesSetBuilder1167   void add_semantic_expression(flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>>> semantic_expression) {
1168     fbb_.AddOffset(RulesSet::VT_SEMANTIC_EXPRESSION, semantic_expression);
1169   }
add_semantic_values_schemaRulesSetBuilder1170   void add_semantic_values_schema(flatbuffers::Offset<flatbuffers::Vector<uint8_t>> semantic_values_schema) {
1171     fbb_.AddOffset(RulesSet::VT_SEMANTIC_VALUES_SCHEMA, semantic_values_schema);
1172   }
RulesSetBuilderRulesSetBuilder1173   explicit RulesSetBuilder(flatbuffers::FlatBufferBuilder &_fbb)
1174         : fbb_(_fbb) {
1175     start_ = fbb_.StartTable();
1176   }
FinishRulesSetBuilder1177   flatbuffers::Offset<RulesSet> Finish() {
1178     const auto end = fbb_.EndTable(start_);
1179     auto o = flatbuffers::Offset<RulesSet>(end);
1180     return o;
1181   }
1182 };
1183 
1184 inline flatbuffers::Offset<RulesSet> CreateRulesSet(
1185     flatbuffers::FlatBufferBuilder &_fbb,
1186     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>>> rules = 0,
1187     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>>> lhs_set = 0,
1188     flatbuffers::Offset<flatbuffers::Vector<const libtextclassifier3::grammar::RulesSet_::Lhs *>> lhs = 0,
1189     flatbuffers::Offset<flatbuffers::String> terminals = 0,
1190     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals> nonterminals = 0,
1191     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation> debug_information = 0,
1192     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>>> regex_annotator = 0,
1193     bool lazy_regex_compilation = false,
1194     flatbuffers::Offset<flatbuffers::Vector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>>> semantic_expression = 0,
1195     flatbuffers::Offset<flatbuffers::Vector<uint8_t>> semantic_values_schema = 0) {
1196   RulesSetBuilder builder_(_fbb);
1197   builder_.add_semantic_values_schema(semantic_values_schema);
1198   builder_.add_semantic_expression(semantic_expression);
1199   builder_.add_regex_annotator(regex_annotator);
1200   builder_.add_debug_information(debug_information);
1201   builder_.add_nonterminals(nonterminals);
1202   builder_.add_terminals(terminals);
1203   builder_.add_lhs(lhs);
1204   builder_.add_lhs_set(lhs_set);
1205   builder_.add_rules(rules);
1206   builder_.add_lazy_regex_compilation(lazy_regex_compilation);
1207   return builder_.Finish();
1208 }
1209 
1210 inline flatbuffers::Offset<RulesSet> CreateRulesSetDirect(
1211     flatbuffers::FlatBufferBuilder &_fbb,
1212     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>> *rules = nullptr,
1213     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>> *lhs_set = nullptr,
1214     const std::vector<libtextclassifier3::grammar::RulesSet_::Lhs> *lhs = nullptr,
1215     const char *terminals = nullptr,
1216     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals> nonterminals = 0,
1217     flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation> debug_information = 0,
1218     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>> *regex_annotator = nullptr,
1219     bool lazy_regex_compilation = false,
1220     const std::vector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>> *semantic_expression = nullptr,
1221     const std::vector<uint8_t> *semantic_values_schema = nullptr) {
1222   auto rules__ = rules ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>>(*rules) : 0;
1223   auto lhs_set__ = lhs_set ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>>(*lhs_set) : 0;
1224   auto lhs__ = lhs ? _fbb.CreateVectorOfStructs<libtextclassifier3::grammar::RulesSet_::Lhs>(*lhs) : 0;
1225   auto terminals__ = terminals ? _fbb.CreateSharedString(terminals) : 0;
1226   auto regex_annotator__ = regex_annotator ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>>(*regex_annotator) : 0;
1227   auto semantic_expression__ = semantic_expression ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>>(*semantic_expression) : 0;
1228   auto semantic_values_schema__ = semantic_values_schema ? _fbb.CreateVector<uint8_t>(*semantic_values_schema) : 0;
1229   return libtextclassifier3::grammar::CreateRulesSet(
1230       _fbb,
1231       rules__,
1232       lhs_set__,
1233       lhs__,
1234       terminals__,
1235       nonterminals,
1236       debug_information,
1237       regex_annotator__,
1238       lazy_regex_compilation,
1239       semantic_expression__,
1240       semantic_values_schema__);
1241 }
1242 
1243 flatbuffers::Offset<RulesSet> CreateRulesSet(flatbuffers::FlatBufferBuilder &_fbb, const RulesSetT *_o, const flatbuffers::rehasher_function_t *_rehasher = nullptr);
1244 
1245 namespace RulesSet_ {
1246 namespace Rules_ {
1247 
UnPack(const flatbuffers::resolver_function_t * _resolver)1248 inline TerminalRulesMapT *TerminalRulesMap::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1249   auto _o = std::unique_ptr<TerminalRulesMapT>(new TerminalRulesMapT());
1250   UnPackTo(_o.get(), _resolver);
1251   return _o.release();
1252 }
1253 
UnPackTo(TerminalRulesMapT * _o,const flatbuffers::resolver_function_t * _resolver)1254 inline void TerminalRulesMap::UnPackTo(TerminalRulesMapT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1255   (void)_o;
1256   (void)_resolver;
1257   { auto _e = terminal_offsets(); if (_e) { _o->terminal_offsets.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->terminal_offsets[_i] = _e->Get(_i); } } }
1258   { auto _e = lhs_set_index(); if (_e) { _o->lhs_set_index.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->lhs_set_index[_i] = _e->Get(_i); } } }
1259   { auto _e = min_terminal_length(); _o->min_terminal_length = _e; }
1260   { auto _e = max_terminal_length(); _o->max_terminal_length = _e; }
1261 }
1262 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const TerminalRulesMapT * _o,const flatbuffers::rehasher_function_t * _rehasher)1263 inline flatbuffers::Offset<TerminalRulesMap> TerminalRulesMap::Pack(flatbuffers::FlatBufferBuilder &_fbb, const TerminalRulesMapT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1264   return CreateTerminalRulesMap(_fbb, _o, _rehasher);
1265 }
1266 
CreateTerminalRulesMap(flatbuffers::FlatBufferBuilder & _fbb,const TerminalRulesMapT * _o,const flatbuffers::rehasher_function_t * _rehasher)1267 inline flatbuffers::Offset<TerminalRulesMap> CreateTerminalRulesMap(flatbuffers::FlatBufferBuilder &_fbb, const TerminalRulesMapT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1268   (void)_rehasher;
1269   (void)_o;
1270   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const TerminalRulesMapT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1271   auto _terminal_offsets = _o->terminal_offsets.size() ? _fbb.CreateVector(_o->terminal_offsets) : 0;
1272   auto _lhs_set_index = _o->lhs_set_index.size() ? _fbb.CreateVector(_o->lhs_set_index) : 0;
1273   auto _min_terminal_length = _o->min_terminal_length;
1274   auto _max_terminal_length = _o->max_terminal_length;
1275   return libtextclassifier3::grammar::RulesSet_::Rules_::CreateTerminalRulesMap(
1276       _fbb,
1277       _terminal_offsets,
1278       _lhs_set_index,
1279       _min_terminal_length,
1280       _max_terminal_length);
1281 }
1282 
UnPack(const flatbuffers::resolver_function_t * _resolver)1283 inline BinaryRuleTableBucketT *BinaryRuleTableBucket::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1284   auto _o = std::unique_ptr<BinaryRuleTableBucketT>(new BinaryRuleTableBucketT());
1285   UnPackTo(_o.get(), _resolver);
1286   return _o.release();
1287 }
1288 
UnPackTo(BinaryRuleTableBucketT * _o,const flatbuffers::resolver_function_t * _resolver)1289 inline void BinaryRuleTableBucket::UnPackTo(BinaryRuleTableBucketT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1290   (void)_o;
1291   (void)_resolver;
1292   { auto _e = rules(); if (_e) { _o->rules.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rules[_i] = *_e->Get(_i); } } }
1293 }
1294 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const BinaryRuleTableBucketT * _o,const flatbuffers::rehasher_function_t * _rehasher)1295 inline flatbuffers::Offset<BinaryRuleTableBucket> BinaryRuleTableBucket::Pack(flatbuffers::FlatBufferBuilder &_fbb, const BinaryRuleTableBucketT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1296   return CreateBinaryRuleTableBucket(_fbb, _o, _rehasher);
1297 }
1298 
CreateBinaryRuleTableBucket(flatbuffers::FlatBufferBuilder & _fbb,const BinaryRuleTableBucketT * _o,const flatbuffers::rehasher_function_t * _rehasher)1299 inline flatbuffers::Offset<BinaryRuleTableBucket> CreateBinaryRuleTableBucket(flatbuffers::FlatBufferBuilder &_fbb, const BinaryRuleTableBucketT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1300   (void)_rehasher;
1301   (void)_o;
1302   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const BinaryRuleTableBucketT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1303   auto _rules = _o->rules.size() ? _fbb.CreateVectorOfStructs(_o->rules) : 0;
1304   return libtextclassifier3::grammar::RulesSet_::Rules_::CreateBinaryRuleTableBucket(
1305       _fbb,
1306       _rules);
1307 }
1308 
1309 }  // namespace Rules_
1310 
RulesT(const RulesT & o)1311 inline RulesT::RulesT(const RulesT &o)
1312       : terminal_rules((o.terminal_rules) ? new libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT(*o.terminal_rules) : nullptr),
1313         lowercase_terminal_rules((o.lowercase_terminal_rules) ? new libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT(*o.lowercase_terminal_rules) : nullptr),
1314         unary_rules(o.unary_rules) {
1315   locale.reserve(o.locale.size());
1316   for (const auto &locale_ : o.locale) { locale.emplace_back((locale_) ? new libtextclassifier3::LanguageTagT(*locale_) : nullptr); }
1317   binary_rules.reserve(o.binary_rules.size());
1318   for (const auto &binary_rules_ : o.binary_rules) { binary_rules.emplace_back((binary_rules_) ? new libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucketT(*binary_rules_) : nullptr); }
1319 }
1320 
1321 inline RulesT &RulesT::operator=(RulesT o) FLATBUFFERS_NOEXCEPT {
1322   std::swap(locale, o.locale);
1323   std::swap(terminal_rules, o.terminal_rules);
1324   std::swap(lowercase_terminal_rules, o.lowercase_terminal_rules);
1325   std::swap(unary_rules, o.unary_rules);
1326   std::swap(binary_rules, o.binary_rules);
1327   return *this;
1328 }
1329 
UnPack(const flatbuffers::resolver_function_t * _resolver)1330 inline RulesT *Rules::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1331   auto _o = std::unique_ptr<RulesT>(new RulesT());
1332   UnPackTo(_o.get(), _resolver);
1333   return _o.release();
1334 }
1335 
UnPackTo(RulesT * _o,const flatbuffers::resolver_function_t * _resolver)1336 inline void Rules::UnPackTo(RulesT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1337   (void)_o;
1338   (void)_resolver;
1339   { auto _e = locale(); if (_e) { _o->locale.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->locale[_i] = std::unique_ptr<libtextclassifier3::LanguageTagT>(_e->Get(_i)->UnPack(_resolver)); } } }
1340   { auto _e = terminal_rules(); if (_e) _o->terminal_rules = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT>(_e->UnPack(_resolver)); }
1341   { auto _e = lowercase_terminal_rules(); if (_e) _o->lowercase_terminal_rules = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::TerminalRulesMapT>(_e->UnPack(_resolver)); }
1342   { auto _e = unary_rules(); if (_e) { _o->unary_rules.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->unary_rules[_i] = *_e->Get(_i); } } }
1343   { auto _e = binary_rules(); if (_e) { _o->binary_rules.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->binary_rules[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucketT>(_e->Get(_i)->UnPack(_resolver)); } } }
1344 }
1345 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const RulesT * _o,const flatbuffers::rehasher_function_t * _rehasher)1346 inline flatbuffers::Offset<Rules> Rules::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RulesT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1347   return CreateRules(_fbb, _o, _rehasher);
1348 }
1349 
CreateRules(flatbuffers::FlatBufferBuilder & _fbb,const RulesT * _o,const flatbuffers::rehasher_function_t * _rehasher)1350 inline flatbuffers::Offset<Rules> CreateRules(flatbuffers::FlatBufferBuilder &_fbb, const RulesT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1351   (void)_rehasher;
1352   (void)_o;
1353   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RulesT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1354   auto _locale = _o->locale.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::LanguageTag>> (_o->locale.size(), [](size_t i, _VectorArgs *__va) { return CreateLanguageTag(*__va->__fbb, __va->__o->locale[i].get(), __va->__rehasher); }, &_va ) : 0;
1355   auto _terminal_rules = _o->terminal_rules ? CreateTerminalRulesMap(_fbb, _o->terminal_rules.get(), _rehasher) : 0;
1356   auto _lowercase_terminal_rules = _o->lowercase_terminal_rules ? CreateTerminalRulesMap(_fbb, _o->lowercase_terminal_rules.get(), _rehasher) : 0;
1357   auto _unary_rules = _o->unary_rules.size() ? _fbb.CreateVectorOfStructs(_o->unary_rules) : 0;
1358   auto _binary_rules = _o->binary_rules.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules_::BinaryRuleTableBucket>> (_o->binary_rules.size(), [](size_t i, _VectorArgs *__va) { return CreateBinaryRuleTableBucket(*__va->__fbb, __va->__o->binary_rules[i].get(), __va->__rehasher); }, &_va ) : 0;
1359   return libtextclassifier3::grammar::RulesSet_::CreateRules(
1360       _fbb,
1361       _locale,
1362       _terminal_rules,
1363       _lowercase_terminal_rules,
1364       _unary_rules,
1365       _binary_rules);
1366 }
1367 
UnPack(const flatbuffers::resolver_function_t * _resolver)1368 inline LhsSetT *LhsSet::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1369   auto _o = std::unique_ptr<LhsSetT>(new LhsSetT());
1370   UnPackTo(_o.get(), _resolver);
1371   return _o.release();
1372 }
1373 
UnPackTo(LhsSetT * _o,const flatbuffers::resolver_function_t * _resolver)1374 inline void LhsSet::UnPackTo(LhsSetT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1375   (void)_o;
1376   (void)_resolver;
1377   { auto _e = lhs(); if (_e) { _o->lhs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->lhs[_i] = _e->Get(_i); } } }
1378 }
1379 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const LhsSetT * _o,const flatbuffers::rehasher_function_t * _rehasher)1380 inline flatbuffers::Offset<LhsSet> LhsSet::Pack(flatbuffers::FlatBufferBuilder &_fbb, const LhsSetT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1381   return CreateLhsSet(_fbb, _o, _rehasher);
1382 }
1383 
CreateLhsSet(flatbuffers::FlatBufferBuilder & _fbb,const LhsSetT * _o,const flatbuffers::rehasher_function_t * _rehasher)1384 inline flatbuffers::Offset<LhsSet> CreateLhsSet(flatbuffers::FlatBufferBuilder &_fbb, const LhsSetT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1385   (void)_rehasher;
1386   (void)_o;
1387   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const LhsSetT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1388   auto _lhs = _o->lhs.size() ? _fbb.CreateVector(_o->lhs) : 0;
1389   return libtextclassifier3::grammar::RulesSet_::CreateLhsSet(
1390       _fbb,
1391       _lhs);
1392 }
1393 
1394 namespace Nonterminals_ {
1395 
UnPack(const flatbuffers::resolver_function_t * _resolver)1396 inline AnnotationNtEntryT *AnnotationNtEntry::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1397   auto _o = std::unique_ptr<AnnotationNtEntryT>(new AnnotationNtEntryT());
1398   UnPackTo(_o.get(), _resolver);
1399   return _o.release();
1400 }
1401 
UnPackTo(AnnotationNtEntryT * _o,const flatbuffers::resolver_function_t * _resolver)1402 inline void AnnotationNtEntry::UnPackTo(AnnotationNtEntryT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1403   (void)_o;
1404   (void)_resolver;
1405   { auto _e = key(); if (_e) _o->key = _e->str(); }
1406   { auto _e = value(); _o->value = _e; }
1407 }
1408 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const AnnotationNtEntryT * _o,const flatbuffers::rehasher_function_t * _rehasher)1409 inline flatbuffers::Offset<AnnotationNtEntry> AnnotationNtEntry::Pack(flatbuffers::FlatBufferBuilder &_fbb, const AnnotationNtEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1410   return CreateAnnotationNtEntry(_fbb, _o, _rehasher);
1411 }
1412 
CreateAnnotationNtEntry(flatbuffers::FlatBufferBuilder & _fbb,const AnnotationNtEntryT * _o,const flatbuffers::rehasher_function_t * _rehasher)1413 inline flatbuffers::Offset<AnnotationNtEntry> CreateAnnotationNtEntry(flatbuffers::FlatBufferBuilder &_fbb, const AnnotationNtEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1414   (void)_rehasher;
1415   (void)_o;
1416   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const AnnotationNtEntryT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1417   auto _key = _fbb.CreateSharedString(_o->key);
1418   auto _value = _o->value;
1419   return libtextclassifier3::grammar::RulesSet_::Nonterminals_::CreateAnnotationNtEntry(
1420       _fbb,
1421       _key,
1422       _value);
1423 }
1424 
1425 }  // namespace Nonterminals_
1426 
NonterminalsT(const NonterminalsT & o)1427 inline NonterminalsT::NonterminalsT(const NonterminalsT &o)
1428       : start_nt(o.start_nt),
1429         end_nt(o.end_nt),
1430         token_nt(o.token_nt),
1431         digits_nt(o.digits_nt),
1432         n_digits_nt(o.n_digits_nt),
1433         wordbreak_nt(o.wordbreak_nt),
1434         uppercase_token_nt(o.uppercase_token_nt) {
1435   annotation_nt.reserve(o.annotation_nt.size());
1436   for (const auto &annotation_nt_ : o.annotation_nt) { annotation_nt.emplace_back((annotation_nt_) ? new libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntryT(*annotation_nt_) : nullptr); }
1437 }
1438 
1439 inline NonterminalsT &NonterminalsT::operator=(NonterminalsT o) FLATBUFFERS_NOEXCEPT {
1440   std::swap(start_nt, o.start_nt);
1441   std::swap(end_nt, o.end_nt);
1442   std::swap(token_nt, o.token_nt);
1443   std::swap(digits_nt, o.digits_nt);
1444   std::swap(n_digits_nt, o.n_digits_nt);
1445   std::swap(wordbreak_nt, o.wordbreak_nt);
1446   std::swap(uppercase_token_nt, o.uppercase_token_nt);
1447   std::swap(annotation_nt, o.annotation_nt);
1448   return *this;
1449 }
1450 
UnPack(const flatbuffers::resolver_function_t * _resolver)1451 inline NonterminalsT *Nonterminals::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1452   auto _o = std::unique_ptr<NonterminalsT>(new NonterminalsT());
1453   UnPackTo(_o.get(), _resolver);
1454   return _o.release();
1455 }
1456 
UnPackTo(NonterminalsT * _o,const flatbuffers::resolver_function_t * _resolver)1457 inline void Nonterminals::UnPackTo(NonterminalsT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1458   (void)_o;
1459   (void)_resolver;
1460   { auto _e = start_nt(); _o->start_nt = _e; }
1461   { auto _e = end_nt(); _o->end_nt = _e; }
1462   { auto _e = token_nt(); _o->token_nt = _e; }
1463   { auto _e = digits_nt(); _o->digits_nt = _e; }
1464   { auto _e = n_digits_nt(); if (_e) { _o->n_digits_nt.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->n_digits_nt[_i] = _e->Get(_i); } } }
1465   { auto _e = wordbreak_nt(); _o->wordbreak_nt = _e; }
1466   { auto _e = uppercase_token_nt(); _o->uppercase_token_nt = _e; }
1467   { auto _e = annotation_nt(); if (_e) { _o->annotation_nt.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->annotation_nt[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntryT>(_e->Get(_i)->UnPack(_resolver)); } } }
1468 }
1469 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const NonterminalsT * _o,const flatbuffers::rehasher_function_t * _rehasher)1470 inline flatbuffers::Offset<Nonterminals> Nonterminals::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalsT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1471   return CreateNonterminals(_fbb, _o, _rehasher);
1472 }
1473 
CreateNonterminals(flatbuffers::FlatBufferBuilder & _fbb,const NonterminalsT * _o,const flatbuffers::rehasher_function_t * _rehasher)1474 inline flatbuffers::Offset<Nonterminals> CreateNonterminals(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalsT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1475   (void)_rehasher;
1476   (void)_o;
1477   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NonterminalsT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1478   auto _start_nt = _o->start_nt;
1479   auto _end_nt = _o->end_nt;
1480   auto _token_nt = _o->token_nt;
1481   auto _digits_nt = _o->digits_nt;
1482   auto _n_digits_nt = _o->n_digits_nt.size() ? _fbb.CreateVector(_o->n_digits_nt) : 0;
1483   auto _wordbreak_nt = _o->wordbreak_nt;
1484   auto _uppercase_token_nt = _o->uppercase_token_nt;
1485   auto _annotation_nt = _o->annotation_nt.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Nonterminals_::AnnotationNtEntry>> (_o->annotation_nt.size(), [](size_t i, _VectorArgs *__va) { return CreateAnnotationNtEntry(*__va->__fbb, __va->__o->annotation_nt[i].get(), __va->__rehasher); }, &_va ) : 0;
1486   return libtextclassifier3::grammar::RulesSet_::CreateNonterminals(
1487       _fbb,
1488       _start_nt,
1489       _end_nt,
1490       _token_nt,
1491       _digits_nt,
1492       _n_digits_nt,
1493       _wordbreak_nt,
1494       _uppercase_token_nt,
1495       _annotation_nt);
1496 }
1497 
1498 namespace DebugInformation_ {
1499 
UnPack(const flatbuffers::resolver_function_t * _resolver)1500 inline NonterminalNamesEntryT *NonterminalNamesEntry::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1501   auto _o = std::unique_ptr<NonterminalNamesEntryT>(new NonterminalNamesEntryT());
1502   UnPackTo(_o.get(), _resolver);
1503   return _o.release();
1504 }
1505 
UnPackTo(NonterminalNamesEntryT * _o,const flatbuffers::resolver_function_t * _resolver)1506 inline void NonterminalNamesEntry::UnPackTo(NonterminalNamesEntryT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1507   (void)_o;
1508   (void)_resolver;
1509   { auto _e = key(); _o->key = _e; }
1510   { auto _e = value(); if (_e) _o->value = _e->str(); }
1511 }
1512 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const NonterminalNamesEntryT * _o,const flatbuffers::rehasher_function_t * _rehasher)1513 inline flatbuffers::Offset<NonterminalNamesEntry> NonterminalNamesEntry::Pack(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalNamesEntryT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1514   return CreateNonterminalNamesEntry(_fbb, _o, _rehasher);
1515 }
1516 
CreateNonterminalNamesEntry(flatbuffers::FlatBufferBuilder & _fbb,const NonterminalNamesEntryT * _o,const flatbuffers::rehasher_function_t * _rehasher)1517 inline flatbuffers::Offset<NonterminalNamesEntry> CreateNonterminalNamesEntry(flatbuffers::FlatBufferBuilder &_fbb, const NonterminalNamesEntryT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1518   (void)_rehasher;
1519   (void)_o;
1520   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const NonterminalNamesEntryT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1521   auto _key = _o->key;
1522   auto _value = _o->value.empty() ? 0 : _fbb.CreateSharedString(_o->value);
1523   return libtextclassifier3::grammar::RulesSet_::DebugInformation_::CreateNonterminalNamesEntry(
1524       _fbb,
1525       _key,
1526       _value);
1527 }
1528 
1529 }  // namespace DebugInformation_
1530 
DebugInformationT(const DebugInformationT & o)1531 inline DebugInformationT::DebugInformationT(const DebugInformationT &o) {
1532   nonterminal_names.reserve(o.nonterminal_names.size());
1533   for (const auto &nonterminal_names_ : o.nonterminal_names) { nonterminal_names.emplace_back((nonterminal_names_) ? new libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntryT(*nonterminal_names_) : nullptr); }
1534 }
1535 
1536 inline DebugInformationT &DebugInformationT::operator=(DebugInformationT o) FLATBUFFERS_NOEXCEPT {
1537   std::swap(nonterminal_names, o.nonterminal_names);
1538   return *this;
1539 }
1540 
UnPack(const flatbuffers::resolver_function_t * _resolver)1541 inline DebugInformationT *DebugInformation::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1542   auto _o = std::unique_ptr<DebugInformationT>(new DebugInformationT());
1543   UnPackTo(_o.get(), _resolver);
1544   return _o.release();
1545 }
1546 
UnPackTo(DebugInformationT * _o,const flatbuffers::resolver_function_t * _resolver)1547 inline void DebugInformation::UnPackTo(DebugInformationT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1548   (void)_o;
1549   (void)_resolver;
1550   { auto _e = nonterminal_names(); if (_e) { _o->nonterminal_names.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->nonterminal_names[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntryT>(_e->Get(_i)->UnPack(_resolver)); } } }
1551 }
1552 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const DebugInformationT * _o,const flatbuffers::rehasher_function_t * _rehasher)1553 inline flatbuffers::Offset<DebugInformation> DebugInformation::Pack(flatbuffers::FlatBufferBuilder &_fbb, const DebugInformationT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1554   return CreateDebugInformation(_fbb, _o, _rehasher);
1555 }
1556 
CreateDebugInformation(flatbuffers::FlatBufferBuilder & _fbb,const DebugInformationT * _o,const flatbuffers::rehasher_function_t * _rehasher)1557 inline flatbuffers::Offset<DebugInformation> CreateDebugInformation(flatbuffers::FlatBufferBuilder &_fbb, const DebugInformationT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1558   (void)_rehasher;
1559   (void)_o;
1560   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const DebugInformationT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1561   auto _nonterminal_names = _o->nonterminal_names.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::DebugInformation_::NonterminalNamesEntry>> (_o->nonterminal_names.size(), [](size_t i, _VectorArgs *__va) { return CreateNonterminalNamesEntry(*__va->__fbb, __va->__o->nonterminal_names[i].get(), __va->__rehasher); }, &_va ) : 0;
1562   return libtextclassifier3::grammar::RulesSet_::CreateDebugInformation(
1563       _fbb,
1564       _nonterminal_names);
1565 }
1566 
RegexAnnotatorT(const RegexAnnotatorT & o)1567 inline RegexAnnotatorT::RegexAnnotatorT(const RegexAnnotatorT &o)
1568       : pattern(o.pattern),
1569         compressed_pattern((o.compressed_pattern) ? new libtextclassifier3::CompressedBufferT(*o.compressed_pattern) : nullptr),
1570         nonterminal(o.nonterminal) {
1571 }
1572 
1573 inline RegexAnnotatorT &RegexAnnotatorT::operator=(RegexAnnotatorT o) FLATBUFFERS_NOEXCEPT {
1574   std::swap(pattern, o.pattern);
1575   std::swap(compressed_pattern, o.compressed_pattern);
1576   std::swap(nonterminal, o.nonterminal);
1577   return *this;
1578 }
1579 
UnPack(const flatbuffers::resolver_function_t * _resolver)1580 inline RegexAnnotatorT *RegexAnnotator::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1581   auto _o = std::unique_ptr<RegexAnnotatorT>(new RegexAnnotatorT());
1582   UnPackTo(_o.get(), _resolver);
1583   return _o.release();
1584 }
1585 
UnPackTo(RegexAnnotatorT * _o,const flatbuffers::resolver_function_t * _resolver)1586 inline void RegexAnnotator::UnPackTo(RegexAnnotatorT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1587   (void)_o;
1588   (void)_resolver;
1589   { auto _e = pattern(); if (_e) _o->pattern = _e->str(); }
1590   { auto _e = compressed_pattern(); if (_e) _o->compressed_pattern = std::unique_ptr<libtextclassifier3::CompressedBufferT>(_e->UnPack(_resolver)); }
1591   { auto _e = nonterminal(); _o->nonterminal = _e; }
1592 }
1593 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const RegexAnnotatorT * _o,const flatbuffers::rehasher_function_t * _rehasher)1594 inline flatbuffers::Offset<RegexAnnotator> RegexAnnotator::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RegexAnnotatorT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1595   return CreateRegexAnnotator(_fbb, _o, _rehasher);
1596 }
1597 
CreateRegexAnnotator(flatbuffers::FlatBufferBuilder & _fbb,const RegexAnnotatorT * _o,const flatbuffers::rehasher_function_t * _rehasher)1598 inline flatbuffers::Offset<RegexAnnotator> CreateRegexAnnotator(flatbuffers::FlatBufferBuilder &_fbb, const RegexAnnotatorT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1599   (void)_rehasher;
1600   (void)_o;
1601   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RegexAnnotatorT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1602   auto _pattern = _o->pattern.empty() ? 0 : _fbb.CreateSharedString(_o->pattern);
1603   auto _compressed_pattern = _o->compressed_pattern ? CreateCompressedBuffer(_fbb, _o->compressed_pattern.get(), _rehasher) : 0;
1604   auto _nonterminal = _o->nonterminal;
1605   return libtextclassifier3::grammar::RulesSet_::CreateRegexAnnotator(
1606       _fbb,
1607       _pattern,
1608       _compressed_pattern,
1609       _nonterminal);
1610 }
1611 
1612 }  // namespace RulesSet_
1613 
RulesSetT(const RulesSetT & o)1614 inline RulesSetT::RulesSetT(const RulesSetT &o)
1615       : lhs(o.lhs),
1616         terminals(o.terminals),
1617         nonterminals((o.nonterminals) ? new libtextclassifier3::grammar::RulesSet_::NonterminalsT(*o.nonterminals) : nullptr),
1618         debug_information((o.debug_information) ? new libtextclassifier3::grammar::RulesSet_::DebugInformationT(*o.debug_information) : nullptr),
1619         lazy_regex_compilation(o.lazy_regex_compilation),
1620         semantic_values_schema(o.semantic_values_schema) {
1621   rules.reserve(o.rules.size());
1622   for (const auto &rules_ : o.rules) { rules.emplace_back((rules_) ? new libtextclassifier3::grammar::RulesSet_::RulesT(*rules_) : nullptr); }
1623   lhs_set.reserve(o.lhs_set.size());
1624   for (const auto &lhs_set_ : o.lhs_set) { lhs_set.emplace_back((lhs_set_) ? new libtextclassifier3::grammar::RulesSet_::LhsSetT(*lhs_set_) : nullptr); }
1625   regex_annotator.reserve(o.regex_annotator.size());
1626   for (const auto &regex_annotator_ : o.regex_annotator) { regex_annotator.emplace_back((regex_annotator_) ? new libtextclassifier3::grammar::RulesSet_::RegexAnnotatorT(*regex_annotator_) : nullptr); }
1627   semantic_expression.reserve(o.semantic_expression.size());
1628   for (const auto &semantic_expression_ : o.semantic_expression) { semantic_expression.emplace_back((semantic_expression_) ? new libtextclassifier3::grammar::SemanticExpressionT(*semantic_expression_) : nullptr); }
1629 }
1630 
1631 inline RulesSetT &RulesSetT::operator=(RulesSetT o) FLATBUFFERS_NOEXCEPT {
1632   std::swap(rules, o.rules);
1633   std::swap(lhs_set, o.lhs_set);
1634   std::swap(lhs, o.lhs);
1635   std::swap(terminals, o.terminals);
1636   std::swap(nonterminals, o.nonterminals);
1637   std::swap(debug_information, o.debug_information);
1638   std::swap(regex_annotator, o.regex_annotator);
1639   std::swap(lazy_regex_compilation, o.lazy_regex_compilation);
1640   std::swap(semantic_expression, o.semantic_expression);
1641   std::swap(semantic_values_schema, o.semantic_values_schema);
1642   return *this;
1643 }
1644 
UnPack(const flatbuffers::resolver_function_t * _resolver)1645 inline RulesSetT *RulesSet::UnPack(const flatbuffers::resolver_function_t *_resolver) const {
1646   auto _o = std::unique_ptr<RulesSetT>(new RulesSetT());
1647   UnPackTo(_o.get(), _resolver);
1648   return _o.release();
1649 }
1650 
UnPackTo(RulesSetT * _o,const flatbuffers::resolver_function_t * _resolver)1651 inline void RulesSet::UnPackTo(RulesSetT *_o, const flatbuffers::resolver_function_t *_resolver) const {
1652   (void)_o;
1653   (void)_resolver;
1654   { auto _e = rules(); if (_e) { _o->rules.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->rules[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::RulesT>(_e->Get(_i)->UnPack(_resolver)); } } }
1655   { auto _e = lhs_set(); if (_e) { _o->lhs_set.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->lhs_set[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::LhsSetT>(_e->Get(_i)->UnPack(_resolver)); } } }
1656   { auto _e = lhs(); if (_e) { _o->lhs.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->lhs[_i] = *_e->Get(_i); } } }
1657   { auto _e = terminals(); if (_e) _o->terminals = _e->str(); }
1658   { auto _e = nonterminals(); if (_e) _o->nonterminals = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::NonterminalsT>(_e->UnPack(_resolver)); }
1659   { auto _e = debug_information(); if (_e) _o->debug_information = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::DebugInformationT>(_e->UnPack(_resolver)); }
1660   { auto _e = regex_annotator(); if (_e) { _o->regex_annotator.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->regex_annotator[_i] = std::unique_ptr<libtextclassifier3::grammar::RulesSet_::RegexAnnotatorT>(_e->Get(_i)->UnPack(_resolver)); } } }
1661   { auto _e = lazy_regex_compilation(); _o->lazy_regex_compilation = _e; }
1662   { auto _e = semantic_expression(); if (_e) { _o->semantic_expression.resize(_e->size()); for (flatbuffers::uoffset_t _i = 0; _i < _e->size(); _i++) { _o->semantic_expression[_i] = std::unique_ptr<libtextclassifier3::grammar::SemanticExpressionT>(_e->Get(_i)->UnPack(_resolver)); } } }
1663   { auto _e = semantic_values_schema(); if (_e) { _o->semantic_values_schema.resize(_e->size()); std::copy(_e->begin(), _e->end(), _o->semantic_values_schema.begin()); } }
1664 }
1665 
Pack(flatbuffers::FlatBufferBuilder & _fbb,const RulesSetT * _o,const flatbuffers::rehasher_function_t * _rehasher)1666 inline flatbuffers::Offset<RulesSet> RulesSet::Pack(flatbuffers::FlatBufferBuilder &_fbb, const RulesSetT* _o, const flatbuffers::rehasher_function_t *_rehasher) {
1667   return CreateRulesSet(_fbb, _o, _rehasher);
1668 }
1669 
CreateRulesSet(flatbuffers::FlatBufferBuilder & _fbb,const RulesSetT * _o,const flatbuffers::rehasher_function_t * _rehasher)1670 inline flatbuffers::Offset<RulesSet> CreateRulesSet(flatbuffers::FlatBufferBuilder &_fbb, const RulesSetT *_o, const flatbuffers::rehasher_function_t *_rehasher) {
1671   (void)_rehasher;
1672   (void)_o;
1673   struct _VectorArgs { flatbuffers::FlatBufferBuilder *__fbb; const RulesSetT* __o; const flatbuffers::rehasher_function_t *__rehasher; } _va = { &_fbb, _o, _rehasher}; (void)_va;
1674   auto _rules = _o->rules.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::Rules>> (_o->rules.size(), [](size_t i, _VectorArgs *__va) { return CreateRules(*__va->__fbb, __va->__o->rules[i].get(), __va->__rehasher); }, &_va ) : 0;
1675   auto _lhs_set = _o->lhs_set.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::LhsSet>> (_o->lhs_set.size(), [](size_t i, _VectorArgs *__va) { return CreateLhsSet(*__va->__fbb, __va->__o->lhs_set[i].get(), __va->__rehasher); }, &_va ) : 0;
1676   auto _lhs = _o->lhs.size() ? _fbb.CreateVectorOfStructs(_o->lhs) : 0;
1677   auto _terminals = _o->terminals.empty() ? 0 : _fbb.CreateSharedString(_o->terminals);
1678   auto _nonterminals = _o->nonterminals ? CreateNonterminals(_fbb, _o->nonterminals.get(), _rehasher) : 0;
1679   auto _debug_information = _o->debug_information ? CreateDebugInformation(_fbb, _o->debug_information.get(), _rehasher) : 0;
1680   auto _regex_annotator = _o->regex_annotator.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::RulesSet_::RegexAnnotator>> (_o->regex_annotator.size(), [](size_t i, _VectorArgs *__va) { return CreateRegexAnnotator(*__va->__fbb, __va->__o->regex_annotator[i].get(), __va->__rehasher); }, &_va ) : 0;
1681   auto _lazy_regex_compilation = _o->lazy_regex_compilation;
1682   auto _semantic_expression = _o->semantic_expression.size() ? _fbb.CreateVector<flatbuffers::Offset<libtextclassifier3::grammar::SemanticExpression>> (_o->semantic_expression.size(), [](size_t i, _VectorArgs *__va) { return CreateSemanticExpression(*__va->__fbb, __va->__o->semantic_expression[i].get(), __va->__rehasher); }, &_va ) : 0;
1683   auto _semantic_values_schema = _o->semantic_values_schema.size() ? _fbb.CreateVector(_o->semantic_values_schema) : 0;
1684   return libtextclassifier3::grammar::CreateRulesSet(
1685       _fbb,
1686       _rules,
1687       _lhs_set,
1688       _lhs,
1689       _terminals,
1690       _nonterminals,
1691       _debug_information,
1692       _regex_annotator,
1693       _lazy_regex_compilation,
1694       _semantic_expression,
1695       _semantic_values_schema);
1696 }
1697 
1698 }  // namespace grammar
1699 }  // namespace libtextclassifier3
1700 
1701 #endif  // FLATBUFFERS_GENERATED_RULES_LIBTEXTCLASSIFIER3_GRAMMAR_H_
1702