1 /**
2  * Autogenerated by Thrift for src/module.thrift
3  *
4  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5  *  @generated @nocommit
6  */
7 #pragma once
8 
9 #include "thrift/compiler/test/fixtures/mcpp2-compare/gen-cpp2/module_types.h"
10 
11 #include <thrift/lib/cpp2/gen/module_types_tcc.h>
12 
13 namespace some { namespace valid { namespace ns {
14 
15 }}} // some::valid::ns
16 namespace std {
17 
18 } // std
19 
20 namespace some { namespace valid { namespace ns {
21 
22 }}} // some::valid::ns
23 namespace std {
24 
25 } // std
26 
27 namespace some { namespace valid { namespace ns {
28 
29 }}} // some::valid::ns
30 namespace std {
31 
32 } // std
33 
34 namespace some { namespace valid { namespace ns {
35 
36 }}} // some::valid::ns
37 namespace std {
38 
39 } // std
40 
41 
42 namespace apache {
43 namespace thrift {
44 namespace detail {
45 
46 template <>
47 struct TccStructTraits<::some::valid::ns::Empty> {
48   static void translateFieldName(
49       folly::StringPiece _fname,
50       int16_t& fid,
51       apache::thrift::protocol::TType& _ftype) noexcept;
52 };
53 template <>
54 struct TccStructTraits<::some::valid::ns::ASimpleStruct> {
55   static void translateFieldName(
56       folly::StringPiece _fname,
57       int16_t& fid,
58       apache::thrift::protocol::TType& _ftype) noexcept;
59 };
60 template <>
61 struct TccStructTraits<::some::valid::ns::ASimpleStructNoexcept> {
62   static void translateFieldName(
63       folly::StringPiece _fname,
64       int16_t& fid,
65       apache::thrift::protocol::TType& _ftype) noexcept;
66 };
67 template <>
68 struct TccStructTraits<::some::valid::ns::MyStruct> {
69   static void translateFieldName(
70       folly::StringPiece _fname,
71       int16_t& fid,
72       apache::thrift::protocol::TType& _ftype) noexcept;
73 };
74 template <>
75 struct TccStructTraits<::some::valid::ns::SimpleUnion> {
76   static void translateFieldName(
77       folly::StringPiece _fname,
78       int16_t& fid,
79       apache::thrift::protocol::TType& _ftype) noexcept;
80 };
81 template <>
82 struct TccStructTraits<::some::valid::ns::ComplexUnion> {
83   static void translateFieldName(
84       folly::StringPiece _fname,
85       int16_t& fid,
86       apache::thrift::protocol::TType& _ftype) noexcept;
87 };
88 template <>
89 struct TccStructTraits<::some::valid::ns::AnException> {
90   static void translateFieldName(
91       folly::StringPiece _fname,
92       int16_t& fid,
93       apache::thrift::protocol::TType& _ftype) noexcept;
94 };
95 template <>
96 struct TccStructTraits<::some::valid::ns::AnotherException> {
97   static void translateFieldName(
98       folly::StringPiece _fname,
99       int16_t& fid,
100       apache::thrift::protocol::TType& _ftype) noexcept;
101 };
102 template <>
103 struct TccStructTraits<::some::valid::ns::containerStruct> {
104   static void translateFieldName(
105       folly::StringPiece _fname,
106       int16_t& fid,
107       apache::thrift::protocol::TType& _ftype) noexcept;
108 };
109 template <>
110 struct TccStructTraits<::some::valid::ns::MyIncludedStruct> {
111   static void translateFieldName(
112       folly::StringPiece _fname,
113       int16_t& fid,
114       apache::thrift::protocol::TType& _ftype) noexcept;
115 };
116 template <>
117 struct TccStructTraits<::some::valid::ns::AnnotatedStruct> {
118   static void translateFieldName(
119       folly::StringPiece _fname,
120       int16_t& fid,
121       apache::thrift::protocol::TType& _ftype) noexcept;
122 };
123 template <>
124 struct TccStructTraits<::some::valid::ns::ComplexContainerStruct> {
125   static void translateFieldName(
126       folly::StringPiece _fname,
127       int16_t& fid,
128       apache::thrift::protocol::TType& _ftype) noexcept;
129 };
130 template <>
131 struct TccStructTraits<::some::valid::ns::FloatStruct> {
132   static void translateFieldName(
133       folly::StringPiece _fname,
134       int16_t& fid,
135       apache::thrift::protocol::TType& _ftype) noexcept;
136 };
137 template <>
138 struct TccStructTraits<::some::valid::ns::FloatUnion> {
139   static void translateFieldName(
140       folly::StringPiece _fname,
141       int16_t& fid,
142       apache::thrift::protocol::TType& _ftype) noexcept;
143 };
144 template <>
145 struct TccStructTraits<::some::valid::ns::AllRequiredNoExceptMoveCtrStruct> {
146   static void translateFieldName(
147       folly::StringPiece _fname,
148       int16_t& fid,
149       apache::thrift::protocol::TType& _ftype) noexcept;
150 };
151 
152 } // namespace detail
153 } // namespace thrift
154 } // namespace apache
155 
156 namespace some { namespace valid { namespace ns {
157 
158 template <class Protocol_>
readNoXfer(Protocol_ * iprot)159 void Empty::readNoXfer(Protocol_* iprot) {
160   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
161 
162   _readState.readStructBegin(iprot);
163 
164   using apache::thrift::TProtocolException;
165 
166 
167   if (UNLIKELY(!_readState.advanceToNextField(
168           iprot,
169           0,
170           0,
171           apache::thrift::protocol::T_STOP))) {
172     goto _loop;
173   }
174 
175 _end:
176   _readState.readStructEnd(iprot);
177 
178   return;
179 
180 _loop:
181   _readState.afterAdvanceFailure(iprot);
182   if (_readState.atStop()) {
183     goto _end;
184   }
185   if (iprot->kUsesFieldNames()) {
186     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<Empty>>();
187   }
188 
189   switch (_readState.fieldId) {
190     default:
191     {
192       _readState.skip(iprot);
193       _readState.readFieldEnd(iprot);
194       _readState.readFieldBeginNoInline(iprot);
195       goto _loop;
196     }
197   }
198 }
199 
200 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const201 uint32_t Empty::serializedSize(Protocol_ const* prot_) const {
202   uint32_t xfer = 0;
203   xfer += prot_->serializedStructSize("Empty");
204   xfer += prot_->serializedSizeStop();
205   return xfer;
206 }
207 
208 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const209 uint32_t Empty::serializedSizeZC(Protocol_ const* prot_) const {
210   uint32_t xfer = 0;
211   xfer += prot_->serializedStructSize("Empty");
212   xfer += prot_->serializedSizeStop();
213   return xfer;
214 }
215 
216 template <class Protocol_>
write(Protocol_ * prot_) const217 uint32_t Empty::write(Protocol_* prot_) const {
218   uint32_t xfer = 0;
219   xfer += prot_->writeStructBegin("Empty");
220   xfer += prot_->writeFieldStop();
221   xfer += prot_->writeStructEnd();
222   return xfer;
223 }
224 
225 extern template void Empty::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
226 extern template uint32_t Empty::write<>(apache::thrift::BinaryProtocolWriter*) const;
227 extern template uint32_t Empty::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
228 extern template uint32_t Empty::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
229 extern template void Empty::readNoXfer<>(apache::thrift::CompactProtocolReader*);
230 extern template uint32_t Empty::write<>(apache::thrift::CompactProtocolWriter*) const;
231 extern template uint32_t Empty::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
232 extern template uint32_t Empty::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
233 extern template void Empty::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
234 extern template uint32_t Empty::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
235 extern template uint32_t Empty::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
236 extern template uint32_t Empty::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
237 
238 }}} // some::valid::ns
239 namespace some { namespace valid { namespace ns {
240 
241 template <class Protocol_>
readNoXfer(Protocol_ * iprot)242 void ASimpleStruct::readNoXfer(Protocol_* iprot) {
243   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
244 
245   _readState.readStructBegin(iprot);
246 
247   using apache::thrift::TProtocolException;
248 
249 
250   if (UNLIKELY(!_readState.advanceToNextField(
251           iprot,
252           0,
253           1,
254           apache::thrift::protocol::T_I64))) {
255     goto _loop;
256   }
257 _readField_boolField:
258   {
259     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_boolField, _readState);
260 
261   }
262  this->__isset.set(0, true);
263 
264   if (UNLIKELY(!_readState.advanceToNextField(
265           iprot,
266           1,
267           0,
268           apache::thrift::protocol::T_STOP))) {
269     goto _loop;
270   }
271 
272 _end:
273   _readState.readStructEnd(iprot);
274 
275   return;
276 
277 _loop:
278   _readState.afterAdvanceFailure(iprot);
279   if (_readState.atStop()) {
280     goto _end;
281   }
282   if (iprot->kUsesFieldNames()) {
283     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<ASimpleStruct>>();
284   }
285 
286   switch (_readState.fieldId) {
287     case 1:
288     {
289       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
290         goto _readField_boolField;
291       } else {
292         goto _skip;
293       }
294     }
295     default:
296     {
297 _skip:
298       _readState.skip(iprot);
299       _readState.readFieldEnd(iprot);
300       _readState.readFieldBeginNoInline(iprot);
301       goto _loop;
302     }
303   }
304 }
305 
306 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const307 uint32_t ASimpleStruct::serializedSize(Protocol_ const* prot_) const {
308   uint32_t xfer = 0;
309   xfer += prot_->serializedStructSize("ASimpleStruct");
310   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
311     xfer += prot_->serializedFieldSize("boolField", apache::thrift::protocol::T_I64, 1);
312     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_boolField);
313   }
314   xfer += prot_->serializedSizeStop();
315   return xfer;
316 }
317 
318 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const319 uint32_t ASimpleStruct::serializedSizeZC(Protocol_ const* prot_) const {
320   uint32_t xfer = 0;
321   xfer += prot_->serializedStructSize("ASimpleStruct");
322   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
323     xfer += prot_->serializedFieldSize("boolField", apache::thrift::protocol::T_I64, 1);
324     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_boolField);
325   }
326   xfer += prot_->serializedSizeStop();
327   return xfer;
328 }
329 
330 template <class Protocol_>
write(Protocol_ * prot_) const331 uint32_t ASimpleStruct::write(Protocol_* prot_) const {
332   uint32_t xfer = 0;
333   xfer += prot_->writeStructBegin("ASimpleStruct");
334   bool previousFieldHasValue = true;
335   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
336     constexpr int16_t kPrevFieldId = 0;
337     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "boolField", previousFieldHasValue);
338     previousFieldHasValue = true;
339     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_boolField);
340     xfer += prot_->writeFieldEnd();
341   } else {
342     previousFieldHasValue = false;
343   }
344   xfer += prot_->writeFieldStop();
345   xfer += prot_->writeStructEnd();
346   return xfer;
347 }
348 
349 extern template void ASimpleStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
350 extern template uint32_t ASimpleStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
351 extern template uint32_t ASimpleStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
352 extern template uint32_t ASimpleStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
353 extern template void ASimpleStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
354 extern template uint32_t ASimpleStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
355 extern template uint32_t ASimpleStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
356 extern template uint32_t ASimpleStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
357 extern template void ASimpleStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
358 extern template uint32_t ASimpleStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
359 extern template uint32_t ASimpleStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
360 extern template uint32_t ASimpleStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
361 
362 }}} // some::valid::ns
363 namespace some { namespace valid { namespace ns {
364 
365 template <class Protocol_>
readNoXfer(Protocol_ * iprot)366 void ASimpleStructNoexcept::readNoXfer(Protocol_* iprot) {
367   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
368 
369   _readState.readStructBegin(iprot);
370 
371   using apache::thrift::TProtocolException;
372 
373 
374   if (UNLIKELY(!_readState.advanceToNextField(
375           iprot,
376           0,
377           1,
378           apache::thrift::protocol::T_I64))) {
379     goto _loop;
380   }
381 _readField_boolField:
382   {
383     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_boolField, _readState);
384 
385   }
386  this->__isset.set(0, true);
387 
388   if (UNLIKELY(!_readState.advanceToNextField(
389           iprot,
390           1,
391           0,
392           apache::thrift::protocol::T_STOP))) {
393     goto _loop;
394   }
395 
396 _end:
397   _readState.readStructEnd(iprot);
398 
399   return;
400 
401 _loop:
402   _readState.afterAdvanceFailure(iprot);
403   if (_readState.atStop()) {
404     goto _end;
405   }
406   if (iprot->kUsesFieldNames()) {
407     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<ASimpleStructNoexcept>>();
408   }
409 
410   switch (_readState.fieldId) {
411     case 1:
412     {
413       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
414         goto _readField_boolField;
415       } else {
416         goto _skip;
417       }
418     }
419     default:
420     {
421 _skip:
422       _readState.skip(iprot);
423       _readState.readFieldEnd(iprot);
424       _readState.readFieldBeginNoInline(iprot);
425       goto _loop;
426     }
427   }
428 }
429 
430 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const431 uint32_t ASimpleStructNoexcept::serializedSize(Protocol_ const* prot_) const {
432   uint32_t xfer = 0;
433   xfer += prot_->serializedStructSize("ASimpleStructNoexcept");
434   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
435     xfer += prot_->serializedFieldSize("boolField", apache::thrift::protocol::T_I64, 1);
436     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_boolField);
437   }
438   xfer += prot_->serializedSizeStop();
439   return xfer;
440 }
441 
442 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const443 uint32_t ASimpleStructNoexcept::serializedSizeZC(Protocol_ const* prot_) const {
444   uint32_t xfer = 0;
445   xfer += prot_->serializedStructSize("ASimpleStructNoexcept");
446   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
447     xfer += prot_->serializedFieldSize("boolField", apache::thrift::protocol::T_I64, 1);
448     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_boolField);
449   }
450   xfer += prot_->serializedSizeStop();
451   return xfer;
452 }
453 
454 template <class Protocol_>
write(Protocol_ * prot_) const455 uint32_t ASimpleStructNoexcept::write(Protocol_* prot_) const {
456   uint32_t xfer = 0;
457   xfer += prot_->writeStructBegin("ASimpleStructNoexcept");
458   bool previousFieldHasValue = true;
459   if (this->__fbthrift_field_boolField != ::std::int64_t()) {
460     constexpr int16_t kPrevFieldId = 0;
461     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "boolField", previousFieldHasValue);
462     previousFieldHasValue = true;
463     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_boolField);
464     xfer += prot_->writeFieldEnd();
465   } else {
466     previousFieldHasValue = false;
467   }
468   xfer += prot_->writeFieldStop();
469   xfer += prot_->writeStructEnd();
470   return xfer;
471 }
472 
473 extern template void ASimpleStructNoexcept::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
474 extern template uint32_t ASimpleStructNoexcept::write<>(apache::thrift::BinaryProtocolWriter*) const;
475 extern template uint32_t ASimpleStructNoexcept::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
476 extern template uint32_t ASimpleStructNoexcept::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
477 extern template void ASimpleStructNoexcept::readNoXfer<>(apache::thrift::CompactProtocolReader*);
478 extern template uint32_t ASimpleStructNoexcept::write<>(apache::thrift::CompactProtocolWriter*) const;
479 extern template uint32_t ASimpleStructNoexcept::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
480 extern template uint32_t ASimpleStructNoexcept::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
481 extern template void ASimpleStructNoexcept::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
482 extern template uint32_t ASimpleStructNoexcept::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
483 extern template uint32_t ASimpleStructNoexcept::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
484 extern template uint32_t ASimpleStructNoexcept::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
485 
486 }}} // some::valid::ns
487 namespace some { namespace valid { namespace ns {
488 
489 template <class Protocol_>
readNoXfer(Protocol_ * iprot)490 void MyStruct::readNoXfer(Protocol_* iprot) {
491   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
492 
493   _readState.readStructBegin(iprot);
494 
495   using apache::thrift::TProtocolException;
496 
497 
498   if (UNLIKELY(!_readState.advanceToNextField(
499           iprot,
500           0,
501           1,
502           apache::thrift::protocol::T_BOOL))) {
503     goto _loop;
504   }
505 _readField_MyBoolField:
506   {
507     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->__fbthrift_field_MyBoolField, _readState);
508 
509   }
510  this->__isset.set(0, true);
511 
512   if (UNLIKELY(!_readState.advanceToNextField(
513           iprot,
514           1,
515           2,
516           apache::thrift::protocol::T_I64))) {
517     goto _loop;
518   }
519 _readField_MyIntField:
520   {
521     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_MyIntField, _readState);
522 
523   }
524  this->__isset.set(1, true);
525 
526   if (UNLIKELY(!_readState.advanceToNextField(
527           iprot,
528           2,
529           3,
530           apache::thrift::protocol::T_STRING))) {
531     goto _loop;
532   }
533 _readField_MyStringField:
534   {
535     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_MyStringField, _readState);
536 
537   }
538  this->__isset.set(2, true);
539 
540   if (UNLIKELY(!_readState.advanceToNextField(
541           iprot,
542           3,
543           4,
544           apache::thrift::protocol::T_STRING))) {
545     goto _loop;
546   }
547 _readField_MyStringField2:
548   {
549     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_MyStringField2, _readState);
550 
551   }
552  this->__isset.set(3, true);
553 
554   if (UNLIKELY(!_readState.advanceToNextField(
555           iprot,
556           4,
557           5,
558           apache::thrift::protocol::T_STRING))) {
559     goto _loop;
560   }
561 _readField_MyBinaryField:
562   {
563     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_MyBinaryField, _readState);
564 
565   }
566  this->__isset.set(4, true);
567 
568   if (UNLIKELY(!_readState.advanceToNextField(
569           iprot,
570           5,
571           6,
572           apache::thrift::protocol::T_STRING))) {
573     goto _loop;
574   }
575 _readField_MyBinaryField2:
576   {
577     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_MyBinaryField2, _readState);
578 
579   }
580  this->__isset.set(5, true);
581 
582   if (UNLIKELY(!_readState.advanceToNextField(
583           iprot,
584           6,
585           7,
586           apache::thrift::protocol::T_STRING))) {
587     goto _loop;
588   }
589 _readField_MyBinaryField3:
590   {
591     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->MyBinaryField3, _readState);
592 
593   }
594 
595   if (UNLIKELY(!_readState.advanceToNextField(
596           iprot,
597           7,
598           8,
599           apache::thrift::protocol::T_LIST))) {
600     goto _loop;
601   }
602 _readField_MyBinaryListField4:
603   {
604     _readState.beforeSubobject(iprot);
605     this->__fbthrift_field_MyBinaryListField4 = ::std::vector<::std::string>();
606     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::readWithContext(*iprot, this->__fbthrift_field_MyBinaryListField4, _readState);
607     _readState.afterSubobject(iprot);
608 
609   }
610  this->__isset.set(6, true);
611 
612   if (UNLIKELY(!_readState.advanceToNextField(
613           iprot,
614           8,
615           9,
616           apache::thrift::protocol::T_MAP))) {
617     goto _loop;
618   }
619 _readField_MyMapEnumAndInt:
620   {
621     _readState.beforeSubobject(iprot);
622     this->__fbthrift_field_MyMapEnumAndInt = ::std::map<::some::valid::ns::MyEnumA, ::std::string>();
623     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, ::std::map<::some::valid::ns::MyEnumA, ::std::string>>::readWithContext(*iprot, this->__fbthrift_field_MyMapEnumAndInt, _readState);
624     _readState.afterSubobject(iprot);
625 
626   }
627  this->__isset.set(7, true);
628 
629   if (UNLIKELY(!_readState.advanceToNextField(
630           iprot,
631           9,
632           10,
633           apache::thrift::protocol::T_STRING))) {
634     goto _loop;
635   }
636 _readField_MyCustomField:
637   {
638     ::folly::IOBuf tvalue;
639     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::readWithContext(*iprot, tvalue, _readState);
640     this->__fbthrift_field_MyCustomField = ::apache::thrift::adapt_detail::fromThriftField<CustomProtocolAdapter, 10>(::std::move(tvalue), *this);
641 
642   }
643  this->__isset.set(8, true);
644 
645   if (UNLIKELY(!_readState.advanceToNextField(
646           iprot,
647           10,
648           11,
649           apache::thrift::protocol::T_STRING))) {
650     goto _loop;
651   }
652 _readField_MyOptCustomField:
653   {
654     ::folly::IOBuf tvalue;
655     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::readWithContext(*iprot, tvalue, _readState);
656     this->__fbthrift_field_MyOptCustomField = ::apache::thrift::adapt_detail::fromThriftField<CustomProtocolAdapter, 11>(::std::move(tvalue), *this);
657 
658   }
659  this->__isset.set(9, true);
660 
661   if (UNLIKELY(!_readState.advanceToNextField(
662           iprot,
663           11,
664           0,
665           apache::thrift::protocol::T_STOP))) {
666     goto _loop;
667   }
668 
669 _end:
670   _readState.readStructEnd(iprot);
671 
672   return;
673 
674 _loop:
675   _readState.afterAdvanceFailure(iprot);
676   if (_readState.atStop()) {
677     goto _end;
678   }
679   if (iprot->kUsesFieldNames()) {
680     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<MyStruct>>();
681   }
682 
683   switch (_readState.fieldId) {
684     case 1:
685     {
686       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
687         goto _readField_MyBoolField;
688       } else {
689         goto _skip;
690       }
691     }
692     case 2:
693     {
694       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
695         goto _readField_MyIntField;
696       } else {
697         goto _skip;
698       }
699     }
700     case 3:
701     {
702       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
703         goto _readField_MyStringField;
704       } else {
705         goto _skip;
706       }
707     }
708     case 4:
709     {
710       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
711         goto _readField_MyStringField2;
712       } else {
713         goto _skip;
714       }
715     }
716     case 5:
717     {
718       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
719         goto _readField_MyBinaryField;
720       } else {
721         goto _skip;
722       }
723     }
724     case 6:
725     {
726       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
727         goto _readField_MyBinaryField2;
728       } else {
729         goto _skip;
730       }
731     }
732     case 7:
733     {
734       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
735         goto _readField_MyBinaryField3;
736       } else {
737         goto _skip;
738       }
739     }
740     case 8:
741     {
742       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
743         goto _readField_MyBinaryListField4;
744       } else {
745         goto _skip;
746       }
747     }
748     case 9:
749     {
750       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
751         goto _readField_MyMapEnumAndInt;
752       } else {
753         goto _skip;
754       }
755     }
756     case 10:
757     {
758       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
759         goto _readField_MyCustomField;
760       } else {
761         goto _skip;
762       }
763     }
764     case 11:
765     {
766       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
767         goto _readField_MyOptCustomField;
768       } else {
769         goto _skip;
770       }
771     }
772     default:
773     {
774 _skip:
775       _readState.skip(iprot);
776       _readState.readFieldEnd(iprot);
777       _readState.readFieldBeginNoInline(iprot);
778       goto _loop;
779     }
780   }
781 }
782 
783 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const784 uint32_t MyStruct::serializedSize(Protocol_ const* prot_) const {
785   uint32_t xfer = 0;
786   xfer += prot_->serializedStructSize("MyStruct");
787   if (this->__fbthrift_field_MyBoolField != bool()) {
788     xfer += prot_->serializedFieldSize("MyBoolField", apache::thrift::protocol::T_BOOL, 1);
789     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBoolField);
790   }
791   if (this->__fbthrift_field_MyIntField != static_cast<::std::int64_t>(12)) {
792     xfer += prot_->serializedFieldSize("MyIntField", apache::thrift::protocol::T_I64, 2);
793     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_MyIntField);
794   }
795   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField)) {
796     xfer += prot_->serializedFieldSize("MyStringField", apache::thrift::protocol::T_STRING, 3);
797     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyStringField);
798   }
799   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField2)) {
800     xfer += prot_->serializedFieldSize("MyStringField2", apache::thrift::protocol::T_STRING, 4);
801     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyStringField2);
802   }
803   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyBinaryField)) {
804     xfer += prot_->serializedFieldSize("MyBinaryField", apache::thrift::protocol::T_STRING, 5);
805     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBinaryField);
806   }
807   if (this->__isset.get(5)) {
808     xfer += prot_->serializedFieldSize("MyBinaryField2", apache::thrift::protocol::T_STRING, 6);
809     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBinaryField2);
810   }
811   {
812     xfer += prot_->serializedFieldSize("MyBinaryField3", apache::thrift::protocol::T_STRING, 7);
813     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->MyBinaryField3);
814   }
815   if (!this->__fbthrift_field_MyBinaryListField4.empty()) {
816     xfer += prot_->serializedFieldSize("MyBinaryListField4", apache::thrift::protocol::T_LIST, 8);
817     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBinaryListField4);
818   }
819   if (!this->__fbthrift_field_MyMapEnumAndInt.empty()) {
820     xfer += prot_->serializedFieldSize("MyMapEnumAndInt", apache::thrift::protocol::T_MAP, 9);
821     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, ::std::map<::some::valid::ns::MyEnumA, ::std::string>>::serializedSize<false>(*prot_, this->__fbthrift_field_MyMapEnumAndInt);
822   }
823   if (!(this->__fbthrift_field_MyCustomField == ::some::valid::ns::CustomProtocolType())) {
824     xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 10);
825     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<false>(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyCustomField));
826   }
827   if (this->__isset.get(9)) {
828     xfer += prot_->serializedFieldSize("MyOptCustomField", apache::thrift::protocol::T_STRING, 11);
829     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<false>(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyOptCustomField));
830   }
831   xfer += prot_->serializedSizeStop();
832   return xfer;
833 }
834 
835 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const836 uint32_t MyStruct::serializedSizeZC(Protocol_ const* prot_) const {
837   uint32_t xfer = 0;
838   xfer += prot_->serializedStructSize("MyStruct");
839   if (this->__fbthrift_field_MyBoolField != bool()) {
840     xfer += prot_->serializedFieldSize("MyBoolField", apache::thrift::protocol::T_BOOL, 1);
841     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBoolField);
842   }
843   if (this->__fbthrift_field_MyIntField != static_cast<::std::int64_t>(12)) {
844     xfer += prot_->serializedFieldSize("MyIntField", apache::thrift::protocol::T_I64, 2);
845     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_MyIntField);
846   }
847   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField)) {
848     xfer += prot_->serializedFieldSize("MyStringField", apache::thrift::protocol::T_STRING, 3);
849     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyStringField);
850   }
851   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField2)) {
852     xfer += prot_->serializedFieldSize("MyStringField2", apache::thrift::protocol::T_STRING, 4);
853     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_MyStringField2);
854   }
855   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyBinaryField)) {
856     xfer += prot_->serializedFieldSize("MyBinaryField", apache::thrift::protocol::T_STRING, 5);
857     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_MyBinaryField);
858   }
859   if (this->__isset.get(5)) {
860     xfer += prot_->serializedFieldSize("MyBinaryField2", apache::thrift::protocol::T_STRING, 6);
861     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_MyBinaryField2);
862   }
863   {
864     xfer += prot_->serializedFieldSize("MyBinaryField3", apache::thrift::protocol::T_STRING, 7);
865     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->MyBinaryField3);
866   }
867   if (!this->__fbthrift_field_MyBinaryListField4.empty()) {
868     xfer += prot_->serializedFieldSize("MyBinaryListField4", apache::thrift::protocol::T_LIST, 8);
869     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, this->__fbthrift_field_MyBinaryListField4);
870   }
871   if (!this->__fbthrift_field_MyMapEnumAndInt.empty()) {
872     xfer += prot_->serializedFieldSize("MyMapEnumAndInt", apache::thrift::protocol::T_MAP, 9);
873     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, ::std::map<::some::valid::ns::MyEnumA, ::std::string>>::serializedSize<false>(*prot_, this->__fbthrift_field_MyMapEnumAndInt);
874   }
875   if (!(this->__fbthrift_field_MyCustomField == ::some::valid::ns::CustomProtocolType())) {
876     xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 10);
877     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<true>(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyCustomField));
878   }
879   if (this->__isset.get(9)) {
880     xfer += prot_->serializedFieldSize("MyOptCustomField", apache::thrift::protocol::T_STRING, 11);
881     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<true>(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyOptCustomField));
882   }
883   xfer += prot_->serializedSizeStop();
884   return xfer;
885 }
886 
887 template <class Protocol_>
write(Protocol_ * prot_) const888 uint32_t MyStruct::write(Protocol_* prot_) const {
889   uint32_t xfer = 0;
890   xfer += prot_->writeStructBegin("MyStruct");
891   bool previousFieldHasValue = true;
892   if (this->__fbthrift_field_MyBoolField != bool()) {
893     constexpr int16_t kPrevFieldId = 0;
894     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 1, kPrevFieldId>(*prot_, "MyBoolField", previousFieldHasValue);
895     previousFieldHasValue = true;
896     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->__fbthrift_field_MyBoolField);
897     xfer += prot_->writeFieldEnd();
898   } else {
899     previousFieldHasValue = false;
900   }
901   if (this->__fbthrift_field_MyIntField != static_cast<::std::int64_t>(12)) {
902     constexpr int16_t kPrevFieldId = 1;
903     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 2, kPrevFieldId>(*prot_, "MyIntField", previousFieldHasValue);
904     previousFieldHasValue = true;
905     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_MyIntField);
906     xfer += prot_->writeFieldEnd();
907   } else {
908     previousFieldHasValue = false;
909   }
910   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField)) {
911     constexpr int16_t kPrevFieldId = 2;
912     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 3, kPrevFieldId>(*prot_, "MyStringField", previousFieldHasValue);
913     previousFieldHasValue = true;
914     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_MyStringField);
915     xfer += prot_->writeFieldEnd();
916   } else {
917     previousFieldHasValue = false;
918   }
919   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyStringField2)) {
920     constexpr int16_t kPrevFieldId = 3;
921     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 4, kPrevFieldId>(*prot_, "MyStringField2", previousFieldHasValue);
922     previousFieldHasValue = true;
923     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_MyStringField2);
924     xfer += prot_->writeFieldEnd();
925   } else {
926     previousFieldHasValue = false;
927   }
928   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_MyBinaryField)) {
929     constexpr int16_t kPrevFieldId = 4;
930     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 5, kPrevFieldId>(*prot_, "MyBinaryField", previousFieldHasValue);
931     previousFieldHasValue = true;
932     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_MyBinaryField);
933     xfer += prot_->writeFieldEnd();
934   } else {
935     previousFieldHasValue = false;
936   }
937   if (this->__isset.get(5)) {
938     constexpr int16_t kPrevFieldId = 5;
939     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 6, kPrevFieldId>(*prot_, "MyBinaryField2", previousFieldHasValue);
940     previousFieldHasValue = true;
941     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_MyBinaryField2);
942     xfer += prot_->writeFieldEnd();
943   } else {
944     previousFieldHasValue = false;
945   }
946   {
947     constexpr int16_t kPrevFieldId = 6;
948     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 7, kPrevFieldId>(*prot_, "MyBinaryField3", previousFieldHasValue);
949     previousFieldHasValue = true;
950     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->MyBinaryField3);
951     xfer += prot_->writeFieldEnd();
952   }
953   if (!this->__fbthrift_field_MyBinaryListField4.empty()) {
954     constexpr int16_t kPrevFieldId = 7;
955     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 8, kPrevFieldId>(*prot_, "MyBinaryListField4", previousFieldHasValue);
956     previousFieldHasValue = true;
957     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::write(*prot_, this->__fbthrift_field_MyBinaryListField4);
958     xfer += prot_->writeFieldEnd();
959   } else {
960     previousFieldHasValue = false;
961   }
962   if (!this->__fbthrift_field_MyMapEnumAndInt.empty()) {
963     constexpr int16_t kPrevFieldId = 8;
964     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 9, kPrevFieldId>(*prot_, "MyMapEnumAndInt", previousFieldHasValue);
965     previousFieldHasValue = true;
966     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::enumeration, ::apache::thrift::type_class::string>, ::std::map<::some::valid::ns::MyEnumA, ::std::string>>::write(*prot_, this->__fbthrift_field_MyMapEnumAndInt);
967     xfer += prot_->writeFieldEnd();
968   } else {
969     previousFieldHasValue = false;
970   }
971   if (!(this->__fbthrift_field_MyCustomField == ::some::valid::ns::CustomProtocolType())) {
972     constexpr int16_t kPrevFieldId = 9;
973     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 10, kPrevFieldId>(*prot_, "MyCustomField", previousFieldHasValue);
974     previousFieldHasValue = true;
975     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::write(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyCustomField));
976     xfer += prot_->writeFieldEnd();
977   } else {
978     previousFieldHasValue = false;
979   }
980   if (this->__isset.get(9)) {
981     constexpr int16_t kPrevFieldId = 10;
982     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 11, kPrevFieldId>(*prot_, "MyOptCustomField", previousFieldHasValue);
983     previousFieldHasValue = true;
984     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::write(*prot_, CustomProtocolAdapter::toThrift(this->__fbthrift_field_MyOptCustomField));
985     xfer += prot_->writeFieldEnd();
986   } else {
987     previousFieldHasValue = false;
988   }
989   xfer += prot_->writeFieldStop();
990   xfer += prot_->writeStructEnd();
991   return xfer;
992 }
993 
994 extern template void MyStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
995 extern template uint32_t MyStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
996 extern template uint32_t MyStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
997 extern template uint32_t MyStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
998 extern template void MyStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
999 extern template uint32_t MyStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
1000 extern template uint32_t MyStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
1001 extern template uint32_t MyStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
1002 extern template void MyStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
1003 extern template uint32_t MyStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
1004 extern template uint32_t MyStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
1005 extern template uint32_t MyStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
1006 
1007 }}} // some::valid::ns
1008 namespace some { namespace valid { namespace ns {
1009 
1010 template <class Protocol_>
readNoXfer(Protocol_ * iprot)1011 void SimpleUnion::readNoXfer(Protocol_* iprot) {
1012   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
1013   _readState.fieldId = 0;
1014 
1015   _readState.readStructBegin(iprot);
1016 
1017   _readState.readFieldBegin(iprot);
1018   if (_readState.atStop()) {
1019     apache::thrift::clear(*this);
1020   } else {
1021     if (iprot->kUsesFieldNames()) {
1022       _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<SimpleUnion>>();
1023     }
1024     switch (_readState.fieldId) {
1025       case 7:
1026       {
1027         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64)) {
1028           this->set_intValue();
1029           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, value_.intValue, _readState);
1030 
1031         } else {
1032           _readState.skip(iprot);
1033         }
1034         break;
1035       }
1036       case 2:
1037       {
1038         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1039           this->set_stringValue();
1040           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, value_.stringValue, _readState);
1041 
1042         } else {
1043           _readState.skip(iprot);
1044         }
1045         break;
1046       }
1047       default:
1048       {
1049         _readState.skip(iprot);
1050         break;
1051       }
1052     }
1053     _readState.readFieldEnd(iprot);
1054     _readState.readFieldBegin(iprot);
1055     if (UNLIKELY(!_readState.atStop())) {
1056       using apache::thrift::protocol::TProtocolException;
1057       TProtocolException::throwUnionMissingStop();
1058     }
1059   }
1060   _readState.readStructEnd(iprot);
1061 }
1062 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const1063 uint32_t SimpleUnion::serializedSize(Protocol_ const* prot_) const {
1064   uint32_t xfer = 0;
1065   xfer += prot_->serializedStructSize("SimpleUnion");
1066   switch(this->getType()) {
1067     case SimpleUnion::Type::intValue:
1068     {
1069       xfer += prot_->serializedFieldSize("intValue", apache::thrift::protocol::T_I64, 7);
1070       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.intValue);
1071       break;
1072     }
1073     case SimpleUnion::Type::stringValue:
1074     {
1075       xfer += prot_->serializedFieldSize("stringValue", apache::thrift::protocol::T_STRING, 2);
1076       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.stringValue);
1077       break;
1078     }
1079     case SimpleUnion::Type::__EMPTY__:;
1080   }
1081   xfer += prot_->serializedSizeStop();
1082   return xfer;
1083 }
1084 
1085 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const1086 uint32_t SimpleUnion::serializedSizeZC(Protocol_ const* prot_) const {
1087   uint32_t xfer = 0;
1088   xfer += prot_->serializedStructSize("SimpleUnion");
1089   switch(this->getType()) {
1090     case SimpleUnion::Type::intValue:
1091     {
1092       xfer += prot_->serializedFieldSize("intValue", apache::thrift::protocol::T_I64, 7);
1093       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.intValue);
1094       break;
1095     }
1096     case SimpleUnion::Type::stringValue:
1097     {
1098       xfer += prot_->serializedFieldSize("stringValue", apache::thrift::protocol::T_STRING, 2);
1099       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.stringValue);
1100       break;
1101     }
1102     case SimpleUnion::Type::__EMPTY__:;
1103   }
1104   xfer += prot_->serializedSizeStop();
1105   return xfer;
1106 }
1107 
1108 template <class Protocol_>
write(Protocol_ * prot_) const1109 uint32_t SimpleUnion::write(Protocol_* prot_) const {
1110   uint32_t xfer = 0;
1111   xfer += prot_->writeStructBegin("SimpleUnion");
1112   switch(this->getType()) {
1113     case SimpleUnion::Type::intValue:
1114     {
1115       constexpr int16_t kPrevFieldId = 0;
1116       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 7, kPrevFieldId>(*prot_, "intValue", false);
1117       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, value_.intValue);
1118       xfer += prot_->writeFieldEnd();
1119       break;
1120     }
1121     case SimpleUnion::Type::stringValue:
1122     {
1123       constexpr int16_t kPrevFieldId = 7;
1124       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 2, kPrevFieldId>(*prot_, "stringValue", false);
1125       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, value_.stringValue);
1126       xfer += prot_->writeFieldEnd();
1127       break;
1128     }
1129     case SimpleUnion::Type::__EMPTY__:;
1130   }
1131   xfer += prot_->writeFieldStop();
1132   xfer += prot_->writeStructEnd();
1133   return xfer;
1134 }
1135 
1136 extern template void SimpleUnion::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
1137 extern template uint32_t SimpleUnion::write<>(apache::thrift::BinaryProtocolWriter*) const;
1138 extern template uint32_t SimpleUnion::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
1139 extern template uint32_t SimpleUnion::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
1140 extern template void SimpleUnion::readNoXfer<>(apache::thrift::CompactProtocolReader*);
1141 extern template uint32_t SimpleUnion::write<>(apache::thrift::CompactProtocolWriter*) const;
1142 extern template uint32_t SimpleUnion::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
1143 extern template uint32_t SimpleUnion::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
1144 extern template void SimpleUnion::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
1145 extern template uint32_t SimpleUnion::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
1146 extern template uint32_t SimpleUnion::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
1147 extern template uint32_t SimpleUnion::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
1148 
1149 }}} // some::valid::ns
1150 namespace some { namespace valid { namespace ns {
1151 
1152 template <class Protocol_>
readNoXfer(Protocol_ * iprot)1153 void ComplexUnion::readNoXfer(Protocol_* iprot) {
1154   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
1155   _readState.fieldId = 0;
1156 
1157   _readState.readStructBegin(iprot);
1158 
1159   _readState.readFieldBegin(iprot);
1160   if (_readState.atStop()) {
1161     apache::thrift::clear(*this);
1162   } else {
1163     if (iprot->kUsesFieldNames()) {
1164       _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<ComplexUnion>>();
1165     }
1166     switch (_readState.fieldId) {
1167       case 1:
1168       {
1169         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64)) {
1170           this->set_intValue();
1171           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, value_.intValue, _readState);
1172 
1173         } else {
1174           _readState.skip(iprot);
1175         }
1176         break;
1177       }
1178       case 201:
1179       {
1180         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64)) {
1181           this->set_opt_intValue();
1182           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, value_.opt_intValue, _readState);
1183 
1184         } else {
1185           _readState.skip(iprot);
1186         }
1187         break;
1188       }
1189       case 3:
1190       {
1191         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1192           this->set_stringValue();
1193           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, value_.stringValue, _readState);
1194 
1195         } else {
1196           _readState.skip(iprot);
1197         }
1198         break;
1199       }
1200       case 203:
1201       {
1202         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1203           this->set_opt_stringValue();
1204           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, value_.opt_stringValue, _readState);
1205 
1206         } else {
1207           _readState.skip(iprot);
1208         }
1209         break;
1210       }
1211       case 4:
1212       {
1213         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I16)) {
1214           this->set_intValue2();
1215           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::readWithContext(*iprot, value_.intValue2, _readState);
1216 
1217         } else {
1218           _readState.skip(iprot);
1219         }
1220         break;
1221       }
1222       case 6:
1223       {
1224         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32)) {
1225           this->set_intValue3();
1226           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, value_.intValue3, _readState);
1227 
1228         } else {
1229           _readState.skip(iprot);
1230         }
1231         break;
1232       }
1233       case 7:
1234       {
1235         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE)) {
1236           this->set_doubelValue();
1237           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, value_.doubelValue, _readState);
1238 
1239         } else {
1240           _readState.skip(iprot);
1241         }
1242         break;
1243       }
1244       case 8:
1245       {
1246         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL)) {
1247           this->set_boolValue();
1248           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, value_.boolValue, _readState);
1249 
1250         } else {
1251           _readState.skip(iprot);
1252         }
1253         break;
1254       }
1255       case 9:
1256       {
1257         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST)) {
1258           this->set_union_list();
1259           _readState.beforeSubobject(iprot);
1260           value_.union_list = ::std::vector<::std::int32_t>();
1261           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::readWithContext(*iprot, value_.union_list, _readState);
1262           _readState.afterSubobject(iprot);
1263 
1264         } else {
1265           _readState.skip(iprot);
1266         }
1267         break;
1268       }
1269       case 10:
1270       {
1271         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET)) {
1272           this->set_union_set();
1273           _readState.beforeSubobject(iprot);
1274           value_.union_set = ::std::set<::std::int64_t>();
1275           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::readWithContext(*iprot, value_.union_set, _readState);
1276           _readState.afterSubobject(iprot);
1277 
1278         } else {
1279           _readState.skip(iprot);
1280         }
1281         break;
1282       }
1283       case 11:
1284       {
1285         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP)) {
1286           this->set_union_map();
1287           _readState.beforeSubobject(iprot);
1288           value_.union_map = ::std::map<::std::string, ::std::int32_t>();
1289           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::readWithContext(*iprot, value_.union_map, _readState);
1290           _readState.afterSubobject(iprot);
1291 
1292         } else {
1293           _readState.skip(iprot);
1294         }
1295         break;
1296       }
1297       case 211:
1298       {
1299         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP)) {
1300           this->set_opt_union_map();
1301           _readState.beforeSubobject(iprot);
1302           value_.opt_union_map = ::std::map<::std::string, ::std::int32_t>();
1303           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::readWithContext(*iprot, value_.opt_union_map, _readState);
1304           _readState.afterSubobject(iprot);
1305 
1306         } else {
1307           _readState.skip(iprot);
1308         }
1309         break;
1310       }
1311       case 12:
1312       {
1313         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32)) {
1314           this->set_enum_field();
1315           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, value_.enum_field, _readState);
1316 
1317         } else {
1318           _readState.skip(iprot);
1319         }
1320         break;
1321       }
1322       case 13:
1323       {
1324         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST)) {
1325           this->set_enum_container();
1326           _readState.beforeSubobject(iprot);
1327           value_.enum_container = ::std::vector<::some::valid::ns::MyEnumA>();
1328           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::readWithContext(*iprot, value_.enum_container, _readState);
1329           _readState.afterSubobject(iprot);
1330 
1331         } else {
1332           _readState.skip(iprot);
1333         }
1334         break;
1335       }
1336       case 14:
1337       {
1338         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1339           this->set_a_struct();
1340           _readState.beforeSubobject(iprot);
1341           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, value_.a_struct, _readState);
1342           _readState.afterSubobject(iprot);
1343 
1344         } else {
1345           _readState.skip(iprot);
1346         }
1347         break;
1348       }
1349       case 15:
1350       {
1351         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET)) {
1352           this->set_a_set_struct();
1353           _readState.beforeSubobject(iprot);
1354           value_.a_set_struct = ::std::set<::some::valid::ns::MyStruct>();
1355           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::readWithContext(*iprot, value_.a_set_struct, _readState);
1356           _readState.afterSubobject(iprot);
1357 
1358         } else {
1359           _readState.skip(iprot);
1360         }
1361         break;
1362       }
1363       case 16:
1364       {
1365         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1366           this->set_a_union();
1367           _readState.beforeSubobject(iprot);
1368           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::readWithContext(*iprot, value_.a_union, _readState);
1369           _readState.afterSubobject(iprot);
1370 
1371         } else {
1372           _readState.skip(iprot);
1373         }
1374         break;
1375       }
1376       case 216:
1377       {
1378         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1379           this->set_opt_a_union();
1380           _readState.beforeSubobject(iprot);
1381           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::readWithContext(*iprot, value_.opt_a_union, _readState);
1382           _readState.afterSubobject(iprot);
1383 
1384         } else {
1385           _readState.skip(iprot);
1386         }
1387         break;
1388       }
1389       case 17:
1390       {
1391         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST)) {
1392           this->set_a_union_list();
1393           _readState.beforeSubobject(iprot);
1394           value_.a_union_list = ::std::vector<::some::valid::ns::SimpleUnion>();
1395           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::readWithContext(*iprot, value_.a_union_list, _readState);
1396           _readState.afterSubobject(iprot);
1397 
1398         } else {
1399           _readState.skip(iprot);
1400         }
1401         break;
1402       }
1403       case 18:
1404       {
1405         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET)) {
1406           this->set_a_union_typedef();
1407           _readState.beforeSubobject(iprot);
1408           value_.a_union_typedef = ::some::valid::ns::unionTypeDef();
1409           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::readWithContext(*iprot, value_.a_union_typedef, _readState);
1410           _readState.afterSubobject(iprot);
1411 
1412         } else {
1413           _readState.skip(iprot);
1414         }
1415         break;
1416       }
1417       case 19:
1418       {
1419         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST)) {
1420           this->set_a_union_typedef_list();
1421           _readState.beforeSubobject(iprot);
1422           value_.a_union_typedef_list = ::std::vector<::some::valid::ns::unionTypeDef>();
1423           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::readWithContext(*iprot, value_.a_union_typedef_list, _readState);
1424           _readState.afterSubobject(iprot);
1425 
1426         } else {
1427           _readState.skip(iprot);
1428         }
1429         break;
1430       }
1431       case 20:
1432       {
1433         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1434           this->set_MyBinaryField();
1435           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, value_.MyBinaryField, _readState);
1436 
1437         } else {
1438           _readState.skip(iprot);
1439         }
1440         break;
1441       }
1442       case 21:
1443       {
1444         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1445           this->set_MyBinaryField2();
1446           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, value_.MyBinaryField2, _readState);
1447 
1448         } else {
1449           _readState.skip(iprot);
1450         }
1451         break;
1452       }
1453       case 23:
1454       {
1455         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST)) {
1456           this->set_MyBinaryListField4();
1457           _readState.beforeSubobject(iprot);
1458           value_.MyBinaryListField4 = ::std::vector<::std::string>();
1459           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::readWithContext(*iprot, value_.MyBinaryListField4, _readState);
1460           _readState.afterSubobject(iprot);
1461 
1462         } else {
1463           _readState.skip(iprot);
1464         }
1465         break;
1466       }
1467       case 24:
1468       {
1469         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1470           this->set_ref_field();
1471           _readState.beforeSubobject(iprot);
1472           auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::MyStruct>>();
1473           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, *ptr, _readState);
1474           value_.ref_field = std::move(ptr);
1475           _readState.afterSubobject(iprot);
1476 
1477         } else {
1478           _readState.skip(iprot);
1479         }
1480         break;
1481       }
1482       case 25:
1483       {
1484         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1485           this->set_ref_field2();
1486           _readState.beforeSubobject(iprot);
1487           auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<const ::some::valid::ns::MyStruct>>();
1488           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, *ptr, _readState);
1489           value_.ref_field2 = std::move(ptr);
1490           _readState.afterSubobject(iprot);
1491 
1492         } else {
1493           _readState.skip(iprot);
1494         }
1495         break;
1496       }
1497       case 26:
1498       {
1499         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT)) {
1500           this->set_excp_field();
1501           _readState.beforeSubobject(iprot);
1502           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AnException>::readWithContext(*iprot, value_.excp_field, _readState);
1503           _readState.afterSubobject(iprot);
1504 
1505         } else {
1506           _readState.skip(iprot);
1507         }
1508         break;
1509       }
1510       case 27:
1511       {
1512         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING)) {
1513           this->set_MyCustomField();
1514           ::folly::IOBuf tvalue;
1515           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::readWithContext(*iprot, tvalue, _readState);
1516           value_.MyCustomField = ::apache::thrift::adapt_detail::fromThriftField<CustomProtocolAdapter, 27>(::std::move(tvalue), *this);
1517 
1518         } else {
1519           _readState.skip(iprot);
1520         }
1521         break;
1522       }
1523       default:
1524       {
1525         _readState.skip(iprot);
1526         break;
1527       }
1528     }
1529     _readState.readFieldEnd(iprot);
1530     _readState.readFieldBegin(iprot);
1531     if (UNLIKELY(!_readState.atStop())) {
1532       using apache::thrift::protocol::TProtocolException;
1533       TProtocolException::throwUnionMissingStop();
1534     }
1535   }
1536   _readState.readStructEnd(iprot);
1537 }
1538 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const1539 uint32_t ComplexUnion::serializedSize(Protocol_ const* prot_) const {
1540   uint32_t xfer = 0;
1541   xfer += prot_->serializedStructSize("ComplexUnion");
1542   switch(this->getType()) {
1543     case ComplexUnion::Type::intValue:
1544     {
1545       xfer += prot_->serializedFieldSize("intValue", apache::thrift::protocol::T_I64, 1);
1546       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.intValue);
1547       break;
1548     }
1549     case ComplexUnion::Type::opt_intValue:
1550     {
1551       xfer += prot_->serializedFieldSize("opt_intValue", apache::thrift::protocol::T_I64, 201);
1552       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.opt_intValue);
1553       break;
1554     }
1555     case ComplexUnion::Type::stringValue:
1556     {
1557       xfer += prot_->serializedFieldSize("stringValue", apache::thrift::protocol::T_STRING, 3);
1558       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.stringValue);
1559       break;
1560     }
1561     case ComplexUnion::Type::opt_stringValue:
1562     {
1563       xfer += prot_->serializedFieldSize("opt_stringValue", apache::thrift::protocol::T_STRING, 203);
1564       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.opt_stringValue);
1565       break;
1566     }
1567     case ComplexUnion::Type::intValue2:
1568     {
1569       xfer += prot_->serializedFieldSize("intValue2", apache::thrift::protocol::T_I16, 4);
1570       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, value_.intValue2);
1571       break;
1572     }
1573     case ComplexUnion::Type::intValue3:
1574     {
1575       xfer += prot_->serializedFieldSize("intValue3", apache::thrift::protocol::T_I32, 6);
1576       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, value_.intValue3);
1577       break;
1578     }
1579     case ComplexUnion::Type::doubelValue:
1580     {
1581       xfer += prot_->serializedFieldSize("doubelValue", apache::thrift::protocol::T_DOUBLE, 7);
1582       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, value_.doubelValue);
1583       break;
1584     }
1585     case ComplexUnion::Type::boolValue:
1586     {
1587       xfer += prot_->serializedFieldSize("boolValue", apache::thrift::protocol::T_BOOL, 8);
1588       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, value_.boolValue);
1589       break;
1590     }
1591     case ComplexUnion::Type::union_list:
1592     {
1593       xfer += prot_->serializedFieldSize("union_list", apache::thrift::protocol::T_LIST, 9);
1594       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::serializedSize<false>(*prot_, value_.union_list);
1595       break;
1596     }
1597     case ComplexUnion::Type::union_set:
1598     {
1599       xfer += prot_->serializedFieldSize("union_set", apache::thrift::protocol::T_SET, 10);
1600       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::serializedSize<false>(*prot_, value_.union_set);
1601       break;
1602     }
1603     case ComplexUnion::Type::union_map:
1604     {
1605       xfer += prot_->serializedFieldSize("union_map", apache::thrift::protocol::T_MAP, 11);
1606       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, value_.union_map);
1607       break;
1608     }
1609     case ComplexUnion::Type::opt_union_map:
1610     {
1611       xfer += prot_->serializedFieldSize("opt_union_map", apache::thrift::protocol::T_MAP, 211);
1612       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, value_.opt_union_map);
1613       break;
1614     }
1615     case ComplexUnion::Type::enum_field:
1616     {
1617       xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 12);
1618       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, value_.enum_field);
1619       break;
1620     }
1621     case ComplexUnion::Type::enum_container:
1622     {
1623       xfer += prot_->serializedFieldSize("enum_container", apache::thrift::protocol::T_LIST, 13);
1624       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, value_.enum_container);
1625       break;
1626     }
1627     case ComplexUnion::Type::a_struct:
1628     {
1629       xfer += prot_->serializedFieldSize("a_struct", apache::thrift::protocol::T_STRUCT, 14);
1630       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, value_.a_struct);
1631       break;
1632     }
1633     case ComplexUnion::Type::a_set_struct:
1634     {
1635       xfer += prot_->serializedFieldSize("a_set_struct", apache::thrift::protocol::T_SET, 15);
1636       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, value_.a_set_struct);
1637       break;
1638     }
1639     case ComplexUnion::Type::a_union:
1640     {
1641       xfer += prot_->serializedFieldSize("a_union", apache::thrift::protocol::T_STRUCT, 16);
1642       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::serializedSize<false>(*prot_, value_.a_union);
1643       break;
1644     }
1645     case ComplexUnion::Type::opt_a_union:
1646     {
1647       xfer += prot_->serializedFieldSize("opt_a_union", apache::thrift::protocol::T_STRUCT, 216);
1648       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::serializedSize<false>(*prot_, value_.opt_a_union);
1649       break;
1650     }
1651     case ComplexUnion::Type::a_union_list:
1652     {
1653       xfer += prot_->serializedFieldSize("a_union_list", apache::thrift::protocol::T_LIST, 17);
1654       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::serializedSize<false>(*prot_, value_.a_union_list);
1655       break;
1656     }
1657     case ComplexUnion::Type::a_union_typedef:
1658     {
1659       xfer += prot_->serializedFieldSize("a_union_typedef", apache::thrift::protocol::T_SET, 18);
1660       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, value_.a_union_typedef);
1661       break;
1662     }
1663     case ComplexUnion::Type::a_union_typedef_list:
1664     {
1665       xfer += prot_->serializedFieldSize("a_union_typedef_list", apache::thrift::protocol::T_LIST, 19);
1666       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, value_.a_union_typedef_list);
1667       break;
1668     }
1669     case ComplexUnion::Type::MyBinaryField:
1670     {
1671       xfer += prot_->serializedFieldSize("MyBinaryField", apache::thrift::protocol::T_STRING, 20);
1672       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, value_.MyBinaryField);
1673       break;
1674     }
1675     case ComplexUnion::Type::MyBinaryField2:
1676     {
1677       xfer += prot_->serializedFieldSize("MyBinaryField2", apache::thrift::protocol::T_STRING, 21);
1678       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, value_.MyBinaryField2);
1679       break;
1680     }
1681     case ComplexUnion::Type::MyBinaryListField4:
1682     {
1683       xfer += prot_->serializedFieldSize("MyBinaryListField4", apache::thrift::protocol::T_LIST, 23);
1684       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, value_.MyBinaryListField4);
1685       break;
1686     }
1687     case ComplexUnion::Type::ref_field:
1688     {
1689       xfer += prot_->serializedFieldSize("ref_field", apache::thrift::protocol::T_STRUCT, 24);
1690       if (value_.ref_field) {
1691         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, *value_.ref_field);
1692       } else {
1693         xfer += prot_->serializedStructSize("MyStruct");
1694         xfer += prot_->serializedSizeStop();
1695       }
1696       break;
1697     }
1698     case ComplexUnion::Type::ref_field2:
1699     {
1700       xfer += prot_->serializedFieldSize("ref_field2", apache::thrift::protocol::T_STRUCT, 25);
1701       if (value_.ref_field2) {
1702         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, *value_.ref_field2);
1703       } else {
1704         xfer += prot_->serializedStructSize("MyStruct");
1705         xfer += prot_->serializedSizeStop();
1706       }
1707       break;
1708     }
1709     case ComplexUnion::Type::excp_field:
1710     {
1711       xfer += prot_->serializedFieldSize("excp_field", apache::thrift::protocol::T_STRUCT, 26);
1712       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AnException>::serializedSize<false>(*prot_, value_.excp_field);
1713       break;
1714     }
1715     case ComplexUnion::Type::MyCustomField:
1716     {
1717       xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 27);
1718       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<false>(*prot_, CustomProtocolAdapter::toThrift(value_.MyCustomField));
1719       break;
1720     }
1721     case ComplexUnion::Type::__EMPTY__:;
1722   }
1723   xfer += prot_->serializedSizeStop();
1724   return xfer;
1725 }
1726 
1727 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const1728 uint32_t ComplexUnion::serializedSizeZC(Protocol_ const* prot_) const {
1729   uint32_t xfer = 0;
1730   xfer += prot_->serializedStructSize("ComplexUnion");
1731   switch(this->getType()) {
1732     case ComplexUnion::Type::intValue:
1733     {
1734       xfer += prot_->serializedFieldSize("intValue", apache::thrift::protocol::T_I64, 1);
1735       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.intValue);
1736       break;
1737     }
1738     case ComplexUnion::Type::opt_intValue:
1739     {
1740       xfer += prot_->serializedFieldSize("opt_intValue", apache::thrift::protocol::T_I64, 201);
1741       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, value_.opt_intValue);
1742       break;
1743     }
1744     case ComplexUnion::Type::stringValue:
1745     {
1746       xfer += prot_->serializedFieldSize("stringValue", apache::thrift::protocol::T_STRING, 3);
1747       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.stringValue);
1748       break;
1749     }
1750     case ComplexUnion::Type::opt_stringValue:
1751     {
1752       xfer += prot_->serializedFieldSize("opt_stringValue", apache::thrift::protocol::T_STRING, 203);
1753       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, value_.opt_stringValue);
1754       break;
1755     }
1756     case ComplexUnion::Type::intValue2:
1757     {
1758       xfer += prot_->serializedFieldSize("intValue2", apache::thrift::protocol::T_I16, 4);
1759       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, value_.intValue2);
1760       break;
1761     }
1762     case ComplexUnion::Type::intValue3:
1763     {
1764       xfer += prot_->serializedFieldSize("intValue3", apache::thrift::protocol::T_I32, 6);
1765       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, value_.intValue3);
1766       break;
1767     }
1768     case ComplexUnion::Type::doubelValue:
1769     {
1770       xfer += prot_->serializedFieldSize("doubelValue", apache::thrift::protocol::T_DOUBLE, 7);
1771       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, value_.doubelValue);
1772       break;
1773     }
1774     case ComplexUnion::Type::boolValue:
1775     {
1776       xfer += prot_->serializedFieldSize("boolValue", apache::thrift::protocol::T_BOOL, 8);
1777       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, value_.boolValue);
1778       break;
1779     }
1780     case ComplexUnion::Type::union_list:
1781     {
1782       xfer += prot_->serializedFieldSize("union_list", apache::thrift::protocol::T_LIST, 9);
1783       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::serializedSize<false>(*prot_, value_.union_list);
1784       break;
1785     }
1786     case ComplexUnion::Type::union_set:
1787     {
1788       xfer += prot_->serializedFieldSize("union_set", apache::thrift::protocol::T_SET, 10);
1789       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::serializedSize<false>(*prot_, value_.union_set);
1790       break;
1791     }
1792     case ComplexUnion::Type::union_map:
1793     {
1794       xfer += prot_->serializedFieldSize("union_map", apache::thrift::protocol::T_MAP, 11);
1795       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, value_.union_map);
1796       break;
1797     }
1798     case ComplexUnion::Type::opt_union_map:
1799     {
1800       xfer += prot_->serializedFieldSize("opt_union_map", apache::thrift::protocol::T_MAP, 211);
1801       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, value_.opt_union_map);
1802       break;
1803     }
1804     case ComplexUnion::Type::enum_field:
1805     {
1806       xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 12);
1807       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, value_.enum_field);
1808       break;
1809     }
1810     case ComplexUnion::Type::enum_container:
1811     {
1812       xfer += prot_->serializedFieldSize("enum_container", apache::thrift::protocol::T_LIST, 13);
1813       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, value_.enum_container);
1814       break;
1815     }
1816     case ComplexUnion::Type::a_struct:
1817     {
1818       xfer += prot_->serializedFieldSize("a_struct", apache::thrift::protocol::T_STRUCT, 14);
1819       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, value_.a_struct);
1820       break;
1821     }
1822     case ComplexUnion::Type::a_set_struct:
1823     {
1824       xfer += prot_->serializedFieldSize("a_set_struct", apache::thrift::protocol::T_SET, 15);
1825       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, value_.a_set_struct);
1826       break;
1827     }
1828     case ComplexUnion::Type::a_union:
1829     {
1830       xfer += prot_->serializedFieldSize("a_union", apache::thrift::protocol::T_STRUCT, 16);
1831       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::serializedSize<true>(*prot_, value_.a_union);
1832       break;
1833     }
1834     case ComplexUnion::Type::opt_a_union:
1835     {
1836       xfer += prot_->serializedFieldSize("opt_a_union", apache::thrift::protocol::T_STRUCT, 216);
1837       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::serializedSize<true>(*prot_, value_.opt_a_union);
1838       break;
1839     }
1840     case ComplexUnion::Type::a_union_list:
1841     {
1842       xfer += prot_->serializedFieldSize("a_union_list", apache::thrift::protocol::T_LIST, 17);
1843       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::serializedSize<false>(*prot_, value_.a_union_list);
1844       break;
1845     }
1846     case ComplexUnion::Type::a_union_typedef:
1847     {
1848       xfer += prot_->serializedFieldSize("a_union_typedef", apache::thrift::protocol::T_SET, 18);
1849       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, value_.a_union_typedef);
1850       break;
1851     }
1852     case ComplexUnion::Type::a_union_typedef_list:
1853     {
1854       xfer += prot_->serializedFieldSize("a_union_typedef_list", apache::thrift::protocol::T_LIST, 19);
1855       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, value_.a_union_typedef_list);
1856       break;
1857     }
1858     case ComplexUnion::Type::MyBinaryField:
1859     {
1860       xfer += prot_->serializedFieldSize("MyBinaryField", apache::thrift::protocol::T_STRING, 20);
1861       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, value_.MyBinaryField);
1862       break;
1863     }
1864     case ComplexUnion::Type::MyBinaryField2:
1865     {
1866       xfer += prot_->serializedFieldSize("MyBinaryField2", apache::thrift::protocol::T_STRING, 21);
1867       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, value_.MyBinaryField2);
1868       break;
1869     }
1870     case ComplexUnion::Type::MyBinaryListField4:
1871     {
1872       xfer += prot_->serializedFieldSize("MyBinaryListField4", apache::thrift::protocol::T_LIST, 23);
1873       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, value_.MyBinaryListField4);
1874       break;
1875     }
1876     case ComplexUnion::Type::ref_field:
1877     {
1878       xfer += prot_->serializedFieldSize("ref_field", apache::thrift::protocol::T_STRUCT, 24);
1879       if (value_.ref_field) {
1880         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, *value_.ref_field);
1881       } else {
1882         xfer += prot_->serializedStructSize("MyStruct");
1883         xfer += prot_->serializedSizeStop();
1884       }
1885       break;
1886     }
1887     case ComplexUnion::Type::ref_field2:
1888     {
1889       xfer += prot_->serializedFieldSize("ref_field2", apache::thrift::protocol::T_STRUCT, 25);
1890       if (value_.ref_field2) {
1891         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, *value_.ref_field2);
1892       } else {
1893         xfer += prot_->serializedStructSize("MyStruct");
1894         xfer += prot_->serializedSizeStop();
1895       }
1896       break;
1897     }
1898     case ComplexUnion::Type::excp_field:
1899     {
1900       xfer += prot_->serializedFieldSize("excp_field", apache::thrift::protocol::T_STRUCT, 26);
1901       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AnException>::serializedSize<true>(*prot_, value_.excp_field);
1902       break;
1903     }
1904     case ComplexUnion::Type::MyCustomField:
1905     {
1906       xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 27);
1907       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<true>(*prot_, CustomProtocolAdapter::toThrift(value_.MyCustomField));
1908       break;
1909     }
1910     case ComplexUnion::Type::__EMPTY__:;
1911   }
1912   xfer += prot_->serializedSizeStop();
1913   return xfer;
1914 }
1915 
1916 template <class Protocol_>
write(Protocol_ * prot_) const1917 uint32_t ComplexUnion::write(Protocol_* prot_) const {
1918   uint32_t xfer = 0;
1919   xfer += prot_->writeStructBegin("ComplexUnion");
1920   switch(this->getType()) {
1921     case ComplexUnion::Type::intValue:
1922     {
1923       constexpr int16_t kPrevFieldId = 0;
1924       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "intValue", false);
1925       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, value_.intValue);
1926       xfer += prot_->writeFieldEnd();
1927       break;
1928     }
1929     case ComplexUnion::Type::opt_intValue:
1930     {
1931       constexpr int16_t kPrevFieldId = 1;
1932       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 201, kPrevFieldId>(*prot_, "opt_intValue", false);
1933       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, value_.opt_intValue);
1934       xfer += prot_->writeFieldEnd();
1935       break;
1936     }
1937     case ComplexUnion::Type::stringValue:
1938     {
1939       constexpr int16_t kPrevFieldId = 201;
1940       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 3, kPrevFieldId>(*prot_, "stringValue", false);
1941       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, value_.stringValue);
1942       xfer += prot_->writeFieldEnd();
1943       break;
1944     }
1945     case ComplexUnion::Type::opt_stringValue:
1946     {
1947       constexpr int16_t kPrevFieldId = 3;
1948       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 203, kPrevFieldId>(*prot_, "opt_stringValue", false);
1949       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, value_.opt_stringValue);
1950       xfer += prot_->writeFieldEnd();
1951       break;
1952     }
1953     case ComplexUnion::Type::intValue2:
1954     {
1955       constexpr int16_t kPrevFieldId = 203;
1956       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I16, 4, kPrevFieldId>(*prot_, "intValue2", false);
1957       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::write(*prot_, value_.intValue2);
1958       xfer += prot_->writeFieldEnd();
1959       break;
1960     }
1961     case ComplexUnion::Type::intValue3:
1962     {
1963       constexpr int16_t kPrevFieldId = 4;
1964       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 6, kPrevFieldId>(*prot_, "intValue3", false);
1965       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, value_.intValue3);
1966       xfer += prot_->writeFieldEnd();
1967       break;
1968     }
1969     case ComplexUnion::Type::doubelValue:
1970     {
1971       constexpr int16_t kPrevFieldId = 6;
1972       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 7, kPrevFieldId>(*prot_, "doubelValue", false);
1973       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, value_.doubelValue);
1974       xfer += prot_->writeFieldEnd();
1975       break;
1976     }
1977     case ComplexUnion::Type::boolValue:
1978     {
1979       constexpr int16_t kPrevFieldId = 7;
1980       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 8, kPrevFieldId>(*prot_, "boolValue", false);
1981       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, value_.boolValue);
1982       xfer += prot_->writeFieldEnd();
1983       break;
1984     }
1985     case ComplexUnion::Type::union_list:
1986     {
1987       constexpr int16_t kPrevFieldId = 8;
1988       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 9, kPrevFieldId>(*prot_, "union_list", false);
1989       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::write(*prot_, value_.union_list);
1990       xfer += prot_->writeFieldEnd();
1991       break;
1992     }
1993     case ComplexUnion::Type::union_set:
1994     {
1995       constexpr int16_t kPrevFieldId = 9;
1996       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 10, kPrevFieldId>(*prot_, "union_set", false);
1997       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::write(*prot_, value_.union_set);
1998       xfer += prot_->writeFieldEnd();
1999       break;
2000     }
2001     case ComplexUnion::Type::union_map:
2002     {
2003       constexpr int16_t kPrevFieldId = 10;
2004       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 11, kPrevFieldId>(*prot_, "union_map", false);
2005       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::write(*prot_, value_.union_map);
2006       xfer += prot_->writeFieldEnd();
2007       break;
2008     }
2009     case ComplexUnion::Type::opt_union_map:
2010     {
2011       constexpr int16_t kPrevFieldId = 11;
2012       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 211, kPrevFieldId>(*prot_, "opt_union_map", false);
2013       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::write(*prot_, value_.opt_union_map);
2014       xfer += prot_->writeFieldEnd();
2015       break;
2016     }
2017     case ComplexUnion::Type::enum_field:
2018     {
2019       constexpr int16_t kPrevFieldId = 211;
2020       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 12, kPrevFieldId>(*prot_, "enum_field", false);
2021       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, value_.enum_field);
2022       xfer += prot_->writeFieldEnd();
2023       break;
2024     }
2025     case ComplexUnion::Type::enum_container:
2026     {
2027       constexpr int16_t kPrevFieldId = 12;
2028       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 13, kPrevFieldId>(*prot_, "enum_container", false);
2029       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::write(*prot_, value_.enum_container);
2030       xfer += prot_->writeFieldEnd();
2031       break;
2032     }
2033     case ComplexUnion::Type::a_struct:
2034     {
2035       constexpr int16_t kPrevFieldId = 13;
2036       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 14, kPrevFieldId>(*prot_, "a_struct", false);
2037       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, value_.a_struct);
2038       xfer += prot_->writeFieldEnd();
2039       break;
2040     }
2041     case ComplexUnion::Type::a_set_struct:
2042     {
2043       constexpr int16_t kPrevFieldId = 14;
2044       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 15, kPrevFieldId>(*prot_, "a_set_struct", false);
2045       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::write(*prot_, value_.a_set_struct);
2046       xfer += prot_->writeFieldEnd();
2047       break;
2048     }
2049     case ComplexUnion::Type::a_union:
2050     {
2051       constexpr int16_t kPrevFieldId = 15;
2052       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 16, kPrevFieldId>(*prot_, "a_union", false);
2053       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::write(*prot_, value_.a_union);
2054       xfer += prot_->writeFieldEnd();
2055       break;
2056     }
2057     case ComplexUnion::Type::opt_a_union:
2058     {
2059       constexpr int16_t kPrevFieldId = 16;
2060       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 216, kPrevFieldId>(*prot_, "opt_a_union", false);
2061       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::SimpleUnion>::write(*prot_, value_.opt_a_union);
2062       xfer += prot_->writeFieldEnd();
2063       break;
2064     }
2065     case ComplexUnion::Type::a_union_list:
2066     {
2067       constexpr int16_t kPrevFieldId = 216;
2068       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 17, kPrevFieldId>(*prot_, "a_union_list", false);
2069       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::write(*prot_, value_.a_union_list);
2070       xfer += prot_->writeFieldEnd();
2071       break;
2072     }
2073     case ComplexUnion::Type::a_union_typedef:
2074     {
2075       constexpr int16_t kPrevFieldId = 17;
2076       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 18, kPrevFieldId>(*prot_, "a_union_typedef", false);
2077       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::write(*prot_, value_.a_union_typedef);
2078       xfer += prot_->writeFieldEnd();
2079       break;
2080     }
2081     case ComplexUnion::Type::a_union_typedef_list:
2082     {
2083       constexpr int16_t kPrevFieldId = 18;
2084       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 19, kPrevFieldId>(*prot_, "a_union_typedef_list", false);
2085       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::write(*prot_, value_.a_union_typedef_list);
2086       xfer += prot_->writeFieldEnd();
2087       break;
2088     }
2089     case ComplexUnion::Type::MyBinaryField:
2090     {
2091       constexpr int16_t kPrevFieldId = 19;
2092       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 20, kPrevFieldId>(*prot_, "MyBinaryField", false);
2093       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, value_.MyBinaryField);
2094       xfer += prot_->writeFieldEnd();
2095       break;
2096     }
2097     case ComplexUnion::Type::MyBinaryField2:
2098     {
2099       constexpr int16_t kPrevFieldId = 20;
2100       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 21, kPrevFieldId>(*prot_, "MyBinaryField2", false);
2101       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, value_.MyBinaryField2);
2102       xfer += prot_->writeFieldEnd();
2103       break;
2104     }
2105     case ComplexUnion::Type::MyBinaryListField4:
2106     {
2107       constexpr int16_t kPrevFieldId = 21;
2108       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 23, kPrevFieldId>(*prot_, "MyBinaryListField4", false);
2109       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::binary>, ::std::vector<::std::string>>::write(*prot_, value_.MyBinaryListField4);
2110       xfer += prot_->writeFieldEnd();
2111       break;
2112     }
2113     case ComplexUnion::Type::ref_field:
2114     {
2115       constexpr int16_t kPrevFieldId = 23;
2116       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 24, kPrevFieldId>(*prot_, "ref_field", false);
2117       if (value_.ref_field) {
2118         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, *value_.ref_field);
2119       } else {
2120         xfer += prot_->writeStructBegin("MyStruct");
2121         xfer += prot_->writeStructEnd();
2122         xfer += prot_->writeFieldStop();
2123       }
2124       xfer += prot_->writeFieldEnd();
2125       break;
2126     }
2127     case ComplexUnion::Type::ref_field2:
2128     {
2129       constexpr int16_t kPrevFieldId = 24;
2130       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 25, kPrevFieldId>(*prot_, "ref_field2", false);
2131       if (value_.ref_field2) {
2132         xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, *value_.ref_field2);
2133       } else {
2134         xfer += prot_->writeStructBegin("MyStruct");
2135         xfer += prot_->writeStructEnd();
2136         xfer += prot_->writeFieldStop();
2137       }
2138       xfer += prot_->writeFieldEnd();
2139       break;
2140     }
2141     case ComplexUnion::Type::excp_field:
2142     {
2143       constexpr int16_t kPrevFieldId = 25;
2144       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 26, kPrevFieldId>(*prot_, "excp_field", false);
2145       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AnException>::write(*prot_, value_.excp_field);
2146       xfer += prot_->writeFieldEnd();
2147       break;
2148     }
2149     case ComplexUnion::Type::MyCustomField:
2150     {
2151       constexpr int16_t kPrevFieldId = 26;
2152       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 27, kPrevFieldId>(*prot_, "MyCustomField", false);
2153       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::write(*prot_, CustomProtocolAdapter::toThrift(value_.MyCustomField));
2154       xfer += prot_->writeFieldEnd();
2155       break;
2156     }
2157     case ComplexUnion::Type::__EMPTY__:;
2158   }
2159   xfer += prot_->writeFieldStop();
2160   xfer += prot_->writeStructEnd();
2161   return xfer;
2162 }
2163 
2164 extern template void ComplexUnion::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
2165 extern template uint32_t ComplexUnion::write<>(apache::thrift::BinaryProtocolWriter*) const;
2166 extern template uint32_t ComplexUnion::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
2167 extern template uint32_t ComplexUnion::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
2168 extern template void ComplexUnion::readNoXfer<>(apache::thrift::CompactProtocolReader*);
2169 extern template uint32_t ComplexUnion::write<>(apache::thrift::CompactProtocolWriter*) const;
2170 extern template uint32_t ComplexUnion::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
2171 extern template uint32_t ComplexUnion::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
2172 extern template void ComplexUnion::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
2173 extern template uint32_t ComplexUnion::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
2174 extern template uint32_t ComplexUnion::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
2175 extern template uint32_t ComplexUnion::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
2176 
2177 }}} // some::valid::ns
2178 namespace some { namespace valid { namespace ns {
2179 
2180 template <class Protocol_>
readNoXfer(Protocol_ * iprot)2181 void AnException::readNoXfer(Protocol_* iprot) {
2182   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
2183 
2184   _readState.readStructBegin(iprot);
2185 
2186   using apache::thrift::TProtocolException;
2187 
2188 
2189   if (UNLIKELY(!_readState.advanceToNextField(
2190           iprot,
2191           0,
2192           1,
2193           apache::thrift::protocol::T_I32))) {
2194     goto _loop;
2195   }
2196 _readField_code:
2197   {
2198     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->code, _readState);
2199 
2200   }
2201  this->__isset.set(0, true);
2202 
2203   if (UNLIKELY(!_readState.advanceToNextField(
2204           iprot,
2205           1,
2206           101,
2207           apache::thrift::protocol::T_I32))) {
2208     goto _loop;
2209   }
2210 _readField_req_code:
2211   {
2212     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->req_code, _readState);
2213 
2214   }
2215 
2216   if (UNLIKELY(!_readState.advanceToNextField(
2217           iprot,
2218           101,
2219           2,
2220           apache::thrift::protocol::T_STRING))) {
2221     goto _loop;
2222   }
2223 _readField_message2:
2224   {
2225     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->message2, _readState);
2226 
2227   }
2228  this->__isset.set(1, true);
2229 
2230   if (UNLIKELY(!_readState.advanceToNextField(
2231           iprot,
2232           2,
2233           102,
2234           apache::thrift::protocol::T_STRING))) {
2235     goto _loop;
2236   }
2237 _readField_req_message:
2238   {
2239     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->req_message, _readState);
2240 
2241   }
2242 
2243   if (UNLIKELY(!_readState.advanceToNextField(
2244           iprot,
2245           102,
2246           3,
2247           apache::thrift::protocol::T_LIST))) {
2248     goto _loop;
2249   }
2250 _readField_exception_list:
2251   {
2252     _readState.beforeSubobject(iprot);
2253     this->exception_list = ::std::vector<::std::int32_t>();
2254     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::readWithContext(*iprot, this->exception_list, _readState);
2255     _readState.afterSubobject(iprot);
2256 
2257   }
2258  this->__isset.set(2, true);
2259 
2260   if (UNLIKELY(!_readState.advanceToNextField(
2261           iprot,
2262           3,
2263           4,
2264           apache::thrift::protocol::T_SET))) {
2265     goto _loop;
2266   }
2267 _readField_exception_set:
2268   {
2269     _readState.beforeSubobject(iprot);
2270     this->exception_set = ::std::set<::std::int64_t>();
2271     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::readWithContext(*iprot, this->exception_set, _readState);
2272     _readState.afterSubobject(iprot);
2273 
2274   }
2275  this->__isset.set(3, true);
2276 
2277   if (UNLIKELY(!_readState.advanceToNextField(
2278           iprot,
2279           4,
2280           5,
2281           apache::thrift::protocol::T_MAP))) {
2282     goto _loop;
2283   }
2284 _readField_exception_map:
2285   {
2286     _readState.beforeSubobject(iprot);
2287     this->exception_map = ::std::map<::std::string, ::std::int32_t>();
2288     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::readWithContext(*iprot, this->exception_map, _readState);
2289     _readState.afterSubobject(iprot);
2290 
2291   }
2292  this->__isset.set(4, true);
2293 
2294   if (UNLIKELY(!_readState.advanceToNextField(
2295           iprot,
2296           5,
2297           105,
2298           apache::thrift::protocol::T_MAP))) {
2299     goto _loop;
2300   }
2301 _readField_req_exception_map:
2302   {
2303     _readState.beforeSubobject(iprot);
2304     this->req_exception_map = ::std::map<::std::string, ::std::int32_t>();
2305     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::readWithContext(*iprot, this->req_exception_map, _readState);
2306     _readState.afterSubobject(iprot);
2307 
2308   }
2309 
2310   if (UNLIKELY(!_readState.advanceToNextField(
2311           iprot,
2312           105,
2313           6,
2314           apache::thrift::protocol::T_I32))) {
2315     goto _loop;
2316   }
2317 _readField_enum_field:
2318   {
2319     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->enum_field, _readState);
2320 
2321   }
2322  this->__isset.set(5, true);
2323 
2324   if (UNLIKELY(!_readState.advanceToNextField(
2325           iprot,
2326           6,
2327           7,
2328           apache::thrift::protocol::T_LIST))) {
2329     goto _loop;
2330   }
2331 _readField_enum_container:
2332   {
2333     _readState.beforeSubobject(iprot);
2334     this->enum_container = ::std::vector<::some::valid::ns::MyEnumA>();
2335     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::readWithContext(*iprot, this->enum_container, _readState);
2336     _readState.afterSubobject(iprot);
2337 
2338   }
2339  this->__isset.set(6, true);
2340 
2341   if (UNLIKELY(!_readState.advanceToNextField(
2342           iprot,
2343           7,
2344           8,
2345           apache::thrift::protocol::T_STRUCT))) {
2346     goto _loop;
2347   }
2348 _readField_a_struct:
2349   {
2350     _readState.beforeSubobject(iprot);
2351     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, this->a_struct, _readState);
2352     _readState.afterSubobject(iprot);
2353 
2354   }
2355  this->__isset.set(7, true);
2356 
2357   if (UNLIKELY(!_readState.advanceToNextField(
2358           iprot,
2359           8,
2360           9,
2361           apache::thrift::protocol::T_SET))) {
2362     goto _loop;
2363   }
2364 _readField_a_set_struct:
2365   {
2366     _readState.beforeSubobject(iprot);
2367     this->a_set_struct = ::std::set<::some::valid::ns::MyStruct>();
2368     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::readWithContext(*iprot, this->a_set_struct, _readState);
2369     _readState.afterSubobject(iprot);
2370 
2371   }
2372  this->__isset.set(8, true);
2373 
2374   if (UNLIKELY(!_readState.advanceToNextField(
2375           iprot,
2376           9,
2377           10,
2378           apache::thrift::protocol::T_LIST))) {
2379     goto _loop;
2380   }
2381 _readField_a_union_list:
2382   {
2383     _readState.beforeSubobject(iprot);
2384     this->a_union_list = ::std::vector<::some::valid::ns::SimpleUnion>();
2385     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::readWithContext(*iprot, this->a_union_list, _readState);
2386     _readState.afterSubobject(iprot);
2387 
2388   }
2389  this->__isset.set(9, true);
2390 
2391   if (UNLIKELY(!_readState.advanceToNextField(
2392           iprot,
2393           10,
2394           11,
2395           apache::thrift::protocol::T_SET))) {
2396     goto _loop;
2397   }
2398 _readField_union_typedef:
2399   {
2400     _readState.beforeSubobject(iprot);
2401     this->union_typedef = ::some::valid::ns::unionTypeDef();
2402     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::readWithContext(*iprot, this->union_typedef, _readState);
2403     _readState.afterSubobject(iprot);
2404 
2405   }
2406  this->__isset.set(10, true);
2407 
2408   if (UNLIKELY(!_readState.advanceToNextField(
2409           iprot,
2410           11,
2411           19,
2412           apache::thrift::protocol::T_LIST))) {
2413     goto _loop;
2414   }
2415 _readField_a_union_typedef_list:
2416   {
2417     _readState.beforeSubobject(iprot);
2418     this->a_union_typedef_list = ::std::vector<::some::valid::ns::unionTypeDef>();
2419     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::readWithContext(*iprot, this->a_union_typedef_list, _readState);
2420     _readState.afterSubobject(iprot);
2421 
2422   }
2423  this->__isset.set(11, true);
2424 
2425   if (UNLIKELY(!_readState.advanceToNextField(
2426           iprot,
2427           19,
2428           20,
2429           apache::thrift::protocol::T_STRING))) {
2430     goto _loop;
2431   }
2432 _readField_MyCustomField:
2433   {
2434     ::folly::IOBuf tvalue;
2435     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::readWithContext(*iprot, tvalue, _readState);
2436     this->MyCustomField = ::apache::thrift::adapt_detail::fromThriftField<CustomProtocolAdapter, 20>(::std::move(tvalue), *this);
2437 
2438   }
2439  this->__isset.set(12, true);
2440 
2441   if (UNLIKELY(!_readState.advanceToNextField(
2442           iprot,
2443           20,
2444           21,
2445           apache::thrift::protocol::T_STRING))) {
2446     goto _loop;
2447   }
2448 _readField_MyOptCustomField:
2449   {
2450     ::folly::IOBuf tvalue;
2451     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::readWithContext(*iprot, tvalue, _readState);
2452     this->MyOptCustomField = ::apache::thrift::adapt_detail::fromThriftField<CustomProtocolAdapter, 21>(::std::move(tvalue), *this);
2453 
2454   }
2455  this->__isset.set(13, true);
2456 
2457   if (UNLIKELY(!_readState.advanceToNextField(
2458           iprot,
2459           21,
2460           0,
2461           apache::thrift::protocol::T_STOP))) {
2462     goto _loop;
2463   }
2464 
2465 _end:
2466   _readState.readStructEnd(iprot);
2467 
2468   return;
2469 
2470 _loop:
2471   _readState.afterAdvanceFailure(iprot);
2472   if (_readState.atStop()) {
2473     goto _end;
2474   }
2475   if (iprot->kUsesFieldNames()) {
2476     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<AnException>>();
2477   }
2478 
2479   switch (_readState.fieldId) {
2480     case 1:
2481     {
2482       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2483         goto _readField_code;
2484       } else {
2485         goto _skip;
2486       }
2487     }
2488     case 101:
2489     {
2490       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2491         goto _readField_req_code;
2492       } else {
2493         goto _skip;
2494       }
2495     }
2496     case 2:
2497     {
2498       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2499         goto _readField_message2;
2500       } else {
2501         goto _skip;
2502       }
2503     }
2504     case 102:
2505     {
2506       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2507         goto _readField_req_message;
2508       } else {
2509         goto _skip;
2510       }
2511     }
2512     case 3:
2513     {
2514       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
2515         goto _readField_exception_list;
2516       } else {
2517         goto _skip;
2518       }
2519     }
2520     case 4:
2521     {
2522       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
2523         goto _readField_exception_set;
2524       } else {
2525         goto _skip;
2526       }
2527     }
2528     case 5:
2529     {
2530       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
2531         goto _readField_exception_map;
2532       } else {
2533         goto _skip;
2534       }
2535     }
2536     case 105:
2537     {
2538       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
2539         goto _readField_req_exception_map;
2540       } else {
2541         goto _skip;
2542       }
2543     }
2544     case 6:
2545     {
2546       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2547         goto _readField_enum_field;
2548       } else {
2549         goto _skip;
2550       }
2551     }
2552     case 7:
2553     {
2554       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
2555         goto _readField_enum_container;
2556       } else {
2557         goto _skip;
2558       }
2559     }
2560     case 8:
2561     {
2562       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
2563         goto _readField_a_struct;
2564       } else {
2565         goto _skip;
2566       }
2567     }
2568     case 9:
2569     {
2570       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
2571         goto _readField_a_set_struct;
2572       } else {
2573         goto _skip;
2574       }
2575     }
2576     case 10:
2577     {
2578       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
2579         goto _readField_a_union_list;
2580       } else {
2581         goto _skip;
2582       }
2583     }
2584     case 11:
2585     {
2586       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
2587         goto _readField_union_typedef;
2588       } else {
2589         goto _skip;
2590       }
2591     }
2592     case 19:
2593     {
2594       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
2595         goto _readField_a_union_typedef_list;
2596       } else {
2597         goto _skip;
2598       }
2599     }
2600     case 20:
2601     {
2602       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2603         goto _readField_MyCustomField;
2604       } else {
2605         goto _skip;
2606       }
2607     }
2608     case 21:
2609     {
2610       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2611         goto _readField_MyOptCustomField;
2612       } else {
2613         goto _skip;
2614       }
2615     }
2616     default:
2617     {
2618 _skip:
2619       _readState.skip(iprot);
2620       _readState.readFieldEnd(iprot);
2621       _readState.readFieldBeginNoInline(iprot);
2622       goto _loop;
2623     }
2624   }
2625 }
2626 
2627 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const2628 uint32_t AnException::serializedSize(Protocol_ const* prot_) const {
2629   uint32_t xfer = 0;
2630   xfer += prot_->serializedStructSize("AnException");
2631   if (this->code != ::std::int32_t()) {
2632     xfer += prot_->serializedFieldSize("code", apache::thrift::protocol::T_I32, 1);
2633     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->code);
2634   }
2635   {
2636     xfer += prot_->serializedFieldSize("req_code", apache::thrift::protocol::T_I32, 101);
2637     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->req_code);
2638   }
2639   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message2)) {
2640     xfer += prot_->serializedFieldSize("message2", apache::thrift::protocol::T_STRING, 2);
2641     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->message2);
2642   }
2643   {
2644     xfer += prot_->serializedFieldSize("req_message", apache::thrift::protocol::T_STRING, 102);
2645     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->req_message);
2646   }
2647   if (!this->exception_list.empty()) {
2648     xfer += prot_->serializedFieldSize("exception_list", apache::thrift::protocol::T_LIST, 3);
2649     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::serializedSize<false>(*prot_, this->exception_list);
2650   }
2651   if (!this->exception_set.empty()) {
2652     xfer += prot_->serializedFieldSize("exception_set", apache::thrift::protocol::T_SET, 4);
2653     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::serializedSize<false>(*prot_, this->exception_set);
2654   }
2655   if (!this->exception_map.empty()) {
2656     xfer += prot_->serializedFieldSize("exception_map", apache::thrift::protocol::T_MAP, 5);
2657     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->exception_map);
2658   }
2659   {
2660     xfer += prot_->serializedFieldSize("req_exception_map", apache::thrift::protocol::T_MAP, 105);
2661     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->req_exception_map);
2662   }
2663   if (this->enum_field != ::some::valid::ns::MyEnumA()) {
2664     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 6);
2665     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->enum_field);
2666   }
2667   if (!this->enum_container.empty()) {
2668     xfer += prot_->serializedFieldSize("enum_container", apache::thrift::protocol::T_LIST, 7);
2669     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->enum_container);
2670   }
2671   {
2672     xfer += prot_->serializedFieldSize("a_struct", apache::thrift::protocol::T_STRUCT, 8);
2673     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, this->a_struct);
2674   }
2675   if (!this->a_set_struct.empty()) {
2676     xfer += prot_->serializedFieldSize("a_set_struct", apache::thrift::protocol::T_SET, 9);
2677     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, this->a_set_struct);
2678   }
2679   if (!this->a_union_list.empty()) {
2680     xfer += prot_->serializedFieldSize("a_union_list", apache::thrift::protocol::T_LIST, 10);
2681     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::serializedSize<false>(*prot_, this->a_union_list);
2682   }
2683   if (!this->union_typedef.empty()) {
2684     xfer += prot_->serializedFieldSize("union_typedef", apache::thrift::protocol::T_SET, 11);
2685     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, this->union_typedef);
2686   }
2687   if (!this->a_union_typedef_list.empty()) {
2688     xfer += prot_->serializedFieldSize("a_union_typedef_list", apache::thrift::protocol::T_LIST, 19);
2689     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, this->a_union_typedef_list);
2690   }
2691   if (!(this->MyCustomField == ::some::valid::ns::CustomProtocolType())) {
2692     xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 20);
2693     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<false>(*prot_, CustomProtocolAdapter::toThrift(this->MyCustomField));
2694   }
2695   if (this->__isset.get(13)) {
2696     xfer += prot_->serializedFieldSize("MyOptCustomField", apache::thrift::protocol::T_STRING, 21);
2697     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<false>(*prot_, CustomProtocolAdapter::toThrift(this->MyOptCustomField));
2698   }
2699   xfer += prot_->serializedSizeStop();
2700   return xfer;
2701 }
2702 
2703 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const2704 uint32_t AnException::serializedSizeZC(Protocol_ const* prot_) const {
2705   uint32_t xfer = 0;
2706   xfer += prot_->serializedStructSize("AnException");
2707   if (this->code != ::std::int32_t()) {
2708     xfer += prot_->serializedFieldSize("code", apache::thrift::protocol::T_I32, 1);
2709     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->code);
2710   }
2711   {
2712     xfer += prot_->serializedFieldSize("req_code", apache::thrift::protocol::T_I32, 101);
2713     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->req_code);
2714   }
2715   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message2)) {
2716     xfer += prot_->serializedFieldSize("message2", apache::thrift::protocol::T_STRING, 2);
2717     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->message2);
2718   }
2719   {
2720     xfer += prot_->serializedFieldSize("req_message", apache::thrift::protocol::T_STRING, 102);
2721     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->req_message);
2722   }
2723   if (!this->exception_list.empty()) {
2724     xfer += prot_->serializedFieldSize("exception_list", apache::thrift::protocol::T_LIST, 3);
2725     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::serializedSize<false>(*prot_, this->exception_list);
2726   }
2727   if (!this->exception_set.empty()) {
2728     xfer += prot_->serializedFieldSize("exception_set", apache::thrift::protocol::T_SET, 4);
2729     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::serializedSize<false>(*prot_, this->exception_set);
2730   }
2731   if (!this->exception_map.empty()) {
2732     xfer += prot_->serializedFieldSize("exception_map", apache::thrift::protocol::T_MAP, 5);
2733     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->exception_map);
2734   }
2735   {
2736     xfer += prot_->serializedFieldSize("req_exception_map", apache::thrift::protocol::T_MAP, 105);
2737     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->req_exception_map);
2738   }
2739   if (this->enum_field != ::some::valid::ns::MyEnumA()) {
2740     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 6);
2741     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->enum_field);
2742   }
2743   if (!this->enum_container.empty()) {
2744     xfer += prot_->serializedFieldSize("enum_container", apache::thrift::protocol::T_LIST, 7);
2745     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->enum_container);
2746   }
2747   {
2748     xfer += prot_->serializedFieldSize("a_struct", apache::thrift::protocol::T_STRUCT, 8);
2749     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, this->a_struct);
2750   }
2751   if (!this->a_set_struct.empty()) {
2752     xfer += prot_->serializedFieldSize("a_set_struct", apache::thrift::protocol::T_SET, 9);
2753     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, this->a_set_struct);
2754   }
2755   if (!this->a_union_list.empty()) {
2756     xfer += prot_->serializedFieldSize("a_union_list", apache::thrift::protocol::T_LIST, 10);
2757     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::serializedSize<false>(*prot_, this->a_union_list);
2758   }
2759   if (!this->union_typedef.empty()) {
2760     xfer += prot_->serializedFieldSize("union_typedef", apache::thrift::protocol::T_SET, 11);
2761     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, this->union_typedef);
2762   }
2763   if (!this->a_union_typedef_list.empty()) {
2764     xfer += prot_->serializedFieldSize("a_union_typedef_list", apache::thrift::protocol::T_LIST, 19);
2765     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, this->a_union_typedef_list);
2766   }
2767   if (!(this->MyCustomField == ::some::valid::ns::CustomProtocolType())) {
2768     xfer += prot_->serializedFieldSize("MyCustomField", apache::thrift::protocol::T_STRING, 20);
2769     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<true>(*prot_, CustomProtocolAdapter::toThrift(this->MyCustomField));
2770   }
2771   if (this->__isset.get(13)) {
2772     xfer += prot_->serializedFieldSize("MyOptCustomField", apache::thrift::protocol::T_STRING, 21);
2773     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::serializedSize<true>(*prot_, CustomProtocolAdapter::toThrift(this->MyOptCustomField));
2774   }
2775   xfer += prot_->serializedSizeStop();
2776   return xfer;
2777 }
2778 
2779 template <class Protocol_>
write(Protocol_ * prot_) const2780 uint32_t AnException::write(Protocol_* prot_) const {
2781   uint32_t xfer = 0;
2782   xfer += prot_->writeStructBegin("AnException");
2783   bool previousFieldHasValue = true;
2784   if (this->code != ::std::int32_t()) {
2785     constexpr int16_t kPrevFieldId = 0;
2786     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 1, kPrevFieldId>(*prot_, "code", previousFieldHasValue);
2787     previousFieldHasValue = true;
2788     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->code);
2789     xfer += prot_->writeFieldEnd();
2790   } else {
2791     previousFieldHasValue = false;
2792   }
2793   {
2794     constexpr int16_t kPrevFieldId = 1;
2795     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 101, kPrevFieldId>(*prot_, "req_code", previousFieldHasValue);
2796     previousFieldHasValue = true;
2797     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->req_code);
2798     xfer += prot_->writeFieldEnd();
2799   }
2800   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message2)) {
2801     constexpr int16_t kPrevFieldId = 101;
2802     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 2, kPrevFieldId>(*prot_, "message2", previousFieldHasValue);
2803     previousFieldHasValue = true;
2804     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->message2);
2805     xfer += prot_->writeFieldEnd();
2806   } else {
2807     previousFieldHasValue = false;
2808   }
2809   {
2810     constexpr int16_t kPrevFieldId = 2;
2811     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 102, kPrevFieldId>(*prot_, "req_message", previousFieldHasValue);
2812     previousFieldHasValue = true;
2813     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->req_message);
2814     xfer += prot_->writeFieldEnd();
2815   }
2816   if (!this->exception_list.empty()) {
2817     constexpr int16_t kPrevFieldId = 102;
2818     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 3, kPrevFieldId>(*prot_, "exception_list", previousFieldHasValue);
2819     previousFieldHasValue = true;
2820     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int32_t>>::write(*prot_, this->exception_list);
2821     xfer += prot_->writeFieldEnd();
2822   } else {
2823     previousFieldHasValue = false;
2824   }
2825   if (!this->exception_set.empty()) {
2826     constexpr int16_t kPrevFieldId = 3;
2827     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 4, kPrevFieldId>(*prot_, "exception_set", previousFieldHasValue);
2828     previousFieldHasValue = true;
2829     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int64_t>>::write(*prot_, this->exception_set);
2830     xfer += prot_->writeFieldEnd();
2831   } else {
2832     previousFieldHasValue = false;
2833   }
2834   if (!this->exception_map.empty()) {
2835     constexpr int16_t kPrevFieldId = 4;
2836     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 5, kPrevFieldId>(*prot_, "exception_map", previousFieldHasValue);
2837     previousFieldHasValue = true;
2838     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::write(*prot_, this->exception_map);
2839     xfer += prot_->writeFieldEnd();
2840   } else {
2841     previousFieldHasValue = false;
2842   }
2843   {
2844     constexpr int16_t kPrevFieldId = 5;
2845     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 105, kPrevFieldId>(*prot_, "req_exception_map", previousFieldHasValue);
2846     previousFieldHasValue = true;
2847     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::write(*prot_, this->req_exception_map);
2848     xfer += prot_->writeFieldEnd();
2849   }
2850   if (this->enum_field != ::some::valid::ns::MyEnumA()) {
2851     constexpr int16_t kPrevFieldId = 105;
2852     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 6, kPrevFieldId>(*prot_, "enum_field", previousFieldHasValue);
2853     previousFieldHasValue = true;
2854     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->enum_field);
2855     xfer += prot_->writeFieldEnd();
2856   } else {
2857     previousFieldHasValue = false;
2858   }
2859   if (!this->enum_container.empty()) {
2860     constexpr int16_t kPrevFieldId = 6;
2861     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 7, kPrevFieldId>(*prot_, "enum_container", previousFieldHasValue);
2862     previousFieldHasValue = true;
2863     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::write(*prot_, this->enum_container);
2864     xfer += prot_->writeFieldEnd();
2865   } else {
2866     previousFieldHasValue = false;
2867   }
2868   {
2869     constexpr int16_t kPrevFieldId = 7;
2870     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 8, kPrevFieldId>(*prot_, "a_struct", previousFieldHasValue);
2871     previousFieldHasValue = true;
2872     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, this->a_struct);
2873     xfer += prot_->writeFieldEnd();
2874   }
2875   if (!this->a_set_struct.empty()) {
2876     constexpr int16_t kPrevFieldId = 8;
2877     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 9, kPrevFieldId>(*prot_, "a_set_struct", previousFieldHasValue);
2878     previousFieldHasValue = true;
2879     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::write(*prot_, this->a_set_struct);
2880     xfer += prot_->writeFieldEnd();
2881   } else {
2882     previousFieldHasValue = false;
2883   }
2884   if (!this->a_union_list.empty()) {
2885     constexpr int16_t kPrevFieldId = 9;
2886     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 10, kPrevFieldId>(*prot_, "a_union_list", previousFieldHasValue);
2887     previousFieldHasValue = true;
2888     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::SimpleUnion>>::write(*prot_, this->a_union_list);
2889     xfer += prot_->writeFieldEnd();
2890   } else {
2891     previousFieldHasValue = false;
2892   }
2893   if (!this->union_typedef.empty()) {
2894     constexpr int16_t kPrevFieldId = 10;
2895     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 11, kPrevFieldId>(*prot_, "union_typedef", previousFieldHasValue);
2896     previousFieldHasValue = true;
2897     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::write(*prot_, this->union_typedef);
2898     xfer += prot_->writeFieldEnd();
2899   } else {
2900     previousFieldHasValue = false;
2901   }
2902   if (!this->a_union_typedef_list.empty()) {
2903     constexpr int16_t kPrevFieldId = 11;
2904     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 19, kPrevFieldId>(*prot_, "a_union_typedef_list", previousFieldHasValue);
2905     previousFieldHasValue = true;
2906     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::write(*prot_, this->a_union_typedef_list);
2907     xfer += prot_->writeFieldEnd();
2908   } else {
2909     previousFieldHasValue = false;
2910   }
2911   if (!(this->MyCustomField == ::some::valid::ns::CustomProtocolType())) {
2912     constexpr int16_t kPrevFieldId = 19;
2913     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 20, kPrevFieldId>(*prot_, "MyCustomField", previousFieldHasValue);
2914     previousFieldHasValue = true;
2915     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::write(*prot_, CustomProtocolAdapter::toThrift(this->MyCustomField));
2916     xfer += prot_->writeFieldEnd();
2917   } else {
2918     previousFieldHasValue = false;
2919   }
2920   if (this->__isset.get(13)) {
2921     constexpr int16_t kPrevFieldId = 20;
2922     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 21, kPrevFieldId>(*prot_, "MyOptCustomField", previousFieldHasValue);
2923     previousFieldHasValue = true;
2924     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::folly::IOBuf>::write(*prot_, CustomProtocolAdapter::toThrift(this->MyOptCustomField));
2925     xfer += prot_->writeFieldEnd();
2926   } else {
2927     previousFieldHasValue = false;
2928   }
2929   xfer += prot_->writeFieldStop();
2930   xfer += prot_->writeStructEnd();
2931   return xfer;
2932 }
2933 
2934 extern template void AnException::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
2935 extern template uint32_t AnException::write<>(apache::thrift::BinaryProtocolWriter*) const;
2936 extern template uint32_t AnException::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
2937 extern template uint32_t AnException::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
2938 extern template void AnException::readNoXfer<>(apache::thrift::CompactProtocolReader*);
2939 extern template uint32_t AnException::write<>(apache::thrift::CompactProtocolWriter*) const;
2940 extern template uint32_t AnException::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
2941 extern template uint32_t AnException::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
2942 extern template void AnException::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
2943 extern template uint32_t AnException::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
2944 extern template uint32_t AnException::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
2945 extern template uint32_t AnException::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
2946 
2947 }}} // some::valid::ns
2948 namespace some { namespace valid { namespace ns {
2949 
2950 template <class Protocol_>
readNoXfer(Protocol_ * iprot)2951 void AnotherException::readNoXfer(Protocol_* iprot) {
2952   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
2953 
2954   _readState.readStructBegin(iprot);
2955 
2956   using apache::thrift::TProtocolException;
2957 
2958 
2959   if (UNLIKELY(!_readState.advanceToNextField(
2960           iprot,
2961           0,
2962           1,
2963           apache::thrift::protocol::T_I32))) {
2964     goto _loop;
2965   }
2966 _readField_code:
2967   {
2968     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->code, _readState);
2969 
2970   }
2971  this->__isset.set(0, true);
2972 
2973   if (UNLIKELY(!_readState.advanceToNextField(
2974           iprot,
2975           1,
2976           101,
2977           apache::thrift::protocol::T_I32))) {
2978     goto _loop;
2979   }
2980 _readField_req_code:
2981   {
2982     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->req_code, _readState);
2983 
2984   }
2985 
2986   if (UNLIKELY(!_readState.advanceToNextField(
2987           iprot,
2988           101,
2989           2,
2990           apache::thrift::protocol::T_STRING))) {
2991     goto _loop;
2992   }
2993 _readField_message:
2994   {
2995     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->message, _readState);
2996 
2997   }
2998  this->__isset.set(1, true);
2999 
3000   if (UNLIKELY(!_readState.advanceToNextField(
3001           iprot,
3002           2,
3003           0,
3004           apache::thrift::protocol::T_STOP))) {
3005     goto _loop;
3006   }
3007 
3008 _end:
3009   _readState.readStructEnd(iprot);
3010 
3011   return;
3012 
3013 _loop:
3014   _readState.afterAdvanceFailure(iprot);
3015   if (_readState.atStop()) {
3016     goto _end;
3017   }
3018   if (iprot->kUsesFieldNames()) {
3019     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<AnotherException>>();
3020   }
3021 
3022   switch (_readState.fieldId) {
3023     case 1:
3024     {
3025       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
3026         goto _readField_code;
3027       } else {
3028         goto _skip;
3029       }
3030     }
3031     case 101:
3032     {
3033       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
3034         goto _readField_req_code;
3035       } else {
3036         goto _skip;
3037       }
3038     }
3039     case 2:
3040     {
3041       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
3042         goto _readField_message;
3043       } else {
3044         goto _skip;
3045       }
3046     }
3047     default:
3048     {
3049 _skip:
3050       _readState.skip(iprot);
3051       _readState.readFieldEnd(iprot);
3052       _readState.readFieldBeginNoInline(iprot);
3053       goto _loop;
3054     }
3055   }
3056 }
3057 
3058 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const3059 uint32_t AnotherException::serializedSize(Protocol_ const* prot_) const {
3060   uint32_t xfer = 0;
3061   xfer += prot_->serializedStructSize("AnotherException");
3062   if (this->code != ::std::int32_t()) {
3063     xfer += prot_->serializedFieldSize("code", apache::thrift::protocol::T_I32, 1);
3064     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->code);
3065   }
3066   {
3067     xfer += prot_->serializedFieldSize("req_code", apache::thrift::protocol::T_I32, 101);
3068     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->req_code);
3069   }
3070   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message)) {
3071     xfer += prot_->serializedFieldSize("message", apache::thrift::protocol::T_STRING, 2);
3072     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->message);
3073   }
3074   xfer += prot_->serializedSizeStop();
3075   return xfer;
3076 }
3077 
3078 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const3079 uint32_t AnotherException::serializedSizeZC(Protocol_ const* prot_) const {
3080   uint32_t xfer = 0;
3081   xfer += prot_->serializedStructSize("AnotherException");
3082   if (this->code != ::std::int32_t()) {
3083     xfer += prot_->serializedFieldSize("code", apache::thrift::protocol::T_I32, 1);
3084     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->code);
3085   }
3086   {
3087     xfer += prot_->serializedFieldSize("req_code", apache::thrift::protocol::T_I32, 101);
3088     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->req_code);
3089   }
3090   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message)) {
3091     xfer += prot_->serializedFieldSize("message", apache::thrift::protocol::T_STRING, 2);
3092     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->message);
3093   }
3094   xfer += prot_->serializedSizeStop();
3095   return xfer;
3096 }
3097 
3098 template <class Protocol_>
write(Protocol_ * prot_) const3099 uint32_t AnotherException::write(Protocol_* prot_) const {
3100   uint32_t xfer = 0;
3101   xfer += prot_->writeStructBegin("AnotherException");
3102   bool previousFieldHasValue = true;
3103   if (this->code != ::std::int32_t()) {
3104     constexpr int16_t kPrevFieldId = 0;
3105     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 1, kPrevFieldId>(*prot_, "code", previousFieldHasValue);
3106     previousFieldHasValue = true;
3107     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->code);
3108     xfer += prot_->writeFieldEnd();
3109   } else {
3110     previousFieldHasValue = false;
3111   }
3112   {
3113     constexpr int16_t kPrevFieldId = 1;
3114     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 101, kPrevFieldId>(*prot_, "req_code", previousFieldHasValue);
3115     previousFieldHasValue = true;
3116     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->req_code);
3117     xfer += prot_->writeFieldEnd();
3118   }
3119   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->message)) {
3120     constexpr int16_t kPrevFieldId = 101;
3121     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 2, kPrevFieldId>(*prot_, "message", previousFieldHasValue);
3122     previousFieldHasValue = true;
3123     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->message);
3124     xfer += prot_->writeFieldEnd();
3125   } else {
3126     previousFieldHasValue = false;
3127   }
3128   xfer += prot_->writeFieldStop();
3129   xfer += prot_->writeStructEnd();
3130   return xfer;
3131 }
3132 
3133 extern template void AnotherException::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
3134 extern template uint32_t AnotherException::write<>(apache::thrift::BinaryProtocolWriter*) const;
3135 extern template uint32_t AnotherException::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
3136 extern template uint32_t AnotherException::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
3137 extern template void AnotherException::readNoXfer<>(apache::thrift::CompactProtocolReader*);
3138 extern template uint32_t AnotherException::write<>(apache::thrift::CompactProtocolWriter*) const;
3139 extern template uint32_t AnotherException::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
3140 extern template uint32_t AnotherException::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
3141 extern template void AnotherException::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
3142 extern template uint32_t AnotherException::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
3143 extern template uint32_t AnotherException::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
3144 extern template uint32_t AnotherException::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
3145 
3146 }}} // some::valid::ns
3147 namespace some { namespace valid { namespace ns {
3148 
3149 template <class Protocol_>
readNoXfer(Protocol_ * iprot)3150 void containerStruct::readNoXfer(Protocol_* iprot) {
3151   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
3152 
3153   _readState.readStructBegin(iprot);
3154 
3155   using apache::thrift::TProtocolException;
3156 
3157 
3158   if (UNLIKELY(!_readState.advanceToNextField(
3159           iprot,
3160           0,
3161           1,
3162           apache::thrift::protocol::T_BOOL))) {
3163     goto _loop;
3164   }
3165 _readField_fieldA:
3166   {
3167     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->fieldA, _readState);
3168 
3169   }
3170  this->__isset.set(0, true);
3171 
3172   if (UNLIKELY(!_readState.advanceToNextField(
3173           iprot,
3174           1,
3175           101,
3176           apache::thrift::protocol::T_BOOL))) {
3177     goto _loop;
3178   }
3179 _readField_req_fieldA:
3180   {
3181     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->req_fieldA, _readState);
3182 
3183   }
3184 
3185   if (UNLIKELY(!_readState.advanceToNextField(
3186           iprot,
3187           101,
3188           201,
3189           apache::thrift::protocol::T_BOOL))) {
3190     goto _loop;
3191   }
3192 _readField_opt_fieldA:
3193   {
3194     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->opt_fieldA, _readState);
3195 
3196   }
3197  this->__isset.set(1, true);
3198 
3199   if (UNLIKELY(!_readState.advanceToNextField(
3200           iprot,
3201           201,
3202           2,
3203           apache::thrift::protocol::T_MAP))) {
3204     goto _loop;
3205   }
3206 _readField_fieldB:
3207   {
3208     _readState.beforeSubobject(iprot);
3209     this->fieldB = ::std::map<::std::string, bool>();
3210     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::readWithContext(*iprot, this->fieldB, _readState);
3211     _readState.afterSubobject(iprot);
3212 
3213   }
3214  this->__isset.set(2, true);
3215 
3216   if (UNLIKELY(!_readState.advanceToNextField(
3217           iprot,
3218           2,
3219           102,
3220           apache::thrift::protocol::T_MAP))) {
3221     goto _loop;
3222   }
3223 _readField_req_fieldB:
3224   {
3225     _readState.beforeSubobject(iprot);
3226     this->req_fieldB = ::std::map<::std::string, bool>();
3227     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::readWithContext(*iprot, this->req_fieldB, _readState);
3228     _readState.afterSubobject(iprot);
3229 
3230   }
3231 
3232   if (UNLIKELY(!_readState.advanceToNextField(
3233           iprot,
3234           102,
3235           202,
3236           apache::thrift::protocol::T_MAP))) {
3237     goto _loop;
3238   }
3239 _readField_opt_fieldB:
3240   {
3241     _readState.beforeSubobject(iprot);
3242     this->opt_fieldB = ::std::map<::std::string, bool>();
3243     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::readWithContext(*iprot, this->opt_fieldB, _readState);
3244     _readState.afterSubobject(iprot);
3245 
3246   }
3247  this->__isset.set(3, true);
3248 
3249   if (UNLIKELY(!_readState.advanceToNextField(
3250           iprot,
3251           202,
3252           3,
3253           apache::thrift::protocol::T_SET))) {
3254     goto _loop;
3255   }
3256 _readField_fieldC:
3257   {
3258     _readState.beforeSubobject(iprot);
3259     this->fieldC = ::std::set<::std::int32_t>();
3260     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::readWithContext(*iprot, this->fieldC, _readState);
3261     _readState.afterSubobject(iprot);
3262 
3263   }
3264  this->__isset.set(4, true);
3265 
3266   if (UNLIKELY(!_readState.advanceToNextField(
3267           iprot,
3268           3,
3269           103,
3270           apache::thrift::protocol::T_SET))) {
3271     goto _loop;
3272   }
3273 _readField_req_fieldC:
3274   {
3275     _readState.beforeSubobject(iprot);
3276     this->req_fieldC = ::std::set<::std::int32_t>();
3277     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::readWithContext(*iprot, this->req_fieldC, _readState);
3278     _readState.afterSubobject(iprot);
3279 
3280   }
3281 
3282   if (UNLIKELY(!_readState.advanceToNextField(
3283           iprot,
3284           103,
3285           203,
3286           apache::thrift::protocol::T_SET))) {
3287     goto _loop;
3288   }
3289 _readField_opt_fieldC:
3290   {
3291     _readState.beforeSubobject(iprot);
3292     this->opt_fieldC = ::std::set<::std::int32_t>();
3293     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::readWithContext(*iprot, this->opt_fieldC, _readState);
3294     _readState.afterSubobject(iprot);
3295 
3296   }
3297  this->__isset.set(5, true);
3298 
3299   if (UNLIKELY(!_readState.advanceToNextField(
3300           iprot,
3301           203,
3302           4,
3303           apache::thrift::protocol::T_STRING))) {
3304     goto _loop;
3305   }
3306 _readField_fieldD:
3307   {
3308     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->fieldD, _readState);
3309 
3310   }
3311  this->__isset.set(6, true);
3312 
3313   if (UNLIKELY(!_readState.advanceToNextField(
3314           iprot,
3315           4,
3316           5,
3317           apache::thrift::protocol::T_STRING))) {
3318     goto _loop;
3319   }
3320 _readField_fieldE:
3321   {
3322     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->fieldE, _readState);
3323 
3324   }
3325  this->__isset.set(7, true);
3326 
3327   if (UNLIKELY(!_readState.advanceToNextField(
3328           iprot,
3329           5,
3330           105,
3331           apache::thrift::protocol::T_STRING))) {
3332     goto _loop;
3333   }
3334 _readField_req_fieldE:
3335   {
3336     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->req_fieldE, _readState);
3337 
3338   }
3339 
3340   if (UNLIKELY(!_readState.advanceToNextField(
3341           iprot,
3342           105,
3343           205,
3344           apache::thrift::protocol::T_STRING))) {
3345     goto _loop;
3346   }
3347 _readField_opt_fieldE:
3348   {
3349     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->opt_fieldE, _readState);
3350 
3351   }
3352  this->__isset.set(8, true);
3353 
3354   if (UNLIKELY(!_readState.advanceToNextField(
3355           iprot,
3356           205,
3357           6,
3358           apache::thrift::protocol::T_LIST))) {
3359     goto _loop;
3360   }
3361 _readField_fieldF:
3362   {
3363     _readState.beforeSubobject(iprot);
3364     this->fieldF = ::std::vector<::std::vector<::std::int32_t>>();
3365     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::vector<::std::vector<::std::int32_t>>>::readWithContext(*iprot, this->fieldF, _readState);
3366     _readState.afterSubobject(iprot);
3367 
3368   }
3369  this->__isset.set(9, true);
3370 
3371   if (UNLIKELY(!_readState.advanceToNextField(
3372           iprot,
3373           6,
3374           7,
3375           apache::thrift::protocol::T_MAP))) {
3376     goto _loop;
3377   }
3378 _readField_fieldG:
3379   {
3380     _readState.beforeSubobject(iprot);
3381     this->fieldG = ::std::map<::std::string, ::std::map<::std::string, ::std::map<::std::string, ::std::int32_t>>>();
3382     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>>>, ::std::map<::std::string, ::std::map<::std::string, ::std::map<::std::string, ::std::int32_t>>>>::readWithContext(*iprot, this->fieldG, _readState);
3383     _readState.afterSubobject(iprot);
3384 
3385   }
3386  this->__isset.set(10, true);
3387 
3388   if (UNLIKELY(!_readState.advanceToNextField(
3389           iprot,
3390           7,
3391           8,
3392           apache::thrift::protocol::T_LIST))) {
3393     goto _loop;
3394   }
3395 _readField_fieldH:
3396   {
3397     _readState.beforeSubobject(iprot);
3398     this->fieldH = ::std::vector<::std::set<::std::int32_t>>();
3399     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, ::std::vector<::std::set<::std::int32_t>>>::readWithContext(*iprot, this->fieldH, _readState);
3400     _readState.afterSubobject(iprot);
3401 
3402   }
3403  this->__isset.set(11, true);
3404 
3405   if (UNLIKELY(!_readState.advanceToNextField(
3406           iprot,
3407           8,
3408           9,
3409           apache::thrift::protocol::T_BOOL))) {
3410     goto _loop;
3411   }
3412 _readField_fieldI:
3413   {
3414     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->fieldI, _readState);
3415 
3416   }
3417  this->__isset.set(12, true);
3418 
3419   if (UNLIKELY(!_readState.advanceToNextField(
3420           iprot,
3421           9,
3422           10,
3423           apache::thrift::protocol::T_MAP))) {
3424     goto _loop;
3425   }
3426 _readField_fieldJ:
3427   {
3428     _readState.beforeSubobject(iprot);
3429     this->fieldJ = ::std::map<::std::string, ::std::vector<::std::int32_t>>();
3430     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::map<::std::string, ::std::vector<::std::int32_t>>>::readWithContext(*iprot, this->fieldJ, _readState);
3431     _readState.afterSubobject(iprot);
3432 
3433   }
3434  this->__isset.set(13, true);
3435 
3436   if (UNLIKELY(!_readState.advanceToNextField(
3437           iprot,
3438           10,
3439           11,
3440           apache::thrift::protocol::T_LIST))) {
3441     goto _loop;
3442   }
3443 _readField_fieldK:
3444   {
3445     _readState.beforeSubobject(iprot);
3446     this->fieldK = ::std::vector<::std::vector<::std::vector<::std::vector<::std::int32_t>>>>();
3447     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>>>, ::std::vector<::std::vector<::std::vector<::std::vector<::std::int32_t>>>>>::readWithContext(*iprot, this->fieldK, _readState);
3448     _readState.afterSubobject(iprot);
3449 
3450   }
3451  this->__isset.set(14, true);
3452 
3453   if (UNLIKELY(!_readState.advanceToNextField(
3454           iprot,
3455           11,
3456           12,
3457           apache::thrift::protocol::T_SET))) {
3458     goto _loop;
3459   }
3460 _readField_fieldL:
3461   {
3462     _readState.beforeSubobject(iprot);
3463     this->fieldL = ::std::set<::std::set<::std::set<bool>>>();
3464     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>>, ::std::set<::std::set<::std::set<bool>>>>::readWithContext(*iprot, this->fieldL, _readState);
3465     _readState.afterSubobject(iprot);
3466 
3467   }
3468  this->__isset.set(15, true);
3469 
3470   if (UNLIKELY(!_readState.advanceToNextField(
3471           iprot,
3472           12,
3473           13,
3474           apache::thrift::protocol::T_MAP))) {
3475     goto _loop;
3476   }
3477 _readField_fieldM:
3478   {
3479     _readState.beforeSubobject(iprot);
3480     this->fieldM = ::std::map<::std::set<::std::vector<::std::int32_t>>, ::std::map<::std::vector<::std::set<::std::string>>, ::std::string>>();
3481     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::set<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::apache::thrift::type_class::map<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::string>>, ::apache::thrift::type_class::string>>, ::std::map<::std::set<::std::vector<::std::int32_t>>, ::std::map<::std::vector<::std::set<::std::string>>, ::std::string>>>::readWithContext(*iprot, this->fieldM, _readState);
3482     _readState.afterSubobject(iprot);
3483 
3484   }
3485  this->__isset.set(16, true);
3486 
3487   if (UNLIKELY(!_readState.advanceToNextField(
3488           iprot,
3489           13,
3490           14,
3491           apache::thrift::protocol::T_I32))) {
3492     goto _loop;
3493   }
3494 _readField_fieldN:
3495   {
3496     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::simpleTypeDef>::readWithContext(*iprot, this->fieldN, _readState);
3497 
3498   }
3499  this->__isset.set(17, true);
3500 
3501   if (UNLIKELY(!_readState.advanceToNextField(
3502           iprot,
3503           14,
3504           15,
3505           apache::thrift::protocol::T_LIST))) {
3506     goto _loop;
3507   }
3508 _readField_fieldO:
3509   {
3510     _readState.beforeSubobject(iprot);
3511     this->fieldO = ::some::valid::ns::complexStructTypeDef();
3512     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>, ::some::valid::ns::complexStructTypeDef>::readWithContext(*iprot, this->fieldO, _readState);
3513     _readState.afterSubobject(iprot);
3514 
3515   }
3516  this->__isset.set(18, true);
3517 
3518   if (UNLIKELY(!_readState.advanceToNextField(
3519           iprot,
3520           15,
3521           16,
3522           apache::thrift::protocol::T_LIST))) {
3523     goto _loop;
3524   }
3525 _readField_fieldP:
3526   {
3527     _readState.beforeSubobject(iprot);
3528     this->fieldP = ::std::vector<::some::valid::ns::mostComplexTypeDef>();
3529     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>>>, ::std::vector<::some::valid::ns::mostComplexTypeDef>>::readWithContext(*iprot, this->fieldP, _readState);
3530     _readState.afterSubobject(iprot);
3531 
3532   }
3533  this->__isset.set(19, true);
3534 
3535   if (UNLIKELY(!_readState.advanceToNextField(
3536           iprot,
3537           16,
3538           17,
3539           apache::thrift::protocol::T_I32))) {
3540     goto _loop;
3541   }
3542 _readField_fieldQ:
3543   {
3544     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->fieldQ, _readState);
3545 
3546   }
3547  this->__isset.set(20, true);
3548 
3549   if (UNLIKELY(!_readState.advanceToNextField(
3550           iprot,
3551           17,
3552           18,
3553           apache::thrift::protocol::T_I32))) {
3554     goto _loop;
3555   }
3556 _readField_fieldR:
3557   {
3558     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->fieldR, _readState);
3559 
3560   }
3561  this->__isset.set(21, true);
3562 
3563   if (UNLIKELY(!_readState.advanceToNextField(
3564           iprot,
3565           18,
3566           118,
3567           apache::thrift::protocol::T_I32))) {
3568     goto _loop;
3569   }
3570 _readField_req_fieldR:
3571   {
3572     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->req_fieldR, _readState);
3573 
3574   }
3575 
3576   if (UNLIKELY(!_readState.advanceToNextField(
3577           iprot,
3578           118,
3579           218,
3580           apache::thrift::protocol::T_I32))) {
3581     goto _loop;
3582   }
3583 _readField_opt_fieldR:
3584   {
3585     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->opt_fieldR, _readState);
3586 
3587   }
3588  this->__isset.set(22, true);
3589 
3590   if (UNLIKELY(!_readState.advanceToNextField(
3591           iprot,
3592           218,
3593           19,
3594           apache::thrift::protocol::T_I32))) {
3595     goto _loop;
3596   }
3597 _readField_fieldS:
3598   {
3599     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::readWithContext(*iprot, this->fieldS, _readState);
3600 
3601   }
3602  this->__isset.set(23, true);
3603 
3604   if (UNLIKELY(!_readState.advanceToNextField(
3605           iprot,
3606           19,
3607           21,
3608           apache::thrift::protocol::T_LIST))) {
3609     goto _loop;
3610   }
3611 _readField_fieldT:
3612   {
3613     _readState.beforeSubobject(iprot);
3614     this->fieldT = ::std::vector<::some::valid::ns::MyEnumA>();
3615     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::readWithContext(*iprot, this->fieldT, _readState);
3616     _readState.afterSubobject(iprot);
3617 
3618   }
3619  this->__isset.set(24, true);
3620 
3621   if (UNLIKELY(!_readState.advanceToNextField(
3622           iprot,
3623           21,
3624           22,
3625           apache::thrift::protocol::T_LIST))) {
3626     goto _loop;
3627   }
3628 _readField_fieldU:
3629   {
3630     _readState.beforeSubobject(iprot);
3631     this->fieldU = ::std::vector<::some::valid::ns::MyEnumA>();
3632     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::readWithContext(*iprot, this->fieldU, _readState);
3633     _readState.afterSubobject(iprot);
3634 
3635   }
3636  this->__isset.set(25, true);
3637 
3638   if (UNLIKELY(!_readState.advanceToNextField(
3639           iprot,
3640           22,
3641           23,
3642           apache::thrift::protocol::T_STRUCT))) {
3643     goto _loop;
3644   }
3645 _readField_fieldV:
3646   {
3647     _readState.beforeSubobject(iprot);
3648     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, this->fieldV, _readState);
3649     _readState.afterSubobject(iprot);
3650 
3651   }
3652  this->__isset.set(26, true);
3653 
3654   if (UNLIKELY(!_readState.advanceToNextField(
3655           iprot,
3656           23,
3657           123,
3658           apache::thrift::protocol::T_STRUCT))) {
3659     goto _loop;
3660   }
3661 _readField_req_fieldV:
3662   {
3663     _readState.beforeSubobject(iprot);
3664     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, this->req_fieldV, _readState);
3665     _readState.afterSubobject(iprot);
3666 
3667   }
3668 
3669   if (UNLIKELY(!_readState.advanceToNextField(
3670           iprot,
3671           123,
3672           223,
3673           apache::thrift::protocol::T_STRUCT))) {
3674     goto _loop;
3675   }
3676 _readField_opt_fieldV:
3677   {
3678     _readState.beforeSubobject(iprot);
3679     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::readWithContext(*iprot, this->opt_fieldV, _readState);
3680     _readState.afterSubobject(iprot);
3681 
3682   }
3683  this->__isset.set(27, true);
3684 
3685   if (UNLIKELY(!_readState.advanceToNextField(
3686           iprot,
3687           223,
3688           24,
3689           apache::thrift::protocol::T_SET))) {
3690     goto _loop;
3691   }
3692 _readField_fieldW:
3693   {
3694     _readState.beforeSubobject(iprot);
3695     this->fieldW = ::std::set<::some::valid::ns::MyStruct>();
3696     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::readWithContext(*iprot, this->fieldW, _readState);
3697     _readState.afterSubobject(iprot);
3698 
3699   }
3700  this->__isset.set(28, true);
3701 
3702   if (UNLIKELY(!_readState.advanceToNextField(
3703           iprot,
3704           24,
3705           25,
3706           apache::thrift::protocol::T_STRUCT))) {
3707     goto _loop;
3708   }
3709 _readField_fieldX:
3710   {
3711     _readState.beforeSubobject(iprot);
3712     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::readWithContext(*iprot, this->fieldX, _readState);
3713     _readState.afterSubobject(iprot);
3714 
3715   }
3716  this->__isset.set(29, true);
3717 
3718   if (UNLIKELY(!_readState.advanceToNextField(
3719           iprot,
3720           25,
3721           125,
3722           apache::thrift::protocol::T_STRUCT))) {
3723     goto _loop;
3724   }
3725 _readField_req_fieldX:
3726   {
3727     _readState.beforeSubobject(iprot);
3728     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::readWithContext(*iprot, this->req_fieldX, _readState);
3729     _readState.afterSubobject(iprot);
3730 
3731   }
3732 
3733   if (UNLIKELY(!_readState.advanceToNextField(
3734           iprot,
3735           125,
3736           225,
3737           apache::thrift::protocol::T_STRUCT))) {
3738     goto _loop;
3739   }
3740 _readField_opt_fieldX:
3741   {
3742     _readState.beforeSubobject(iprot);
3743     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::readWithContext(*iprot, this->opt_fieldX, _readState);
3744     _readState.afterSubobject(iprot);
3745 
3746   }
3747  this->__isset.set(30, true);
3748 
3749   if (UNLIKELY(!_readState.advanceToNextField(
3750           iprot,
3751           225,
3752           26,
3753           apache::thrift::protocol::T_LIST))) {
3754     goto _loop;
3755   }
3756 _readField_fieldY:
3757   {
3758     _readState.beforeSubobject(iprot);
3759     this->fieldY = ::std::vector<::some::valid::ns::ComplexUnion>();
3760     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::ComplexUnion>>::readWithContext(*iprot, this->fieldY, _readState);
3761     _readState.afterSubobject(iprot);
3762 
3763   }
3764  this->__isset.set(31, true);
3765 
3766   if (UNLIKELY(!_readState.advanceToNextField(
3767           iprot,
3768           26,
3769           27,
3770           apache::thrift::protocol::T_SET))) {
3771     goto _loop;
3772   }
3773 _readField_fieldZ:
3774   {
3775     _readState.beforeSubobject(iprot);
3776     this->fieldZ = ::some::valid::ns::unionTypeDef();
3777     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::readWithContext(*iprot, this->fieldZ, _readState);
3778     _readState.afterSubobject(iprot);
3779 
3780   }
3781  this->__isset.set(32, true);
3782 
3783   if (UNLIKELY(!_readState.advanceToNextField(
3784           iprot,
3785           27,
3786           28,
3787           apache::thrift::protocol::T_LIST))) {
3788     goto _loop;
3789   }
3790 _readField_fieldAA:
3791   {
3792     _readState.beforeSubobject(iprot);
3793     this->fieldAA = ::std::vector<::some::valid::ns::unionTypeDef>();
3794     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::readWithContext(*iprot, this->fieldAA, _readState);
3795     _readState.afterSubobject(iprot);
3796 
3797   }
3798  this->__isset.set(33, true);
3799 
3800   if (UNLIKELY(!_readState.advanceToNextField(
3801           iprot,
3802           28,
3803           29,
3804           apache::thrift::protocol::T_MAP))) {
3805     goto _loop;
3806   }
3807 _readField_fieldAB:
3808   {
3809     _readState.beforeSubobject(iprot);
3810     this->fieldAB = ::std::map<::some::valid::ns::IndirectionB, ::some::valid::ns::IndirectionC>();
3811     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>, ::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::map<::some::valid::ns::IndirectionB, ::some::valid::ns::IndirectionC>>::readWithContext(*iprot, this->fieldAB, _readState);
3812     _readState.afterSubobject(iprot);
3813 
3814   }
3815  this->__isset.set(34, true);
3816 
3817   if (UNLIKELY(!_readState.advanceToNextField(
3818           iprot,
3819           29,
3820           30,
3821           apache::thrift::protocol::T_I32))) {
3822     goto _loop;
3823   }
3824 _readField_fieldAC:
3825   {
3826     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumB>::readWithContext(*iprot, this->fieldAC, _readState);
3827 
3828   }
3829  this->__isset.set(35, true);
3830 
3831   if (UNLIKELY(!_readState.advanceToNextField(
3832           iprot,
3833           30,
3834           31,
3835           apache::thrift::protocol::T_I32))) {
3836     goto _loop;
3837   }
3838 _readField_fieldAD:
3839   {
3840     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::a::different::ns::AnEnum>::readWithContext(*iprot, this->fieldAD, _readState);
3841 
3842   }
3843  this->__isset.set(36, true);
3844 
3845   if (UNLIKELY(!_readState.advanceToNextField(
3846           iprot,
3847           31,
3848           32,
3849           apache::thrift::protocol::T_MAP))) {
3850     goto _loop;
3851   }
3852 _readField_fieldAE:
3853   {
3854     _readState.beforeSubobject(iprot);
3855     this->fieldAE = ::std::map<::std::string, ::std::int32_t>();
3856     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::readWithContext(*iprot, this->fieldAE, _readState);
3857     _readState.afterSubobject(iprot);
3858 
3859   }
3860  this->__isset.set(37, true);
3861 
3862   if (UNLIKELY(!_readState.advanceToNextField(
3863           iprot,
3864           32,
3865           33,
3866           apache::thrift::protocol::T_STRING))) {
3867     goto _loop;
3868   }
3869 _readField_fieldSD:
3870   {
3871     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::string, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionD>::readWithContext(*iprot, this->fieldSD, _readState);
3872 
3873   }
3874  this->__isset.set(38, true);
3875 
3876   if (UNLIKELY(!_readState.advanceToNextField(
3877           iprot,
3878           33,
3879           0,
3880           apache::thrift::protocol::T_STOP))) {
3881     goto _loop;
3882   }
3883 
3884 _end:
3885   _readState.readStructEnd(iprot);
3886 
3887   return;
3888 
3889 _loop:
3890   _readState.afterAdvanceFailure(iprot);
3891   if (_readState.atStop()) {
3892     goto _end;
3893   }
3894   if (iprot->kUsesFieldNames()) {
3895     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<containerStruct>>();
3896   }
3897 
3898   switch (_readState.fieldId) {
3899     case 1:
3900     {
3901       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
3902         goto _readField_fieldA;
3903       } else {
3904         goto _skip;
3905       }
3906     }
3907     case 101:
3908     {
3909       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
3910         goto _readField_req_fieldA;
3911       } else {
3912         goto _skip;
3913       }
3914     }
3915     case 201:
3916     {
3917       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
3918         goto _readField_opt_fieldA;
3919       } else {
3920         goto _skip;
3921       }
3922     }
3923     case 2:
3924     {
3925       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
3926         goto _readField_fieldB;
3927       } else {
3928         goto _skip;
3929       }
3930     }
3931     case 102:
3932     {
3933       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
3934         goto _readField_req_fieldB;
3935       } else {
3936         goto _skip;
3937       }
3938     }
3939     case 202:
3940     {
3941       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
3942         goto _readField_opt_fieldB;
3943       } else {
3944         goto _skip;
3945       }
3946     }
3947     case 3:
3948     {
3949       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
3950         goto _readField_fieldC;
3951       } else {
3952         goto _skip;
3953       }
3954     }
3955     case 103:
3956     {
3957       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
3958         goto _readField_req_fieldC;
3959       } else {
3960         goto _skip;
3961       }
3962     }
3963     case 203:
3964     {
3965       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
3966         goto _readField_opt_fieldC;
3967       } else {
3968         goto _skip;
3969       }
3970     }
3971     case 4:
3972     {
3973       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
3974         goto _readField_fieldD;
3975       } else {
3976         goto _skip;
3977       }
3978     }
3979     case 5:
3980     {
3981       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
3982         goto _readField_fieldE;
3983       } else {
3984         goto _skip;
3985       }
3986     }
3987     case 105:
3988     {
3989       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
3990         goto _readField_req_fieldE;
3991       } else {
3992         goto _skip;
3993       }
3994     }
3995     case 205:
3996     {
3997       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
3998         goto _readField_opt_fieldE;
3999       } else {
4000         goto _skip;
4001       }
4002     }
4003     case 6:
4004     {
4005       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4006         goto _readField_fieldF;
4007       } else {
4008         goto _skip;
4009       }
4010     }
4011     case 7:
4012     {
4013       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
4014         goto _readField_fieldG;
4015       } else {
4016         goto _skip;
4017       }
4018     }
4019     case 8:
4020     {
4021       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4022         goto _readField_fieldH;
4023       } else {
4024         goto _skip;
4025       }
4026     }
4027     case 9:
4028     {
4029       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
4030         goto _readField_fieldI;
4031       } else {
4032         goto _skip;
4033       }
4034     }
4035     case 10:
4036     {
4037       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
4038         goto _readField_fieldJ;
4039       } else {
4040         goto _skip;
4041       }
4042     }
4043     case 11:
4044     {
4045       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4046         goto _readField_fieldK;
4047       } else {
4048         goto _skip;
4049       }
4050     }
4051     case 12:
4052     {
4053       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
4054         goto _readField_fieldL;
4055       } else {
4056         goto _skip;
4057       }
4058     }
4059     case 13:
4060     {
4061       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
4062         goto _readField_fieldM;
4063       } else {
4064         goto _skip;
4065       }
4066     }
4067     case 14:
4068     {
4069       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4070         goto _readField_fieldN;
4071       } else {
4072         goto _skip;
4073       }
4074     }
4075     case 15:
4076     {
4077       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4078         goto _readField_fieldO;
4079       } else {
4080         goto _skip;
4081       }
4082     }
4083     case 16:
4084     {
4085       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4086         goto _readField_fieldP;
4087       } else {
4088         goto _skip;
4089       }
4090     }
4091     case 17:
4092     {
4093       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4094         goto _readField_fieldQ;
4095       } else {
4096         goto _skip;
4097       }
4098     }
4099     case 18:
4100     {
4101       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4102         goto _readField_fieldR;
4103       } else {
4104         goto _skip;
4105       }
4106     }
4107     case 118:
4108     {
4109       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4110         goto _readField_req_fieldR;
4111       } else {
4112         goto _skip;
4113       }
4114     }
4115     case 218:
4116     {
4117       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4118         goto _readField_opt_fieldR;
4119       } else {
4120         goto _skip;
4121       }
4122     }
4123     case 19:
4124     {
4125       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4126         goto _readField_fieldS;
4127       } else {
4128         goto _skip;
4129       }
4130     }
4131     case 21:
4132     {
4133       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4134         goto _readField_fieldT;
4135       } else {
4136         goto _skip;
4137       }
4138     }
4139     case 22:
4140     {
4141       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4142         goto _readField_fieldU;
4143       } else {
4144         goto _skip;
4145       }
4146     }
4147     case 23:
4148     {
4149       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4150         goto _readField_fieldV;
4151       } else {
4152         goto _skip;
4153       }
4154     }
4155     case 123:
4156     {
4157       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4158         goto _readField_req_fieldV;
4159       } else {
4160         goto _skip;
4161       }
4162     }
4163     case 223:
4164     {
4165       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4166         goto _readField_opt_fieldV;
4167       } else {
4168         goto _skip;
4169       }
4170     }
4171     case 24:
4172     {
4173       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
4174         goto _readField_fieldW;
4175       } else {
4176         goto _skip;
4177       }
4178     }
4179     case 25:
4180     {
4181       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4182         goto _readField_fieldX;
4183       } else {
4184         goto _skip;
4185       }
4186     }
4187     case 125:
4188     {
4189       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4190         goto _readField_req_fieldX;
4191       } else {
4192         goto _skip;
4193       }
4194     }
4195     case 225:
4196     {
4197       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
4198         goto _readField_opt_fieldX;
4199       } else {
4200         goto _skip;
4201       }
4202     }
4203     case 26:
4204     {
4205       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4206         goto _readField_fieldY;
4207       } else {
4208         goto _skip;
4209       }
4210     }
4211     case 27:
4212     {
4213       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
4214         goto _readField_fieldZ;
4215       } else {
4216         goto _skip;
4217       }
4218     }
4219     case 28:
4220     {
4221       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
4222         goto _readField_fieldAA;
4223       } else {
4224         goto _skip;
4225       }
4226     }
4227     case 29:
4228     {
4229       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
4230         goto _readField_fieldAB;
4231       } else {
4232         goto _skip;
4233       }
4234     }
4235     case 30:
4236     {
4237       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4238         goto _readField_fieldAC;
4239       } else {
4240         goto _skip;
4241       }
4242     }
4243     case 31:
4244     {
4245       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
4246         goto _readField_fieldAD;
4247       } else {
4248         goto _skip;
4249       }
4250     }
4251     case 32:
4252     {
4253       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
4254         goto _readField_fieldAE;
4255       } else {
4256         goto _skip;
4257       }
4258     }
4259     case 33:
4260     {
4261       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
4262         goto _readField_fieldSD;
4263       } else {
4264         goto _skip;
4265       }
4266     }
4267     default:
4268     {
4269 _skip:
4270       _readState.skip(iprot);
4271       _readState.readFieldEnd(iprot);
4272       _readState.readFieldBeginNoInline(iprot);
4273       goto _loop;
4274     }
4275   }
4276 }
4277 
4278 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const4279 uint32_t containerStruct::serializedSize(Protocol_ const* prot_) const {
4280   uint32_t xfer = 0;
4281   xfer += prot_->serializedStructSize("containerStruct");
4282   if (this->fieldA != bool()) {
4283     xfer += prot_->serializedFieldSize("fieldA", apache::thrift::protocol::T_BOOL, 1);
4284     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->fieldA);
4285   }
4286   {
4287     xfer += prot_->serializedFieldSize("req_fieldA", apache::thrift::protocol::T_BOOL, 101);
4288     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->req_fieldA);
4289   }
4290   if (this->__isset.get(1)) {
4291     xfer += prot_->serializedFieldSize("opt_fieldA", apache::thrift::protocol::T_BOOL, 201);
4292     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->opt_fieldA);
4293   }
4294   if (!this->fieldB.empty()) {
4295     xfer += prot_->serializedFieldSize("fieldB", apache::thrift::protocol::T_MAP, 2);
4296     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->fieldB);
4297   }
4298   {
4299     xfer += prot_->serializedFieldSize("req_fieldB", apache::thrift::protocol::T_MAP, 102);
4300     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->req_fieldB);
4301   }
4302   if (this->__isset.get(3)) {
4303     xfer += prot_->serializedFieldSize("opt_fieldB", apache::thrift::protocol::T_MAP, 202);
4304     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->opt_fieldB);
4305   }
4306   if (!this->fieldC.empty()) {
4307     xfer += prot_->serializedFieldSize("fieldC", apache::thrift::protocol::T_SET, 3);
4308     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->fieldC);
4309   }
4310   {
4311     xfer += prot_->serializedFieldSize("req_fieldC", apache::thrift::protocol::T_SET, 103);
4312     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->req_fieldC);
4313   }
4314   if (this->__isset.get(5)) {
4315     xfer += prot_->serializedFieldSize("opt_fieldC", apache::thrift::protocol::T_SET, 203);
4316     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->opt_fieldC);
4317   }
4318   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldD)) {
4319     xfer += prot_->serializedFieldSize("fieldD", apache::thrift::protocol::T_STRING, 4);
4320     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->fieldD);
4321   }
4322   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldE)) {
4323     xfer += prot_->serializedFieldSize("fieldE", apache::thrift::protocol::T_STRING, 5);
4324     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->fieldE);
4325   }
4326   {
4327     xfer += prot_->serializedFieldSize("req_fieldE", apache::thrift::protocol::T_STRING, 105);
4328     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->req_fieldE);
4329   }
4330   if (this->__isset.get(8)) {
4331     xfer += prot_->serializedFieldSize("opt_fieldE", apache::thrift::protocol::T_STRING, 205);
4332     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->opt_fieldE);
4333   }
4334   if (!this->fieldF.empty()) {
4335     xfer += prot_->serializedFieldSize("fieldF", apache::thrift::protocol::T_LIST, 6);
4336     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::vector<::std::vector<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldF);
4337   }
4338   if (!this->fieldG.empty()) {
4339     xfer += prot_->serializedFieldSize("fieldG", apache::thrift::protocol::T_MAP, 7);
4340     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>>>, ::std::map<::std::string, ::std::map<::std::string, ::std::map<::std::string, ::std::int32_t>>>>::serializedSize<false>(*prot_, this->fieldG);
4341   }
4342   if (!this->fieldH.empty()) {
4343     xfer += prot_->serializedFieldSize("fieldH", apache::thrift::protocol::T_LIST, 8);
4344     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, ::std::vector<::std::set<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldH);
4345   }
4346   if (this->fieldI != static_cast<bool>(true)) {
4347     xfer += prot_->serializedFieldSize("fieldI", apache::thrift::protocol::T_BOOL, 9);
4348     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->fieldI);
4349   }
4350   if (!this->fieldJ.empty()) {
4351     xfer += prot_->serializedFieldSize("fieldJ", apache::thrift::protocol::T_MAP, 10);
4352     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::map<::std::string, ::std::vector<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldJ);
4353   }
4354   if (!this->fieldK.empty()) {
4355     xfer += prot_->serializedFieldSize("fieldK", apache::thrift::protocol::T_LIST, 11);
4356     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>>>, ::std::vector<::std::vector<::std::vector<::std::vector<::std::int32_t>>>>>::serializedSize<false>(*prot_, this->fieldK);
4357   }
4358   if (!this->fieldL.empty()) {
4359     xfer += prot_->serializedFieldSize("fieldL", apache::thrift::protocol::T_SET, 12);
4360     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>>, ::std::set<::std::set<::std::set<bool>>>>::serializedSize<false>(*prot_, this->fieldL);
4361   }
4362   if (!this->fieldM.empty()) {
4363     xfer += prot_->serializedFieldSize("fieldM", apache::thrift::protocol::T_MAP, 13);
4364     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::set<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::apache::thrift::type_class::map<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::string>>, ::apache::thrift::type_class::string>>, ::std::map<::std::set<::std::vector<::std::int32_t>>, ::std::map<::std::vector<::std::set<::std::string>>, ::std::string>>>::serializedSize<false>(*prot_, this->fieldM);
4365   }
4366   if (this->fieldN != ::some::valid::ns::simpleTypeDef()) {
4367     xfer += prot_->serializedFieldSize("fieldN", apache::thrift::protocol::T_I32, 14);
4368     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::simpleTypeDef>::serializedSize<false>(*prot_, this->fieldN);
4369   }
4370   if (!this->fieldO.empty()) {
4371     xfer += prot_->serializedFieldSize("fieldO", apache::thrift::protocol::T_LIST, 15);
4372     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>, ::some::valid::ns::complexStructTypeDef>::serializedSize<false>(*prot_, this->fieldO);
4373   }
4374   if (!this->fieldP.empty()) {
4375     xfer += prot_->serializedFieldSize("fieldP", apache::thrift::protocol::T_LIST, 16);
4376     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>>>, ::std::vector<::some::valid::ns::mostComplexTypeDef>>::serializedSize<false>(*prot_, this->fieldP);
4377   }
4378   if (this->fieldQ != ::some::valid::ns::MyEnumA()) {
4379     xfer += prot_->serializedFieldSize("fieldQ", apache::thrift::protocol::T_I32, 17);
4380     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldQ);
4381   }
4382   if (this->fieldR !=  ::some::valid::ns::MyEnumA::fieldB) {
4383     xfer += prot_->serializedFieldSize("fieldR", apache::thrift::protocol::T_I32, 18);
4384     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldR);
4385   }
4386   {
4387     xfer += prot_->serializedFieldSize("req_fieldR", apache::thrift::protocol::T_I32, 118);
4388     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->req_fieldR);
4389   }
4390   if (this->__isset.get(22)) {
4391     xfer += prot_->serializedFieldSize("opt_fieldR", apache::thrift::protocol::T_I32, 218);
4392     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->opt_fieldR);
4393   }
4394   if (this->fieldS !=  ::some::valid::ns::MyEnumA::fieldB) {
4395     xfer += prot_->serializedFieldSize("fieldS", apache::thrift::protocol::T_I32, 19);
4396     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldS);
4397   }
4398   if (!this->fieldT.empty()) {
4399     xfer += prot_->serializedFieldSize("fieldT", apache::thrift::protocol::T_LIST, 21);
4400     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->fieldT);
4401   }
4402   if (!this->fieldU.empty()) {
4403     xfer += prot_->serializedFieldSize("fieldU", apache::thrift::protocol::T_LIST, 22);
4404     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->fieldU);
4405   }
4406   {
4407     xfer += prot_->serializedFieldSize("fieldV", apache::thrift::protocol::T_STRUCT, 23);
4408     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, this->fieldV);
4409   }
4410   {
4411     xfer += prot_->serializedFieldSize("req_fieldV", apache::thrift::protocol::T_STRUCT, 123);
4412     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, this->req_fieldV);
4413   }
4414   if (this->__isset.get(27)) {
4415     xfer += prot_->serializedFieldSize("opt_fieldV", apache::thrift::protocol::T_STRUCT, 223);
4416     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<false>(*prot_, this->opt_fieldV);
4417   }
4418   if (!this->fieldW.empty()) {
4419     xfer += prot_->serializedFieldSize("fieldW", apache::thrift::protocol::T_SET, 24);
4420     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, this->fieldW);
4421   }
4422   {
4423     xfer += prot_->serializedFieldSize("fieldX", apache::thrift::protocol::T_STRUCT, 25);
4424     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<false>(*prot_, this->fieldX);
4425   }
4426   {
4427     xfer += prot_->serializedFieldSize("req_fieldX", apache::thrift::protocol::T_STRUCT, 125);
4428     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<false>(*prot_, this->req_fieldX);
4429   }
4430   if (this->__isset.get(30)) {
4431     xfer += prot_->serializedFieldSize("opt_fieldX", apache::thrift::protocol::T_STRUCT, 225);
4432     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<false>(*prot_, this->opt_fieldX);
4433   }
4434   if (!this->fieldY.empty()) {
4435     xfer += prot_->serializedFieldSize("fieldY", apache::thrift::protocol::T_LIST, 26);
4436     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::ComplexUnion>>::serializedSize<false>(*prot_, this->fieldY);
4437   }
4438   if (!this->fieldZ.empty()) {
4439     xfer += prot_->serializedFieldSize("fieldZ", apache::thrift::protocol::T_SET, 27);
4440     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, this->fieldZ);
4441   }
4442   if (!this->fieldAA.empty()) {
4443     xfer += prot_->serializedFieldSize("fieldAA", apache::thrift::protocol::T_LIST, 28);
4444     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, this->fieldAA);
4445   }
4446   if (!this->fieldAB.empty()) {
4447     xfer += prot_->serializedFieldSize("fieldAB", apache::thrift::protocol::T_MAP, 29);
4448     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>, ::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::map<::some::valid::ns::IndirectionB, ::some::valid::ns::IndirectionC>>::serializedSize<false>(*prot_, this->fieldAB);
4449   }
4450   if (this->fieldAC != ::some::valid::ns::MyEnumB()) {
4451     xfer += prot_->serializedFieldSize("fieldAC", apache::thrift::protocol::T_I32, 30);
4452     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumB>::serializedSize<false>(*prot_, this->fieldAC);
4453   }
4454   if (this->fieldAD != ::a::different::ns::AnEnum()) {
4455     xfer += prot_->serializedFieldSize("fieldAD", apache::thrift::protocol::T_I32, 31);
4456     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::a::different::ns::AnEnum>::serializedSize<false>(*prot_, this->fieldAD);
4457   }
4458   if (!this->fieldAE.empty()) {
4459     xfer += prot_->serializedFieldSize("fieldAE", apache::thrift::protocol::T_MAP, 32);
4460     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->fieldAE);
4461   }
4462   if (!apache::thrift::StringTraits<::folly::remove_cvref_t<::folly::invoke_result_t<::apache::thrift::detail::apply_indirection_fn, FooBar const&>>>::isEmpty(::apache::thrift::apply_indirection(this->fieldSD))) {
4463     xfer += prot_->serializedFieldSize("fieldSD", apache::thrift::protocol::T_STRING, 33);
4464     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::string, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionD>::serializedSize<false>(*prot_, this->fieldSD);
4465   }
4466   xfer += prot_->serializedSizeStop();
4467   return xfer;
4468 }
4469 
4470 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const4471 uint32_t containerStruct::serializedSizeZC(Protocol_ const* prot_) const {
4472   uint32_t xfer = 0;
4473   xfer += prot_->serializedStructSize("containerStruct");
4474   if (this->fieldA != bool()) {
4475     xfer += prot_->serializedFieldSize("fieldA", apache::thrift::protocol::T_BOOL, 1);
4476     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->fieldA);
4477   }
4478   {
4479     xfer += prot_->serializedFieldSize("req_fieldA", apache::thrift::protocol::T_BOOL, 101);
4480     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->req_fieldA);
4481   }
4482   if (this->__isset.get(1)) {
4483     xfer += prot_->serializedFieldSize("opt_fieldA", apache::thrift::protocol::T_BOOL, 201);
4484     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->opt_fieldA);
4485   }
4486   if (!this->fieldB.empty()) {
4487     xfer += prot_->serializedFieldSize("fieldB", apache::thrift::protocol::T_MAP, 2);
4488     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->fieldB);
4489   }
4490   {
4491     xfer += prot_->serializedFieldSize("req_fieldB", apache::thrift::protocol::T_MAP, 102);
4492     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->req_fieldB);
4493   }
4494   if (this->__isset.get(3)) {
4495     xfer += prot_->serializedFieldSize("opt_fieldB", apache::thrift::protocol::T_MAP, 202);
4496     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::serializedSize<false>(*prot_, this->opt_fieldB);
4497   }
4498   if (!this->fieldC.empty()) {
4499     xfer += prot_->serializedFieldSize("fieldC", apache::thrift::protocol::T_SET, 3);
4500     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->fieldC);
4501   }
4502   {
4503     xfer += prot_->serializedFieldSize("req_fieldC", apache::thrift::protocol::T_SET, 103);
4504     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->req_fieldC);
4505   }
4506   if (this->__isset.get(5)) {
4507     xfer += prot_->serializedFieldSize("opt_fieldC", apache::thrift::protocol::T_SET, 203);
4508     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, this->opt_fieldC);
4509   }
4510   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldD)) {
4511     xfer += prot_->serializedFieldSize("fieldD", apache::thrift::protocol::T_STRING, 4);
4512     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->fieldD);
4513   }
4514   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldE)) {
4515     xfer += prot_->serializedFieldSize("fieldE", apache::thrift::protocol::T_STRING, 5);
4516     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->fieldE);
4517   }
4518   {
4519     xfer += prot_->serializedFieldSize("req_fieldE", apache::thrift::protocol::T_STRING, 105);
4520     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->req_fieldE);
4521   }
4522   if (this->__isset.get(8)) {
4523     xfer += prot_->serializedFieldSize("opt_fieldE", apache::thrift::protocol::T_STRING, 205);
4524     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->opt_fieldE);
4525   }
4526   if (!this->fieldF.empty()) {
4527     xfer += prot_->serializedFieldSize("fieldF", apache::thrift::protocol::T_LIST, 6);
4528     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::vector<::std::vector<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldF);
4529   }
4530   if (!this->fieldG.empty()) {
4531     xfer += prot_->serializedFieldSize("fieldG", apache::thrift::protocol::T_MAP, 7);
4532     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>>>, ::std::map<::std::string, ::std::map<::std::string, ::std::map<::std::string, ::std::int32_t>>>>::serializedSize<false>(*prot_, this->fieldG);
4533   }
4534   if (!this->fieldH.empty()) {
4535     xfer += prot_->serializedFieldSize("fieldH", apache::thrift::protocol::T_LIST, 8);
4536     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, ::std::vector<::std::set<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldH);
4537   }
4538   if (this->fieldI != static_cast<bool>(true)) {
4539     xfer += prot_->serializedFieldSize("fieldI", apache::thrift::protocol::T_BOOL, 9);
4540     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->fieldI);
4541   }
4542   if (!this->fieldJ.empty()) {
4543     xfer += prot_->serializedFieldSize("fieldJ", apache::thrift::protocol::T_MAP, 10);
4544     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::map<::std::string, ::std::vector<::std::int32_t>>>::serializedSize<false>(*prot_, this->fieldJ);
4545   }
4546   if (!this->fieldK.empty()) {
4547     xfer += prot_->serializedFieldSize("fieldK", apache::thrift::protocol::T_LIST, 11);
4548     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>>>, ::std::vector<::std::vector<::std::vector<::std::vector<::std::int32_t>>>>>::serializedSize<false>(*prot_, this->fieldK);
4549   }
4550   if (!this->fieldL.empty()) {
4551     xfer += prot_->serializedFieldSize("fieldL", apache::thrift::protocol::T_SET, 12);
4552     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>>, ::std::set<::std::set<::std::set<bool>>>>::serializedSize<false>(*prot_, this->fieldL);
4553   }
4554   if (!this->fieldM.empty()) {
4555     xfer += prot_->serializedFieldSize("fieldM", apache::thrift::protocol::T_MAP, 13);
4556     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::set<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::apache::thrift::type_class::map<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::string>>, ::apache::thrift::type_class::string>>, ::std::map<::std::set<::std::vector<::std::int32_t>>, ::std::map<::std::vector<::std::set<::std::string>>, ::std::string>>>::serializedSize<false>(*prot_, this->fieldM);
4557   }
4558   if (this->fieldN != ::some::valid::ns::simpleTypeDef()) {
4559     xfer += prot_->serializedFieldSize("fieldN", apache::thrift::protocol::T_I32, 14);
4560     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::simpleTypeDef>::serializedSize<false>(*prot_, this->fieldN);
4561   }
4562   if (!this->fieldO.empty()) {
4563     xfer += prot_->serializedFieldSize("fieldO", apache::thrift::protocol::T_LIST, 15);
4564     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>, ::some::valid::ns::complexStructTypeDef>::serializedSize<false>(*prot_, this->fieldO);
4565   }
4566   if (!this->fieldP.empty()) {
4567     xfer += prot_->serializedFieldSize("fieldP", apache::thrift::protocol::T_LIST, 16);
4568     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>>>, ::std::vector<::some::valid::ns::mostComplexTypeDef>>::serializedSize<false>(*prot_, this->fieldP);
4569   }
4570   if (this->fieldQ != ::some::valid::ns::MyEnumA()) {
4571     xfer += prot_->serializedFieldSize("fieldQ", apache::thrift::protocol::T_I32, 17);
4572     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldQ);
4573   }
4574   if (this->fieldR !=  ::some::valid::ns::MyEnumA::fieldB) {
4575     xfer += prot_->serializedFieldSize("fieldR", apache::thrift::protocol::T_I32, 18);
4576     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldR);
4577   }
4578   {
4579     xfer += prot_->serializedFieldSize("req_fieldR", apache::thrift::protocol::T_I32, 118);
4580     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->req_fieldR);
4581   }
4582   if (this->__isset.get(22)) {
4583     xfer += prot_->serializedFieldSize("opt_fieldR", apache::thrift::protocol::T_I32, 218);
4584     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->opt_fieldR);
4585   }
4586   if (this->fieldS !=  ::some::valid::ns::MyEnumA::fieldB) {
4587     xfer += prot_->serializedFieldSize("fieldS", apache::thrift::protocol::T_I32, 19);
4588     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::serializedSize<false>(*prot_, this->fieldS);
4589   }
4590   if (!this->fieldT.empty()) {
4591     xfer += prot_->serializedFieldSize("fieldT", apache::thrift::protocol::T_LIST, 21);
4592     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->fieldT);
4593   }
4594   if (!this->fieldU.empty()) {
4595     xfer += prot_->serializedFieldSize("fieldU", apache::thrift::protocol::T_LIST, 22);
4596     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::serializedSize<false>(*prot_, this->fieldU);
4597   }
4598   {
4599     xfer += prot_->serializedFieldSize("fieldV", apache::thrift::protocol::T_STRUCT, 23);
4600     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, this->fieldV);
4601   }
4602   {
4603     xfer += prot_->serializedFieldSize("req_fieldV", apache::thrift::protocol::T_STRUCT, 123);
4604     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, this->req_fieldV);
4605   }
4606   if (this->__isset.get(27)) {
4607     xfer += prot_->serializedFieldSize("opt_fieldV", apache::thrift::protocol::T_STRUCT, 223);
4608     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::serializedSize<true>(*prot_, this->opt_fieldV);
4609   }
4610   if (!this->fieldW.empty()) {
4611     xfer += prot_->serializedFieldSize("fieldW", apache::thrift::protocol::T_SET, 24);
4612     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::serializedSize<false>(*prot_, this->fieldW);
4613   }
4614   {
4615     xfer += prot_->serializedFieldSize("fieldX", apache::thrift::protocol::T_STRUCT, 25);
4616     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<true>(*prot_, this->fieldX);
4617   }
4618   {
4619     xfer += prot_->serializedFieldSize("req_fieldX", apache::thrift::protocol::T_STRUCT, 125);
4620     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<true>(*prot_, this->req_fieldX);
4621   }
4622   if (this->__isset.get(30)) {
4623     xfer += prot_->serializedFieldSize("opt_fieldX", apache::thrift::protocol::T_STRUCT, 225);
4624     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::serializedSize<true>(*prot_, this->opt_fieldX);
4625   }
4626   if (!this->fieldY.empty()) {
4627     xfer += prot_->serializedFieldSize("fieldY", apache::thrift::protocol::T_LIST, 26);
4628     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::ComplexUnion>>::serializedSize<false>(*prot_, this->fieldY);
4629   }
4630   if (!this->fieldZ.empty()) {
4631     xfer += prot_->serializedFieldSize("fieldZ", apache::thrift::protocol::T_SET, 27);
4632     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::serializedSize<false>(*prot_, this->fieldZ);
4633   }
4634   if (!this->fieldAA.empty()) {
4635     xfer += prot_->serializedFieldSize("fieldAA", apache::thrift::protocol::T_LIST, 28);
4636     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::serializedSize<false>(*prot_, this->fieldAA);
4637   }
4638   if (!this->fieldAB.empty()) {
4639     xfer += prot_->serializedFieldSize("fieldAB", apache::thrift::protocol::T_MAP, 29);
4640     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>, ::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::map<::some::valid::ns::IndirectionB, ::some::valid::ns::IndirectionC>>::serializedSize<false>(*prot_, this->fieldAB);
4641   }
4642   if (this->fieldAC != ::some::valid::ns::MyEnumB()) {
4643     xfer += prot_->serializedFieldSize("fieldAC", apache::thrift::protocol::T_I32, 30);
4644     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumB>::serializedSize<false>(*prot_, this->fieldAC);
4645   }
4646   if (this->fieldAD != ::a::different::ns::AnEnum()) {
4647     xfer += prot_->serializedFieldSize("fieldAD", apache::thrift::protocol::T_I32, 31);
4648     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::a::different::ns::AnEnum>::serializedSize<false>(*prot_, this->fieldAD);
4649   }
4650   if (!this->fieldAE.empty()) {
4651     xfer += prot_->serializedFieldSize("fieldAE", apache::thrift::protocol::T_MAP, 32);
4652     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::serializedSize<false>(*prot_, this->fieldAE);
4653   }
4654   if (!apache::thrift::StringTraits<::folly::remove_cvref_t<::folly::invoke_result_t<::apache::thrift::detail::apply_indirection_fn, FooBar const&>>>::isEmpty(::apache::thrift::apply_indirection(this->fieldSD))) {
4655     xfer += prot_->serializedFieldSize("fieldSD", apache::thrift::protocol::T_STRING, 33);
4656     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::string, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionD>::serializedSize<false>(*prot_, this->fieldSD);
4657   }
4658   xfer += prot_->serializedSizeStop();
4659   return xfer;
4660 }
4661 
4662 template <class Protocol_>
write(Protocol_ * prot_) const4663 uint32_t containerStruct::write(Protocol_* prot_) const {
4664   uint32_t xfer = 0;
4665   xfer += prot_->writeStructBegin("containerStruct");
4666   bool previousFieldHasValue = true;
4667   if (this->fieldA != bool()) {
4668     constexpr int16_t kPrevFieldId = 0;
4669     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 1, kPrevFieldId>(*prot_, "fieldA", previousFieldHasValue);
4670     previousFieldHasValue = true;
4671     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->fieldA);
4672     xfer += prot_->writeFieldEnd();
4673   } else {
4674     previousFieldHasValue = false;
4675   }
4676   {
4677     constexpr int16_t kPrevFieldId = 1;
4678     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 101, kPrevFieldId>(*prot_, "req_fieldA", previousFieldHasValue);
4679     previousFieldHasValue = true;
4680     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->req_fieldA);
4681     xfer += prot_->writeFieldEnd();
4682   }
4683   if (this->__isset.get(1)) {
4684     constexpr int16_t kPrevFieldId = 101;
4685     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 201, kPrevFieldId>(*prot_, "opt_fieldA", previousFieldHasValue);
4686     previousFieldHasValue = true;
4687     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->opt_fieldA);
4688     xfer += prot_->writeFieldEnd();
4689   } else {
4690     previousFieldHasValue = false;
4691   }
4692   if (!this->fieldB.empty()) {
4693     constexpr int16_t kPrevFieldId = 201;
4694     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 2, kPrevFieldId>(*prot_, "fieldB", previousFieldHasValue);
4695     previousFieldHasValue = true;
4696     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::write(*prot_, this->fieldB);
4697     xfer += prot_->writeFieldEnd();
4698   } else {
4699     previousFieldHasValue = false;
4700   }
4701   {
4702     constexpr int16_t kPrevFieldId = 2;
4703     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 102, kPrevFieldId>(*prot_, "req_fieldB", previousFieldHasValue);
4704     previousFieldHasValue = true;
4705     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::write(*prot_, this->req_fieldB);
4706     xfer += prot_->writeFieldEnd();
4707   }
4708   if (this->__isset.get(3)) {
4709     constexpr int16_t kPrevFieldId = 102;
4710     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 202, kPrevFieldId>(*prot_, "opt_fieldB", previousFieldHasValue);
4711     previousFieldHasValue = true;
4712     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, bool>>::write(*prot_, this->opt_fieldB);
4713     xfer += prot_->writeFieldEnd();
4714   } else {
4715     previousFieldHasValue = false;
4716   }
4717   if (!this->fieldC.empty()) {
4718     constexpr int16_t kPrevFieldId = 202;
4719     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 3, kPrevFieldId>(*prot_, "fieldC", previousFieldHasValue);
4720     previousFieldHasValue = true;
4721     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::write(*prot_, this->fieldC);
4722     xfer += prot_->writeFieldEnd();
4723   } else {
4724     previousFieldHasValue = false;
4725   }
4726   {
4727     constexpr int16_t kPrevFieldId = 3;
4728     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 103, kPrevFieldId>(*prot_, "req_fieldC", previousFieldHasValue);
4729     previousFieldHasValue = true;
4730     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::write(*prot_, this->req_fieldC);
4731     xfer += prot_->writeFieldEnd();
4732   }
4733   if (this->__isset.get(5)) {
4734     constexpr int16_t kPrevFieldId = 103;
4735     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 203, kPrevFieldId>(*prot_, "opt_fieldC", previousFieldHasValue);
4736     previousFieldHasValue = true;
4737     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::write(*prot_, this->opt_fieldC);
4738     xfer += prot_->writeFieldEnd();
4739   } else {
4740     previousFieldHasValue = false;
4741   }
4742   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldD)) {
4743     constexpr int16_t kPrevFieldId = 203;
4744     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 4, kPrevFieldId>(*prot_, "fieldD", previousFieldHasValue);
4745     previousFieldHasValue = true;
4746     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->fieldD);
4747     xfer += prot_->writeFieldEnd();
4748   } else {
4749     previousFieldHasValue = false;
4750   }
4751   if (!apache::thrift::StringTraits<std::string>::isEmpty(this->fieldE)) {
4752     constexpr int16_t kPrevFieldId = 4;
4753     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 5, kPrevFieldId>(*prot_, "fieldE", previousFieldHasValue);
4754     previousFieldHasValue = true;
4755     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->fieldE);
4756     xfer += prot_->writeFieldEnd();
4757   } else {
4758     previousFieldHasValue = false;
4759   }
4760   {
4761     constexpr int16_t kPrevFieldId = 5;
4762     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 105, kPrevFieldId>(*prot_, "req_fieldE", previousFieldHasValue);
4763     previousFieldHasValue = true;
4764     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->req_fieldE);
4765     xfer += prot_->writeFieldEnd();
4766   }
4767   if (this->__isset.get(8)) {
4768     constexpr int16_t kPrevFieldId = 105;
4769     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 205, kPrevFieldId>(*prot_, "opt_fieldE", previousFieldHasValue);
4770     previousFieldHasValue = true;
4771     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->opt_fieldE);
4772     xfer += prot_->writeFieldEnd();
4773   } else {
4774     previousFieldHasValue = false;
4775   }
4776   if (!this->fieldF.empty()) {
4777     constexpr int16_t kPrevFieldId = 205;
4778     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 6, kPrevFieldId>(*prot_, "fieldF", previousFieldHasValue);
4779     previousFieldHasValue = true;
4780     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::vector<::std::vector<::std::int32_t>>>::write(*prot_, this->fieldF);
4781     xfer += prot_->writeFieldEnd();
4782   } else {
4783     previousFieldHasValue = false;
4784   }
4785   if (!this->fieldG.empty()) {
4786     constexpr int16_t kPrevFieldId = 6;
4787     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 7, kPrevFieldId>(*prot_, "fieldG", previousFieldHasValue);
4788     previousFieldHasValue = true;
4789     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>>>, ::std::map<::std::string, ::std::map<::std::string, ::std::map<::std::string, ::std::int32_t>>>>::write(*prot_, this->fieldG);
4790     xfer += prot_->writeFieldEnd();
4791   } else {
4792     previousFieldHasValue = false;
4793   }
4794   if (!this->fieldH.empty()) {
4795     constexpr int16_t kPrevFieldId = 7;
4796     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 8, kPrevFieldId>(*prot_, "fieldH", previousFieldHasValue);
4797     previousFieldHasValue = true;
4798     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>, ::std::vector<::std::set<::std::int32_t>>>::write(*prot_, this->fieldH);
4799     xfer += prot_->writeFieldEnd();
4800   } else {
4801     previousFieldHasValue = false;
4802   }
4803   if (this->fieldI != static_cast<bool>(true)) {
4804     constexpr int16_t kPrevFieldId = 8;
4805     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 9, kPrevFieldId>(*prot_, "fieldI", previousFieldHasValue);
4806     previousFieldHasValue = true;
4807     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->fieldI);
4808     xfer += prot_->writeFieldEnd();
4809   } else {
4810     previousFieldHasValue = false;
4811   }
4812   if (!this->fieldJ.empty()) {
4813     constexpr int16_t kPrevFieldId = 9;
4814     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 10, kPrevFieldId>(*prot_, "fieldJ", previousFieldHasValue);
4815     previousFieldHasValue = true;
4816     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::std::map<::std::string, ::std::vector<::std::int32_t>>>::write(*prot_, this->fieldJ);
4817     xfer += prot_->writeFieldEnd();
4818   } else {
4819     previousFieldHasValue = false;
4820   }
4821   if (!this->fieldK.empty()) {
4822     constexpr int16_t kPrevFieldId = 10;
4823     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 11, kPrevFieldId>(*prot_, "fieldK", previousFieldHasValue);
4824     previousFieldHasValue = true;
4825     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>>>, ::std::vector<::std::vector<::std::vector<::std::vector<::std::int32_t>>>>>::write(*prot_, this->fieldK);
4826     xfer += prot_->writeFieldEnd();
4827   } else {
4828     previousFieldHasValue = false;
4829   }
4830   if (!this->fieldL.empty()) {
4831     constexpr int16_t kPrevFieldId = 11;
4832     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 12, kPrevFieldId>(*prot_, "fieldL", previousFieldHasValue);
4833     previousFieldHasValue = true;
4834     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>>>, ::std::set<::std::set<::std::set<bool>>>>::write(*prot_, this->fieldL);
4835     xfer += prot_->writeFieldEnd();
4836   } else {
4837     previousFieldHasValue = false;
4838   }
4839   if (!this->fieldM.empty()) {
4840     constexpr int16_t kPrevFieldId = 12;
4841     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 13, kPrevFieldId>(*prot_, "fieldM", previousFieldHasValue);
4842     previousFieldHasValue = true;
4843     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::set<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>>, ::apache::thrift::type_class::map<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::string>>, ::apache::thrift::type_class::string>>, ::std::map<::std::set<::std::vector<::std::int32_t>>, ::std::map<::std::vector<::std::set<::std::string>>, ::std::string>>>::write(*prot_, this->fieldM);
4844     xfer += prot_->writeFieldEnd();
4845   } else {
4846     previousFieldHasValue = false;
4847   }
4848   if (this->fieldN != ::some::valid::ns::simpleTypeDef()) {
4849     constexpr int16_t kPrevFieldId = 13;
4850     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 14, kPrevFieldId>(*prot_, "fieldN", previousFieldHasValue);
4851     previousFieldHasValue = true;
4852     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::simpleTypeDef>::write(*prot_, this->fieldN);
4853     xfer += prot_->writeFieldEnd();
4854   } else {
4855     previousFieldHasValue = false;
4856   }
4857   if (!this->fieldO.empty()) {
4858     constexpr int16_t kPrevFieldId = 14;
4859     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 15, kPrevFieldId>(*prot_, "fieldO", previousFieldHasValue);
4860     previousFieldHasValue = true;
4861     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>, ::some::valid::ns::complexStructTypeDef>::write(*prot_, this->fieldO);
4862     xfer += prot_->writeFieldEnd();
4863   } else {
4864     previousFieldHasValue = false;
4865   }
4866   if (!this->fieldP.empty()) {
4867     constexpr int16_t kPrevFieldId = 15;
4868     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 16, kPrevFieldId>(*prot_, "fieldP", previousFieldHasValue);
4869     previousFieldHasValue = true;
4870     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::list<::apache::thrift::type_class::map<::apache::thrift::type_class::structure, ::apache::thrift::type_class::structure>>>>, ::std::vector<::some::valid::ns::mostComplexTypeDef>>::write(*prot_, this->fieldP);
4871     xfer += prot_->writeFieldEnd();
4872   } else {
4873     previousFieldHasValue = false;
4874   }
4875   if (this->fieldQ != ::some::valid::ns::MyEnumA()) {
4876     constexpr int16_t kPrevFieldId = 16;
4877     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 17, kPrevFieldId>(*prot_, "fieldQ", previousFieldHasValue);
4878     previousFieldHasValue = true;
4879     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->fieldQ);
4880     xfer += prot_->writeFieldEnd();
4881   } else {
4882     previousFieldHasValue = false;
4883   }
4884   if (this->fieldR !=  ::some::valid::ns::MyEnumA::fieldB) {
4885     constexpr int16_t kPrevFieldId = 17;
4886     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 18, kPrevFieldId>(*prot_, "fieldR", previousFieldHasValue);
4887     previousFieldHasValue = true;
4888     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->fieldR);
4889     xfer += prot_->writeFieldEnd();
4890   } else {
4891     previousFieldHasValue = false;
4892   }
4893   {
4894     constexpr int16_t kPrevFieldId = 18;
4895     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 118, kPrevFieldId>(*prot_, "req_fieldR", previousFieldHasValue);
4896     previousFieldHasValue = true;
4897     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->req_fieldR);
4898     xfer += prot_->writeFieldEnd();
4899   }
4900   if (this->__isset.get(22)) {
4901     constexpr int16_t kPrevFieldId = 118;
4902     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 218, kPrevFieldId>(*prot_, "opt_fieldR", previousFieldHasValue);
4903     previousFieldHasValue = true;
4904     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->opt_fieldR);
4905     xfer += prot_->writeFieldEnd();
4906   } else {
4907     previousFieldHasValue = false;
4908   }
4909   if (this->fieldS !=  ::some::valid::ns::MyEnumA::fieldB) {
4910     constexpr int16_t kPrevFieldId = 218;
4911     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 19, kPrevFieldId>(*prot_, "fieldS", previousFieldHasValue);
4912     previousFieldHasValue = true;
4913     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumA>::write(*prot_, this->fieldS);
4914     xfer += prot_->writeFieldEnd();
4915   } else {
4916     previousFieldHasValue = false;
4917   }
4918   if (!this->fieldT.empty()) {
4919     constexpr int16_t kPrevFieldId = 19;
4920     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 21, kPrevFieldId>(*prot_, "fieldT", previousFieldHasValue);
4921     previousFieldHasValue = true;
4922     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::write(*prot_, this->fieldT);
4923     xfer += prot_->writeFieldEnd();
4924   } else {
4925     previousFieldHasValue = false;
4926   }
4927   if (!this->fieldU.empty()) {
4928     constexpr int16_t kPrevFieldId = 21;
4929     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 22, kPrevFieldId>(*prot_, "fieldU", previousFieldHasValue);
4930     previousFieldHasValue = true;
4931     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::enumeration>, ::std::vector<::some::valid::ns::MyEnumA>>::write(*prot_, this->fieldU);
4932     xfer += prot_->writeFieldEnd();
4933   } else {
4934     previousFieldHasValue = false;
4935   }
4936   {
4937     constexpr int16_t kPrevFieldId = 22;
4938     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 23, kPrevFieldId>(*prot_, "fieldV", previousFieldHasValue);
4939     previousFieldHasValue = true;
4940     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, this->fieldV);
4941     xfer += prot_->writeFieldEnd();
4942   }
4943   {
4944     constexpr int16_t kPrevFieldId = 23;
4945     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 123, kPrevFieldId>(*prot_, "req_fieldV", previousFieldHasValue);
4946     previousFieldHasValue = true;
4947     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, this->req_fieldV);
4948     xfer += prot_->writeFieldEnd();
4949   }
4950   if (this->__isset.get(27)) {
4951     constexpr int16_t kPrevFieldId = 123;
4952     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 223, kPrevFieldId>(*prot_, "opt_fieldV", previousFieldHasValue);
4953     previousFieldHasValue = true;
4954     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::MyStruct>::write(*prot_, this->opt_fieldV);
4955     xfer += prot_->writeFieldEnd();
4956   } else {
4957     previousFieldHasValue = false;
4958   }
4959   if (!this->fieldW.empty()) {
4960     constexpr int16_t kPrevFieldId = 223;
4961     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 24, kPrevFieldId>(*prot_, "fieldW", previousFieldHasValue);
4962     previousFieldHasValue = true;
4963     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::structure>, ::std::set<::some::valid::ns::MyStruct>>::write(*prot_, this->fieldW);
4964     xfer += prot_->writeFieldEnd();
4965   } else {
4966     previousFieldHasValue = false;
4967   }
4968   {
4969     constexpr int16_t kPrevFieldId = 24;
4970     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 25, kPrevFieldId>(*prot_, "fieldX", previousFieldHasValue);
4971     previousFieldHasValue = true;
4972     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::write(*prot_, this->fieldX);
4973     xfer += prot_->writeFieldEnd();
4974   }
4975   {
4976     constexpr int16_t kPrevFieldId = 25;
4977     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 125, kPrevFieldId>(*prot_, "req_fieldX", previousFieldHasValue);
4978     previousFieldHasValue = true;
4979     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::write(*prot_, this->req_fieldX);
4980     xfer += prot_->writeFieldEnd();
4981   }
4982   if (this->__isset.get(30)) {
4983     constexpr int16_t kPrevFieldId = 125;
4984     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 225, kPrevFieldId>(*prot_, "opt_fieldX", previousFieldHasValue);
4985     previousFieldHasValue = true;
4986     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::variant, ::some::valid::ns::ComplexUnion>::write(*prot_, this->opt_fieldX);
4987     xfer += prot_->writeFieldEnd();
4988   } else {
4989     previousFieldHasValue = false;
4990   }
4991   if (!this->fieldY.empty()) {
4992     constexpr int16_t kPrevFieldId = 225;
4993     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 26, kPrevFieldId>(*prot_, "fieldY", previousFieldHasValue);
4994     previousFieldHasValue = true;
4995     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::variant>, ::std::vector<::some::valid::ns::ComplexUnion>>::write(*prot_, this->fieldY);
4996     xfer += prot_->writeFieldEnd();
4997   } else {
4998     previousFieldHasValue = false;
4999   }
5000   if (!this->fieldZ.empty()) {
5001     constexpr int16_t kPrevFieldId = 26;
5002     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 27, kPrevFieldId>(*prot_, "fieldZ", previousFieldHasValue);
5003     previousFieldHasValue = true;
5004     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>, ::some::valid::ns::unionTypeDef>::write(*prot_, this->fieldZ);
5005     xfer += prot_->writeFieldEnd();
5006   } else {
5007     previousFieldHasValue = false;
5008   }
5009   if (!this->fieldAA.empty()) {
5010     constexpr int16_t kPrevFieldId = 27;
5011     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 28, kPrevFieldId>(*prot_, "fieldAA", previousFieldHasValue);
5012     previousFieldHasValue = true;
5013     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::set<::apache::thrift::type_class::variant>>, ::std::vector<::some::valid::ns::unionTypeDef>>::write(*prot_, this->fieldAA);
5014     xfer += prot_->writeFieldEnd();
5015   } else {
5016     previousFieldHasValue = false;
5017   }
5018   if (!this->fieldAB.empty()) {
5019     constexpr int16_t kPrevFieldId = 28;
5020     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 29, kPrevFieldId>(*prot_, "fieldAB", previousFieldHasValue);
5021     previousFieldHasValue = true;
5022     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>, ::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::map<::some::valid::ns::IndirectionB, ::some::valid::ns::IndirectionC>>::write(*prot_, this->fieldAB);
5023     xfer += prot_->writeFieldEnd();
5024   } else {
5025     previousFieldHasValue = false;
5026   }
5027   if (this->fieldAC != ::some::valid::ns::MyEnumB()) {
5028     constexpr int16_t kPrevFieldId = 29;
5029     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 30, kPrevFieldId>(*prot_, "fieldAC", previousFieldHasValue);
5030     previousFieldHasValue = true;
5031     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::some::valid::ns::MyEnumB>::write(*prot_, this->fieldAC);
5032     xfer += prot_->writeFieldEnd();
5033   } else {
5034     previousFieldHasValue = false;
5035   }
5036   if (this->fieldAD != ::a::different::ns::AnEnum()) {
5037     constexpr int16_t kPrevFieldId = 30;
5038     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 31, kPrevFieldId>(*prot_, "fieldAD", previousFieldHasValue);
5039     previousFieldHasValue = true;
5040     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::a::different::ns::AnEnum>::write(*prot_, this->fieldAD);
5041     xfer += prot_->writeFieldEnd();
5042   } else {
5043     previousFieldHasValue = false;
5044   }
5045   if (!this->fieldAE.empty()) {
5046     constexpr int16_t kPrevFieldId = 31;
5047     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 32, kPrevFieldId>(*prot_, "fieldAE", previousFieldHasValue);
5048     previousFieldHasValue = true;
5049     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::integral>, ::std::map<::std::string, ::std::int32_t>>::write(*prot_, this->fieldAE);
5050     xfer += prot_->writeFieldEnd();
5051   } else {
5052     previousFieldHasValue = false;
5053   }
5054   if (!apache::thrift::StringTraits<::folly::remove_cvref_t<::folly::invoke_result_t<::apache::thrift::detail::apply_indirection_fn, FooBar const&>>>::isEmpty(::apache::thrift::apply_indirection(this->fieldSD))) {
5055     constexpr int16_t kPrevFieldId = 32;
5056     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 33, kPrevFieldId>(*prot_, "fieldSD", previousFieldHasValue);
5057     previousFieldHasValue = true;
5058     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::string, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionD>::write(*prot_, this->fieldSD);
5059     xfer += prot_->writeFieldEnd();
5060   } else {
5061     previousFieldHasValue = false;
5062   }
5063   xfer += prot_->writeFieldStop();
5064   xfer += prot_->writeStructEnd();
5065   return xfer;
5066 }
5067 
5068 extern template void containerStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
5069 extern template uint32_t containerStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
5070 extern template uint32_t containerStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
5071 extern template uint32_t containerStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
5072 extern template void containerStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
5073 extern template uint32_t containerStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
5074 extern template uint32_t containerStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
5075 extern template uint32_t containerStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
5076 extern template void containerStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
5077 extern template uint32_t containerStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
5078 extern template uint32_t containerStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
5079 extern template uint32_t containerStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
5080 
5081 }}} // some::valid::ns
5082 namespace some { namespace valid { namespace ns {
5083 
5084 template <class Protocol_>
readNoXfer(Protocol_ * iprot)5085 void MyIncludedStruct::readNoXfer(Protocol_* iprot) {
5086   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
5087 
5088   _readState.readStructBegin(iprot);
5089 
5090   using apache::thrift::TProtocolException;
5091 
5092 
5093   if (UNLIKELY(!_readState.advanceToNextField(
5094           iprot,
5095           0,
5096           1,
5097           apache::thrift::protocol::T_I64))) {
5098     goto _loop;
5099   }
5100 _readField_MyIncludedInt:
5101   {
5102     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::a::different::ns::IncludedInt64>::readWithContext(*iprot, this->__fbthrift_field_MyIncludedInt, _readState);
5103 
5104   }
5105  this->__isset.set(0, true);
5106 
5107   if (UNLIKELY(!_readState.advanceToNextField(
5108           iprot,
5109           1,
5110           2,
5111           apache::thrift::protocol::T_STRUCT))) {
5112     goto _loop;
5113   }
5114 _readField_MyIncludedStruct:
5115   {
5116     _readState.beforeSubobject(iprot);
5117     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::readWithContext(*iprot, this->__fbthrift_field_MyIncludedStruct, _readState);
5118     _readState.afterSubobject(iprot);
5119 
5120   }
5121  this->__isset.set(1, true);
5122 
5123   if (UNLIKELY(!_readState.advanceToNextField(
5124           iprot,
5125           2,
5126           3,
5127           apache::thrift::protocol::T_STRUCT))) {
5128     goto _loop;
5129   }
5130 _readField_ARefField:
5131   {
5132     _readState.beforeSubobject(iprot);
5133     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::AStruct>>();
5134     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::readWithContext(*iprot, *ptr, _readState);
5135     this->ARefField = std::move(ptr);
5136     _readState.afterSubobject(iprot);
5137 
5138   }
5139 
5140   if (UNLIKELY(!_readState.advanceToNextField(
5141           iprot,
5142           3,
5143           4,
5144           apache::thrift::protocol::T_STRUCT))) {
5145     goto _loop;
5146   }
5147 _readField_ARequiredField:
5148   {
5149     _readState.beforeSubobject(iprot);
5150     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::readWithContext(*iprot, this->ARequiredField, _readState);
5151     _readState.afterSubobject(iprot);
5152 
5153   }
5154 
5155   if (UNLIKELY(!_readState.advanceToNextField(
5156           iprot,
5157           4,
5158           0,
5159           apache::thrift::protocol::T_STOP))) {
5160     goto _loop;
5161   }
5162 
5163 _end:
5164   _readState.readStructEnd(iprot);
5165 
5166   return;
5167 
5168 _loop:
5169   _readState.afterAdvanceFailure(iprot);
5170   if (_readState.atStop()) {
5171     goto _end;
5172   }
5173   if (iprot->kUsesFieldNames()) {
5174     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<MyIncludedStruct>>();
5175   }
5176 
5177   switch (_readState.fieldId) {
5178     case 1:
5179     {
5180       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
5181         goto _readField_MyIncludedInt;
5182       } else {
5183         goto _skip;
5184       }
5185     }
5186     case 2:
5187     {
5188       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
5189         goto _readField_MyIncludedStruct;
5190       } else {
5191         goto _skip;
5192       }
5193     }
5194     case 3:
5195     {
5196       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
5197         goto _readField_ARefField;
5198       } else {
5199         goto _skip;
5200       }
5201     }
5202     case 4:
5203     {
5204       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
5205         goto _readField_ARequiredField;
5206       } else {
5207         goto _skip;
5208       }
5209     }
5210     default:
5211     {
5212 _skip:
5213       _readState.skip(iprot);
5214       _readState.readFieldEnd(iprot);
5215       _readState.readFieldBeginNoInline(iprot);
5216       goto _loop;
5217     }
5218   }
5219 }
5220 
5221 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const5222 uint32_t MyIncludedStruct::serializedSize(Protocol_ const* prot_) const {
5223   uint32_t xfer = 0;
5224   xfer += prot_->serializedStructSize("MyIncludedStruct");
5225   if (this->__fbthrift_field_MyIncludedInt != static_cast<::a::different::ns::IncludedInt64>(42)) {
5226     xfer += prot_->serializedFieldSize("MyIncludedInt", apache::thrift::protocol::T_I64, 1);
5227     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::a::different::ns::IncludedInt64>::serializedSize<false>(*prot_, this->__fbthrift_field_MyIncludedInt);
5228   }
5229   {
5230     xfer += prot_->serializedFieldSize("MyIncludedStruct", apache::thrift::protocol::T_STRUCT, 2);
5231     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<false>(*prot_, this->__fbthrift_field_MyIncludedStruct);
5232   }
5233   if (this->ARefField) {
5234     xfer += prot_->serializedFieldSize("ARefField", apache::thrift::protocol::T_STRUCT, 3);
5235     if (this->ARefField) {
5236       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<false>(*prot_, *this->ARefField);
5237     } else {
5238       xfer += prot_->serializedStructSize("AStruct");
5239       xfer += prot_->serializedSizeStop();
5240     }
5241   }
5242   {
5243     xfer += prot_->serializedFieldSize("ARequiredField", apache::thrift::protocol::T_STRUCT, 4);
5244     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<false>(*prot_, this->ARequiredField);
5245   }
5246   xfer += prot_->serializedSizeStop();
5247   return xfer;
5248 }
5249 
5250 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const5251 uint32_t MyIncludedStruct::serializedSizeZC(Protocol_ const* prot_) const {
5252   uint32_t xfer = 0;
5253   xfer += prot_->serializedStructSize("MyIncludedStruct");
5254   if (this->__fbthrift_field_MyIncludedInt != static_cast<::a::different::ns::IncludedInt64>(42)) {
5255     xfer += prot_->serializedFieldSize("MyIncludedInt", apache::thrift::protocol::T_I64, 1);
5256     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::a::different::ns::IncludedInt64>::serializedSize<false>(*prot_, this->__fbthrift_field_MyIncludedInt);
5257   }
5258   {
5259     xfer += prot_->serializedFieldSize("MyIncludedStruct", apache::thrift::protocol::T_STRUCT, 2);
5260     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<true>(*prot_, this->__fbthrift_field_MyIncludedStruct);
5261   }
5262   if (this->ARefField) {
5263     xfer += prot_->serializedFieldSize("ARefField", apache::thrift::protocol::T_STRUCT, 3);
5264     if (this->ARefField) {
5265       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<true>(*prot_, *this->ARefField);
5266     } else {
5267       xfer += prot_->serializedStructSize("AStruct");
5268       xfer += prot_->serializedSizeStop();
5269     }
5270   }
5271   {
5272     xfer += prot_->serializedFieldSize("ARequiredField", apache::thrift::protocol::T_STRUCT, 4);
5273     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::serializedSize<true>(*prot_, this->ARequiredField);
5274   }
5275   xfer += prot_->serializedSizeStop();
5276   return xfer;
5277 }
5278 
5279 template <class Protocol_>
write(Protocol_ * prot_) const5280 uint32_t MyIncludedStruct::write(Protocol_* prot_) const {
5281   uint32_t xfer = 0;
5282   xfer += prot_->writeStructBegin("MyIncludedStruct");
5283   bool previousFieldHasValue = true;
5284   if (this->__fbthrift_field_MyIncludedInt != static_cast<::a::different::ns::IncludedInt64>(42)) {
5285     constexpr int16_t kPrevFieldId = 0;
5286     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "MyIncludedInt", previousFieldHasValue);
5287     previousFieldHasValue = true;
5288     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::a::different::ns::IncludedInt64>::write(*prot_, this->__fbthrift_field_MyIncludedInt);
5289     xfer += prot_->writeFieldEnd();
5290   } else {
5291     previousFieldHasValue = false;
5292   }
5293   {
5294     constexpr int16_t kPrevFieldId = 1;
5295     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 2, kPrevFieldId>(*prot_, "MyIncludedStruct", previousFieldHasValue);
5296     previousFieldHasValue = true;
5297     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::write(*prot_, this->__fbthrift_field_MyIncludedStruct);
5298     xfer += prot_->writeFieldEnd();
5299   }
5300   if (this->ARefField) {
5301     constexpr int16_t kPrevFieldId = 2;
5302     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 3, kPrevFieldId>(*prot_, "ARefField", previousFieldHasValue);
5303     previousFieldHasValue = true;
5304     if (this->ARefField) {
5305       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::write(*prot_, *this->ARefField);
5306     } else {
5307       xfer += prot_->writeStructBegin("AStruct");
5308       xfer += prot_->writeStructEnd();
5309       xfer += prot_->writeFieldStop();
5310     }
5311     xfer += prot_->writeFieldEnd();
5312   } else {
5313     previousFieldHasValue = false;
5314   }
5315   {
5316     constexpr int16_t kPrevFieldId = 3;
5317     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 4, kPrevFieldId>(*prot_, "ARequiredField", previousFieldHasValue);
5318     previousFieldHasValue = true;
5319     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::AStruct>::write(*prot_, this->ARequiredField);
5320     xfer += prot_->writeFieldEnd();
5321   }
5322   xfer += prot_->writeFieldStop();
5323   xfer += prot_->writeStructEnd();
5324   return xfer;
5325 }
5326 
5327 extern template void MyIncludedStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
5328 extern template uint32_t MyIncludedStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
5329 extern template uint32_t MyIncludedStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
5330 extern template uint32_t MyIncludedStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
5331 extern template void MyIncludedStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
5332 extern template uint32_t MyIncludedStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
5333 extern template uint32_t MyIncludedStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
5334 extern template uint32_t MyIncludedStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
5335 extern template void MyIncludedStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
5336 extern template uint32_t MyIncludedStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
5337 extern template uint32_t MyIncludedStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
5338 extern template uint32_t MyIncludedStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
5339 
5340 }}} // some::valid::ns
5341 namespace some { namespace valid { namespace ns {
5342 
5343 template <class Protocol_>
readNoXfer(Protocol_ * iprot)5344 void AnnotatedStruct::readNoXfer(Protocol_* iprot) {
5345   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
5346 
5347   _readState.readStructBegin(iprot);
5348 
5349   using apache::thrift::TProtocolException;
5350 
5351 
5352   if (UNLIKELY(!_readState.advanceToNextField(
5353           iprot,
5354           0,
5355           1,
5356           apache::thrift::protocol::T_STRUCT))) {
5357     goto _loop;
5358   }
5359 _readField_no_annotation:
5360   {
5361     _readState.beforeSubobject(iprot);
5362     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, this->no_annotation, _readState);
5363     _readState.afterSubobject(iprot);
5364 
5365   }
5366  this->__isset.set(0, true);
5367 
5368   if (UNLIKELY(!_readState.advanceToNextField(
5369           iprot,
5370           1,
5371           2,
5372           apache::thrift::protocol::T_STRUCT))) {
5373     goto _loop;
5374   }
5375 _readField_cpp_unique_ref:
5376   {
5377     _readState.beforeSubobject(iprot);
5378     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5379     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5380     this->cpp_unique_ref = std::move(ptr);
5381     _readState.afterSubobject(iprot);
5382 
5383   }
5384 
5385   if (UNLIKELY(!_readState.advanceToNextField(
5386           iprot,
5387           2,
5388           3,
5389           apache::thrift::protocol::T_STRUCT))) {
5390     goto _loop;
5391   }
5392 _readField_cpp2_unique_ref:
5393   {
5394     _readState.beforeSubobject(iprot);
5395     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5396     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5397     this->cpp2_unique_ref = std::move(ptr);
5398     _readState.afterSubobject(iprot);
5399 
5400   }
5401 
5402   if (UNLIKELY(!_readState.advanceToNextField(
5403           iprot,
5404           3,
5405           4,
5406           apache::thrift::protocol::T_MAP))) {
5407     goto _loop;
5408   }
5409 _readField_container_with_ref:
5410   {
5411     _readState.beforeSubobject(iprot);
5412     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::std::map<::std::int32_t, ::std::vector<::std::string>>>>();
5413     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::readWithContext(*iprot, *ptr, _readState);
5414     this->container_with_ref = std::move(ptr);
5415     _readState.afterSubobject(iprot);
5416 
5417   }
5418 
5419   if (UNLIKELY(!_readState.advanceToNextField(
5420           iprot,
5421           4,
5422           5,
5423           apache::thrift::protocol::T_STRUCT))) {
5424     goto _loop;
5425   }
5426 _readField_req_cpp_unique_ref:
5427   {
5428     _readState.beforeSubobject(iprot);
5429     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5430     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5431     this->req_cpp_unique_ref = std::move(ptr);
5432     _readState.afterSubobject(iprot);
5433 
5434   }
5435 
5436   if (UNLIKELY(!_readState.advanceToNextField(
5437           iprot,
5438           5,
5439           6,
5440           apache::thrift::protocol::T_STRUCT))) {
5441     goto _loop;
5442   }
5443 _readField_req_cpp2_unique_ref:
5444   {
5445     _readState.beforeSubobject(iprot);
5446     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5447     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5448     this->req_cpp2_unique_ref = std::move(ptr);
5449     _readState.afterSubobject(iprot);
5450 
5451   }
5452 
5453   if (UNLIKELY(!_readState.advanceToNextField(
5454           iprot,
5455           6,
5456           7,
5457           apache::thrift::protocol::T_LIST))) {
5458     goto _loop;
5459   }
5460 _readField_req_container_with_ref:
5461   {
5462     _readState.beforeSubobject(iprot);
5463     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::std::vector<::std::string>>>();
5464     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::readWithContext(*iprot, *ptr, _readState);
5465     this->req_container_with_ref = std::move(ptr);
5466     _readState.afterSubobject(iprot);
5467 
5468   }
5469 
5470   if (UNLIKELY(!_readState.advanceToNextField(
5471           iprot,
5472           7,
5473           8,
5474           apache::thrift::protocol::T_STRUCT))) {
5475     goto _loop;
5476   }
5477 _readField_opt_cpp_unique_ref:
5478   {
5479     _readState.beforeSubobject(iprot);
5480     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5481     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5482     this->opt_cpp_unique_ref = std::move(ptr);
5483     _readState.afterSubobject(iprot);
5484 
5485   }
5486 
5487   if (UNLIKELY(!_readState.advanceToNextField(
5488           iprot,
5489           8,
5490           9,
5491           apache::thrift::protocol::T_STRUCT))) {
5492     goto _loop;
5493   }
5494 _readField_opt_cpp2_unique_ref:
5495   {
5496     _readState.beforeSubobject(iprot);
5497     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5498     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5499     this->opt_cpp2_unique_ref = std::move(ptr);
5500     _readState.afterSubobject(iprot);
5501 
5502   }
5503 
5504   if (UNLIKELY(!_readState.advanceToNextField(
5505           iprot,
5506           9,
5507           10,
5508           apache::thrift::protocol::T_SET))) {
5509     goto _loop;
5510   }
5511 _readField_opt_container_with_ref:
5512   {
5513     _readState.beforeSubobject(iprot);
5514     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::std::set<::std::int32_t>>>();
5515     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::readWithContext(*iprot, *ptr, _readState);
5516     this->opt_container_with_ref = std::move(ptr);
5517     _readState.afterSubobject(iprot);
5518 
5519   }
5520 
5521   if (UNLIKELY(!_readState.advanceToNextField(
5522           iprot,
5523           10,
5524           11,
5525           apache::thrift::protocol::T_STRUCT))) {
5526     goto _loop;
5527   }
5528 _readField_ref_type_unique:
5529   {
5530     _readState.beforeSubobject(iprot);
5531     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5532     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5533     this->ref_type_unique = std::move(ptr);
5534     _readState.afterSubobject(iprot);
5535 
5536   }
5537 
5538   if (UNLIKELY(!_readState.advanceToNextField(
5539           iprot,
5540           11,
5541           12,
5542           apache::thrift::protocol::T_STRUCT))) {
5543     goto _loop;
5544   }
5545 _readField_ref_type_shared:
5546   {
5547     _readState.beforeSubobject(iprot);
5548     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<::some::valid::ns::containerStruct>>();
5549     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5550     this->ref_type_shared = std::move(ptr);
5551     _readState.afterSubobject(iprot);
5552 
5553   }
5554 
5555   if (UNLIKELY(!_readState.advanceToNextField(
5556           iprot,
5557           12,
5558           13,
5559           apache::thrift::protocol::T_MAP))) {
5560     goto _loop;
5561   }
5562 _readField_ref_type_const:
5563   {
5564     _readState.beforeSubobject(iprot);
5565     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<const ::std::map<::std::int32_t, ::std::vector<::std::string>>>>();
5566     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::readWithContext(*iprot, *ptr, _readState);
5567     this->ref_type_const = std::move(ptr);
5568     _readState.afterSubobject(iprot);
5569 
5570   }
5571 
5572   if (UNLIKELY(!_readState.advanceToNextField(
5573           iprot,
5574           13,
5575           14,
5576           apache::thrift::protocol::T_STRUCT))) {
5577     goto _loop;
5578   }
5579 _readField_req_ref_type_shared:
5580   {
5581     _readState.beforeSubobject(iprot);
5582     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<::some::valid::ns::containerStruct>>();
5583     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5584     this->req_ref_type_shared = std::move(ptr);
5585     _readState.afterSubobject(iprot);
5586 
5587   }
5588 
5589   if (UNLIKELY(!_readState.advanceToNextField(
5590           iprot,
5591           14,
5592           15,
5593           apache::thrift::protocol::T_STRUCT))) {
5594     goto _loop;
5595   }
5596 _readField_req_ref_type_const:
5597   {
5598     _readState.beforeSubobject(iprot);
5599     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<const ::some::valid::ns::containerStruct>>();
5600     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5601     this->req_ref_type_const = std::move(ptr);
5602     _readState.afterSubobject(iprot);
5603 
5604   }
5605 
5606   if (UNLIKELY(!_readState.advanceToNextField(
5607           iprot,
5608           15,
5609           16,
5610           apache::thrift::protocol::T_LIST))) {
5611     goto _loop;
5612   }
5613 _readField_req_ref_type_unique:
5614   {
5615     _readState.beforeSubobject(iprot);
5616     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::std::vector<::std::string>>>();
5617     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::readWithContext(*iprot, *ptr, _readState);
5618     this->req_ref_type_unique = std::move(ptr);
5619     _readState.afterSubobject(iprot);
5620 
5621   }
5622 
5623   if (UNLIKELY(!_readState.advanceToNextField(
5624           iprot,
5625           16,
5626           17,
5627           apache::thrift::protocol::T_STRUCT))) {
5628     goto _loop;
5629   }
5630 _readField_opt_ref_type_const:
5631   {
5632     _readState.beforeSubobject(iprot);
5633     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<const ::some::valid::ns::containerStruct>>();
5634     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5635     this->opt_ref_type_const = std::move(ptr);
5636     _readState.afterSubobject(iprot);
5637 
5638   }
5639 
5640   if (UNLIKELY(!_readState.advanceToNextField(
5641           iprot,
5642           17,
5643           18,
5644           apache::thrift::protocol::T_STRUCT))) {
5645     goto _loop;
5646   }
5647 _readField_opt_ref_type_unique:
5648   {
5649     _readState.beforeSubobject(iprot);
5650     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::unique_ptr<::some::valid::ns::containerStruct>>();
5651     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, *ptr, _readState);
5652     this->opt_ref_type_unique = std::move(ptr);
5653     _readState.afterSubobject(iprot);
5654 
5655   }
5656 
5657   if (UNLIKELY(!_readState.advanceToNextField(
5658           iprot,
5659           18,
5660           19,
5661           apache::thrift::protocol::T_SET))) {
5662     goto _loop;
5663   }
5664 _readField_opt_ref_type_shared:
5665   {
5666     _readState.beforeSubobject(iprot);
5667     auto ptr = ::apache::thrift::detail::make_mutable_smart_ptr<::std::shared_ptr<::std::set<::std::int32_t>>>();
5668     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::readWithContext(*iprot, *ptr, _readState);
5669     this->opt_ref_type_shared = std::move(ptr);
5670     _readState.afterSubobject(iprot);
5671 
5672   }
5673 
5674   if (UNLIKELY(!_readState.advanceToNextField(
5675           iprot,
5676           19,
5677           20,
5678           apache::thrift::protocol::T_I32))) {
5679     goto _loop;
5680   }
5681 _readField_base_type:
5682   {
5683     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::CppFakeI32>::readWithContext(*iprot, this->base_type, _readState);
5684 
5685   }
5686  this->__isset.set(1, true);
5687 
5688   if (UNLIKELY(!_readState.advanceToNextField(
5689           iprot,
5690           20,
5691           21,
5692           apache::thrift::protocol::T_LIST))) {
5693     goto _loop;
5694   }
5695 _readField_list_type:
5696   {
5697     _readState.beforeSubobject(iprot);
5698     this->list_type = ::some::valid::ns::FollySmallVectorI64();
5699     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::FollySmallVectorI64>::readWithContext(*iprot, this->list_type, _readState);
5700     _readState.afterSubobject(iprot);
5701 
5702   }
5703  this->__isset.set(2, true);
5704 
5705   if (UNLIKELY(!_readState.advanceToNextField(
5706           iprot,
5707           21,
5708           22,
5709           apache::thrift::protocol::T_SET))) {
5710     goto _loop;
5711   }
5712 _readField_set_type:
5713   {
5714     _readState.beforeSubobject(iprot);
5715     this->set_type = ::some::valid::ns::SortedVectorSetString();
5716     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::SortedVectorSetString>::readWithContext(*iprot, this->set_type, _readState);
5717     _readState.afterSubobject(iprot);
5718 
5719   }
5720  this->__isset.set(3, true);
5721 
5722   if (UNLIKELY(!_readState.advanceToNextField(
5723           iprot,
5724           22,
5725           23,
5726           apache::thrift::protocol::T_MAP))) {
5727     goto _loop;
5728   }
5729 _readField_map_type:
5730   {
5731     _readState.beforeSubobject(iprot);
5732     this->map_type = ::some::valid::ns::FakeMap();
5733     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::floating_point>, ::some::valid::ns::FakeMap>::readWithContext(*iprot, this->map_type, _readState);
5734     _readState.afterSubobject(iprot);
5735 
5736   }
5737  this->__isset.set(4, true);
5738 
5739   if (UNLIKELY(!_readState.advanceToNextField(
5740           iprot,
5741           23,
5742           24,
5743           apache::thrift::protocol::T_MAP))) {
5744     goto _loop;
5745   }
5746 _readField_map_struct_type:
5747   {
5748     _readState.beforeSubobject(iprot);
5749     this->map_struct_type = ::some::valid::ns::UnorderedMapStruct();
5750     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, ::some::valid::ns::UnorderedMapStruct>::readWithContext(*iprot, this->map_struct_type, _readState);
5751     _readState.afterSubobject(iprot);
5752 
5753   }
5754  this->__isset.set(5, true);
5755 
5756   if (UNLIKELY(!_readState.advanceToNextField(
5757           iprot,
5758           24,
5759           25,
5760           apache::thrift::protocol::T_STRING))) {
5761     goto _loop;
5762   }
5763 _readField_iobuf_type:
5764   {
5765     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::readWithContext(*iprot, this->iobuf_type, _readState);
5766 
5767   }
5768  this->__isset.set(6, true);
5769 
5770   if (UNLIKELY(!_readState.advanceToNextField(
5771           iprot,
5772           25,
5773           26,
5774           apache::thrift::protocol::T_STRING))) {
5775     goto _loop;
5776   }
5777 _readField_iobuf_ptr:
5778   {
5779     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::readWithContext(*iprot, this->iobuf_ptr, _readState);
5780 
5781   }
5782  this->__isset.set(7, true);
5783 
5784   if (UNLIKELY(!_readState.advanceToNextField(
5785           iprot,
5786           26,
5787           27,
5788           apache::thrift::protocol::T_LIST))) {
5789     goto _loop;
5790   }
5791 _readField_list_i32_template:
5792   {
5793     _readState.beforeSubobject(iprot);
5794     this->list_i32_template = std::list<::std::int32_t>();
5795     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, std::list<::std::int32_t>>::readWithContext(*iprot, this->list_i32_template, _readState);
5796     _readState.afterSubobject(iprot);
5797 
5798   }
5799  this->__isset.set(8, true);
5800 
5801   if (UNLIKELY(!_readState.advanceToNextField(
5802           iprot,
5803           27,
5804           28,
5805           apache::thrift::protocol::T_LIST))) {
5806     goto _loop;
5807   }
5808 _readField_list_string_template:
5809   {
5810     _readState.beforeSubobject(iprot);
5811     this->list_string_template = std::deque<::std::string>();
5812     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, std::deque<::std::string>>::readWithContext(*iprot, this->list_string_template, _readState);
5813     _readState.afterSubobject(iprot);
5814 
5815   }
5816  this->__isset.set(9, true);
5817 
5818   if (UNLIKELY(!_readState.advanceToNextField(
5819           iprot,
5820           28,
5821           29,
5822           apache::thrift::protocol::T_SET))) {
5823     goto _loop;
5824   }
5825 _readField_set_template:
5826   {
5827     _readState.beforeSubobject(iprot);
5828     this->set_template = folly::sorted_vector_set<::std::string>();
5829     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, folly::sorted_vector_set<::std::string>>::readWithContext(*iprot, this->set_template, _readState);
5830     _readState.afterSubobject(iprot);
5831 
5832   }
5833  this->__isset.set(10, true);
5834 
5835   if (UNLIKELY(!_readState.advanceToNextField(
5836           iprot,
5837           29,
5838           30,
5839           apache::thrift::protocol::T_MAP))) {
5840     goto _loop;
5841   }
5842 _readField_map_template:
5843   {
5844     _readState.beforeSubobject(iprot);
5845     this->map_template = folly::sorted_vector_map<::std::int64_t, ::std::string>();
5846     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, folly::sorted_vector_map<::std::int64_t, ::std::string>>::readWithContext(*iprot, this->map_template, _readState);
5847     _readState.afterSubobject(iprot);
5848 
5849   }
5850  this->__isset.set(11, true);
5851 
5852   if (UNLIKELY(!_readState.advanceToNextField(
5853           iprot,
5854           30,
5855           31,
5856           apache::thrift::protocol::T_LIST))) {
5857     goto _loop;
5858   }
5859 _readField_typedef_list_template:
5860   {
5861     _readState.beforeSubobject(iprot);
5862     this->typedef_list_template = ::some::valid::ns::std_list();
5863     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::std_list>::readWithContext(*iprot, this->typedef_list_template, _readState);
5864     _readState.afterSubobject(iprot);
5865 
5866   }
5867  this->__isset.set(12, true);
5868 
5869   if (UNLIKELY(!_readState.advanceToNextField(
5870           iprot,
5871           31,
5872           32,
5873           apache::thrift::protocol::T_LIST))) {
5874     goto _loop;
5875   }
5876 _readField_typedef_deque_template:
5877   {
5878     _readState.beforeSubobject(iprot);
5879     this->typedef_deque_template = ::some::valid::ns::std_deque();
5880     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::some::valid::ns::std_deque>::readWithContext(*iprot, this->typedef_deque_template, _readState);
5881     _readState.afterSubobject(iprot);
5882 
5883   }
5884  this->__isset.set(13, true);
5885 
5886   if (UNLIKELY(!_readState.advanceToNextField(
5887           iprot,
5888           32,
5889           33,
5890           apache::thrift::protocol::T_SET))) {
5891     goto _loop;
5892   }
5893 _readField_typedef_set_template:
5894   {
5895     _readState.beforeSubobject(iprot);
5896     this->typedef_set_template = ::some::valid::ns::folly_set();
5897     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::folly_set>::readWithContext(*iprot, this->typedef_set_template, _readState);
5898     _readState.afterSubobject(iprot);
5899 
5900   }
5901  this->__isset.set(14, true);
5902 
5903   if (UNLIKELY(!_readState.advanceToNextField(
5904           iprot,
5905           33,
5906           34,
5907           apache::thrift::protocol::T_MAP))) {
5908     goto _loop;
5909   }
5910 _readField_typedef_map_template:
5911   {
5912     _readState.beforeSubobject(iprot);
5913     this->typedef_map_template = ::some::valid::ns::folly_map();
5914     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, ::some::valid::ns::folly_map>::readWithContext(*iprot, this->typedef_map_template, _readState);
5915     _readState.afterSubobject(iprot);
5916 
5917   }
5918  this->__isset.set(15, true);
5919 
5920   if (UNLIKELY(!_readState.advanceToNextField(
5921           iprot,
5922           34,
5923           35,
5924           apache::thrift::protocol::T_I64))) {
5925     goto _loop;
5926   }
5927 _readField_indirection_a:
5928   {
5929     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionA>::readWithContext(*iprot, this->indirection_a, _readState);
5930 
5931   }
5932  this->__isset.set(16, true);
5933 
5934   if (UNLIKELY(!_readState.advanceToNextField(
5935           iprot,
5936           35,
5937           36,
5938           apache::thrift::protocol::T_LIST))) {
5939     goto _loop;
5940   }
5941 _readField_indirection_b:
5942   {
5943     _readState.beforeSubobject(iprot);
5944     this->indirection_b = ::std::vector<::some::valid::ns::IndirectionB>();
5945     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>>, ::std::vector<::some::valid::ns::IndirectionB>>::readWithContext(*iprot, this->indirection_b, _readState);
5946     _readState.afterSubobject(iprot);
5947 
5948   }
5949  this->__isset.set(17, true);
5950 
5951   if (UNLIKELY(!_readState.advanceToNextField(
5952           iprot,
5953           36,
5954           37,
5955           apache::thrift::protocol::T_SET))) {
5956     goto _loop;
5957   }
5958 _readField_indirection_c:
5959   {
5960     _readState.beforeSubobject(iprot);
5961     this->indirection_c = ::std::set<::some::valid::ns::IndirectionC>();
5962     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::set<::some::valid::ns::IndirectionC>>::readWithContext(*iprot, this->indirection_c, _readState);
5963     _readState.afterSubobject(iprot);
5964 
5965   }
5966  this->__isset.set(18, true);
5967 
5968   if (UNLIKELY(!_readState.advanceToNextField(
5969           iprot,
5970           37,
5971           38,
5972           apache::thrift::protocol::T_STRING))) {
5973     goto _loop;
5974   }
5975 _readField_iobuf_type_val:
5976   {
5977     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::readWithContext(*iprot, this->iobuf_type_val, _readState);
5978 
5979   }
5980  this->__isset.set(19, true);
5981 
5982   if (UNLIKELY(!_readState.advanceToNextField(
5983           iprot,
5984           38,
5985           39,
5986           apache::thrift::protocol::T_STRING))) {
5987     goto _loop;
5988   }
5989 _readField_iobuf_ptr_val:
5990   {
5991     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::readWithContext(*iprot, this->iobuf_ptr_val, _readState);
5992 
5993   }
5994  this->__isset.set(20, true);
5995 
5996   if (UNLIKELY(!_readState.advanceToNextField(
5997           iprot,
5998           39,
5999           40,
6000           apache::thrift::protocol::T_STRUCT))) {
6001     goto _loop;
6002   }
6003 _readField_struct_struct:
6004   {
6005     _readState.beforeSubobject(iprot);
6006     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::readWithContext(*iprot, this->struct_struct, _readState);
6007     _readState.afterSubobject(iprot);
6008 
6009   }
6010  this->__isset.set(21, true);
6011 
6012   if (UNLIKELY(!_readState.advanceToNextField(
6013           iprot,
6014           40,
6015           0,
6016           apache::thrift::protocol::T_STOP))) {
6017     goto _loop;
6018   }
6019 
6020 _end:
6021   _readState.readStructEnd(iprot);
6022 
6023   return;
6024 
6025 _loop:
6026   _readState.afterAdvanceFailure(iprot);
6027   if (_readState.atStop()) {
6028     goto _end;
6029   }
6030   if (iprot->kUsesFieldNames()) {
6031     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<AnnotatedStruct>>();
6032   }
6033 
6034   switch (_readState.fieldId) {
6035     case 1:
6036     {
6037       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6038         goto _readField_no_annotation;
6039       } else {
6040         goto _skip;
6041       }
6042     }
6043     case 2:
6044     {
6045       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6046         goto _readField_cpp_unique_ref;
6047       } else {
6048         goto _skip;
6049       }
6050     }
6051     case 3:
6052     {
6053       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6054         goto _readField_cpp2_unique_ref;
6055       } else {
6056         goto _skip;
6057       }
6058     }
6059     case 4:
6060     {
6061       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6062         goto _readField_container_with_ref;
6063       } else {
6064         goto _skip;
6065       }
6066     }
6067     case 5:
6068     {
6069       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6070         goto _readField_req_cpp_unique_ref;
6071       } else {
6072         goto _skip;
6073       }
6074     }
6075     case 6:
6076     {
6077       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6078         goto _readField_req_cpp2_unique_ref;
6079       } else {
6080         goto _skip;
6081       }
6082     }
6083     case 7:
6084     {
6085       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6086         goto _readField_req_container_with_ref;
6087       } else {
6088         goto _skip;
6089       }
6090     }
6091     case 8:
6092     {
6093       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6094         goto _readField_opt_cpp_unique_ref;
6095       } else {
6096         goto _skip;
6097       }
6098     }
6099     case 9:
6100     {
6101       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6102         goto _readField_opt_cpp2_unique_ref;
6103       } else {
6104         goto _skip;
6105       }
6106     }
6107     case 10:
6108     {
6109       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6110         goto _readField_opt_container_with_ref;
6111       } else {
6112         goto _skip;
6113       }
6114     }
6115     case 11:
6116     {
6117       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6118         goto _readField_ref_type_unique;
6119       } else {
6120         goto _skip;
6121       }
6122     }
6123     case 12:
6124     {
6125       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6126         goto _readField_ref_type_shared;
6127       } else {
6128         goto _skip;
6129       }
6130     }
6131     case 13:
6132     {
6133       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6134         goto _readField_ref_type_const;
6135       } else {
6136         goto _skip;
6137       }
6138     }
6139     case 14:
6140     {
6141       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6142         goto _readField_req_ref_type_shared;
6143       } else {
6144         goto _skip;
6145       }
6146     }
6147     case 15:
6148     {
6149       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6150         goto _readField_req_ref_type_const;
6151       } else {
6152         goto _skip;
6153       }
6154     }
6155     case 16:
6156     {
6157       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6158         goto _readField_req_ref_type_unique;
6159       } else {
6160         goto _skip;
6161       }
6162     }
6163     case 17:
6164     {
6165       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6166         goto _readField_opt_ref_type_const;
6167       } else {
6168         goto _skip;
6169       }
6170     }
6171     case 18:
6172     {
6173       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6174         goto _readField_opt_ref_type_unique;
6175       } else {
6176         goto _skip;
6177       }
6178     }
6179     case 19:
6180     {
6181       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6182         goto _readField_opt_ref_type_shared;
6183       } else {
6184         goto _skip;
6185       }
6186     }
6187     case 20:
6188     {
6189       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
6190         goto _readField_base_type;
6191       } else {
6192         goto _skip;
6193       }
6194     }
6195     case 21:
6196     {
6197       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6198         goto _readField_list_type;
6199       } else {
6200         goto _skip;
6201       }
6202     }
6203     case 22:
6204     {
6205       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6206         goto _readField_set_type;
6207       } else {
6208         goto _skip;
6209       }
6210     }
6211     case 23:
6212     {
6213       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6214         goto _readField_map_type;
6215       } else {
6216         goto _skip;
6217       }
6218     }
6219     case 24:
6220     {
6221       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6222         goto _readField_map_struct_type;
6223       } else {
6224         goto _skip;
6225       }
6226     }
6227     case 25:
6228     {
6229       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
6230         goto _readField_iobuf_type;
6231       } else {
6232         goto _skip;
6233       }
6234     }
6235     case 26:
6236     {
6237       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
6238         goto _readField_iobuf_ptr;
6239       } else {
6240         goto _skip;
6241       }
6242     }
6243     case 27:
6244     {
6245       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6246         goto _readField_list_i32_template;
6247       } else {
6248         goto _skip;
6249       }
6250     }
6251     case 28:
6252     {
6253       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6254         goto _readField_list_string_template;
6255       } else {
6256         goto _skip;
6257       }
6258     }
6259     case 29:
6260     {
6261       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6262         goto _readField_set_template;
6263       } else {
6264         goto _skip;
6265       }
6266     }
6267     case 30:
6268     {
6269       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6270         goto _readField_map_template;
6271       } else {
6272         goto _skip;
6273       }
6274     }
6275     case 31:
6276     {
6277       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6278         goto _readField_typedef_list_template;
6279       } else {
6280         goto _skip;
6281       }
6282     }
6283     case 32:
6284     {
6285       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6286         goto _readField_typedef_deque_template;
6287       } else {
6288         goto _skip;
6289       }
6290     }
6291     case 33:
6292     {
6293       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6294         goto _readField_typedef_set_template;
6295       } else {
6296         goto _skip;
6297       }
6298     }
6299     case 34:
6300     {
6301       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
6302         goto _readField_typedef_map_template;
6303       } else {
6304         goto _skip;
6305       }
6306     }
6307     case 35:
6308     {
6309       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
6310         goto _readField_indirection_a;
6311       } else {
6312         goto _skip;
6313       }
6314     }
6315     case 36:
6316     {
6317       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
6318         goto _readField_indirection_b;
6319       } else {
6320         goto _skip;
6321       }
6322     }
6323     case 37:
6324     {
6325       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
6326         goto _readField_indirection_c;
6327       } else {
6328         goto _skip;
6329       }
6330     }
6331     case 38:
6332     {
6333       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
6334         goto _readField_iobuf_type_val;
6335       } else {
6336         goto _skip;
6337       }
6338     }
6339     case 39:
6340     {
6341       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
6342         goto _readField_iobuf_ptr_val;
6343       } else {
6344         goto _skip;
6345       }
6346     }
6347     case 40:
6348     {
6349       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
6350         goto _readField_struct_struct;
6351       } else {
6352         goto _skip;
6353       }
6354     }
6355     default:
6356     {
6357 _skip:
6358       _readState.skip(iprot);
6359       _readState.readFieldEnd(iprot);
6360       _readState.readFieldBeginNoInline(iprot);
6361       goto _loop;
6362     }
6363   }
6364 }
6365 
6366 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const6367 uint32_t AnnotatedStruct::serializedSize(Protocol_ const* prot_) const {
6368   uint32_t xfer = 0;
6369   xfer += prot_->serializedStructSize("AnnotatedStruct");
6370   {
6371     xfer += prot_->serializedFieldSize("no_annotation", apache::thrift::protocol::T_STRUCT, 1);
6372     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, this->no_annotation);
6373   }
6374   if (this->cpp_unique_ref) {
6375     xfer += prot_->serializedFieldSize("cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 2);
6376     if (this->cpp_unique_ref) {
6377       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->cpp_unique_ref);
6378     } else {
6379       xfer += prot_->serializedStructSize("containerStruct");
6380       xfer += prot_->serializedSizeStop();
6381     }
6382   }
6383   if (this->cpp2_unique_ref) {
6384     xfer += prot_->serializedFieldSize("cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 3);
6385     if (this->cpp2_unique_ref) {
6386       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->cpp2_unique_ref);
6387     } else {
6388       xfer += prot_->serializedStructSize("containerStruct");
6389       xfer += prot_->serializedSizeStop();
6390     }
6391   }
6392   if (this->container_with_ref && !this->container_with_ref->empty()) {
6393     xfer += prot_->serializedFieldSize("container_with_ref", apache::thrift::protocol::T_MAP, 4);
6394     if (this->container_with_ref) {
6395       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::serializedSize<false>(*prot_, *this->container_with_ref);
6396     } else {
6397       xfer += prot_->serializedSizeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6398       xfer += prot_->serializedSizeMapEnd();
6399     }
6400   }
6401   {
6402     xfer += prot_->serializedFieldSize("req_cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 5);
6403     if (this->req_cpp_unique_ref) {
6404       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->req_cpp_unique_ref);
6405     } else {
6406       xfer += prot_->serializedStructSize("containerStruct");
6407       xfer += prot_->serializedSizeStop();
6408     }
6409   }
6410   {
6411     xfer += prot_->serializedFieldSize("req_cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 6);
6412     if (this->req_cpp2_unique_ref) {
6413       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->req_cpp2_unique_ref);
6414     } else {
6415       xfer += prot_->serializedStructSize("containerStruct");
6416       xfer += prot_->serializedSizeStop();
6417     }
6418   }
6419   {
6420     xfer += prot_->serializedFieldSize("req_container_with_ref", apache::thrift::protocol::T_LIST, 7);
6421     if (this->req_container_with_ref) {
6422       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, *this->req_container_with_ref);
6423     } else {
6424       xfer += prot_->serializedSizeListBegin(apache::thrift::protocol::T_STRING, 0);
6425       xfer += prot_->serializedSizeListEnd();
6426     }
6427   }
6428   if (this->opt_cpp_unique_ref) {
6429     xfer += prot_->serializedFieldSize("opt_cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 8);
6430     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->opt_cpp_unique_ref);
6431   }
6432   if (this->opt_cpp2_unique_ref) {
6433     xfer += prot_->serializedFieldSize("opt_cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 9);
6434     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->opt_cpp2_unique_ref);
6435   }
6436   if (this->opt_container_with_ref) {
6437     xfer += prot_->serializedFieldSize("opt_container_with_ref", apache::thrift::protocol::T_SET, 10);
6438     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, *this->opt_container_with_ref);
6439   }
6440   if (this->ref_type_unique) {
6441     xfer += prot_->serializedFieldSize("ref_type_unique", apache::thrift::protocol::T_STRUCT, 11);
6442     if (this->ref_type_unique) {
6443       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->ref_type_unique);
6444     } else {
6445       xfer += prot_->serializedStructSize("containerStruct");
6446       xfer += prot_->serializedSizeStop();
6447     }
6448   }
6449   {
6450     xfer += prot_->serializedFieldSize("ref_type_shared", apache::thrift::protocol::T_STRUCT, 12);
6451     if (this->ref_type_shared) {
6452       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->ref_type_shared);
6453     } else {
6454       xfer += prot_->serializedStructSize("containerStruct");
6455       xfer += prot_->serializedSizeStop();
6456     }
6457   }
6458   if (this->ref_type_const && !this->ref_type_const->empty()) {
6459     xfer += prot_->serializedFieldSize("ref_type_const", apache::thrift::protocol::T_MAP, 13);
6460     if (this->ref_type_const) {
6461       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::serializedSize<false>(*prot_, *this->ref_type_const);
6462     } else {
6463       xfer += prot_->serializedSizeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6464       xfer += prot_->serializedSizeMapEnd();
6465     }
6466   }
6467   {
6468     xfer += prot_->serializedFieldSize("req_ref_type_shared", apache::thrift::protocol::T_STRUCT, 14);
6469     if (this->req_ref_type_shared) {
6470       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->req_ref_type_shared);
6471     } else {
6472       xfer += prot_->serializedStructSize("containerStruct");
6473       xfer += prot_->serializedSizeStop();
6474     }
6475   }
6476   {
6477     xfer += prot_->serializedFieldSize("req_ref_type_const", apache::thrift::protocol::T_STRUCT, 15);
6478     if (this->req_ref_type_const) {
6479       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->req_ref_type_const);
6480     } else {
6481       xfer += prot_->serializedStructSize("containerStruct");
6482       xfer += prot_->serializedSizeStop();
6483     }
6484   }
6485   {
6486     xfer += prot_->serializedFieldSize("req_ref_type_unique", apache::thrift::protocol::T_LIST, 16);
6487     if (this->req_ref_type_unique) {
6488       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, *this->req_ref_type_unique);
6489     } else {
6490       xfer += prot_->serializedSizeListBegin(apache::thrift::protocol::T_STRING, 0);
6491       xfer += prot_->serializedSizeListEnd();
6492     }
6493   }
6494   if (this->opt_ref_type_const) {
6495     xfer += prot_->serializedFieldSize("opt_ref_type_const", apache::thrift::protocol::T_STRUCT, 17);
6496     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->opt_ref_type_const);
6497   }
6498   if (this->opt_ref_type_unique) {
6499     xfer += prot_->serializedFieldSize("opt_ref_type_unique", apache::thrift::protocol::T_STRUCT, 18);
6500     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, *this->opt_ref_type_unique);
6501   }
6502   if (this->opt_ref_type_shared) {
6503     xfer += prot_->serializedFieldSize("opt_ref_type_shared", apache::thrift::protocol::T_SET, 19);
6504     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, *this->opt_ref_type_shared);
6505   }
6506   if (this->base_type != ::some::valid::ns::CppFakeI32()) {
6507     xfer += prot_->serializedFieldSize("base_type", apache::thrift::protocol::T_I32, 20);
6508     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::CppFakeI32>::serializedSize<false>(*prot_, this->base_type);
6509   }
6510   if (!this->list_type.empty()) {
6511     xfer += prot_->serializedFieldSize("list_type", apache::thrift::protocol::T_LIST, 21);
6512     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::FollySmallVectorI64>::serializedSize<false>(*prot_, this->list_type);
6513   }
6514   if (!this->set_type.empty()) {
6515     xfer += prot_->serializedFieldSize("set_type", apache::thrift::protocol::T_SET, 22);
6516     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::SortedVectorSetString>::serializedSize<false>(*prot_, this->set_type);
6517   }
6518   if (!this->map_type.empty()) {
6519     xfer += prot_->serializedFieldSize("map_type", apache::thrift::protocol::T_MAP, 23);
6520     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::floating_point>, ::some::valid::ns::FakeMap>::serializedSize<false>(*prot_, this->map_type);
6521   }
6522   if (!this->map_struct_type.empty()) {
6523     xfer += prot_->serializedFieldSize("map_struct_type", apache::thrift::protocol::T_MAP, 24);
6524     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, ::some::valid::ns::UnorderedMapStruct>::serializedSize<false>(*prot_, this->map_struct_type);
6525   }
6526   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type)) {
6527     xfer += prot_->serializedFieldSize("iobuf_type", apache::thrift::protocol::T_STRING, 25);
6528     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::serializedSize<false>(*prot_, this->iobuf_type);
6529   }
6530   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr)) {
6531     xfer += prot_->serializedFieldSize("iobuf_ptr", apache::thrift::protocol::T_STRING, 26);
6532     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::serializedSize<false>(*prot_, this->iobuf_ptr);
6533   }
6534   if (!this->list_i32_template.empty()) {
6535     xfer += prot_->serializedFieldSize("list_i32_template", apache::thrift::protocol::T_LIST, 27);
6536     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, std::list<::std::int32_t>>::serializedSize<false>(*prot_, this->list_i32_template);
6537   }
6538   if (!this->list_string_template.empty()) {
6539     xfer += prot_->serializedFieldSize("list_string_template", apache::thrift::protocol::T_LIST, 28);
6540     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, std::deque<::std::string>>::serializedSize<false>(*prot_, this->list_string_template);
6541   }
6542   if (!this->set_template.empty()) {
6543     xfer += prot_->serializedFieldSize("set_template", apache::thrift::protocol::T_SET, 29);
6544     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, folly::sorted_vector_set<::std::string>>::serializedSize<false>(*prot_, this->set_template);
6545   }
6546   if (!this->map_template.empty()) {
6547     xfer += prot_->serializedFieldSize("map_template", apache::thrift::protocol::T_MAP, 30);
6548     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, folly::sorted_vector_map<::std::int64_t, ::std::string>>::serializedSize<false>(*prot_, this->map_template);
6549   }
6550   if (!this->typedef_list_template.empty()) {
6551     xfer += prot_->serializedFieldSize("typedef_list_template", apache::thrift::protocol::T_LIST, 31);
6552     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::std_list>::serializedSize<false>(*prot_, this->typedef_list_template);
6553   }
6554   if (!this->typedef_deque_template.empty()) {
6555     xfer += prot_->serializedFieldSize("typedef_deque_template", apache::thrift::protocol::T_LIST, 32);
6556     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::some::valid::ns::std_deque>::serializedSize<false>(*prot_, this->typedef_deque_template);
6557   }
6558   if (!this->typedef_set_template.empty()) {
6559     xfer += prot_->serializedFieldSize("typedef_set_template", apache::thrift::protocol::T_SET, 33);
6560     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::folly_set>::serializedSize<false>(*prot_, this->typedef_set_template);
6561   }
6562   if (!this->typedef_map_template.empty()) {
6563     xfer += prot_->serializedFieldSize("typedef_map_template", apache::thrift::protocol::T_MAP, 34);
6564     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, ::some::valid::ns::folly_map>::serializedSize<false>(*prot_, this->typedef_map_template);
6565   }
6566   if (::apache::thrift::apply_indirection(this->indirection_a) != 0) {
6567     xfer += prot_->serializedFieldSize("indirection_a", apache::thrift::protocol::T_I64, 35);
6568     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionA>::serializedSize<false>(*prot_, this->indirection_a);
6569   }
6570   if (!this->indirection_b.empty()) {
6571     xfer += prot_->serializedFieldSize("indirection_b", apache::thrift::protocol::T_LIST, 36);
6572     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>>, ::std::vector<::some::valid::ns::IndirectionB>>::serializedSize<false>(*prot_, this->indirection_b);
6573   }
6574   if (!this->indirection_c.empty()) {
6575     xfer += prot_->serializedFieldSize("indirection_c", apache::thrift::protocol::T_SET, 37);
6576     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::set<::some::valid::ns::IndirectionC>>::serializedSize<false>(*prot_, this->indirection_c);
6577   }
6578   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type_val)) {
6579     xfer += prot_->serializedFieldSize("iobuf_type_val", apache::thrift::protocol::T_STRING, 38);
6580     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::serializedSize<false>(*prot_, this->iobuf_type_val);
6581   }
6582   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr_val)) {
6583     xfer += prot_->serializedFieldSize("iobuf_ptr_val", apache::thrift::protocol::T_STRING, 39);
6584     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::serializedSize<false>(*prot_, this->iobuf_ptr_val);
6585   }
6586   {
6587     xfer += prot_->serializedFieldSize("struct_struct", apache::thrift::protocol::T_STRUCT, 40);
6588     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<false>(*prot_, this->struct_struct);
6589   }
6590   xfer += prot_->serializedSizeStop();
6591   return xfer;
6592 }
6593 
6594 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const6595 uint32_t AnnotatedStruct::serializedSizeZC(Protocol_ const* prot_) const {
6596   uint32_t xfer = 0;
6597   xfer += prot_->serializedStructSize("AnnotatedStruct");
6598   {
6599     xfer += prot_->serializedFieldSize("no_annotation", apache::thrift::protocol::T_STRUCT, 1);
6600     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, this->no_annotation);
6601   }
6602   if (this->cpp_unique_ref) {
6603     xfer += prot_->serializedFieldSize("cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 2);
6604     if (this->cpp_unique_ref) {
6605       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->cpp_unique_ref);
6606     } else {
6607       xfer += prot_->serializedStructSize("containerStruct");
6608       xfer += prot_->serializedSizeStop();
6609     }
6610   }
6611   if (this->cpp2_unique_ref) {
6612     xfer += prot_->serializedFieldSize("cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 3);
6613     if (this->cpp2_unique_ref) {
6614       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->cpp2_unique_ref);
6615     } else {
6616       xfer += prot_->serializedStructSize("containerStruct");
6617       xfer += prot_->serializedSizeStop();
6618     }
6619   }
6620   if (this->container_with_ref && !this->container_with_ref->empty()) {
6621     xfer += prot_->serializedFieldSize("container_with_ref", apache::thrift::protocol::T_MAP, 4);
6622     if (this->container_with_ref) {
6623       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::serializedSize<false>(*prot_, *this->container_with_ref);
6624     } else {
6625       xfer += prot_->serializedSizeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6626       xfer += prot_->serializedSizeMapEnd();
6627     }
6628   }
6629   {
6630     xfer += prot_->serializedFieldSize("req_cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 5);
6631     if (this->req_cpp_unique_ref) {
6632       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->req_cpp_unique_ref);
6633     } else {
6634       xfer += prot_->serializedStructSize("containerStruct");
6635       xfer += prot_->serializedSizeStop();
6636     }
6637   }
6638   {
6639     xfer += prot_->serializedFieldSize("req_cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 6);
6640     if (this->req_cpp2_unique_ref) {
6641       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->req_cpp2_unique_ref);
6642     } else {
6643       xfer += prot_->serializedStructSize("containerStruct");
6644       xfer += prot_->serializedSizeStop();
6645     }
6646   }
6647   {
6648     xfer += prot_->serializedFieldSize("req_container_with_ref", apache::thrift::protocol::T_LIST, 7);
6649     if (this->req_container_with_ref) {
6650       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, *this->req_container_with_ref);
6651     } else {
6652       xfer += prot_->serializedSizeListBegin(apache::thrift::protocol::T_STRING, 0);
6653       xfer += prot_->serializedSizeListEnd();
6654     }
6655   }
6656   if (this->opt_cpp_unique_ref) {
6657     xfer += prot_->serializedFieldSize("opt_cpp_unique_ref", apache::thrift::protocol::T_STRUCT, 8);
6658     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->opt_cpp_unique_ref);
6659   }
6660   if (this->opt_cpp2_unique_ref) {
6661     xfer += prot_->serializedFieldSize("opt_cpp2_unique_ref", apache::thrift::protocol::T_STRUCT, 9);
6662     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->opt_cpp2_unique_ref);
6663   }
6664   if (this->opt_container_with_ref) {
6665     xfer += prot_->serializedFieldSize("opt_container_with_ref", apache::thrift::protocol::T_SET, 10);
6666     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, *this->opt_container_with_ref);
6667   }
6668   if (this->ref_type_unique) {
6669     xfer += prot_->serializedFieldSize("ref_type_unique", apache::thrift::protocol::T_STRUCT, 11);
6670     if (this->ref_type_unique) {
6671       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->ref_type_unique);
6672     } else {
6673       xfer += prot_->serializedStructSize("containerStruct");
6674       xfer += prot_->serializedSizeStop();
6675     }
6676   }
6677   {
6678     xfer += prot_->serializedFieldSize("ref_type_shared", apache::thrift::protocol::T_STRUCT, 12);
6679     if (this->ref_type_shared) {
6680       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->ref_type_shared);
6681     } else {
6682       xfer += prot_->serializedStructSize("containerStruct");
6683       xfer += prot_->serializedSizeStop();
6684     }
6685   }
6686   if (this->ref_type_const && !this->ref_type_const->empty()) {
6687     xfer += prot_->serializedFieldSize("ref_type_const", apache::thrift::protocol::T_MAP, 13);
6688     if (this->ref_type_const) {
6689       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::serializedSize<false>(*prot_, *this->ref_type_const);
6690     } else {
6691       xfer += prot_->serializedSizeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6692       xfer += prot_->serializedSizeMapEnd();
6693     }
6694   }
6695   {
6696     xfer += prot_->serializedFieldSize("req_ref_type_shared", apache::thrift::protocol::T_STRUCT, 14);
6697     if (this->req_ref_type_shared) {
6698       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->req_ref_type_shared);
6699     } else {
6700       xfer += prot_->serializedStructSize("containerStruct");
6701       xfer += prot_->serializedSizeStop();
6702     }
6703   }
6704   {
6705     xfer += prot_->serializedFieldSize("req_ref_type_const", apache::thrift::protocol::T_STRUCT, 15);
6706     if (this->req_ref_type_const) {
6707       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->req_ref_type_const);
6708     } else {
6709       xfer += prot_->serializedStructSize("containerStruct");
6710       xfer += prot_->serializedSizeStop();
6711     }
6712   }
6713   {
6714     xfer += prot_->serializedFieldSize("req_ref_type_unique", apache::thrift::protocol::T_LIST, 16);
6715     if (this->req_ref_type_unique) {
6716       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::serializedSize<false>(*prot_, *this->req_ref_type_unique);
6717     } else {
6718       xfer += prot_->serializedSizeListBegin(apache::thrift::protocol::T_STRING, 0);
6719       xfer += prot_->serializedSizeListEnd();
6720     }
6721   }
6722   if (this->opt_ref_type_const) {
6723     xfer += prot_->serializedFieldSize("opt_ref_type_const", apache::thrift::protocol::T_STRUCT, 17);
6724     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->opt_ref_type_const);
6725   }
6726   if (this->opt_ref_type_unique) {
6727     xfer += prot_->serializedFieldSize("opt_ref_type_unique", apache::thrift::protocol::T_STRUCT, 18);
6728     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, *this->opt_ref_type_unique);
6729   }
6730   if (this->opt_ref_type_shared) {
6731     xfer += prot_->serializedFieldSize("opt_ref_type_shared", apache::thrift::protocol::T_SET, 19);
6732     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::serializedSize<false>(*prot_, *this->opt_ref_type_shared);
6733   }
6734   if (this->base_type != ::some::valid::ns::CppFakeI32()) {
6735     xfer += prot_->serializedFieldSize("base_type", apache::thrift::protocol::T_I32, 20);
6736     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::CppFakeI32>::serializedSize<false>(*prot_, this->base_type);
6737   }
6738   if (!this->list_type.empty()) {
6739     xfer += prot_->serializedFieldSize("list_type", apache::thrift::protocol::T_LIST, 21);
6740     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::FollySmallVectorI64>::serializedSize<false>(*prot_, this->list_type);
6741   }
6742   if (!this->set_type.empty()) {
6743     xfer += prot_->serializedFieldSize("set_type", apache::thrift::protocol::T_SET, 22);
6744     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::SortedVectorSetString>::serializedSize<false>(*prot_, this->set_type);
6745   }
6746   if (!this->map_type.empty()) {
6747     xfer += prot_->serializedFieldSize("map_type", apache::thrift::protocol::T_MAP, 23);
6748     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::floating_point>, ::some::valid::ns::FakeMap>::serializedSize<false>(*prot_, this->map_type);
6749   }
6750   if (!this->map_struct_type.empty()) {
6751     xfer += prot_->serializedFieldSize("map_struct_type", apache::thrift::protocol::T_MAP, 24);
6752     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, ::some::valid::ns::UnorderedMapStruct>::serializedSize<false>(*prot_, this->map_struct_type);
6753   }
6754   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type)) {
6755     xfer += prot_->serializedFieldSize("iobuf_type", apache::thrift::protocol::T_STRING, 25);
6756     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::serializedSize<true>(*prot_, this->iobuf_type);
6757   }
6758   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr)) {
6759     xfer += prot_->serializedFieldSize("iobuf_ptr", apache::thrift::protocol::T_STRING, 26);
6760     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::serializedSize<true>(*prot_, this->iobuf_ptr);
6761   }
6762   if (!this->list_i32_template.empty()) {
6763     xfer += prot_->serializedFieldSize("list_i32_template", apache::thrift::protocol::T_LIST, 27);
6764     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, std::list<::std::int32_t>>::serializedSize<false>(*prot_, this->list_i32_template);
6765   }
6766   if (!this->list_string_template.empty()) {
6767     xfer += prot_->serializedFieldSize("list_string_template", apache::thrift::protocol::T_LIST, 28);
6768     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, std::deque<::std::string>>::serializedSize<false>(*prot_, this->list_string_template);
6769   }
6770   if (!this->set_template.empty()) {
6771     xfer += prot_->serializedFieldSize("set_template", apache::thrift::protocol::T_SET, 29);
6772     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, folly::sorted_vector_set<::std::string>>::serializedSize<false>(*prot_, this->set_template);
6773   }
6774   if (!this->map_template.empty()) {
6775     xfer += prot_->serializedFieldSize("map_template", apache::thrift::protocol::T_MAP, 30);
6776     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, folly::sorted_vector_map<::std::int64_t, ::std::string>>::serializedSize<false>(*prot_, this->map_template);
6777   }
6778   if (!this->typedef_list_template.empty()) {
6779     xfer += prot_->serializedFieldSize("typedef_list_template", apache::thrift::protocol::T_LIST, 31);
6780     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::std_list>::serializedSize<false>(*prot_, this->typedef_list_template);
6781   }
6782   if (!this->typedef_deque_template.empty()) {
6783     xfer += prot_->serializedFieldSize("typedef_deque_template", apache::thrift::protocol::T_LIST, 32);
6784     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::some::valid::ns::std_deque>::serializedSize<false>(*prot_, this->typedef_deque_template);
6785   }
6786   if (!this->typedef_set_template.empty()) {
6787     xfer += prot_->serializedFieldSize("typedef_set_template", apache::thrift::protocol::T_SET, 33);
6788     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::folly_set>::serializedSize<false>(*prot_, this->typedef_set_template);
6789   }
6790   if (!this->typedef_map_template.empty()) {
6791     xfer += prot_->serializedFieldSize("typedef_map_template", apache::thrift::protocol::T_MAP, 34);
6792     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, ::some::valid::ns::folly_map>::serializedSize<false>(*prot_, this->typedef_map_template);
6793   }
6794   if (::apache::thrift::apply_indirection(this->indirection_a) != 0) {
6795     xfer += prot_->serializedFieldSize("indirection_a", apache::thrift::protocol::T_I64, 35);
6796     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionA>::serializedSize<false>(*prot_, this->indirection_a);
6797   }
6798   if (!this->indirection_b.empty()) {
6799     xfer += prot_->serializedFieldSize("indirection_b", apache::thrift::protocol::T_LIST, 36);
6800     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>>, ::std::vector<::some::valid::ns::IndirectionB>>::serializedSize<false>(*prot_, this->indirection_b);
6801   }
6802   if (!this->indirection_c.empty()) {
6803     xfer += prot_->serializedFieldSize("indirection_c", apache::thrift::protocol::T_SET, 37);
6804     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::set<::some::valid::ns::IndirectionC>>::serializedSize<false>(*prot_, this->indirection_c);
6805   }
6806   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type_val)) {
6807     xfer += prot_->serializedFieldSize("iobuf_type_val", apache::thrift::protocol::T_STRING, 38);
6808     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::serializedSize<true>(*prot_, this->iobuf_type_val);
6809   }
6810   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr_val)) {
6811     xfer += prot_->serializedFieldSize("iobuf_ptr_val", apache::thrift::protocol::T_STRING, 39);
6812     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::serializedSize<true>(*prot_, this->iobuf_ptr_val);
6813   }
6814   {
6815     xfer += prot_->serializedFieldSize("struct_struct", apache::thrift::protocol::T_STRUCT, 40);
6816     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::serializedSize<true>(*prot_, this->struct_struct);
6817   }
6818   xfer += prot_->serializedSizeStop();
6819   return xfer;
6820 }
6821 
6822 template <class Protocol_>
write(Protocol_ * prot_) const6823 uint32_t AnnotatedStruct::write(Protocol_* prot_) const {
6824   uint32_t xfer = 0;
6825   xfer += prot_->writeStructBegin("AnnotatedStruct");
6826   bool previousFieldHasValue = true;
6827   {
6828     constexpr int16_t kPrevFieldId = 0;
6829     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 1, kPrevFieldId>(*prot_, "no_annotation", previousFieldHasValue);
6830     previousFieldHasValue = true;
6831     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, this->no_annotation);
6832     xfer += prot_->writeFieldEnd();
6833   }
6834   if (this->cpp_unique_ref) {
6835     constexpr int16_t kPrevFieldId = 1;
6836     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 2, kPrevFieldId>(*prot_, "cpp_unique_ref", previousFieldHasValue);
6837     previousFieldHasValue = true;
6838     if (this->cpp_unique_ref) {
6839       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->cpp_unique_ref);
6840     } else {
6841       xfer += prot_->writeStructBegin("containerStruct");
6842       xfer += prot_->writeStructEnd();
6843       xfer += prot_->writeFieldStop();
6844     }
6845     xfer += prot_->writeFieldEnd();
6846   } else {
6847     previousFieldHasValue = false;
6848   }
6849   if (this->cpp2_unique_ref) {
6850     constexpr int16_t kPrevFieldId = 2;
6851     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 3, kPrevFieldId>(*prot_, "cpp2_unique_ref", previousFieldHasValue);
6852     previousFieldHasValue = true;
6853     if (this->cpp2_unique_ref) {
6854       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->cpp2_unique_ref);
6855     } else {
6856       xfer += prot_->writeStructBegin("containerStruct");
6857       xfer += prot_->writeStructEnd();
6858       xfer += prot_->writeFieldStop();
6859     }
6860     xfer += prot_->writeFieldEnd();
6861   } else {
6862     previousFieldHasValue = false;
6863   }
6864   if (this->container_with_ref && !this->container_with_ref->empty()) {
6865     constexpr int16_t kPrevFieldId = 3;
6866     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 4, kPrevFieldId>(*prot_, "container_with_ref", previousFieldHasValue);
6867     previousFieldHasValue = true;
6868     if (this->container_with_ref) {
6869       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::write(*prot_, *this->container_with_ref);
6870     } else {
6871       xfer += prot_->writeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6872       xfer += prot_->writeMapEnd();
6873     }
6874     xfer += prot_->writeFieldEnd();
6875   } else {
6876     previousFieldHasValue = false;
6877   }
6878   {
6879     constexpr int16_t kPrevFieldId = 4;
6880     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 5, kPrevFieldId>(*prot_, "req_cpp_unique_ref", previousFieldHasValue);
6881     previousFieldHasValue = true;
6882     if (this->req_cpp_unique_ref) {
6883       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->req_cpp_unique_ref);
6884     } else {
6885       xfer += prot_->writeStructBegin("containerStruct");
6886       xfer += prot_->writeStructEnd();
6887       xfer += prot_->writeFieldStop();
6888     }
6889     xfer += prot_->writeFieldEnd();
6890   }
6891   {
6892     constexpr int16_t kPrevFieldId = 5;
6893     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 6, kPrevFieldId>(*prot_, "req_cpp2_unique_ref", previousFieldHasValue);
6894     previousFieldHasValue = true;
6895     if (this->req_cpp2_unique_ref) {
6896       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->req_cpp2_unique_ref);
6897     } else {
6898       xfer += prot_->writeStructBegin("containerStruct");
6899       xfer += prot_->writeStructEnd();
6900       xfer += prot_->writeFieldStop();
6901     }
6902     xfer += prot_->writeFieldEnd();
6903   }
6904   {
6905     constexpr int16_t kPrevFieldId = 6;
6906     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 7, kPrevFieldId>(*prot_, "req_container_with_ref", previousFieldHasValue);
6907     previousFieldHasValue = true;
6908     if (this->req_container_with_ref) {
6909       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::write(*prot_, *this->req_container_with_ref);
6910     } else {
6911       xfer += prot_->writeListBegin(apache::thrift::protocol::T_STRING, 0);
6912       xfer += prot_->writeListEnd();
6913     }
6914     xfer += prot_->writeFieldEnd();
6915   }
6916   if (this->opt_cpp_unique_ref) {
6917     constexpr int16_t kPrevFieldId = 7;
6918     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 8, kPrevFieldId>(*prot_, "opt_cpp_unique_ref", previousFieldHasValue);
6919     previousFieldHasValue = true;
6920     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->opt_cpp_unique_ref);
6921     xfer += prot_->writeFieldEnd();
6922   } else {
6923     previousFieldHasValue = false;
6924   }
6925   if (this->opt_cpp2_unique_ref) {
6926     constexpr int16_t kPrevFieldId = 8;
6927     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 9, kPrevFieldId>(*prot_, "opt_cpp2_unique_ref", previousFieldHasValue);
6928     previousFieldHasValue = true;
6929     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->opt_cpp2_unique_ref);
6930     xfer += prot_->writeFieldEnd();
6931   } else {
6932     previousFieldHasValue = false;
6933   }
6934   if (this->opt_container_with_ref) {
6935     constexpr int16_t kPrevFieldId = 9;
6936     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 10, kPrevFieldId>(*prot_, "opt_container_with_ref", previousFieldHasValue);
6937     previousFieldHasValue = true;
6938     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::write(*prot_, *this->opt_container_with_ref);
6939     xfer += prot_->writeFieldEnd();
6940   } else {
6941     previousFieldHasValue = false;
6942   }
6943   if (this->ref_type_unique) {
6944     constexpr int16_t kPrevFieldId = 10;
6945     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 11, kPrevFieldId>(*prot_, "ref_type_unique", previousFieldHasValue);
6946     previousFieldHasValue = true;
6947     if (this->ref_type_unique) {
6948       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->ref_type_unique);
6949     } else {
6950       xfer += prot_->writeStructBegin("containerStruct");
6951       xfer += prot_->writeStructEnd();
6952       xfer += prot_->writeFieldStop();
6953     }
6954     xfer += prot_->writeFieldEnd();
6955   } else {
6956     previousFieldHasValue = false;
6957   }
6958   {
6959     constexpr int16_t kPrevFieldId = 11;
6960     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 12, kPrevFieldId>(*prot_, "ref_type_shared", previousFieldHasValue);
6961     previousFieldHasValue = true;
6962     if (this->ref_type_shared) {
6963       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->ref_type_shared);
6964     } else {
6965       xfer += prot_->writeStructBegin("containerStruct");
6966       xfer += prot_->writeStructEnd();
6967       xfer += prot_->writeFieldStop();
6968     }
6969     xfer += prot_->writeFieldEnd();
6970   }
6971   if (this->ref_type_const && !this->ref_type_const->empty()) {
6972     constexpr int16_t kPrevFieldId = 12;
6973     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 13, kPrevFieldId>(*prot_, "ref_type_const", previousFieldHasValue);
6974     previousFieldHasValue = true;
6975     if (this->ref_type_const) {
6976       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::list<::apache::thrift::type_class::string>>, ::std::map<::std::int32_t, ::std::vector<::std::string>>>::write(*prot_, *this->ref_type_const);
6977     } else {
6978       xfer += prot_->writeMapBegin(apache::thrift::protocol::T_I32, apache::thrift::protocol::T_LIST, 0);
6979       xfer += prot_->writeMapEnd();
6980     }
6981     xfer += prot_->writeFieldEnd();
6982   } else {
6983     previousFieldHasValue = false;
6984   }
6985   {
6986     constexpr int16_t kPrevFieldId = 13;
6987     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 14, kPrevFieldId>(*prot_, "req_ref_type_shared", previousFieldHasValue);
6988     previousFieldHasValue = true;
6989     if (this->req_ref_type_shared) {
6990       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->req_ref_type_shared);
6991     } else {
6992       xfer += prot_->writeStructBegin("containerStruct");
6993       xfer += prot_->writeStructEnd();
6994       xfer += prot_->writeFieldStop();
6995     }
6996     xfer += prot_->writeFieldEnd();
6997   }
6998   {
6999     constexpr int16_t kPrevFieldId = 14;
7000     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 15, kPrevFieldId>(*prot_, "req_ref_type_const", previousFieldHasValue);
7001     previousFieldHasValue = true;
7002     if (this->req_ref_type_const) {
7003       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->req_ref_type_const);
7004     } else {
7005       xfer += prot_->writeStructBegin("containerStruct");
7006       xfer += prot_->writeStructEnd();
7007       xfer += prot_->writeFieldStop();
7008     }
7009     xfer += prot_->writeFieldEnd();
7010   }
7011   {
7012     constexpr int16_t kPrevFieldId = 15;
7013     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 16, kPrevFieldId>(*prot_, "req_ref_type_unique", previousFieldHasValue);
7014     previousFieldHasValue = true;
7015     if (this->req_ref_type_unique) {
7016       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::std::vector<::std::string>>::write(*prot_, *this->req_ref_type_unique);
7017     } else {
7018       xfer += prot_->writeListBegin(apache::thrift::protocol::T_STRING, 0);
7019       xfer += prot_->writeListEnd();
7020     }
7021     xfer += prot_->writeFieldEnd();
7022   }
7023   if (this->opt_ref_type_const) {
7024     constexpr int16_t kPrevFieldId = 16;
7025     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 17, kPrevFieldId>(*prot_, "opt_ref_type_const", previousFieldHasValue);
7026     previousFieldHasValue = true;
7027     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->opt_ref_type_const);
7028     xfer += prot_->writeFieldEnd();
7029   } else {
7030     previousFieldHasValue = false;
7031   }
7032   if (this->opt_ref_type_unique) {
7033     constexpr int16_t kPrevFieldId = 17;
7034     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 18, kPrevFieldId>(*prot_, "opt_ref_type_unique", previousFieldHasValue);
7035     previousFieldHasValue = true;
7036     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, *this->opt_ref_type_unique);
7037     xfer += prot_->writeFieldEnd();
7038   } else {
7039     previousFieldHasValue = false;
7040   }
7041   if (this->opt_ref_type_shared) {
7042     constexpr int16_t kPrevFieldId = 18;
7043     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 19, kPrevFieldId>(*prot_, "opt_ref_type_shared", previousFieldHasValue);
7044     previousFieldHasValue = true;
7045     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int32_t>>::write(*prot_, *this->opt_ref_type_shared);
7046     xfer += prot_->writeFieldEnd();
7047   } else {
7048     previousFieldHasValue = false;
7049   }
7050   if (this->base_type != ::some::valid::ns::CppFakeI32()) {
7051     constexpr int16_t kPrevFieldId = 19;
7052     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 20, kPrevFieldId>(*prot_, "base_type", previousFieldHasValue);
7053     previousFieldHasValue = true;
7054     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::some::valid::ns::CppFakeI32>::write(*prot_, this->base_type);
7055     xfer += prot_->writeFieldEnd();
7056   } else {
7057     previousFieldHasValue = false;
7058   }
7059   if (!this->list_type.empty()) {
7060     constexpr int16_t kPrevFieldId = 20;
7061     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 21, kPrevFieldId>(*prot_, "list_type", previousFieldHasValue);
7062     previousFieldHasValue = true;
7063     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::FollySmallVectorI64>::write(*prot_, this->list_type);
7064     xfer += prot_->writeFieldEnd();
7065   } else {
7066     previousFieldHasValue = false;
7067   }
7068   if (!this->set_type.empty()) {
7069     constexpr int16_t kPrevFieldId = 21;
7070     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 22, kPrevFieldId>(*prot_, "set_type", previousFieldHasValue);
7071     previousFieldHasValue = true;
7072     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::SortedVectorSetString>::write(*prot_, this->set_type);
7073     xfer += prot_->writeFieldEnd();
7074   } else {
7075     previousFieldHasValue = false;
7076   }
7077   if (!this->map_type.empty()) {
7078     constexpr int16_t kPrevFieldId = 22;
7079     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 23, kPrevFieldId>(*prot_, "map_type", previousFieldHasValue);
7080     previousFieldHasValue = true;
7081     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::floating_point>, ::some::valid::ns::FakeMap>::write(*prot_, this->map_type);
7082     xfer += prot_->writeFieldEnd();
7083   } else {
7084     previousFieldHasValue = false;
7085   }
7086   if (!this->map_struct_type.empty()) {
7087     constexpr int16_t kPrevFieldId = 23;
7088     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 24, kPrevFieldId>(*prot_, "map_struct_type", previousFieldHasValue);
7089     previousFieldHasValue = true;
7090     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::structure>, ::some::valid::ns::UnorderedMapStruct>::write(*prot_, this->map_struct_type);
7091     xfer += prot_->writeFieldEnd();
7092   } else {
7093     previousFieldHasValue = false;
7094   }
7095   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type)) {
7096     constexpr int16_t kPrevFieldId = 24;
7097     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 25, kPrevFieldId>(*prot_, "iobuf_type", previousFieldHasValue);
7098     previousFieldHasValue = true;
7099     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::write(*prot_, this->iobuf_type);
7100     xfer += prot_->writeFieldEnd();
7101   } else {
7102     previousFieldHasValue = false;
7103   }
7104   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr)) {
7105     constexpr int16_t kPrevFieldId = 25;
7106     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 26, kPrevFieldId>(*prot_, "iobuf_ptr", previousFieldHasValue);
7107     previousFieldHasValue = true;
7108     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::write(*prot_, this->iobuf_ptr);
7109     xfer += prot_->writeFieldEnd();
7110   } else {
7111     previousFieldHasValue = false;
7112   }
7113   if (!this->list_i32_template.empty()) {
7114     constexpr int16_t kPrevFieldId = 26;
7115     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 27, kPrevFieldId>(*prot_, "list_i32_template", previousFieldHasValue);
7116     previousFieldHasValue = true;
7117     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, std::list<::std::int32_t>>::write(*prot_, this->list_i32_template);
7118     xfer += prot_->writeFieldEnd();
7119   } else {
7120     previousFieldHasValue = false;
7121   }
7122   if (!this->list_string_template.empty()) {
7123     constexpr int16_t kPrevFieldId = 27;
7124     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 28, kPrevFieldId>(*prot_, "list_string_template", previousFieldHasValue);
7125     previousFieldHasValue = true;
7126     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, std::deque<::std::string>>::write(*prot_, this->list_string_template);
7127     xfer += prot_->writeFieldEnd();
7128   } else {
7129     previousFieldHasValue = false;
7130   }
7131   if (!this->set_template.empty()) {
7132     constexpr int16_t kPrevFieldId = 28;
7133     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 29, kPrevFieldId>(*prot_, "set_template", previousFieldHasValue);
7134     previousFieldHasValue = true;
7135     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, folly::sorted_vector_set<::std::string>>::write(*prot_, this->set_template);
7136     xfer += prot_->writeFieldEnd();
7137   } else {
7138     previousFieldHasValue = false;
7139   }
7140   if (!this->map_template.empty()) {
7141     constexpr int16_t kPrevFieldId = 29;
7142     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 30, kPrevFieldId>(*prot_, "map_template", previousFieldHasValue);
7143     previousFieldHasValue = true;
7144     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, folly::sorted_vector_map<::std::int64_t, ::std::string>>::write(*prot_, this->map_template);
7145     xfer += prot_->writeFieldEnd();
7146   } else {
7147     previousFieldHasValue = false;
7148   }
7149   if (!this->typedef_list_template.empty()) {
7150     constexpr int16_t kPrevFieldId = 30;
7151     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 31, kPrevFieldId>(*prot_, "typedef_list_template", previousFieldHasValue);
7152     previousFieldHasValue = true;
7153     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::some::valid::ns::std_list>::write(*prot_, this->typedef_list_template);
7154     xfer += prot_->writeFieldEnd();
7155   } else {
7156     previousFieldHasValue = false;
7157   }
7158   if (!this->typedef_deque_template.empty()) {
7159     constexpr int16_t kPrevFieldId = 31;
7160     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 32, kPrevFieldId>(*prot_, "typedef_deque_template", previousFieldHasValue);
7161     previousFieldHasValue = true;
7162     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::string>, ::some::valid::ns::std_deque>::write(*prot_, this->typedef_deque_template);
7163     xfer += prot_->writeFieldEnd();
7164   } else {
7165     previousFieldHasValue = false;
7166   }
7167   if (!this->typedef_set_template.empty()) {
7168     constexpr int16_t kPrevFieldId = 32;
7169     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 33, kPrevFieldId>(*prot_, "typedef_set_template", previousFieldHasValue);
7170     previousFieldHasValue = true;
7171     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::string>, ::some::valid::ns::folly_set>::write(*prot_, this->typedef_set_template);
7172     xfer += prot_->writeFieldEnd();
7173   } else {
7174     previousFieldHasValue = false;
7175   }
7176   if (!this->typedef_map_template.empty()) {
7177     constexpr int16_t kPrevFieldId = 33;
7178     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 34, kPrevFieldId>(*prot_, "typedef_map_template", previousFieldHasValue);
7179     previousFieldHasValue = true;
7180     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::string>, ::some::valid::ns::folly_map>::write(*prot_, this->typedef_map_template);
7181     xfer += prot_->writeFieldEnd();
7182   } else {
7183     previousFieldHasValue = false;
7184   }
7185   if (::apache::thrift::apply_indirection(this->indirection_a) != 0) {
7186     constexpr int16_t kPrevFieldId = 34;
7187     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 35, kPrevFieldId>(*prot_, "indirection_a", previousFieldHasValue);
7188     previousFieldHasValue = true;
7189     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>, ::some::valid::ns::IndirectionA>::write(*prot_, this->indirection_a);
7190     xfer += prot_->writeFieldEnd();
7191   } else {
7192     previousFieldHasValue = false;
7193   }
7194   if (!this->indirection_b.empty()) {
7195     constexpr int16_t kPrevFieldId = 35;
7196     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 36, kPrevFieldId>(*prot_, "indirection_b", previousFieldHasValue);
7197     previousFieldHasValue = true;
7198     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::floating_point, ::apache::thrift::detail::apply_indirection_fn>>, ::std::vector<::some::valid::ns::IndirectionB>>::write(*prot_, this->indirection_b);
7199     xfer += prot_->writeFieldEnd();
7200   } else {
7201     previousFieldHasValue = false;
7202   }
7203   if (!this->indirection_c.empty()) {
7204     constexpr int16_t kPrevFieldId = 36;
7205     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 37, kPrevFieldId>(*prot_, "indirection_c", previousFieldHasValue);
7206     previousFieldHasValue = true;
7207     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::detail::indirection_tag<::apache::thrift::type_class::integral, ::apache::thrift::detail::apply_indirection_fn>>, ::std::set<::some::valid::ns::IndirectionC>>::write(*prot_, this->indirection_c);
7208     xfer += prot_->writeFieldEnd();
7209   } else {
7210     previousFieldHasValue = false;
7211   }
7212   if (!apache::thrift::StringTraits<folly::IOBuf>::isEmpty(this->iobuf_type_val)) {
7213     constexpr int16_t kPrevFieldId = 37;
7214     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 38, kPrevFieldId>(*prot_, "iobuf_type_val", previousFieldHasValue);
7215     previousFieldHasValue = true;
7216     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBuf>::write(*prot_, this->iobuf_type_val);
7217     xfer += prot_->writeFieldEnd();
7218   } else {
7219     previousFieldHasValue = false;
7220   }
7221   if (!apache::thrift::StringTraits<std::unique_ptr<folly::IOBuf>>::isEmpty(this->iobuf_ptr_val)) {
7222     constexpr int16_t kPrevFieldId = 38;
7223     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 39, kPrevFieldId>(*prot_, "iobuf_ptr_val", previousFieldHasValue);
7224     previousFieldHasValue = true;
7225     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::some::valid::ns::IOBufPtr>::write(*prot_, this->iobuf_ptr_val);
7226     xfer += prot_->writeFieldEnd();
7227   } else {
7228     previousFieldHasValue = false;
7229   }
7230   {
7231     constexpr int16_t kPrevFieldId = 39;
7232     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 40, kPrevFieldId>(*prot_, "struct_struct", previousFieldHasValue);
7233     previousFieldHasValue = true;
7234     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::some::valid::ns::containerStruct>::write(*prot_, this->struct_struct);
7235     xfer += prot_->writeFieldEnd();
7236   }
7237   xfer += prot_->writeFieldStop();
7238   xfer += prot_->writeStructEnd();
7239   return xfer;
7240 }
7241 
7242 extern template void AnnotatedStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
7243 extern template uint32_t AnnotatedStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
7244 extern template uint32_t AnnotatedStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
7245 extern template uint32_t AnnotatedStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
7246 extern template void AnnotatedStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
7247 extern template uint32_t AnnotatedStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
7248 extern template uint32_t AnnotatedStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
7249 extern template uint32_t AnnotatedStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
7250 extern template void AnnotatedStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
7251 extern template uint32_t AnnotatedStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
7252 extern template uint32_t AnnotatedStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7253 extern template uint32_t AnnotatedStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7254 
7255 }}} // some::valid::ns
7256 namespace some { namespace valid { namespace ns {
7257 
7258 template <class Protocol_>
readNoXfer(Protocol_ * iprot)7259 void ComplexContainerStruct::readNoXfer(Protocol_* iprot) {
7260   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
7261 
7262   _readState.readStructBegin(iprot);
7263 
7264   using apache::thrift::TProtocolException;
7265 
7266 
7267   if (UNLIKELY(!_readState.advanceToNextField(
7268           iprot,
7269           0,
7270           1,
7271           apache::thrift::protocol::T_MAP))) {
7272     goto _loop;
7273   }
7274 _readField_map_of_iobufs:
7275   {
7276     _readState.beforeSubobject(iprot);
7277     this->__fbthrift_field_map_of_iobufs = ::std::map<::std::string, ::some::valid::ns::IOBuf>();
7278     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBuf>>::readWithContext(*iprot, this->__fbthrift_field_map_of_iobufs, _readState);
7279     _readState.afterSubobject(iprot);
7280 
7281   }
7282  this->__isset.set(0, true);
7283 
7284   if (UNLIKELY(!_readState.advanceToNextField(
7285           iprot,
7286           1,
7287           2,
7288           apache::thrift::protocol::T_MAP))) {
7289     goto _loop;
7290   }
7291 _readField_map_of_iobuf_ptrs:
7292   {
7293     _readState.beforeSubobject(iprot);
7294     this->__fbthrift_field_map_of_iobuf_ptrs = ::std::map<::std::string, ::some::valid::ns::IOBufPtr>();
7295     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBufPtr>>::readWithContext(*iprot, this->__fbthrift_field_map_of_iobuf_ptrs, _readState);
7296     _readState.afterSubobject(iprot);
7297 
7298   }
7299  this->__isset.set(1, true);
7300 
7301   if (UNLIKELY(!_readState.advanceToNextField(
7302           iprot,
7303           2,
7304           0,
7305           apache::thrift::protocol::T_STOP))) {
7306     goto _loop;
7307   }
7308 
7309 _end:
7310   _readState.readStructEnd(iprot);
7311 
7312   return;
7313 
7314 _loop:
7315   _readState.afterAdvanceFailure(iprot);
7316   if (_readState.atStop()) {
7317     goto _end;
7318   }
7319   if (iprot->kUsesFieldNames()) {
7320     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<ComplexContainerStruct>>();
7321   }
7322 
7323   switch (_readState.fieldId) {
7324     case 1:
7325     {
7326       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
7327         goto _readField_map_of_iobufs;
7328       } else {
7329         goto _skip;
7330       }
7331     }
7332     case 2:
7333     {
7334       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
7335         goto _readField_map_of_iobuf_ptrs;
7336       } else {
7337         goto _skip;
7338       }
7339     }
7340     default:
7341     {
7342 _skip:
7343       _readState.skip(iprot);
7344       _readState.readFieldEnd(iprot);
7345       _readState.readFieldBeginNoInline(iprot);
7346       goto _loop;
7347     }
7348   }
7349 }
7350 
7351 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const7352 uint32_t ComplexContainerStruct::serializedSize(Protocol_ const* prot_) const {
7353   uint32_t xfer = 0;
7354   xfer += prot_->serializedStructSize("ComplexContainerStruct");
7355   if (!this->__fbthrift_field_map_of_iobufs.empty()) {
7356     xfer += prot_->serializedFieldSize("map_of_iobufs", apache::thrift::protocol::T_MAP, 1);
7357     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBuf>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_of_iobufs);
7358   }
7359   if (!this->__fbthrift_field_map_of_iobuf_ptrs.empty()) {
7360     xfer += prot_->serializedFieldSize("map_of_iobuf_ptrs", apache::thrift::protocol::T_MAP, 2);
7361     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBufPtr>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_of_iobuf_ptrs);
7362   }
7363   xfer += prot_->serializedSizeStop();
7364   return xfer;
7365 }
7366 
7367 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const7368 uint32_t ComplexContainerStruct::serializedSizeZC(Protocol_ const* prot_) const {
7369   uint32_t xfer = 0;
7370   xfer += prot_->serializedStructSize("ComplexContainerStruct");
7371   if (!this->__fbthrift_field_map_of_iobufs.empty()) {
7372     xfer += prot_->serializedFieldSize("map_of_iobufs", apache::thrift::protocol::T_MAP, 1);
7373     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBuf>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_of_iobufs);
7374   }
7375   if (!this->__fbthrift_field_map_of_iobuf_ptrs.empty()) {
7376     xfer += prot_->serializedFieldSize("map_of_iobuf_ptrs", apache::thrift::protocol::T_MAP, 2);
7377     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBufPtr>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_of_iobuf_ptrs);
7378   }
7379   xfer += prot_->serializedSizeStop();
7380   return xfer;
7381 }
7382 
7383 template <class Protocol_>
write(Protocol_ * prot_) const7384 uint32_t ComplexContainerStruct::write(Protocol_* prot_) const {
7385   uint32_t xfer = 0;
7386   xfer += prot_->writeStructBegin("ComplexContainerStruct");
7387   bool previousFieldHasValue = true;
7388   if (!this->__fbthrift_field_map_of_iobufs.empty()) {
7389     constexpr int16_t kPrevFieldId = 0;
7390     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 1, kPrevFieldId>(*prot_, "map_of_iobufs", previousFieldHasValue);
7391     previousFieldHasValue = true;
7392     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBuf>>::write(*prot_, this->__fbthrift_field_map_of_iobufs);
7393     xfer += prot_->writeFieldEnd();
7394   } else {
7395     previousFieldHasValue = false;
7396   }
7397   if (!this->__fbthrift_field_map_of_iobuf_ptrs.empty()) {
7398     constexpr int16_t kPrevFieldId = 1;
7399     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 2, kPrevFieldId>(*prot_, "map_of_iobuf_ptrs", previousFieldHasValue);
7400     previousFieldHasValue = true;
7401     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::string, ::apache::thrift::type_class::binary>, ::std::map<::std::string, ::some::valid::ns::IOBufPtr>>::write(*prot_, this->__fbthrift_field_map_of_iobuf_ptrs);
7402     xfer += prot_->writeFieldEnd();
7403   } else {
7404     previousFieldHasValue = false;
7405   }
7406   xfer += prot_->writeFieldStop();
7407   xfer += prot_->writeStructEnd();
7408   return xfer;
7409 }
7410 
7411 extern template void ComplexContainerStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
7412 extern template uint32_t ComplexContainerStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
7413 extern template uint32_t ComplexContainerStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
7414 extern template uint32_t ComplexContainerStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
7415 extern template void ComplexContainerStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
7416 extern template uint32_t ComplexContainerStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
7417 extern template uint32_t ComplexContainerStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
7418 extern template uint32_t ComplexContainerStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
7419 extern template void ComplexContainerStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
7420 extern template uint32_t ComplexContainerStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
7421 extern template uint32_t ComplexContainerStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7422 extern template uint32_t ComplexContainerStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7423 
7424 }}} // some::valid::ns
7425 namespace some { namespace valid { namespace ns {
7426 
7427 template <class Protocol_>
readNoXfer(Protocol_ * iprot)7428 void FloatStruct::readNoXfer(Protocol_* iprot) {
7429   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
7430 
7431   _readState.readStructBegin(iprot);
7432 
7433   using apache::thrift::TProtocolException;
7434 
7435 
7436   if (UNLIKELY(!_readState.advanceToNextField(
7437           iprot,
7438           0,
7439           1,
7440           apache::thrift::protocol::T_FLOAT))) {
7441     goto _loop;
7442   }
7443 _readField_floatField:
7444   {
7445     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, this->__fbthrift_field_floatField, _readState);
7446 
7447   }
7448  this->__isset.set(0, true);
7449 
7450   if (UNLIKELY(!_readState.advanceToNextField(
7451           iprot,
7452           1,
7453           2,
7454           apache::thrift::protocol::T_DOUBLE))) {
7455     goto _loop;
7456   }
7457 _readField_doubleField:
7458   {
7459     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, this->__fbthrift_field_doubleField, _readState);
7460 
7461   }
7462  this->__isset.set(1, true);
7463 
7464   if (UNLIKELY(!_readState.advanceToNextField(
7465           iprot,
7466           2,
7467           0,
7468           apache::thrift::protocol::T_STOP))) {
7469     goto _loop;
7470   }
7471 
7472 _end:
7473   _readState.readStructEnd(iprot);
7474 
7475   return;
7476 
7477 _loop:
7478   _readState.afterAdvanceFailure(iprot);
7479   if (_readState.atStop()) {
7480     goto _end;
7481   }
7482   if (iprot->kUsesFieldNames()) {
7483     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<FloatStruct>>();
7484   }
7485 
7486   switch (_readState.fieldId) {
7487     case 1:
7488     {
7489       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT))) {
7490         goto _readField_floatField;
7491       } else {
7492         goto _skip;
7493       }
7494     }
7495     case 2:
7496     {
7497       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE))) {
7498         goto _readField_doubleField;
7499       } else {
7500         goto _skip;
7501       }
7502     }
7503     default:
7504     {
7505 _skip:
7506       _readState.skip(iprot);
7507       _readState.readFieldEnd(iprot);
7508       _readState.readFieldBeginNoInline(iprot);
7509       goto _loop;
7510     }
7511   }
7512 }
7513 
7514 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const7515 uint32_t FloatStruct::serializedSize(Protocol_ const* prot_) const {
7516   uint32_t xfer = 0;
7517   xfer += prot_->serializedStructSize("FloatStruct");
7518   if (this->__fbthrift_field_floatField != float()) {
7519     xfer += prot_->serializedFieldSize("floatField", apache::thrift::protocol::T_FLOAT, 1);
7520     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_floatField);
7521   }
7522   if (this->__fbthrift_field_doubleField != double()) {
7523     xfer += prot_->serializedFieldSize("doubleField", apache::thrift::protocol::T_DOUBLE, 2);
7524     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_doubleField);
7525   }
7526   xfer += prot_->serializedSizeStop();
7527   return xfer;
7528 }
7529 
7530 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const7531 uint32_t FloatStruct::serializedSizeZC(Protocol_ const* prot_) const {
7532   uint32_t xfer = 0;
7533   xfer += prot_->serializedStructSize("FloatStruct");
7534   if (this->__fbthrift_field_floatField != float()) {
7535     xfer += prot_->serializedFieldSize("floatField", apache::thrift::protocol::T_FLOAT, 1);
7536     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_floatField);
7537   }
7538   if (this->__fbthrift_field_doubleField != double()) {
7539     xfer += prot_->serializedFieldSize("doubleField", apache::thrift::protocol::T_DOUBLE, 2);
7540     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_doubleField);
7541   }
7542   xfer += prot_->serializedSizeStop();
7543   return xfer;
7544 }
7545 
7546 template <class Protocol_>
write(Protocol_ * prot_) const7547 uint32_t FloatStruct::write(Protocol_* prot_) const {
7548   uint32_t xfer = 0;
7549   xfer += prot_->writeStructBegin("FloatStruct");
7550   bool previousFieldHasValue = true;
7551   if (this->__fbthrift_field_floatField != float()) {
7552     constexpr int16_t kPrevFieldId = 0;
7553     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 1, kPrevFieldId>(*prot_, "floatField", previousFieldHasValue);
7554     previousFieldHasValue = true;
7555     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, this->__fbthrift_field_floatField);
7556     xfer += prot_->writeFieldEnd();
7557   } else {
7558     previousFieldHasValue = false;
7559   }
7560   if (this->__fbthrift_field_doubleField != double()) {
7561     constexpr int16_t kPrevFieldId = 1;
7562     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 2, kPrevFieldId>(*prot_, "doubleField", previousFieldHasValue);
7563     previousFieldHasValue = true;
7564     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, this->__fbthrift_field_doubleField);
7565     xfer += prot_->writeFieldEnd();
7566   } else {
7567     previousFieldHasValue = false;
7568   }
7569   xfer += prot_->writeFieldStop();
7570   xfer += prot_->writeStructEnd();
7571   return xfer;
7572 }
7573 
7574 extern template void FloatStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
7575 extern template uint32_t FloatStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
7576 extern template uint32_t FloatStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
7577 extern template uint32_t FloatStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
7578 extern template void FloatStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
7579 extern template uint32_t FloatStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
7580 extern template uint32_t FloatStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
7581 extern template uint32_t FloatStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
7582 extern template void FloatStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
7583 extern template uint32_t FloatStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
7584 extern template uint32_t FloatStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7585 extern template uint32_t FloatStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7586 
7587 }}} // some::valid::ns
7588 namespace some { namespace valid { namespace ns {
7589 
7590 template <class Protocol_>
readNoXfer(Protocol_ * iprot)7591 void FloatUnion::readNoXfer(Protocol_* iprot) {
7592   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
7593   _readState.fieldId = 0;
7594 
7595   _readState.readStructBegin(iprot);
7596 
7597   _readState.readFieldBegin(iprot);
7598   if (_readState.atStop()) {
7599     apache::thrift::clear(*this);
7600   } else {
7601     if (iprot->kUsesFieldNames()) {
7602       _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<FloatUnion>>();
7603     }
7604     switch (_readState.fieldId) {
7605       case 1:
7606       {
7607         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT)) {
7608           this->set_floatSide();
7609           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, value_.floatSide, _readState);
7610 
7611         } else {
7612           _readState.skip(iprot);
7613         }
7614         break;
7615       }
7616       case 2:
7617       {
7618         if (_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE)) {
7619           this->set_doubleSide();
7620           ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, value_.doubleSide, _readState);
7621 
7622         } else {
7623           _readState.skip(iprot);
7624         }
7625         break;
7626       }
7627       default:
7628       {
7629         _readState.skip(iprot);
7630         break;
7631       }
7632     }
7633     _readState.readFieldEnd(iprot);
7634     _readState.readFieldBegin(iprot);
7635     if (UNLIKELY(!_readState.atStop())) {
7636       using apache::thrift::protocol::TProtocolException;
7637       TProtocolException::throwUnionMissingStop();
7638     }
7639   }
7640   _readState.readStructEnd(iprot);
7641 }
7642 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const7643 uint32_t FloatUnion::serializedSize(Protocol_ const* prot_) const {
7644   uint32_t xfer = 0;
7645   xfer += prot_->serializedStructSize("FloatUnion");
7646   switch(this->getType()) {
7647     case FloatUnion::Type::floatSide:
7648     {
7649       xfer += prot_->serializedFieldSize("floatSide", apache::thrift::protocol::T_FLOAT, 1);
7650       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, value_.floatSide);
7651       break;
7652     }
7653     case FloatUnion::Type::doubleSide:
7654     {
7655       xfer += prot_->serializedFieldSize("doubleSide", apache::thrift::protocol::T_DOUBLE, 2);
7656       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, value_.doubleSide);
7657       break;
7658     }
7659     case FloatUnion::Type::__EMPTY__:;
7660   }
7661   xfer += prot_->serializedSizeStop();
7662   return xfer;
7663 }
7664 
7665 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const7666 uint32_t FloatUnion::serializedSizeZC(Protocol_ const* prot_) const {
7667   uint32_t xfer = 0;
7668   xfer += prot_->serializedStructSize("FloatUnion");
7669   switch(this->getType()) {
7670     case FloatUnion::Type::floatSide:
7671     {
7672       xfer += prot_->serializedFieldSize("floatSide", apache::thrift::protocol::T_FLOAT, 1);
7673       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, value_.floatSide);
7674       break;
7675     }
7676     case FloatUnion::Type::doubleSide:
7677     {
7678       xfer += prot_->serializedFieldSize("doubleSide", apache::thrift::protocol::T_DOUBLE, 2);
7679       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, value_.doubleSide);
7680       break;
7681     }
7682     case FloatUnion::Type::__EMPTY__:;
7683   }
7684   xfer += prot_->serializedSizeStop();
7685   return xfer;
7686 }
7687 
7688 template <class Protocol_>
write(Protocol_ * prot_) const7689 uint32_t FloatUnion::write(Protocol_* prot_) const {
7690   uint32_t xfer = 0;
7691   xfer += prot_->writeStructBegin("FloatUnion");
7692   switch(this->getType()) {
7693     case FloatUnion::Type::floatSide:
7694     {
7695       constexpr int16_t kPrevFieldId = 0;
7696       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 1, kPrevFieldId>(*prot_, "floatSide", false);
7697       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, value_.floatSide);
7698       xfer += prot_->writeFieldEnd();
7699       break;
7700     }
7701     case FloatUnion::Type::doubleSide:
7702     {
7703       constexpr int16_t kPrevFieldId = 1;
7704       xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 2, kPrevFieldId>(*prot_, "doubleSide", false);
7705       xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, value_.doubleSide);
7706       xfer += prot_->writeFieldEnd();
7707       break;
7708     }
7709     case FloatUnion::Type::__EMPTY__:;
7710   }
7711   xfer += prot_->writeFieldStop();
7712   xfer += prot_->writeStructEnd();
7713   return xfer;
7714 }
7715 
7716 extern template void FloatUnion::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
7717 extern template uint32_t FloatUnion::write<>(apache::thrift::BinaryProtocolWriter*) const;
7718 extern template uint32_t FloatUnion::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
7719 extern template uint32_t FloatUnion::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
7720 extern template void FloatUnion::readNoXfer<>(apache::thrift::CompactProtocolReader*);
7721 extern template uint32_t FloatUnion::write<>(apache::thrift::CompactProtocolWriter*) const;
7722 extern template uint32_t FloatUnion::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
7723 extern template uint32_t FloatUnion::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
7724 extern template void FloatUnion::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
7725 extern template uint32_t FloatUnion::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
7726 extern template uint32_t FloatUnion::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7727 extern template uint32_t FloatUnion::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7728 
7729 }}} // some::valid::ns
7730 namespace some { namespace valid { namespace ns {
7731 
7732 template <class Protocol_>
readNoXfer(Protocol_ * iprot)7733 void AllRequiredNoExceptMoveCtrStruct::readNoXfer(Protocol_* iprot) {
7734   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
7735 
7736   _readState.readStructBegin(iprot);
7737 
7738   using apache::thrift::TProtocolException;
7739 
7740 
7741   if (UNLIKELY(!_readState.advanceToNextField(
7742           iprot,
7743           0,
7744           1,
7745           apache::thrift::protocol::T_I64))) {
7746     goto _loop;
7747   }
7748 _readField_intField:
7749   {
7750     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->intField, _readState);
7751 
7752   }
7753 
7754   if (UNLIKELY(!_readState.advanceToNextField(
7755           iprot,
7756           1,
7757           0,
7758           apache::thrift::protocol::T_STOP))) {
7759     goto _loop;
7760   }
7761 
7762 _end:
7763   _readState.readStructEnd(iprot);
7764 
7765   return;
7766 
7767 _loop:
7768   _readState.afterAdvanceFailure(iprot);
7769   if (_readState.atStop()) {
7770     goto _end;
7771   }
7772   if (iprot->kUsesFieldNames()) {
7773     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<AllRequiredNoExceptMoveCtrStruct>>();
7774   }
7775 
7776   switch (_readState.fieldId) {
7777     case 1:
7778     {
7779       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
7780         goto _readField_intField;
7781       } else {
7782         goto _skip;
7783       }
7784     }
7785     default:
7786     {
7787 _skip:
7788       _readState.skip(iprot);
7789       _readState.readFieldEnd(iprot);
7790       _readState.readFieldBeginNoInline(iprot);
7791       goto _loop;
7792     }
7793   }
7794 }
7795 
7796 template <class Protocol_>
serializedSize(Protocol_ const * prot_) const7797 uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSize(Protocol_ const* prot_) const {
7798   uint32_t xfer = 0;
7799   xfer += prot_->serializedStructSize("AllRequiredNoExceptMoveCtrStruct");
7800   {
7801     xfer += prot_->serializedFieldSize("intField", apache::thrift::protocol::T_I64, 1);
7802     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->intField);
7803   }
7804   xfer += prot_->serializedSizeStop();
7805   return xfer;
7806 }
7807 
7808 template <class Protocol_>
serializedSizeZC(Protocol_ const * prot_) const7809 uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSizeZC(Protocol_ const* prot_) const {
7810   uint32_t xfer = 0;
7811   xfer += prot_->serializedStructSize("AllRequiredNoExceptMoveCtrStruct");
7812   {
7813     xfer += prot_->serializedFieldSize("intField", apache::thrift::protocol::T_I64, 1);
7814     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->intField);
7815   }
7816   xfer += prot_->serializedSizeStop();
7817   return xfer;
7818 }
7819 
7820 template <class Protocol_>
write(Protocol_ * prot_) const7821 uint32_t AllRequiredNoExceptMoveCtrStruct::write(Protocol_* prot_) const {
7822   uint32_t xfer = 0;
7823   xfer += prot_->writeStructBegin("AllRequiredNoExceptMoveCtrStruct");
7824   bool previousFieldHasValue = true;
7825   {
7826     constexpr int16_t kPrevFieldId = 0;
7827     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "intField", previousFieldHasValue);
7828     previousFieldHasValue = true;
7829     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->intField);
7830     xfer += prot_->writeFieldEnd();
7831   }
7832   xfer += prot_->writeFieldStop();
7833   xfer += prot_->writeStructEnd();
7834   return xfer;
7835 }
7836 
7837 extern template void AllRequiredNoExceptMoveCtrStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
7838 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
7839 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
7840 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
7841 extern template void AllRequiredNoExceptMoveCtrStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
7842 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
7843 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
7844 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
7845 extern template void AllRequiredNoExceptMoveCtrStruct::readNoXfer<>(apache::thrift::SimpleJSONProtocolReader*);
7846 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::write<>(apache::thrift::SimpleJSONProtocolWriter*) const;
7847 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSize<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7848 extern template uint32_t AllRequiredNoExceptMoveCtrStruct::serializedSizeZC<>(apache::thrift::SimpleJSONProtocolWriter const*) const;
7849 
7850 }}} // some::valid::ns
7851