Re-sync with internal repository
[hiphop-php.git] / third-party / thrift / src / thrift / compiler / test / fixtures / terse_write / gen-cpp2 / deprecated_tag_incompatible_terse_write_types.tcc
blob752fe1676e495875b617c7ba79bb1ec49d1c963f
1 /**
2  * Autogenerated by Thrift for src/deprecated_tag_incompatible_terse_write.thrift
3  *
4  * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
5  *  @generated @nocommit
6  */
7 #pragma once
9 #include "thrift/compiler/test/fixtures/terse_write/gen-cpp2/deprecated_tag_incompatible_terse_write_types.h"
11 #include <thrift/lib/cpp2/gen/module_types_tcc.h>
14 namespace apache {
15 namespace thrift {
16 namespace detail {
18 template <>
19 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct> {
20   static void translateFieldName(
21       folly::StringPiece _fname,
22       int16_t& fid,
23       apache::thrift::protocol::TType& _ftype) noexcept;
25 template <>
26 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStructWithCustomDefault> {
27   static void translateFieldName(
28       folly::StringPiece _fname,
29       int16_t& fid,
30       apache::thrift::protocol::TType& _ftype) noexcept;
32 template <>
33 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::StructLevelTerseStruct> {
34   static void translateFieldName(
35       folly::StringPiece _fname,
36       int16_t& fid,
37       apache::thrift::protocol::TType& _ftype) noexcept;
39 template <>
40 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::FieldLevelTerseStruct> {
41   static void translateFieldName(
42       folly::StringPiece _fname,
43       int16_t& fid,
44       apache::thrift::protocol::TType& _ftype) noexcept;
46 template <>
47 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::TerseStructWithCustomDefault> {
48   static void translateFieldName(
49       folly::StringPiece _fname,
50       int16_t& fid,
51       apache::thrift::protocol::TType& _ftype) noexcept;
53 template <>
54 struct TccStructTraits<::facebook::thrift::test::terse_write::deprecated_tag_incompatible::AdaptedFields> {
55   static void translateFieldName(
56       folly::StringPiece _fname,
57       int16_t& fid,
58       apache::thrift::protocol::TType& _ftype) noexcept;
61 } // namespace detail
62 } // namespace thrift
63 } // namespace apache
65 namespace facebook { namespace thrift { namespace test { namespace terse_write { namespace deprecated_tag_incompatible {
67 template <class Protocol_>
68 void MyStruct::readNoXfer(Protocol_* iprot) {
69   __fbthrift_clear_terse_fields();
71   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
73   _readState.readStructBegin(iprot);
75   using apache::thrift::TProtocolException;
78   if (UNLIKELY(!_readState.advanceToNextField(
79           iprot,
80           0,
81           0,
82           apache::thrift::protocol::T_STOP))) {
83     goto _loop;
84   }
86 _end:
87   _readState.readStructEnd(iprot);
89   return;
91 _loop:
92   _readState.afterAdvanceFailure(iprot);
93   if (_readState.atStop()) {
94     goto _end;
95   }
96   if (iprot->kUsesFieldNames()) {
97     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<MyStruct>>();
98   }
100   switch (_readState.fieldId) {
101     default:
102     {
103       _readState.skip(iprot);
104       _readState.readFieldEnd(iprot);
105       _readState.readFieldBeginNoInline(iprot);
106       goto _loop;
107     }
108   }
111 template <class Protocol_>
112 uint32_t MyStruct::serializedSize(Protocol_ const* prot_) const {
113   uint32_t xfer = 0;
114   xfer += prot_->serializedStructSize("MyStruct");
115   xfer += prot_->serializedSizeStop();
116   return xfer;
119 template <class Protocol_>
120 uint32_t MyStruct::serializedSizeZC(Protocol_ const* prot_) const {
121   uint32_t xfer = 0;
122   xfer += prot_->serializedStructSize("MyStruct");
123   xfer += prot_->serializedSizeStop();
124   return xfer;
127 template <class Protocol_>
128 uint32_t MyStruct::write(Protocol_* prot_) const {
129   uint32_t xfer = 0;
130   xfer += prot_->writeStructBegin("MyStruct");
131   xfer += prot_->writeFieldStop();
132   xfer += prot_->writeStructEnd();
133   return xfer;
136 extern template void MyStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
137 extern template uint32_t MyStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
138 extern template uint32_t MyStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
139 extern template uint32_t MyStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
140 extern template void MyStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
141 extern template uint32_t MyStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
142 extern template uint32_t MyStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
143 extern template uint32_t MyStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
146 template <class Protocol_>
147 void MyStructWithCustomDefault::readNoXfer(Protocol_* iprot) {
148   __fbthrift_clear_terse_fields();
150   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
152   _readState.readStructBegin(iprot);
154   using apache::thrift::TProtocolException;
157   if (UNLIKELY(!_readState.advanceToNextField(
158           iprot,
159           0,
160           1,
161           apache::thrift::protocol::T_I64))) {
162     goto _loop;
163   }
164 _readField_field1:
165   {
166     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_field1, _readState);
167     
168   }
169  this->__isset.set(0, true);
171   if (UNLIKELY(!_readState.advanceToNextField(
172           iprot,
173           1,
174           0,
175           apache::thrift::protocol::T_STOP))) {
176     goto _loop;
177   }
179 _end:
180   _readState.readStructEnd(iprot);
182   return;
184 _loop:
185   _readState.afterAdvanceFailure(iprot);
186   if (_readState.atStop()) {
187     goto _end;
188   }
189   if (iprot->kUsesFieldNames()) {
190     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<MyStructWithCustomDefault>>();
191   }
193   switch (_readState.fieldId) {
194     case 1:
195     {
196       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
197         goto _readField_field1;
198       } else {
199         goto _skip;
200       }
201     }
202     default:
203     {
204 _skip:
205       _readState.skip(iprot);
206       _readState.readFieldEnd(iprot);
207       _readState.readFieldBeginNoInline(iprot);
208       goto _loop;
209     }
210   }
213 template <class Protocol_>
214 uint32_t MyStructWithCustomDefault::serializedSize(Protocol_ const* prot_) const {
215   uint32_t xfer = 0;
216   xfer += prot_->serializedStructSize("MyStructWithCustomDefault");
217   {
218     xfer += prot_->serializedFieldSize("field1", apache::thrift::protocol::T_I64, 1);
219     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_field1);
220   }
221   xfer += prot_->serializedSizeStop();
222   return xfer;
225 template <class Protocol_>
226 uint32_t MyStructWithCustomDefault::serializedSizeZC(Protocol_ const* prot_) const {
227   uint32_t xfer = 0;
228   xfer += prot_->serializedStructSize("MyStructWithCustomDefault");
229   {
230     xfer += prot_->serializedFieldSize("field1", apache::thrift::protocol::T_I64, 1);
231     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_field1);
232   }
233   xfer += prot_->serializedSizeStop();
234   return xfer;
237 template <class Protocol_>
238 uint32_t MyStructWithCustomDefault::write(Protocol_* prot_) const {
239   uint32_t xfer = 0;
240   xfer += prot_->writeStructBegin("MyStructWithCustomDefault");
241   bool previousFieldHasValue = true;
242   {
243     constexpr int16_t kPrevFieldId = 0;
244     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 1, kPrevFieldId>(*prot_, "field1", previousFieldHasValue);
245     previousFieldHasValue = true;
246     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_field1);
247     xfer += prot_->writeFieldEnd();
248   }
249   xfer += prot_->writeFieldStop();
250   xfer += prot_->writeStructEnd();
251   return xfer;
254 extern template void MyStructWithCustomDefault::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
255 extern template uint32_t MyStructWithCustomDefault::write<>(apache::thrift::BinaryProtocolWriter*) const;
256 extern template uint32_t MyStructWithCustomDefault::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
257 extern template uint32_t MyStructWithCustomDefault::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
258 extern template void MyStructWithCustomDefault::readNoXfer<>(apache::thrift::CompactProtocolReader*);
259 extern template uint32_t MyStructWithCustomDefault::write<>(apache::thrift::CompactProtocolWriter*) const;
260 extern template uint32_t MyStructWithCustomDefault::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
261 extern template uint32_t MyStructWithCustomDefault::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
264 template <class Protocol_>
265 void StructLevelTerseStruct::readNoXfer(Protocol_* iprot) {
266   __fbthrift_clear_terse_fields();
268   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
270   _readState.readStructBegin(iprot);
272   using apache::thrift::TProtocolException;
275   if (UNLIKELY(!_readState.advanceToNextField(
276           iprot,
277           0,
278           1,
279           apache::thrift::protocol::T_BOOL))) {
280     goto _loop;
281   }
282 _readField_bool_field:
283   {
284     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->__fbthrift_field_bool_field, _readState);
285     
286   }
288   if (UNLIKELY(!_readState.advanceToNextField(
289           iprot,
290           1,
291           2,
292           apache::thrift::protocol::T_BYTE))) {
293     goto _loop;
294   }
295 _readField_byte_field:
296   {
297     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::readWithContext(*iprot, this->__fbthrift_field_byte_field, _readState);
298     
299   }
301   if (UNLIKELY(!_readState.advanceToNextField(
302           iprot,
303           2,
304           3,
305           apache::thrift::protocol::T_I16))) {
306     goto _loop;
307   }
308 _readField_short_field:
309   {
310     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::readWithContext(*iprot, this->__fbthrift_field_short_field, _readState);
311     
312   }
314   if (UNLIKELY(!_readState.advanceToNextField(
315           iprot,
316           3,
317           4,
318           apache::thrift::protocol::T_I32))) {
319     goto _loop;
320   }
321 _readField_int_field:
322   {
323     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->__fbthrift_field_int_field, _readState);
324     
325   }
327   if (UNLIKELY(!_readState.advanceToNextField(
328           iprot,
329           4,
330           5,
331           apache::thrift::protocol::T_I64))) {
332     goto _loop;
333   }
334 _readField_long_field:
335   {
336     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_long_field, _readState);
337     
338   }
340   if (UNLIKELY(!_readState.advanceToNextField(
341           iprot,
342           5,
343           6,
344           apache::thrift::protocol::T_FLOAT))) {
345     goto _loop;
346   }
347 _readField_float_field:
348   {
349     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, this->__fbthrift_field_float_field, _readState);
350     
351   }
353   if (UNLIKELY(!_readState.advanceToNextField(
354           iprot,
355           6,
356           7,
357           apache::thrift::protocol::T_DOUBLE))) {
358     goto _loop;
359   }
360 _readField_double_field:
361   {
362     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, this->__fbthrift_field_double_field, _readState);
363     
364   }
366   if (UNLIKELY(!_readState.advanceToNextField(
367           iprot,
368           7,
369           8,
370           apache::thrift::protocol::T_STRING))) {
371     goto _loop;
372   }
373 _readField_string_field:
374   {
375     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_string_field, _readState);
376     
377   }
379   if (UNLIKELY(!_readState.advanceToNextField(
380           iprot,
381           8,
382           9,
383           apache::thrift::protocol::T_STRING))) {
384     goto _loop;
385   }
386 _readField_binary_field:
387   {
388     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_binary_field, _readState);
389     
390   }
392   if (UNLIKELY(!_readState.advanceToNextField(
393           iprot,
394           9,
395           10,
396           apache::thrift::protocol::T_I32))) {
397     goto _loop;
398   }
399 _readField_enum_field:
400   {
401     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::readWithContext(*iprot, this->__fbthrift_field_enum_field, _readState);
402     
403   }
405   if (UNLIKELY(!_readState.advanceToNextField(
406           iprot,
407           10,
408           11,
409           apache::thrift::protocol::T_LIST))) {
410     goto _loop;
411   }
412 _readField_list_field:
413   {
414     _readState.beforeSubobject(iprot);
415     this->__fbthrift_field_list_field = ::std::vector<::std::int16_t>();
416     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_list_field, _readState);
417     _readState.afterSubobject(iprot);
418     
419   }
421   if (UNLIKELY(!_readState.advanceToNextField(
422           iprot,
423           11,
424           12,
425           apache::thrift::protocol::T_SET))) {
426     goto _loop;
427   }
428 _readField_set_field:
429   {
430     _readState.beforeSubobject(iprot);
431     this->__fbthrift_field_set_field = ::std::set<::std::int16_t>();
432     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_set_field, _readState);
433     _readState.afterSubobject(iprot);
434     
435   }
437   if (UNLIKELY(!_readState.advanceToNextField(
438           iprot,
439           12,
440           13,
441           apache::thrift::protocol::T_MAP))) {
442     goto _loop;
443   }
444 _readField_map_field:
445   {
446     _readState.beforeSubobject(iprot);
447     this->__fbthrift_field_map_field = ::std::map<::std::int16_t, ::std::int16_t>();
448     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_map_field, _readState);
449     _readState.afterSubobject(iprot);
450     
451   }
453   if (UNLIKELY(!_readState.advanceToNextField(
454           iprot,
455           13,
456           14,
457           apache::thrift::protocol::T_STRUCT))) {
458     goto _loop;
459   }
460 _readField_struct_field:
461   {
462     _readState.beforeSubobject(iprot);
463     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::readWithContext(*iprot, this->__fbthrift_field_struct_field, _readState);
464     _readState.afterSubobject(iprot);
465     
466   }
468   if (UNLIKELY(!_readState.advanceToNextField(
469           iprot,
470           14,
471           0,
472           apache::thrift::protocol::T_STOP))) {
473     goto _loop;
474   }
476 _end:
477   _readState.readStructEnd(iprot);
479   return;
481 _loop:
482   _readState.afterAdvanceFailure(iprot);
483   if (_readState.atStop()) {
484     goto _end;
485   }
486   if (iprot->kUsesFieldNames()) {
487     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<StructLevelTerseStruct>>();
488   }
490   switch (_readState.fieldId) {
491     case 1:
492     {
493       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
494         goto _readField_bool_field;
495       } else {
496         goto _skip;
497       }
498     }
499     case 2:
500     {
501       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BYTE))) {
502         goto _readField_byte_field;
503       } else {
504         goto _skip;
505       }
506     }
507     case 3:
508     {
509       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I16))) {
510         goto _readField_short_field;
511       } else {
512         goto _skip;
513       }
514     }
515     case 4:
516     {
517       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
518         goto _readField_int_field;
519       } else {
520         goto _skip;
521       }
522     }
523     case 5:
524     {
525       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
526         goto _readField_long_field;
527       } else {
528         goto _skip;
529       }
530     }
531     case 6:
532     {
533       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT))) {
534         goto _readField_float_field;
535       } else {
536         goto _skip;
537       }
538     }
539     case 7:
540     {
541       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE))) {
542         goto _readField_double_field;
543       } else {
544         goto _skip;
545       }
546     }
547     case 8:
548     {
549       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
550         goto _readField_string_field;
551       } else {
552         goto _skip;
553       }
554     }
555     case 9:
556     {
557       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
558         goto _readField_binary_field;
559       } else {
560         goto _skip;
561       }
562     }
563     case 10:
564     {
565       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
566         goto _readField_enum_field;
567       } else {
568         goto _skip;
569       }
570     }
571     case 11:
572     {
573       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
574         goto _readField_list_field;
575       } else {
576         goto _skip;
577       }
578     }
579     case 12:
580     {
581       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
582         goto _readField_set_field;
583       } else {
584         goto _skip;
585       }
586     }
587     case 13:
588     {
589       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
590         goto _readField_map_field;
591       } else {
592         goto _skip;
593       }
594     }
595     case 14:
596     {
597       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
598         goto _readField_struct_field;
599       } else {
600         goto _skip;
601       }
602     }
603     default:
604     {
605 _skip:
606       _readState.skip(iprot);
607       _readState.readFieldEnd(iprot);
608       _readState.readFieldBeginNoInline(iprot);
609       goto _loop;
610     }
611   }
614 template <class Protocol_>
615 uint32_t StructLevelTerseStruct::serializedSize(Protocol_ const* prot_) const {
616   uint32_t xfer = 0;
617   xfer += prot_->serializedStructSize("StructLevelTerseStruct");
618   if (!(this->__fbthrift_field_bool_field == bool())) {
619     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 1);
620     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
621   }
622   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
623     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 2);
624     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
625   }
626   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
627     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 3);
628     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
629   }
630   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
631     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 4);
632     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
633   }
634   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
635     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 5);
636     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
637   }
638   if (!(this->__fbthrift_field_float_field == float())) {
639     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 6);
640     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
641   }
642   if (!(this->__fbthrift_field_double_field == double())) {
643     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 7);
644     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
645   }
646   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
647     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 8);
648     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
649   }
650   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
651     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 9);
652     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_binary_field);
653   }
654   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
655     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 10);
656     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
657   }
658   if (!(this->__fbthrift_field_list_field.empty())) {
659     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 11);
660     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
661   }
662   if (!(this->__fbthrift_field_set_field.empty())) {
663     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 12);
664     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
665   }
666   if (!(this->__fbthrift_field_map_field.empty())) {
667     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 13);
668     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
669   }
670   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
671     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 14);
672     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<false>(*prot_, this->__fbthrift_field_struct_field);
673   }
674   xfer += prot_->serializedSizeStop();
675   return xfer;
678 template <class Protocol_>
679 uint32_t StructLevelTerseStruct::serializedSizeZC(Protocol_ const* prot_) const {
680   uint32_t xfer = 0;
681   xfer += prot_->serializedStructSize("StructLevelTerseStruct");
682   if (!(this->__fbthrift_field_bool_field == bool())) {
683     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 1);
684     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
685   }
686   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
687     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 2);
688     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
689   }
690   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
691     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 3);
692     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
693   }
694   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
695     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 4);
696     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
697   }
698   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
699     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 5);
700     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
701   }
702   if (!(this->__fbthrift_field_float_field == float())) {
703     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 6);
704     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
705   }
706   if (!(this->__fbthrift_field_double_field == double())) {
707     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 7);
708     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
709   }
710   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
711     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 8);
712     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
713   }
714   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
715     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 9);
716     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_binary_field);
717   }
718   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
719     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 10);
720     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
721   }
722   if (!(this->__fbthrift_field_list_field.empty())) {
723     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 11);
724     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
725   }
726   if (!(this->__fbthrift_field_set_field.empty())) {
727     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 12);
728     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
729   }
730   if (!(this->__fbthrift_field_map_field.empty())) {
731     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 13);
732     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
733   }
734   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
735     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 14);
736     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<true>(*prot_, this->__fbthrift_field_struct_field);
737   }
738   xfer += prot_->serializedSizeStop();
739   return xfer;
742 template <class Protocol_>
743 uint32_t StructLevelTerseStruct::write(Protocol_* prot_) const {
744   uint32_t xfer = 0;
745   xfer += prot_->writeStructBegin("StructLevelTerseStruct");
746   bool previousFieldHasValue = true;
747   if (!(this->__fbthrift_field_bool_field == bool())) {
748     constexpr int16_t kPrevFieldId = 0;
749     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 1, kPrevFieldId>(*prot_, "bool_field", previousFieldHasValue);
750     previousFieldHasValue = true;
751     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->__fbthrift_field_bool_field);
752     xfer += prot_->writeFieldEnd();
753   } else {
754     previousFieldHasValue = false;
755   }
756   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
757     constexpr int16_t kPrevFieldId = 1;
758     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BYTE, 2, kPrevFieldId>(*prot_, "byte_field", previousFieldHasValue);
759     previousFieldHasValue = true;
760     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::write(*prot_, this->__fbthrift_field_byte_field);
761     xfer += prot_->writeFieldEnd();
762   } else {
763     previousFieldHasValue = false;
764   }
765   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
766     constexpr int16_t kPrevFieldId = 2;
767     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I16, 3, kPrevFieldId>(*prot_, "short_field", previousFieldHasValue);
768     previousFieldHasValue = true;
769     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::write(*prot_, this->__fbthrift_field_short_field);
770     xfer += prot_->writeFieldEnd();
771   } else {
772     previousFieldHasValue = false;
773   }
774   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
775     constexpr int16_t kPrevFieldId = 3;
776     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 4, kPrevFieldId>(*prot_, "int_field", previousFieldHasValue);
777     previousFieldHasValue = true;
778     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->__fbthrift_field_int_field);
779     xfer += prot_->writeFieldEnd();
780   } else {
781     previousFieldHasValue = false;
782   }
783   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
784     constexpr int16_t kPrevFieldId = 4;
785     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 5, kPrevFieldId>(*prot_, "long_field", previousFieldHasValue);
786     previousFieldHasValue = true;
787     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_long_field);
788     xfer += prot_->writeFieldEnd();
789   } else {
790     previousFieldHasValue = false;
791   }
792   if (!(this->__fbthrift_field_float_field == float())) {
793     constexpr int16_t kPrevFieldId = 5;
794     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 6, kPrevFieldId>(*prot_, "float_field", previousFieldHasValue);
795     previousFieldHasValue = true;
796     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, this->__fbthrift_field_float_field);
797     xfer += prot_->writeFieldEnd();
798   } else {
799     previousFieldHasValue = false;
800   }
801   if (!(this->__fbthrift_field_double_field == double())) {
802     constexpr int16_t kPrevFieldId = 6;
803     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 7, kPrevFieldId>(*prot_, "double_field", previousFieldHasValue);
804     previousFieldHasValue = true;
805     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, this->__fbthrift_field_double_field);
806     xfer += prot_->writeFieldEnd();
807   } else {
808     previousFieldHasValue = false;
809   }
810   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
811     constexpr int16_t kPrevFieldId = 7;
812     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 8, kPrevFieldId>(*prot_, "string_field", previousFieldHasValue);
813     previousFieldHasValue = true;
814     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_string_field);
815     xfer += prot_->writeFieldEnd();
816   } else {
817     previousFieldHasValue = false;
818   }
819   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
820     constexpr int16_t kPrevFieldId = 8;
821     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 9, kPrevFieldId>(*prot_, "binary_field", previousFieldHasValue);
822     previousFieldHasValue = true;
823     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_binary_field);
824     xfer += prot_->writeFieldEnd();
825   } else {
826     previousFieldHasValue = false;
827   }
828   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
829     constexpr int16_t kPrevFieldId = 9;
830     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 10, kPrevFieldId>(*prot_, "enum_field", previousFieldHasValue);
831     previousFieldHasValue = true;
832     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::write(*prot_, this->__fbthrift_field_enum_field);
833     xfer += prot_->writeFieldEnd();
834   } else {
835     previousFieldHasValue = false;
836   }
837   if (!(this->__fbthrift_field_list_field.empty())) {
838     constexpr int16_t kPrevFieldId = 10;
839     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 11, kPrevFieldId>(*prot_, "list_field", previousFieldHasValue);
840     previousFieldHasValue = true;
841     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::write(*prot_, this->__fbthrift_field_list_field);
842     xfer += prot_->writeFieldEnd();
843   } else {
844     previousFieldHasValue = false;
845   }
846   if (!(this->__fbthrift_field_set_field.empty())) {
847     constexpr int16_t kPrevFieldId = 11;
848     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 12, kPrevFieldId>(*prot_, "set_field", previousFieldHasValue);
849     previousFieldHasValue = true;
850     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::write(*prot_, this->__fbthrift_field_set_field);
851     xfer += prot_->writeFieldEnd();
852   } else {
853     previousFieldHasValue = false;
854   }
855   if (!(this->__fbthrift_field_map_field.empty())) {
856     constexpr int16_t kPrevFieldId = 12;
857     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 13, kPrevFieldId>(*prot_, "map_field", previousFieldHasValue);
858     previousFieldHasValue = true;
859     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::write(*prot_, this->__fbthrift_field_map_field);
860     xfer += prot_->writeFieldEnd();
861   } else {
862     previousFieldHasValue = false;
863   }
864   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
865     constexpr int16_t kPrevFieldId = 13;
866     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 14, kPrevFieldId>(*prot_, "struct_field", previousFieldHasValue);
867     previousFieldHasValue = true;
868     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::write(*prot_, this->__fbthrift_field_struct_field);
869     xfer += prot_->writeFieldEnd();
870   } else {
871     previousFieldHasValue = false;
872   }
873   xfer += prot_->writeFieldStop();
874   xfer += prot_->writeStructEnd();
875   return xfer;
878 extern template void StructLevelTerseStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
879 extern template uint32_t StructLevelTerseStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
880 extern template uint32_t StructLevelTerseStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
881 extern template uint32_t StructLevelTerseStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
882 extern template void StructLevelTerseStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
883 extern template uint32_t StructLevelTerseStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
884 extern template uint32_t StructLevelTerseStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
885 extern template uint32_t StructLevelTerseStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
888 template <class Protocol_>
889 void FieldLevelTerseStruct::readNoXfer(Protocol_* iprot) {
890   __fbthrift_clear_terse_fields();
892   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
894   _readState.readStructBegin(iprot);
896   using apache::thrift::TProtocolException;
899   if (UNLIKELY(!_readState.advanceToNextField(
900           iprot,
901           0,
902           1,
903           apache::thrift::protocol::T_BOOL))) {
904     goto _loop;
905   }
906 _readField_terse_bool_field:
907   {
908     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->__fbthrift_field_terse_bool_field, _readState);
909     
910   }
912   if (UNLIKELY(!_readState.advanceToNextField(
913           iprot,
914           1,
915           2,
916           apache::thrift::protocol::T_BYTE))) {
917     goto _loop;
918   }
919 _readField_terse_byte_field:
920   {
921     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::readWithContext(*iprot, this->__fbthrift_field_terse_byte_field, _readState);
922     
923   }
925   if (UNLIKELY(!_readState.advanceToNextField(
926           iprot,
927           2,
928           3,
929           apache::thrift::protocol::T_I16))) {
930     goto _loop;
931   }
932 _readField_terse_short_field:
933   {
934     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::readWithContext(*iprot, this->__fbthrift_field_terse_short_field, _readState);
935     
936   }
938   if (UNLIKELY(!_readState.advanceToNextField(
939           iprot,
940           3,
941           4,
942           apache::thrift::protocol::T_I32))) {
943     goto _loop;
944   }
945 _readField_terse_int_field:
946   {
947     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->__fbthrift_field_terse_int_field, _readState);
948     
949   }
951   if (UNLIKELY(!_readState.advanceToNextField(
952           iprot,
953           4,
954           5,
955           apache::thrift::protocol::T_I64))) {
956     goto _loop;
957   }
958 _readField_terse_long_field:
959   {
960     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_terse_long_field, _readState);
961     
962   }
964   if (UNLIKELY(!_readState.advanceToNextField(
965           iprot,
966           5,
967           6,
968           apache::thrift::protocol::T_FLOAT))) {
969     goto _loop;
970   }
971 _readField_terse_float_field:
972   {
973     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, this->__fbthrift_field_terse_float_field, _readState);
974     
975   }
977   if (UNLIKELY(!_readState.advanceToNextField(
978           iprot,
979           6,
980           7,
981           apache::thrift::protocol::T_DOUBLE))) {
982     goto _loop;
983   }
984 _readField_terse_double_field:
985   {
986     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, this->__fbthrift_field_terse_double_field, _readState);
987     
988   }
990   if (UNLIKELY(!_readState.advanceToNextField(
991           iprot,
992           7,
993           8,
994           apache::thrift::protocol::T_STRING))) {
995     goto _loop;
996   }
997 _readField_terse_string_field:
998   {
999     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_terse_string_field, _readState);
1000     
1001   }
1003   if (UNLIKELY(!_readState.advanceToNextField(
1004           iprot,
1005           8,
1006           9,
1007           apache::thrift::protocol::T_STRING))) {
1008     goto _loop;
1009   }
1010 _readField_terse_binary_field:
1011   {
1012     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_terse_binary_field, _readState);
1013     
1014   }
1016   if (UNLIKELY(!_readState.advanceToNextField(
1017           iprot,
1018           9,
1019           10,
1020           apache::thrift::protocol::T_I32))) {
1021     goto _loop;
1022   }
1023 _readField_terse_enum_field:
1024   {
1025     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::readWithContext(*iprot, this->__fbthrift_field_terse_enum_field, _readState);
1026     
1027   }
1029   if (UNLIKELY(!_readState.advanceToNextField(
1030           iprot,
1031           10,
1032           11,
1033           apache::thrift::protocol::T_LIST))) {
1034     goto _loop;
1035   }
1036 _readField_terse_list_field:
1037   {
1038     _readState.beforeSubobject(iprot);
1039     this->__fbthrift_field_terse_list_field = ::std::vector<::std::int16_t>();
1040     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_terse_list_field, _readState);
1041     _readState.afterSubobject(iprot);
1042     
1043   }
1045   if (UNLIKELY(!_readState.advanceToNextField(
1046           iprot,
1047           11,
1048           12,
1049           apache::thrift::protocol::T_SET))) {
1050     goto _loop;
1051   }
1052 _readField_terse_set_field:
1053   {
1054     _readState.beforeSubobject(iprot);
1055     this->__fbthrift_field_terse_set_field = ::std::set<::std::int16_t>();
1056     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_terse_set_field, _readState);
1057     _readState.afterSubobject(iprot);
1058     
1059   }
1061   if (UNLIKELY(!_readState.advanceToNextField(
1062           iprot,
1063           12,
1064           13,
1065           apache::thrift::protocol::T_MAP))) {
1066     goto _loop;
1067   }
1068 _readField_terse_map_field:
1069   {
1070     _readState.beforeSubobject(iprot);
1071     this->__fbthrift_field_terse_map_field = ::std::map<::std::int16_t, ::std::int16_t>();
1072     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_terse_map_field, _readState);
1073     _readState.afterSubobject(iprot);
1074     
1075   }
1077   if (UNLIKELY(!_readState.advanceToNextField(
1078           iprot,
1079           13,
1080           14,
1081           apache::thrift::protocol::T_STRUCT))) {
1082     goto _loop;
1083   }
1084 _readField_terse_struct_field:
1085   {
1086     _readState.beforeSubobject(iprot);
1087     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::readWithContext(*iprot, this->__fbthrift_field_terse_struct_field, _readState);
1088     _readState.afterSubobject(iprot);
1089     
1090   }
1092   if (UNLIKELY(!_readState.advanceToNextField(
1093           iprot,
1094           14,
1095           15,
1096           apache::thrift::protocol::T_BOOL))) {
1097     goto _loop;
1098   }
1099 _readField_bool_field:
1100   {
1101     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->__fbthrift_field_bool_field, _readState);
1102     
1103   }
1104  this->__isset.set(0, true);
1106   if (UNLIKELY(!_readState.advanceToNextField(
1107           iprot,
1108           15,
1109           16,
1110           apache::thrift::protocol::T_BYTE))) {
1111     goto _loop;
1112   }
1113 _readField_byte_field:
1114   {
1115     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::readWithContext(*iprot, this->__fbthrift_field_byte_field, _readState);
1116     
1117   }
1118  this->__isset.set(1, true);
1120   if (UNLIKELY(!_readState.advanceToNextField(
1121           iprot,
1122           16,
1123           17,
1124           apache::thrift::protocol::T_I16))) {
1125     goto _loop;
1126   }
1127 _readField_short_field:
1128   {
1129     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::readWithContext(*iprot, this->__fbthrift_field_short_field, _readState);
1130     
1131   }
1132  this->__isset.set(2, true);
1134   if (UNLIKELY(!_readState.advanceToNextField(
1135           iprot,
1136           17,
1137           18,
1138           apache::thrift::protocol::T_I32))) {
1139     goto _loop;
1140   }
1141 _readField_int_field:
1142   {
1143     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->__fbthrift_field_int_field, _readState);
1144     
1145   }
1146  this->__isset.set(3, true);
1148   if (UNLIKELY(!_readState.advanceToNextField(
1149           iprot,
1150           18,
1151           19,
1152           apache::thrift::protocol::T_I64))) {
1153     goto _loop;
1154   }
1155 _readField_long_field:
1156   {
1157     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_long_field, _readState);
1158     
1159   }
1160  this->__isset.set(4, true);
1162   if (UNLIKELY(!_readState.advanceToNextField(
1163           iprot,
1164           19,
1165           20,
1166           apache::thrift::protocol::T_FLOAT))) {
1167     goto _loop;
1168   }
1169 _readField_float_field:
1170   {
1171     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, this->__fbthrift_field_float_field, _readState);
1172     
1173   }
1174  this->__isset.set(5, true);
1176   if (UNLIKELY(!_readState.advanceToNextField(
1177           iprot,
1178           20,
1179           21,
1180           apache::thrift::protocol::T_DOUBLE))) {
1181     goto _loop;
1182   }
1183 _readField_double_field:
1184   {
1185     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, this->__fbthrift_field_double_field, _readState);
1186     
1187   }
1188  this->__isset.set(6, true);
1190   if (UNLIKELY(!_readState.advanceToNextField(
1191           iprot,
1192           21,
1193           22,
1194           apache::thrift::protocol::T_STRING))) {
1195     goto _loop;
1196   }
1197 _readField_string_field:
1198   {
1199     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_string_field, _readState);
1200     
1201   }
1202  this->__isset.set(7, true);
1204   if (UNLIKELY(!_readState.advanceToNextField(
1205           iprot,
1206           22,
1207           23,
1208           apache::thrift::protocol::T_STRING))) {
1209     goto _loop;
1210   }
1211 _readField_binary_field:
1212   {
1213     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_binary_field, _readState);
1214     
1215   }
1216  this->__isset.set(8, true);
1218   if (UNLIKELY(!_readState.advanceToNextField(
1219           iprot,
1220           23,
1221           24,
1222           apache::thrift::protocol::T_I32))) {
1223     goto _loop;
1224   }
1225 _readField_enum_field:
1226   {
1227     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::readWithContext(*iprot, this->__fbthrift_field_enum_field, _readState);
1228     
1229   }
1230  this->__isset.set(9, true);
1232   if (UNLIKELY(!_readState.advanceToNextField(
1233           iprot,
1234           24,
1235           25,
1236           apache::thrift::protocol::T_LIST))) {
1237     goto _loop;
1238   }
1239 _readField_list_field:
1240   {
1241     _readState.beforeSubobject(iprot);
1242     this->__fbthrift_field_list_field = ::std::vector<::std::int16_t>();
1243     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_list_field, _readState);
1244     _readState.afterSubobject(iprot);
1245     
1246   }
1247  this->__isset.set(10, true);
1249   if (UNLIKELY(!_readState.advanceToNextField(
1250           iprot,
1251           25,
1252           26,
1253           apache::thrift::protocol::T_SET))) {
1254     goto _loop;
1255   }
1256 _readField_set_field:
1257   {
1258     _readState.beforeSubobject(iprot);
1259     this->__fbthrift_field_set_field = ::std::set<::std::int16_t>();
1260     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_set_field, _readState);
1261     _readState.afterSubobject(iprot);
1262     
1263   }
1264  this->__isset.set(11, true);
1266   if (UNLIKELY(!_readState.advanceToNextField(
1267           iprot,
1268           26,
1269           27,
1270           apache::thrift::protocol::T_MAP))) {
1271     goto _loop;
1272   }
1273 _readField_map_field:
1274   {
1275     _readState.beforeSubobject(iprot);
1276     this->__fbthrift_field_map_field = ::std::map<::std::int16_t, ::std::int16_t>();
1277     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_map_field, _readState);
1278     _readState.afterSubobject(iprot);
1279     
1280   }
1281  this->__isset.set(12, true);
1283   if (UNLIKELY(!_readState.advanceToNextField(
1284           iprot,
1285           27,
1286           28,
1287           apache::thrift::protocol::T_STRUCT))) {
1288     goto _loop;
1289   }
1290 _readField_struct_field:
1291   {
1292     _readState.beforeSubobject(iprot);
1293     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::readWithContext(*iprot, this->__fbthrift_field_struct_field, _readState);
1294     _readState.afterSubobject(iprot);
1295     
1296   }
1297  this->__isset.set(13, true);
1299   if (UNLIKELY(!_readState.advanceToNextField(
1300           iprot,
1301           28,
1302           0,
1303           apache::thrift::protocol::T_STOP))) {
1304     goto _loop;
1305   }
1307 _end:
1308   _readState.readStructEnd(iprot);
1310   return;
1312 _loop:
1313   _readState.afterAdvanceFailure(iprot);
1314   if (_readState.atStop()) {
1315     goto _end;
1316   }
1317   if (iprot->kUsesFieldNames()) {
1318     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<FieldLevelTerseStruct>>();
1319   }
1321   switch (_readState.fieldId) {
1322     case 1:
1323     {
1324       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
1325         goto _readField_terse_bool_field;
1326       } else {
1327         goto _skip;
1328       }
1329     }
1330     case 2:
1331     {
1332       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BYTE))) {
1333         goto _readField_terse_byte_field;
1334       } else {
1335         goto _skip;
1336       }
1337     }
1338     case 3:
1339     {
1340       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I16))) {
1341         goto _readField_terse_short_field;
1342       } else {
1343         goto _skip;
1344       }
1345     }
1346     case 4:
1347     {
1348       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
1349         goto _readField_terse_int_field;
1350       } else {
1351         goto _skip;
1352       }
1353     }
1354     case 5:
1355     {
1356       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
1357         goto _readField_terse_long_field;
1358       } else {
1359         goto _skip;
1360       }
1361     }
1362     case 6:
1363     {
1364       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT))) {
1365         goto _readField_terse_float_field;
1366       } else {
1367         goto _skip;
1368       }
1369     }
1370     case 7:
1371     {
1372       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE))) {
1373         goto _readField_terse_double_field;
1374       } else {
1375         goto _skip;
1376       }
1377     }
1378     case 8:
1379     {
1380       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
1381         goto _readField_terse_string_field;
1382       } else {
1383         goto _skip;
1384       }
1385     }
1386     case 9:
1387     {
1388       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
1389         goto _readField_terse_binary_field;
1390       } else {
1391         goto _skip;
1392       }
1393     }
1394     case 10:
1395     {
1396       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
1397         goto _readField_terse_enum_field;
1398       } else {
1399         goto _skip;
1400       }
1401     }
1402     case 11:
1403     {
1404       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
1405         goto _readField_terse_list_field;
1406       } else {
1407         goto _skip;
1408       }
1409     }
1410     case 12:
1411     {
1412       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
1413         goto _readField_terse_set_field;
1414       } else {
1415         goto _skip;
1416       }
1417     }
1418     case 13:
1419     {
1420       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
1421         goto _readField_terse_map_field;
1422       } else {
1423         goto _skip;
1424       }
1425     }
1426     case 14:
1427     {
1428       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
1429         goto _readField_terse_struct_field;
1430       } else {
1431         goto _skip;
1432       }
1433     }
1434     case 15:
1435     {
1436       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
1437         goto _readField_bool_field;
1438       } else {
1439         goto _skip;
1440       }
1441     }
1442     case 16:
1443     {
1444       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BYTE))) {
1445         goto _readField_byte_field;
1446       } else {
1447         goto _skip;
1448       }
1449     }
1450     case 17:
1451     {
1452       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I16))) {
1453         goto _readField_short_field;
1454       } else {
1455         goto _skip;
1456       }
1457     }
1458     case 18:
1459     {
1460       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
1461         goto _readField_int_field;
1462       } else {
1463         goto _skip;
1464       }
1465     }
1466     case 19:
1467     {
1468       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
1469         goto _readField_long_field;
1470       } else {
1471         goto _skip;
1472       }
1473     }
1474     case 20:
1475     {
1476       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT))) {
1477         goto _readField_float_field;
1478       } else {
1479         goto _skip;
1480       }
1481     }
1482     case 21:
1483     {
1484       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE))) {
1485         goto _readField_double_field;
1486       } else {
1487         goto _skip;
1488       }
1489     }
1490     case 22:
1491     {
1492       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
1493         goto _readField_string_field;
1494       } else {
1495         goto _skip;
1496       }
1497     }
1498     case 23:
1499     {
1500       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
1501         goto _readField_binary_field;
1502       } else {
1503         goto _skip;
1504       }
1505     }
1506     case 24:
1507     {
1508       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
1509         goto _readField_enum_field;
1510       } else {
1511         goto _skip;
1512       }
1513     }
1514     case 25:
1515     {
1516       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
1517         goto _readField_list_field;
1518       } else {
1519         goto _skip;
1520       }
1521     }
1522     case 26:
1523     {
1524       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
1525         goto _readField_set_field;
1526       } else {
1527         goto _skip;
1528       }
1529     }
1530     case 27:
1531     {
1532       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
1533         goto _readField_map_field;
1534       } else {
1535         goto _skip;
1536       }
1537     }
1538     case 28:
1539     {
1540       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
1541         goto _readField_struct_field;
1542       } else {
1543         goto _skip;
1544       }
1545     }
1546     default:
1547     {
1548 _skip:
1549       _readState.skip(iprot);
1550       _readState.readFieldEnd(iprot);
1551       _readState.readFieldBeginNoInline(iprot);
1552       goto _loop;
1553     }
1554   }
1557 template <class Protocol_>
1558 uint32_t FieldLevelTerseStruct::serializedSize(Protocol_ const* prot_) const {
1559   uint32_t xfer = 0;
1560   xfer += prot_->serializedStructSize("FieldLevelTerseStruct");
1561   if (!(this->__fbthrift_field_terse_bool_field == bool())) {
1562     xfer += prot_->serializedFieldSize("terse_bool_field", apache::thrift::protocol::T_BOOL, 1);
1563     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_bool_field);
1564   }
1565   if (!(this->__fbthrift_field_terse_byte_field == ::std::int8_t())) {
1566     xfer += prot_->serializedFieldSize("terse_byte_field", apache::thrift::protocol::T_BYTE, 2);
1567     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_byte_field);
1568   }
1569   if (!(this->__fbthrift_field_terse_short_field == ::std::int16_t())) {
1570     xfer += prot_->serializedFieldSize("terse_short_field", apache::thrift::protocol::T_I16, 3);
1571     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_short_field);
1572   }
1573   if (!(this->__fbthrift_field_terse_int_field == ::std::int32_t())) {
1574     xfer += prot_->serializedFieldSize("terse_int_field", apache::thrift::protocol::T_I32, 4);
1575     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_int_field);
1576   }
1577   if (!(this->__fbthrift_field_terse_long_field == ::std::int64_t())) {
1578     xfer += prot_->serializedFieldSize("terse_long_field", apache::thrift::protocol::T_I64, 5);
1579     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_long_field);
1580   }
1581   if (!(this->__fbthrift_field_terse_float_field == float())) {
1582     xfer += prot_->serializedFieldSize("terse_float_field", apache::thrift::protocol::T_FLOAT, 6);
1583     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_float_field);
1584   }
1585   if (!(this->__fbthrift_field_terse_double_field == double())) {
1586     xfer += prot_->serializedFieldSize("terse_double_field", apache::thrift::protocol::T_DOUBLE, 7);
1587     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_double_field);
1588   }
1589   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_string_field))) {
1590     xfer += prot_->serializedFieldSize("terse_string_field", apache::thrift::protocol::T_STRING, 8);
1591     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_string_field);
1592   }
1593   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_binary_field))) {
1594     xfer += prot_->serializedFieldSize("terse_binary_field", apache::thrift::protocol::T_STRING, 9);
1595     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_binary_field);
1596   }
1597   if (!(this->__fbthrift_field_terse_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
1598     xfer += prot_->serializedFieldSize("terse_enum_field", apache::thrift::protocol::T_I32, 10);
1599     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_enum_field);
1600   }
1601   if (!(this->__fbthrift_field_terse_list_field.empty())) {
1602     xfer += prot_->serializedFieldSize("terse_list_field", apache::thrift::protocol::T_LIST, 11);
1603     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_list_field);
1604   }
1605   if (!(this->__fbthrift_field_terse_set_field.empty())) {
1606     xfer += prot_->serializedFieldSize("terse_set_field", apache::thrift::protocol::T_SET, 12);
1607     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_set_field);
1608   }
1609   if (!(this->__fbthrift_field_terse_map_field.empty())) {
1610     xfer += prot_->serializedFieldSize("terse_map_field", apache::thrift::protocol::T_MAP, 13);
1611     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_map_field);
1612   }
1613   if (!(::apache::thrift::empty(this->__fbthrift_field_terse_struct_field))) {
1614     xfer += prot_->serializedFieldSize("terse_struct_field", apache::thrift::protocol::T_STRUCT, 14);
1615     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_struct_field);
1616   }
1617   {
1618     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 15);
1619     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
1620   }
1621   {
1622     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 16);
1623     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
1624   }
1625   {
1626     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 17);
1627     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
1628   }
1629   {
1630     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 18);
1631     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
1632   }
1633   {
1634     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 19);
1635     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
1636   }
1637   {
1638     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 20);
1639     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
1640   }
1641   {
1642     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 21);
1643     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
1644   }
1645   {
1646     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 22);
1647     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
1648   }
1649   {
1650     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 23);
1651     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_binary_field);
1652   }
1653   {
1654     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 24);
1655     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
1656   }
1657   {
1658     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 25);
1659     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
1660   }
1661   {
1662     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 26);
1663     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
1664   }
1665   {
1666     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 27);
1667     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
1668   }
1669   {
1670     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 28);
1671     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<false>(*prot_, this->__fbthrift_field_struct_field);
1672   }
1673   xfer += prot_->serializedSizeStop();
1674   return xfer;
1677 template <class Protocol_>
1678 uint32_t FieldLevelTerseStruct::serializedSizeZC(Protocol_ const* prot_) const {
1679   uint32_t xfer = 0;
1680   xfer += prot_->serializedStructSize("FieldLevelTerseStruct");
1681   if (!(this->__fbthrift_field_terse_bool_field == bool())) {
1682     xfer += prot_->serializedFieldSize("terse_bool_field", apache::thrift::protocol::T_BOOL, 1);
1683     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_bool_field);
1684   }
1685   if (!(this->__fbthrift_field_terse_byte_field == ::std::int8_t())) {
1686     xfer += prot_->serializedFieldSize("terse_byte_field", apache::thrift::protocol::T_BYTE, 2);
1687     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_byte_field);
1688   }
1689   if (!(this->__fbthrift_field_terse_short_field == ::std::int16_t())) {
1690     xfer += prot_->serializedFieldSize("terse_short_field", apache::thrift::protocol::T_I16, 3);
1691     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_short_field);
1692   }
1693   if (!(this->__fbthrift_field_terse_int_field == ::std::int32_t())) {
1694     xfer += prot_->serializedFieldSize("terse_int_field", apache::thrift::protocol::T_I32, 4);
1695     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_int_field);
1696   }
1697   if (!(this->__fbthrift_field_terse_long_field == ::std::int64_t())) {
1698     xfer += prot_->serializedFieldSize("terse_long_field", apache::thrift::protocol::T_I64, 5);
1699     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_long_field);
1700   }
1701   if (!(this->__fbthrift_field_terse_float_field == float())) {
1702     xfer += prot_->serializedFieldSize("terse_float_field", apache::thrift::protocol::T_FLOAT, 6);
1703     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_float_field);
1704   }
1705   if (!(this->__fbthrift_field_terse_double_field == double())) {
1706     xfer += prot_->serializedFieldSize("terse_double_field", apache::thrift::protocol::T_DOUBLE, 7);
1707     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_double_field);
1708   }
1709   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_string_field))) {
1710     xfer += prot_->serializedFieldSize("terse_string_field", apache::thrift::protocol::T_STRING, 8);
1711     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_string_field);
1712   }
1713   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_binary_field))) {
1714     xfer += prot_->serializedFieldSize("terse_binary_field", apache::thrift::protocol::T_STRING, 9);
1715     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_terse_binary_field);
1716   }
1717   if (!(this->__fbthrift_field_terse_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
1718     xfer += prot_->serializedFieldSize("terse_enum_field", apache::thrift::protocol::T_I32, 10);
1719     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_enum_field);
1720   }
1721   if (!(this->__fbthrift_field_terse_list_field.empty())) {
1722     xfer += prot_->serializedFieldSize("terse_list_field", apache::thrift::protocol::T_LIST, 11);
1723     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_list_field);
1724   }
1725   if (!(this->__fbthrift_field_terse_set_field.empty())) {
1726     xfer += prot_->serializedFieldSize("terse_set_field", apache::thrift::protocol::T_SET, 12);
1727     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_set_field);
1728   }
1729   if (!(this->__fbthrift_field_terse_map_field.empty())) {
1730     xfer += prot_->serializedFieldSize("terse_map_field", apache::thrift::protocol::T_MAP, 13);
1731     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_terse_map_field);
1732   }
1733   if (!(::apache::thrift::empty(this->__fbthrift_field_terse_struct_field))) {
1734     xfer += prot_->serializedFieldSize("terse_struct_field", apache::thrift::protocol::T_STRUCT, 14);
1735     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<true>(*prot_, this->__fbthrift_field_terse_struct_field);
1736   }
1737   {
1738     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 15);
1739     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
1740   }
1741   {
1742     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 16);
1743     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
1744   }
1745   {
1746     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 17);
1747     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
1748   }
1749   {
1750     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 18);
1751     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
1752   }
1753   {
1754     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 19);
1755     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
1756   }
1757   {
1758     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 20);
1759     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
1760   }
1761   {
1762     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 21);
1763     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
1764   }
1765   {
1766     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 22);
1767     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
1768   }
1769   {
1770     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 23);
1771     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_binary_field);
1772   }
1773   {
1774     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 24);
1775     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
1776   }
1777   {
1778     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 25);
1779     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
1780   }
1781   {
1782     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 26);
1783     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
1784   }
1785   {
1786     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 27);
1787     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
1788   }
1789   {
1790     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 28);
1791     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::serializedSize<true>(*prot_, this->__fbthrift_field_struct_field);
1792   }
1793   xfer += prot_->serializedSizeStop();
1794   return xfer;
1797 template <class Protocol_>
1798 uint32_t FieldLevelTerseStruct::write(Protocol_* prot_) const {
1799   uint32_t xfer = 0;
1800   xfer += prot_->writeStructBegin("FieldLevelTerseStruct");
1801   bool previousFieldHasValue = true;
1802   if (!(this->__fbthrift_field_terse_bool_field == bool())) {
1803     constexpr int16_t kPrevFieldId = 0;
1804     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 1, kPrevFieldId>(*prot_, "terse_bool_field", previousFieldHasValue);
1805     previousFieldHasValue = true;
1806     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->__fbthrift_field_terse_bool_field);
1807     xfer += prot_->writeFieldEnd();
1808   } else {
1809     previousFieldHasValue = false;
1810   }
1811   if (!(this->__fbthrift_field_terse_byte_field == ::std::int8_t())) {
1812     constexpr int16_t kPrevFieldId = 1;
1813     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BYTE, 2, kPrevFieldId>(*prot_, "terse_byte_field", previousFieldHasValue);
1814     previousFieldHasValue = true;
1815     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::write(*prot_, this->__fbthrift_field_terse_byte_field);
1816     xfer += prot_->writeFieldEnd();
1817   } else {
1818     previousFieldHasValue = false;
1819   }
1820   if (!(this->__fbthrift_field_terse_short_field == ::std::int16_t())) {
1821     constexpr int16_t kPrevFieldId = 2;
1822     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I16, 3, kPrevFieldId>(*prot_, "terse_short_field", previousFieldHasValue);
1823     previousFieldHasValue = true;
1824     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::write(*prot_, this->__fbthrift_field_terse_short_field);
1825     xfer += prot_->writeFieldEnd();
1826   } else {
1827     previousFieldHasValue = false;
1828   }
1829   if (!(this->__fbthrift_field_terse_int_field == ::std::int32_t())) {
1830     constexpr int16_t kPrevFieldId = 3;
1831     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 4, kPrevFieldId>(*prot_, "terse_int_field", previousFieldHasValue);
1832     previousFieldHasValue = true;
1833     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->__fbthrift_field_terse_int_field);
1834     xfer += prot_->writeFieldEnd();
1835   } else {
1836     previousFieldHasValue = false;
1837   }
1838   if (!(this->__fbthrift_field_terse_long_field == ::std::int64_t())) {
1839     constexpr int16_t kPrevFieldId = 4;
1840     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 5, kPrevFieldId>(*prot_, "terse_long_field", previousFieldHasValue);
1841     previousFieldHasValue = true;
1842     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_terse_long_field);
1843     xfer += prot_->writeFieldEnd();
1844   } else {
1845     previousFieldHasValue = false;
1846   }
1847   if (!(this->__fbthrift_field_terse_float_field == float())) {
1848     constexpr int16_t kPrevFieldId = 5;
1849     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 6, kPrevFieldId>(*prot_, "terse_float_field", previousFieldHasValue);
1850     previousFieldHasValue = true;
1851     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, this->__fbthrift_field_terse_float_field);
1852     xfer += prot_->writeFieldEnd();
1853   } else {
1854     previousFieldHasValue = false;
1855   }
1856   if (!(this->__fbthrift_field_terse_double_field == double())) {
1857     constexpr int16_t kPrevFieldId = 6;
1858     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 7, kPrevFieldId>(*prot_, "terse_double_field", previousFieldHasValue);
1859     previousFieldHasValue = true;
1860     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, this->__fbthrift_field_terse_double_field);
1861     xfer += prot_->writeFieldEnd();
1862   } else {
1863     previousFieldHasValue = false;
1864   }
1865   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_string_field))) {
1866     constexpr int16_t kPrevFieldId = 7;
1867     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 8, kPrevFieldId>(*prot_, "terse_string_field", previousFieldHasValue);
1868     previousFieldHasValue = true;
1869     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_terse_string_field);
1870     xfer += prot_->writeFieldEnd();
1871   } else {
1872     previousFieldHasValue = false;
1873   }
1874   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_terse_binary_field))) {
1875     constexpr int16_t kPrevFieldId = 8;
1876     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 9, kPrevFieldId>(*prot_, "terse_binary_field", previousFieldHasValue);
1877     previousFieldHasValue = true;
1878     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_terse_binary_field);
1879     xfer += prot_->writeFieldEnd();
1880   } else {
1881     previousFieldHasValue = false;
1882   }
1883   if (!(this->__fbthrift_field_terse_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
1884     constexpr int16_t kPrevFieldId = 9;
1885     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 10, kPrevFieldId>(*prot_, "terse_enum_field", previousFieldHasValue);
1886     previousFieldHasValue = true;
1887     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::write(*prot_, this->__fbthrift_field_terse_enum_field);
1888     xfer += prot_->writeFieldEnd();
1889   } else {
1890     previousFieldHasValue = false;
1891   }
1892   if (!(this->__fbthrift_field_terse_list_field.empty())) {
1893     constexpr int16_t kPrevFieldId = 10;
1894     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 11, kPrevFieldId>(*prot_, "terse_list_field", previousFieldHasValue);
1895     previousFieldHasValue = true;
1896     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::write(*prot_, this->__fbthrift_field_terse_list_field);
1897     xfer += prot_->writeFieldEnd();
1898   } else {
1899     previousFieldHasValue = false;
1900   }
1901   if (!(this->__fbthrift_field_terse_set_field.empty())) {
1902     constexpr int16_t kPrevFieldId = 11;
1903     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 12, kPrevFieldId>(*prot_, "terse_set_field", previousFieldHasValue);
1904     previousFieldHasValue = true;
1905     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::write(*prot_, this->__fbthrift_field_terse_set_field);
1906     xfer += prot_->writeFieldEnd();
1907   } else {
1908     previousFieldHasValue = false;
1909   }
1910   if (!(this->__fbthrift_field_terse_map_field.empty())) {
1911     constexpr int16_t kPrevFieldId = 12;
1912     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 13, kPrevFieldId>(*prot_, "terse_map_field", previousFieldHasValue);
1913     previousFieldHasValue = true;
1914     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::write(*prot_, this->__fbthrift_field_terse_map_field);
1915     xfer += prot_->writeFieldEnd();
1916   } else {
1917     previousFieldHasValue = false;
1918   }
1919   if (!(::apache::thrift::empty(this->__fbthrift_field_terse_struct_field))) {
1920     constexpr int16_t kPrevFieldId = 13;
1921     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 14, kPrevFieldId>(*prot_, "terse_struct_field", previousFieldHasValue);
1922     previousFieldHasValue = true;
1923     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::write(*prot_, this->__fbthrift_field_terse_struct_field);
1924     xfer += prot_->writeFieldEnd();
1925   } else {
1926     previousFieldHasValue = false;
1927   }
1928   {
1929     constexpr int16_t kPrevFieldId = 14;
1930     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 15, kPrevFieldId>(*prot_, "bool_field", previousFieldHasValue);
1931     previousFieldHasValue = true;
1932     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->__fbthrift_field_bool_field);
1933     xfer += prot_->writeFieldEnd();
1934   }
1935   {
1936     constexpr int16_t kPrevFieldId = 15;
1937     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BYTE, 16, kPrevFieldId>(*prot_, "byte_field", previousFieldHasValue);
1938     previousFieldHasValue = true;
1939     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::write(*prot_, this->__fbthrift_field_byte_field);
1940     xfer += prot_->writeFieldEnd();
1941   }
1942   {
1943     constexpr int16_t kPrevFieldId = 16;
1944     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I16, 17, kPrevFieldId>(*prot_, "short_field", previousFieldHasValue);
1945     previousFieldHasValue = true;
1946     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::write(*prot_, this->__fbthrift_field_short_field);
1947     xfer += prot_->writeFieldEnd();
1948   }
1949   {
1950     constexpr int16_t kPrevFieldId = 17;
1951     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 18, kPrevFieldId>(*prot_, "int_field", previousFieldHasValue);
1952     previousFieldHasValue = true;
1953     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->__fbthrift_field_int_field);
1954     xfer += prot_->writeFieldEnd();
1955   }
1956   {
1957     constexpr int16_t kPrevFieldId = 18;
1958     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 19, kPrevFieldId>(*prot_, "long_field", previousFieldHasValue);
1959     previousFieldHasValue = true;
1960     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_long_field);
1961     xfer += prot_->writeFieldEnd();
1962   }
1963   {
1964     constexpr int16_t kPrevFieldId = 19;
1965     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 20, kPrevFieldId>(*prot_, "float_field", previousFieldHasValue);
1966     previousFieldHasValue = true;
1967     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, this->__fbthrift_field_float_field);
1968     xfer += prot_->writeFieldEnd();
1969   }
1970   {
1971     constexpr int16_t kPrevFieldId = 20;
1972     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 21, kPrevFieldId>(*prot_, "double_field", previousFieldHasValue);
1973     previousFieldHasValue = true;
1974     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, this->__fbthrift_field_double_field);
1975     xfer += prot_->writeFieldEnd();
1976   }
1977   {
1978     constexpr int16_t kPrevFieldId = 21;
1979     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 22, kPrevFieldId>(*prot_, "string_field", previousFieldHasValue);
1980     previousFieldHasValue = true;
1981     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_string_field);
1982     xfer += prot_->writeFieldEnd();
1983   }
1984   {
1985     constexpr int16_t kPrevFieldId = 22;
1986     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 23, kPrevFieldId>(*prot_, "binary_field", previousFieldHasValue);
1987     previousFieldHasValue = true;
1988     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_binary_field);
1989     xfer += prot_->writeFieldEnd();
1990   }
1991   {
1992     constexpr int16_t kPrevFieldId = 23;
1993     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 24, kPrevFieldId>(*prot_, "enum_field", previousFieldHasValue);
1994     previousFieldHasValue = true;
1995     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::write(*prot_, this->__fbthrift_field_enum_field);
1996     xfer += prot_->writeFieldEnd();
1997   }
1998   {
1999     constexpr int16_t kPrevFieldId = 24;
2000     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 25, kPrevFieldId>(*prot_, "list_field", previousFieldHasValue);
2001     previousFieldHasValue = true;
2002     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::write(*prot_, this->__fbthrift_field_list_field);
2003     xfer += prot_->writeFieldEnd();
2004   }
2005   {
2006     constexpr int16_t kPrevFieldId = 25;
2007     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 26, kPrevFieldId>(*prot_, "set_field", previousFieldHasValue);
2008     previousFieldHasValue = true;
2009     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::write(*prot_, this->__fbthrift_field_set_field);
2010     xfer += prot_->writeFieldEnd();
2011   }
2012   {
2013     constexpr int16_t kPrevFieldId = 26;
2014     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 27, kPrevFieldId>(*prot_, "map_field", previousFieldHasValue);
2015     previousFieldHasValue = true;
2016     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::write(*prot_, this->__fbthrift_field_map_field);
2017     xfer += prot_->writeFieldEnd();
2018   }
2019   {
2020     constexpr int16_t kPrevFieldId = 27;
2021     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 28, kPrevFieldId>(*prot_, "struct_field", previousFieldHasValue);
2022     previousFieldHasValue = true;
2023     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStruct>::write(*prot_, this->__fbthrift_field_struct_field);
2024     xfer += prot_->writeFieldEnd();
2025   }
2026   xfer += prot_->writeFieldStop();
2027   xfer += prot_->writeStructEnd();
2028   return xfer;
2031 extern template void FieldLevelTerseStruct::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
2032 extern template uint32_t FieldLevelTerseStruct::write<>(apache::thrift::BinaryProtocolWriter*) const;
2033 extern template uint32_t FieldLevelTerseStruct::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
2034 extern template uint32_t FieldLevelTerseStruct::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
2035 extern template void FieldLevelTerseStruct::readNoXfer<>(apache::thrift::CompactProtocolReader*);
2036 extern template uint32_t FieldLevelTerseStruct::write<>(apache::thrift::CompactProtocolWriter*) const;
2037 extern template uint32_t FieldLevelTerseStruct::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
2038 extern template uint32_t FieldLevelTerseStruct::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
2041 template <class Protocol_>
2042 void TerseStructWithCustomDefault::readNoXfer(Protocol_* iprot) {
2043   __fbthrift_clear_terse_fields();
2045   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
2047   _readState.readStructBegin(iprot);
2049   using apache::thrift::TProtocolException;
2052   if (UNLIKELY(!_readState.advanceToNextField(
2053           iprot,
2054           0,
2055           1,
2056           apache::thrift::protocol::T_BOOL))) {
2057     goto _loop;
2058   }
2059 _readField_bool_field:
2060   {
2061     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->__fbthrift_field_bool_field, _readState);
2062     
2063   }
2065   if (UNLIKELY(!_readState.advanceToNextField(
2066           iprot,
2067           1,
2068           2,
2069           apache::thrift::protocol::T_BYTE))) {
2070     goto _loop;
2071   }
2072 _readField_byte_field:
2073   {
2074     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::readWithContext(*iprot, this->__fbthrift_field_byte_field, _readState);
2075     
2076   }
2078   if (UNLIKELY(!_readState.advanceToNextField(
2079           iprot,
2080           2,
2081           3,
2082           apache::thrift::protocol::T_I16))) {
2083     goto _loop;
2084   }
2085 _readField_short_field:
2086   {
2087     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::readWithContext(*iprot, this->__fbthrift_field_short_field, _readState);
2088     
2089   }
2091   if (UNLIKELY(!_readState.advanceToNextField(
2092           iprot,
2093           3,
2094           4,
2095           apache::thrift::protocol::T_I32))) {
2096     goto _loop;
2097   }
2098 _readField_int_field:
2099   {
2100     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->__fbthrift_field_int_field, _readState);
2101     
2102   }
2104   if (UNLIKELY(!_readState.advanceToNextField(
2105           iprot,
2106           4,
2107           5,
2108           apache::thrift::protocol::T_I64))) {
2109     goto _loop;
2110   }
2111 _readField_long_field:
2112   {
2113     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->__fbthrift_field_long_field, _readState);
2114     
2115   }
2117   if (UNLIKELY(!_readState.advanceToNextField(
2118           iprot,
2119           5,
2120           6,
2121           apache::thrift::protocol::T_FLOAT))) {
2122     goto _loop;
2123   }
2124 _readField_float_field:
2125   {
2126     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::readWithContext(*iprot, this->__fbthrift_field_float_field, _readState);
2127     
2128   }
2130   if (UNLIKELY(!_readState.advanceToNextField(
2131           iprot,
2132           6,
2133           7,
2134           apache::thrift::protocol::T_DOUBLE))) {
2135     goto _loop;
2136   }
2137 _readField_double_field:
2138   {
2139     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::readWithContext(*iprot, this->__fbthrift_field_double_field, _readState);
2140     
2141   }
2143   if (UNLIKELY(!_readState.advanceToNextField(
2144           iprot,
2145           7,
2146           8,
2147           apache::thrift::protocol::T_STRING))) {
2148     goto _loop;
2149   }
2150 _readField_string_field:
2151   {
2152     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_string_field, _readState);
2153     
2154   }
2156   if (UNLIKELY(!_readState.advanceToNextField(
2157           iprot,
2158           8,
2159           9,
2160           apache::thrift::protocol::T_STRING))) {
2161     goto _loop;
2162   }
2163 _readField_binary_field:
2164   {
2165     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::readWithContext(*iprot, this->__fbthrift_field_binary_field, _readState);
2166     
2167   }
2169   if (UNLIKELY(!_readState.advanceToNextField(
2170           iprot,
2171           9,
2172           10,
2173           apache::thrift::protocol::T_I32))) {
2174     goto _loop;
2175   }
2176 _readField_enum_field:
2177   {
2178     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::readWithContext(*iprot, this->__fbthrift_field_enum_field, _readState);
2179     
2180   }
2182   if (UNLIKELY(!_readState.advanceToNextField(
2183           iprot,
2184           10,
2185           11,
2186           apache::thrift::protocol::T_LIST))) {
2187     goto _loop;
2188   }
2189 _readField_list_field:
2190   {
2191     _readState.beforeSubobject(iprot);
2192     this->__fbthrift_field_list_field = ::std::vector<::std::int16_t>();
2193     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_list_field, _readState);
2194     _readState.afterSubobject(iprot);
2195     
2196   }
2198   if (UNLIKELY(!_readState.advanceToNextField(
2199           iprot,
2200           11,
2201           12,
2202           apache::thrift::protocol::T_SET))) {
2203     goto _loop;
2204   }
2205 _readField_set_field:
2206   {
2207     _readState.beforeSubobject(iprot);
2208     this->__fbthrift_field_set_field = ::std::set<::std::int16_t>();
2209     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_set_field, _readState);
2210     _readState.afterSubobject(iprot);
2211     
2212   }
2214   if (UNLIKELY(!_readState.advanceToNextField(
2215           iprot,
2216           12,
2217           13,
2218           apache::thrift::protocol::T_MAP))) {
2219     goto _loop;
2220   }
2221 _readField_map_field:
2222   {
2223     _readState.beforeSubobject(iprot);
2224     this->__fbthrift_field_map_field = ::std::map<::std::int16_t, ::std::int16_t>();
2225     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::readWithContext(*iprot, this->__fbthrift_field_map_field, _readState);
2226     _readState.afterSubobject(iprot);
2227     
2228   }
2230   if (UNLIKELY(!_readState.advanceToNextField(
2231           iprot,
2232           13,
2233           14,
2234           apache::thrift::protocol::T_STRUCT))) {
2235     goto _loop;
2236   }
2237 _readField_struct_field:
2238   {
2239     _readState.beforeSubobject(iprot);
2240     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStructWithCustomDefault>::readWithContext(*iprot, this->__fbthrift_field_struct_field, _readState);
2241     _readState.afterSubobject(iprot);
2242     
2243   }
2245   if (UNLIKELY(!_readState.advanceToNextField(
2246           iprot,
2247           14,
2248           0,
2249           apache::thrift::protocol::T_STOP))) {
2250     goto _loop;
2251   }
2253 _end:
2254   _readState.readStructEnd(iprot);
2256   return;
2258 _loop:
2259   _readState.afterAdvanceFailure(iprot);
2260   if (_readState.atStop()) {
2261     goto _end;
2262   }
2263   if (iprot->kUsesFieldNames()) {
2264     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<TerseStructWithCustomDefault>>();
2265   }
2267   switch (_readState.fieldId) {
2268     case 1:
2269     {
2270       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
2271         goto _readField_bool_field;
2272       } else {
2273         goto _skip;
2274       }
2275     }
2276     case 2:
2277     {
2278       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BYTE))) {
2279         goto _readField_byte_field;
2280       } else {
2281         goto _skip;
2282       }
2283     }
2284     case 3:
2285     {
2286       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I16))) {
2287         goto _readField_short_field;
2288       } else {
2289         goto _skip;
2290       }
2291     }
2292     case 4:
2293     {
2294       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2295         goto _readField_int_field;
2296       } else {
2297         goto _skip;
2298       }
2299     }
2300     case 5:
2301     {
2302       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
2303         goto _readField_long_field;
2304       } else {
2305         goto _skip;
2306       }
2307     }
2308     case 6:
2309     {
2310       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_FLOAT))) {
2311         goto _readField_float_field;
2312       } else {
2313         goto _skip;
2314       }
2315     }
2316     case 7:
2317     {
2318       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_DOUBLE))) {
2319         goto _readField_double_field;
2320       } else {
2321         goto _skip;
2322       }
2323     }
2324     case 8:
2325     {
2326       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2327         goto _readField_string_field;
2328       } else {
2329         goto _skip;
2330       }
2331     }
2332     case 9:
2333     {
2334       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRING))) {
2335         goto _readField_binary_field;
2336       } else {
2337         goto _skip;
2338       }
2339     }
2340     case 10:
2341     {
2342       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2343         goto _readField_enum_field;
2344       } else {
2345         goto _skip;
2346       }
2347     }
2348     case 11:
2349     {
2350       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_LIST))) {
2351         goto _readField_list_field;
2352       } else {
2353         goto _skip;
2354       }
2355     }
2356     case 12:
2357     {
2358       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_SET))) {
2359         goto _readField_set_field;
2360       } else {
2361         goto _skip;
2362       }
2363     }
2364     case 13:
2365     {
2366       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_MAP))) {
2367         goto _readField_map_field;
2368       } else {
2369         goto _skip;
2370       }
2371     }
2372     case 14:
2373     {
2374       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_STRUCT))) {
2375         goto _readField_struct_field;
2376       } else {
2377         goto _skip;
2378       }
2379     }
2380     default:
2381     {
2382 _skip:
2383       _readState.skip(iprot);
2384       _readState.readFieldEnd(iprot);
2385       _readState.readFieldBeginNoInline(iprot);
2386       goto _loop;
2387     }
2388   }
2391 template <class Protocol_>
2392 uint32_t TerseStructWithCustomDefault::serializedSize(Protocol_ const* prot_) const {
2393   uint32_t xfer = 0;
2394   xfer += prot_->serializedStructSize("TerseStructWithCustomDefault");
2395   if (!(this->__fbthrift_field_bool_field == bool())) {
2396     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 1);
2397     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
2398   }
2399   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
2400     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 2);
2401     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
2402   }
2403   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
2404     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 3);
2405     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
2406   }
2407   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
2408     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 4);
2409     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
2410   }
2411   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
2412     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 5);
2413     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
2414   }
2415   if (!(this->__fbthrift_field_float_field == float())) {
2416     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 6);
2417     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
2418   }
2419   if (!(this->__fbthrift_field_double_field == double())) {
2420     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 7);
2421     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
2422   }
2423   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
2424     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 8);
2425     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
2426   }
2427   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
2428     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 9);
2429     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_binary_field);
2430   }
2431   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
2432     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 10);
2433     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
2434   }
2435   if (!(this->__fbthrift_field_list_field.empty())) {
2436     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 11);
2437     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
2438   }
2439   if (!(this->__fbthrift_field_set_field.empty())) {
2440     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 12);
2441     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
2442   }
2443   if (!(this->__fbthrift_field_map_field.empty())) {
2444     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 13);
2445     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
2446   }
2447   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
2448     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 14);
2449     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStructWithCustomDefault>::serializedSize<false>(*prot_, this->__fbthrift_field_struct_field);
2450   }
2451   xfer += prot_->serializedSizeStop();
2452   return xfer;
2455 template <class Protocol_>
2456 uint32_t TerseStructWithCustomDefault::serializedSizeZC(Protocol_ const* prot_) const {
2457   uint32_t xfer = 0;
2458   xfer += prot_->serializedStructSize("TerseStructWithCustomDefault");
2459   if (!(this->__fbthrift_field_bool_field == bool())) {
2460     xfer += prot_->serializedFieldSize("bool_field", apache::thrift::protocol::T_BOOL, 1);
2461     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->__fbthrift_field_bool_field);
2462   }
2463   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
2464     xfer += prot_->serializedFieldSize("byte_field", apache::thrift::protocol::T_BYTE, 2);
2465     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::serializedSize<false>(*prot_, this->__fbthrift_field_byte_field);
2466   }
2467   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
2468     xfer += prot_->serializedFieldSize("short_field", apache::thrift::protocol::T_I16, 3);
2469     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::serializedSize<false>(*prot_, this->__fbthrift_field_short_field);
2470   }
2471   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
2472     xfer += prot_->serializedFieldSize("int_field", apache::thrift::protocol::T_I32, 4);
2473     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->__fbthrift_field_int_field);
2474   }
2475   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
2476     xfer += prot_->serializedFieldSize("long_field", apache::thrift::protocol::T_I64, 5);
2477     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->__fbthrift_field_long_field);
2478   }
2479   if (!(this->__fbthrift_field_float_field == float())) {
2480     xfer += prot_->serializedFieldSize("float_field", apache::thrift::protocol::T_FLOAT, 6);
2481     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::serializedSize<false>(*prot_, this->__fbthrift_field_float_field);
2482   }
2483   if (!(this->__fbthrift_field_double_field == double())) {
2484     xfer += prot_->serializedFieldSize("double_field", apache::thrift::protocol::T_DOUBLE, 7);
2485     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::serializedSize<false>(*prot_, this->__fbthrift_field_double_field);
2486   }
2487   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
2488     xfer += prot_->serializedFieldSize("string_field", apache::thrift::protocol::T_STRING, 8);
2489     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::serializedSize<false>(*prot_, this->__fbthrift_field_string_field);
2490   }
2491   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
2492     xfer += prot_->serializedFieldSize("binary_field", apache::thrift::protocol::T_STRING, 9);
2493     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::serializedSize<true>(*prot_, this->__fbthrift_field_binary_field);
2494   }
2495   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
2496     xfer += prot_->serializedFieldSize("enum_field", apache::thrift::protocol::T_I32, 10);
2497     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::serializedSize<false>(*prot_, this->__fbthrift_field_enum_field);
2498   }
2499   if (!(this->__fbthrift_field_list_field.empty())) {
2500     xfer += prot_->serializedFieldSize("list_field", apache::thrift::protocol::T_LIST, 11);
2501     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_list_field);
2502   }
2503   if (!(this->__fbthrift_field_set_field.empty())) {
2504     xfer += prot_->serializedFieldSize("set_field", apache::thrift::protocol::T_SET, 12);
2505     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_set_field);
2506   }
2507   if (!(this->__fbthrift_field_map_field.empty())) {
2508     xfer += prot_->serializedFieldSize("map_field", apache::thrift::protocol::T_MAP, 13);
2509     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::serializedSize<false>(*prot_, this->__fbthrift_field_map_field);
2510   }
2511   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
2512     xfer += prot_->serializedFieldSize("struct_field", apache::thrift::protocol::T_STRUCT, 14);
2513     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStructWithCustomDefault>::serializedSize<true>(*prot_, this->__fbthrift_field_struct_field);
2514   }
2515   xfer += prot_->serializedSizeStop();
2516   return xfer;
2519 template <class Protocol_>
2520 uint32_t TerseStructWithCustomDefault::write(Protocol_* prot_) const {
2521   uint32_t xfer = 0;
2522   xfer += prot_->writeStructBegin("TerseStructWithCustomDefault");
2523   bool previousFieldHasValue = true;
2524   if (!(this->__fbthrift_field_bool_field == bool())) {
2525     constexpr int16_t kPrevFieldId = 0;
2526     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 1, kPrevFieldId>(*prot_, "bool_field", previousFieldHasValue);
2527     previousFieldHasValue = true;
2528     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->__fbthrift_field_bool_field);
2529     xfer += prot_->writeFieldEnd();
2530   } else {
2531     previousFieldHasValue = false;
2532   }
2533   if (!(this->__fbthrift_field_byte_field == ::std::int8_t())) {
2534     constexpr int16_t kPrevFieldId = 1;
2535     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BYTE, 2, kPrevFieldId>(*prot_, "byte_field", previousFieldHasValue);
2536     previousFieldHasValue = true;
2537     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int8_t>::write(*prot_, this->__fbthrift_field_byte_field);
2538     xfer += prot_->writeFieldEnd();
2539   } else {
2540     previousFieldHasValue = false;
2541   }
2542   if (!(this->__fbthrift_field_short_field == ::std::int16_t())) {
2543     constexpr int16_t kPrevFieldId = 2;
2544     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I16, 3, kPrevFieldId>(*prot_, "short_field", previousFieldHasValue);
2545     previousFieldHasValue = true;
2546     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int16_t>::write(*prot_, this->__fbthrift_field_short_field);
2547     xfer += prot_->writeFieldEnd();
2548   } else {
2549     previousFieldHasValue = false;
2550   }
2551   if (!(this->__fbthrift_field_int_field == ::std::int32_t())) {
2552     constexpr int16_t kPrevFieldId = 3;
2553     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 4, kPrevFieldId>(*prot_, "int_field", previousFieldHasValue);
2554     previousFieldHasValue = true;
2555     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->__fbthrift_field_int_field);
2556     xfer += prot_->writeFieldEnd();
2557   } else {
2558     previousFieldHasValue = false;
2559   }
2560   if (!(this->__fbthrift_field_long_field == ::std::int64_t())) {
2561     constexpr int16_t kPrevFieldId = 4;
2562     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 5, kPrevFieldId>(*prot_, "long_field", previousFieldHasValue);
2563     previousFieldHasValue = true;
2564     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->__fbthrift_field_long_field);
2565     xfer += prot_->writeFieldEnd();
2566   } else {
2567     previousFieldHasValue = false;
2568   }
2569   if (!(this->__fbthrift_field_float_field == float())) {
2570     constexpr int16_t kPrevFieldId = 5;
2571     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_FLOAT, 6, kPrevFieldId>(*prot_, "float_field", previousFieldHasValue);
2572     previousFieldHasValue = true;
2573     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, float>::write(*prot_, this->__fbthrift_field_float_field);
2574     xfer += prot_->writeFieldEnd();
2575   } else {
2576     previousFieldHasValue = false;
2577   }
2578   if (!(this->__fbthrift_field_double_field == double())) {
2579     constexpr int16_t kPrevFieldId = 6;
2580     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_DOUBLE, 7, kPrevFieldId>(*prot_, "double_field", previousFieldHasValue);
2581     previousFieldHasValue = true;
2582     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::floating_point, double>::write(*prot_, this->__fbthrift_field_double_field);
2583     xfer += prot_->writeFieldEnd();
2584   } else {
2585     previousFieldHasValue = false;
2586   }
2587   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_string_field))) {
2588     constexpr int16_t kPrevFieldId = 7;
2589     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 8, kPrevFieldId>(*prot_, "string_field", previousFieldHasValue);
2590     previousFieldHasValue = true;
2591     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::string, ::std::string>::write(*prot_, this->__fbthrift_field_string_field);
2592     xfer += prot_->writeFieldEnd();
2593   } else {
2594     previousFieldHasValue = false;
2595   }
2596   if (!(apache::thrift::StringTraits<std::string>::isEmpty(this->__fbthrift_field_binary_field))) {
2597     constexpr int16_t kPrevFieldId = 8;
2598     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRING, 9, kPrevFieldId>(*prot_, "binary_field", previousFieldHasValue);
2599     previousFieldHasValue = true;
2600     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::binary, ::std::string>::write(*prot_, this->__fbthrift_field_binary_field);
2601     xfer += prot_->writeFieldEnd();
2602   } else {
2603     previousFieldHasValue = false;
2604   }
2605   if (!(this->__fbthrift_field_enum_field == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum())) {
2606     constexpr int16_t kPrevFieldId = 9;
2607     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 10, kPrevFieldId>(*prot_, "enum_field", previousFieldHasValue);
2608     previousFieldHasValue = true;
2609     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::enumeration, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyEnum>::write(*prot_, this->__fbthrift_field_enum_field);
2610     xfer += prot_->writeFieldEnd();
2611   } else {
2612     previousFieldHasValue = false;
2613   }
2614   if (!(this->__fbthrift_field_list_field.empty())) {
2615     constexpr int16_t kPrevFieldId = 10;
2616     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_LIST, 11, kPrevFieldId>(*prot_, "list_field", previousFieldHasValue);
2617     previousFieldHasValue = true;
2618     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::list<::apache::thrift::type_class::integral>, ::std::vector<::std::int16_t>>::write(*prot_, this->__fbthrift_field_list_field);
2619     xfer += prot_->writeFieldEnd();
2620   } else {
2621     previousFieldHasValue = false;
2622   }
2623   if (!(this->__fbthrift_field_set_field.empty())) {
2624     constexpr int16_t kPrevFieldId = 11;
2625     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_SET, 12, kPrevFieldId>(*prot_, "set_field", previousFieldHasValue);
2626     previousFieldHasValue = true;
2627     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::set<::apache::thrift::type_class::integral>, ::std::set<::std::int16_t>>::write(*prot_, this->__fbthrift_field_set_field);
2628     xfer += prot_->writeFieldEnd();
2629   } else {
2630     previousFieldHasValue = false;
2631   }
2632   if (!(this->__fbthrift_field_map_field.empty())) {
2633     constexpr int16_t kPrevFieldId = 12;
2634     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_MAP, 13, kPrevFieldId>(*prot_, "map_field", previousFieldHasValue);
2635     previousFieldHasValue = true;
2636     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::map<::apache::thrift::type_class::integral, ::apache::thrift::type_class::integral>, ::std::map<::std::int16_t, ::std::int16_t>>::write(*prot_, this->__fbthrift_field_map_field);
2637     xfer += prot_->writeFieldEnd();
2638   } else {
2639     previousFieldHasValue = false;
2640   }
2641   if (!(::apache::thrift::empty(this->__fbthrift_field_struct_field))) {
2642     constexpr int16_t kPrevFieldId = 13;
2643     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_STRUCT, 14, kPrevFieldId>(*prot_, "struct_field", previousFieldHasValue);
2644     previousFieldHasValue = true;
2645     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::structure, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyStructWithCustomDefault>::write(*prot_, this->__fbthrift_field_struct_field);
2646     xfer += prot_->writeFieldEnd();
2647   } else {
2648     previousFieldHasValue = false;
2649   }
2650   xfer += prot_->writeFieldStop();
2651   xfer += prot_->writeStructEnd();
2652   return xfer;
2655 extern template void TerseStructWithCustomDefault::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
2656 extern template uint32_t TerseStructWithCustomDefault::write<>(apache::thrift::BinaryProtocolWriter*) const;
2657 extern template uint32_t TerseStructWithCustomDefault::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
2658 extern template uint32_t TerseStructWithCustomDefault::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
2659 extern template void TerseStructWithCustomDefault::readNoXfer<>(apache::thrift::CompactProtocolReader*);
2660 extern template uint32_t TerseStructWithCustomDefault::write<>(apache::thrift::CompactProtocolWriter*) const;
2661 extern template uint32_t TerseStructWithCustomDefault::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
2662 extern template uint32_t TerseStructWithCustomDefault::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
2665 template <class Protocol_>
2666 void AdaptedFields::readNoXfer(Protocol_* iprot) {
2667   __fbthrift_clear_terse_fields();
2669   apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
2671   _readState.readStructBegin(iprot);
2673   using apache::thrift::TProtocolException;
2676   if (UNLIKELY(!_readState.advanceToNextField(
2677           iprot,
2678           0,
2679           1,
2680           apache::thrift::protocol::T_I32))) {
2681     goto _loop;
2682   }
2683 _readField_field1:
2684   {
2685     constexpr bool hasInplaceToThrift = ::apache::thrift::adapt_detail::has_inplace_toThrift<my::Adapter, folly::remove_cvref_t<decltype(this->__fbthrift_field_field1)>>::value;
2686     ::apache::thrift::detail::pm::IfConstexpr<hasInplaceToThrift>{}(
2687       [&](auto& field) { ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, my::Adapter::toThrift(field), _readState); },
2688       [&](auto&) {})(this->__fbthrift_field_field1);
2689     if (!hasInplaceToThrift) {
2690       ::std::int32_t tvalue;
2691       ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, tvalue, _readState);
2692       this->__fbthrift_field_field1 = ::apache::thrift::adapt_detail::fromThriftField<my::Adapter, 1>(::std::move(tvalue), *this);
2693     }
2694     
2695   }
2697   if (UNLIKELY(!_readState.advanceToNextField(
2698           iprot,
2699           1,
2700           2,
2701           apache::thrift::protocol::T_I32))) {
2702     goto _loop;
2703   }
2704 _readField_field2:
2705   {
2706     constexpr bool hasInplaceToThrift = ::apache::thrift::adapt_detail::has_inplace_toThrift<my::Adapter, folly::remove_cvref_t<decltype(this->__fbthrift_field_field2)>>::value;
2707     ::apache::thrift::detail::pm::IfConstexpr<hasInplaceToThrift>{}(
2708       [&](auto& field) { ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, my::Adapter::toThrift(field), _readState); },
2709       [&](auto&) {})(this->__fbthrift_field_field2);
2710     if (!hasInplaceToThrift) {
2711       ::std::int32_t tvalue;
2712       ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, tvalue, _readState);
2713       this->__fbthrift_field_field2 = ::apache::thrift::adapt_detail::fromThriftField<my::Adapter, 2>(::std::move(tvalue), *this);
2714     }
2715     
2716   }
2718   if (UNLIKELY(!_readState.advanceToNextField(
2719           iprot,
2720           2,
2721           3,
2722           apache::thrift::protocol::T_I32))) {
2723     goto _loop;
2724   }
2725 _readField_field3:
2726   {
2727     ::std::int32_t tvalue;
2728     ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, tvalue, _readState);
2729     this->__fbthrift_field_field3 = ::apache::thrift::adapt_detail::fromThriftField<my::Adapter, 3>(my::Adapter::fromThrift(::std::move(tvalue)), *this);
2730     
2731   }
2733   if (UNLIKELY(!_readState.advanceToNextField(
2734           iprot,
2735           3,
2736           0,
2737           apache::thrift::protocol::T_STOP))) {
2738     goto _loop;
2739   }
2741 _end:
2742   _readState.readStructEnd(iprot);
2744   return;
2746 _loop:
2747   _readState.afterAdvanceFailure(iprot);
2748   if (_readState.atStop()) {
2749     goto _end;
2750   }
2751   if (iprot->kUsesFieldNames()) {
2752     _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<AdaptedFields>>();
2753   }
2755   switch (_readState.fieldId) {
2756     case 1:
2757     {
2758       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2759         goto _readField_field1;
2760       } else {
2761         goto _skip;
2762       }
2763     }
2764     case 2:
2765     {
2766       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2767         goto _readField_field2;
2768       } else {
2769         goto _skip;
2770       }
2771     }
2772     case 3:
2773     {
2774       if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
2775         goto _readField_field3;
2776       } else {
2777         goto _skip;
2778       }
2779     }
2780     default:
2781     {
2782 _skip:
2783       _readState.skip(iprot);
2784       _readState.readFieldEnd(iprot);
2785       _readState.readFieldBeginNoInline(iprot);
2786       goto _loop;
2787     }
2788   }
2791 template <class Protocol_>
2792 uint32_t AdaptedFields::serializedSize(Protocol_ const* prot_) const {
2793   uint32_t xfer = 0;
2794   xfer += prot_->serializedStructSize("AdaptedFields");
2795   if (!(this->__fbthrift_field_field1 == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger())) {
2796     xfer += prot_->serializedFieldSize("field1", apache::thrift::protocol::T_I32, 1);
2797     xfer += ::apache::thrift::adapt_detail::serializedSize<false, my::Adapter>(*prot_, this->__fbthrift_field_field1, [&] {return ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field1));});
2798   }
2799   if (!(this->__fbthrift_field_field2 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 2, ::std::int32_t, AdaptedFields>())) {
2800     xfer += prot_->serializedFieldSize("field2", apache::thrift::protocol::T_I32, 2);
2801     xfer += ::apache::thrift::adapt_detail::serializedSize<false, my::Adapter>(*prot_, this->__fbthrift_field_field2, [&] {return ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field2));});
2802   }
2803   if (!(this->__fbthrift_field_field3 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 3, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger, AdaptedFields>())) {
2804     xfer += prot_->serializedFieldSize("field3", apache::thrift::protocol::T_I32, 3);
2805     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(my::Adapter::toThrift(this->__fbthrift_field_field3)));
2806   }
2807   xfer += prot_->serializedSizeStop();
2808   return xfer;
2811 template <class Protocol_>
2812 uint32_t AdaptedFields::serializedSizeZC(Protocol_ const* prot_) const {
2813   uint32_t xfer = 0;
2814   xfer += prot_->serializedStructSize("AdaptedFields");
2815   if (!(this->__fbthrift_field_field1 == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger())) {
2816     xfer += prot_->serializedFieldSize("field1", apache::thrift::protocol::T_I32, 1);
2817     xfer += ::apache::thrift::adapt_detail::serializedSize<false, my::Adapter>(*prot_, this->__fbthrift_field_field1, [&] {return ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field1));});
2818   }
2819   if (!(this->__fbthrift_field_field2 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 2, ::std::int32_t, AdaptedFields>())) {
2820     xfer += prot_->serializedFieldSize("field2", apache::thrift::protocol::T_I32, 2);
2821     xfer += ::apache::thrift::adapt_detail::serializedSize<false, my::Adapter>(*prot_, this->__fbthrift_field_field2, [&] {return ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field2));});
2822   }
2823   if (!(this->__fbthrift_field_field3 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 3, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger, AdaptedFields>())) {
2824     xfer += prot_->serializedFieldSize("field3", apache::thrift::protocol::T_I32, 3);
2825     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, my::Adapter::toThrift(my::Adapter::toThrift(this->__fbthrift_field_field3)));
2826   }
2827   xfer += prot_->serializedSizeStop();
2828   return xfer;
2831 template <class Protocol_>
2832 uint32_t AdaptedFields::write(Protocol_* prot_) const {
2833   uint32_t xfer = 0;
2834   xfer += prot_->writeStructBegin("AdaptedFields");
2835   bool previousFieldHasValue = true;
2836   if (!(this->__fbthrift_field_field1 == ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger())) {
2837     constexpr int16_t kPrevFieldId = 0;
2838     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 1, kPrevFieldId>(*prot_, "field1", previousFieldHasValue);
2839     previousFieldHasValue = true;
2840     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field1));
2841     xfer += prot_->writeFieldEnd();
2842   } else {
2843     previousFieldHasValue = false;
2844   }
2845   if (!(this->__fbthrift_field_field2 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 2, ::std::int32_t, AdaptedFields>())) {
2846     constexpr int16_t kPrevFieldId = 1;
2847     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 2, kPrevFieldId>(*prot_, "field2", previousFieldHasValue);
2848     previousFieldHasValue = true;
2849     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, my::Adapter::toThrift(this->__fbthrift_field_field2));
2850     xfer += prot_->writeFieldEnd();
2851   } else {
2852     previousFieldHasValue = false;
2853   }
2854   if (!(this->__fbthrift_field_field3 == ::apache::thrift::adapt_detail::adapted_field_t<my::Adapter, 3, ::facebook::thrift::test::terse_write::deprecated_tag_incompatible::MyInteger, AdaptedFields>())) {
2855     constexpr int16_t kPrevFieldId = 2;
2856     xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 3, kPrevFieldId>(*prot_, "field3", previousFieldHasValue);
2857     previousFieldHasValue = true;
2858     xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, my::Adapter::toThrift(my::Adapter::toThrift(this->__fbthrift_field_field3)));
2859     xfer += prot_->writeFieldEnd();
2860   } else {
2861     previousFieldHasValue = false;
2862   }
2863   xfer += prot_->writeFieldStop();
2864   xfer += prot_->writeStructEnd();
2865   return xfer;
2868 extern template void AdaptedFields::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
2869 extern template uint32_t AdaptedFields::write<>(apache::thrift::BinaryProtocolWriter*) const;
2870 extern template uint32_t AdaptedFields::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
2871 extern template uint32_t AdaptedFields::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
2872 extern template void AdaptedFields::readNoXfer<>(apache::thrift::CompactProtocolReader*);
2873 extern template uint32_t AdaptedFields::write<>(apache::thrift::CompactProtocolWriter*) const;
2874 extern template uint32_t AdaptedFields::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
2875 extern template uint32_t AdaptedFields::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
2878 }}}}} // facebook::thrift::test::terse_write::deprecated_tag_incompatible