text: /**
   * Autogenerated by Thrift for src/module.thrift
   *
   * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING
   *  @generated @nocommit
   */
  #pragma once
  
  #include "thrift/compiler/test/fixtures/nimble/gen-cpp2/module_types.h"
  
  #include <thrift/lib/cpp2/gen/module_types_tcc.h>
  
  
  namespace apache {
  namespace thrift {
  namespace detail {
  
  template <>
  struct TccStructTraits<::cpp2::BasicTypes> {
    static void translateFieldName(
        folly::StringPiece _fname,
        int16_t& fid,
        apache::thrift::protocol::TType& _ftype) noexcept;
  };
  
  } // namespace detail
  } // namespace thrift
  } // namespace apache
  
  namespace cpp2 {
  
  template <class Protocol_>
  void BasicTypes::readNoXfer(Protocol_* iprot) {
    apache::thrift::detail::ProtocolReaderStructReadState<Protocol_> _readState;
  
    _readState.readStructBegin(iprot);
  
    using apache::thrift::TProtocolException;
  
  
    THRIFT_IGNORE_ISSET_USE_WARNING_BEGIN
    if (UNLIKELY(!_readState.advanceToNextField(
            iprot,
            0,
            1,
            apache::thrift::protocol::T_I32))) {
      goto _loop;
    }
  _readField_first:
    {
      ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->first, _readState);
      
    }
  
    if (UNLIKELY(!_readState.advanceToNextField(
            iprot,
            1,
            2,
            apache::thrift::protocol::T_I32))) {
      goto _loop;
    }
  _readField_second:
    {
      ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::readWithContext(*iprot, this->second, _readState);
      
    }
    this->__isset.second = true;
  
    if (UNLIKELY(!_readState.advanceToNextField(
            iprot,
            2,
            3,
            apache::thrift::protocol::T_I64))) {
      goto _loop;
    }
  _readField_third:
    {
      ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::readWithContext(*iprot, this->third, _readState);
      
    }
    this->__isset.third = true;
  
    if (UNLIKELY(!_readState.advanceToNextField(
            iprot,
            3,
            4,
            apache::thrift::protocol::T_BOOL))) {
      goto _loop;
    }
  _readField_isTrue:
    {
      ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::readWithContext(*iprot, this->isTrue, _readState);
      
    }
    this->__isset.isTrue = true;
  
    if (UNLIKELY(!_readState.advanceToNextField(
            iprot,
            4,
            0,
            apache::thrift::protocol::T_STOP))) {
      goto _loop;
    }
    THRIFT_IGNORE_ISSET_USE_WARNING_END
  
  _end:
    _readState.readStructEnd(iprot);
  
    return;
  
  _loop:
    _readState.afterAdvanceFailure(iprot);
    if (_readState.atStop()) {
      goto _end;
    }
    if (iprot->kUsesFieldNames()) {
      _readState.template fillFieldTraitsFromName<apache::thrift::detail::TccStructTraits<BasicTypes>>();
    }
  
    switch (_readState.fieldId) {
      case 1:
      {
        if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
          goto _readField_first;
        } else {
          goto _skip;
        }
      }
      case 2:
      {
        if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I32))) {
          goto _readField_second;
        } else {
          goto _skip;
        }
      }
      case 3:
      {
        if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_I64))) {
          goto _readField_third;
        } else {
          goto _skip;
        }
      }
      case 4:
      {
        if (LIKELY(_readState.isCompatibleWithType(iprot, apache::thrift::protocol::T_BOOL))) {
          goto _readField_isTrue;
        } else {
          goto _skip;
        }
      }
      default:
      {
  _skip:
        _readState.skip(iprot);
        _readState.readFieldEnd(iprot);
        _readState.readFieldBeginNoInline(iprot);
        goto _loop;
      }
    }
  }
  
  template <class Protocol_>
  uint32_t BasicTypes::serializedSize(Protocol_ const* prot_) const {
    THRIFT_IGNORE_ISSET_USE_WARNING_BEGIN
    uint32_t xfer = 0;
    xfer += prot_->serializedStructSize("BasicTypes");
    {
      xfer += prot_->serializedFieldSize("first", apache::thrift::protocol::T_I32, 1);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->first);
    }
    if (this->__isset.second) {
      xfer += prot_->serializedFieldSize("second", apache::thrift::protocol::T_I32, 2);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->second);
    }
    if (this->__isset.third) {
      xfer += prot_->serializedFieldSize("third", apache::thrift::protocol::T_I64, 3);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->third);
    }
    {
      xfer += prot_->serializedFieldSize("isTrue", apache::thrift::protocol::T_BOOL, 4);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->isTrue);
    }
    xfer += prot_->serializedSizeStop();
    return xfer;
    THRIFT_IGNORE_ISSET_USE_WARNING_END
  }
  
  template <class Protocol_>
  uint32_t BasicTypes::serializedSizeZC(Protocol_ const* prot_) const {
    THRIFT_IGNORE_ISSET_USE_WARNING_BEGIN
    uint32_t xfer = 0;
    xfer += prot_->serializedStructSize("BasicTypes");
    {
      xfer += prot_->serializedFieldSize("first", apache::thrift::protocol::T_I32, 1);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->first);
    }
    if (this->__isset.second) {
      xfer += prot_->serializedFieldSize("second", apache::thrift::protocol::T_I32, 2);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::serializedSize<false>(*prot_, this->second);
    }
    if (this->__isset.third) {
      xfer += prot_->serializedFieldSize("third", apache::thrift::protocol::T_I64, 3);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::serializedSize<false>(*prot_, this->third);
    }
    {
      xfer += prot_->serializedFieldSize("isTrue", apache::thrift::protocol::T_BOOL, 4);
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::serializedSize<false>(*prot_, this->isTrue);
    }
    xfer += prot_->serializedSizeStop();
    return xfer;
    THRIFT_IGNORE_ISSET_USE_WARNING_END
  }
  
  template <class Protocol_>
  uint32_t BasicTypes::write(Protocol_* prot_) const {
    THRIFT_IGNORE_ISSET_USE_WARNING_BEGIN
    uint32_t xfer = 0;
    xfer += prot_->writeStructBegin("BasicTypes");
    bool previousFieldHasValue = true;
    {
      constexpr int16_t kPrevFieldId = 0;
      xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 1, kPrevFieldId>(*prot_, "first", previousFieldHasValue);
      previousFieldHasValue = true;
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->first);
      xfer += prot_->writeFieldEnd();
    }
    if (this->__isset.second) {
      constexpr int16_t kPrevFieldId = 1;
      xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I32, 2, kPrevFieldId>(*prot_, "second", previousFieldHasValue);
      previousFieldHasValue = true;
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int32_t>::write(*prot_, this->second);
      xfer += prot_->writeFieldEnd();
    } else {
      previousFieldHasValue = false;
    }
    if (this->__isset.third) {
      constexpr int16_t kPrevFieldId = 2;
      xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_I64, 3, kPrevFieldId>(*prot_, "third", previousFieldHasValue);
      previousFieldHasValue = true;
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, ::std::int64_t>::write(*prot_, this->third);
      xfer += prot_->writeFieldEnd();
    } else {
      previousFieldHasValue = false;
    }
    {
      constexpr int16_t kPrevFieldId = 3;
      xfer += ::apache::thrift::detail::writeFieldBegin<apache::thrift::protocol::T_BOOL, 4, kPrevFieldId>(*prot_, "isTrue", previousFieldHasValue);
      previousFieldHasValue = true;
      xfer += ::apache::thrift::detail::pm::protocol_methods<::apache::thrift::type_class::integral, bool>::write(*prot_, this->isTrue);
      xfer += prot_->writeFieldEnd();
    }
    xfer += prot_->writeFieldStop();
    xfer += prot_->writeStructEnd();
    return xfer;
    THRIFT_IGNORE_ISSET_USE_WARNING_END
  }
  
  extern template void BasicTypes::readNoXfer<>(apache::thrift::BinaryProtocolReader*);
  extern template uint32_t BasicTypes::write<>(apache::thrift::BinaryProtocolWriter*) const;
  extern template uint32_t BasicTypes::serializedSize<>(apache::thrift::BinaryProtocolWriter const*) const;
  extern template uint32_t BasicTypes::serializedSizeZC<>(apache::thrift::BinaryProtocolWriter const*) const;
  extern template void BasicTypes::readNoXfer<>(apache::thrift::CompactProtocolReader*);
  extern template uint32_t BasicTypes::write<>(apache::thrift::CompactProtocolWriter*) const;
  extern template uint32_t BasicTypes::serializedSize<>(apache::thrift::CompactProtocolWriter const*) const;
  extern template uint32_t BasicTypes::serializedSizeZC<>(apache::thrift::CompactProtocolWriter const*) const;
  extern template void BasicTypes::readNoXfer<>(apache::thrift::NimbleProtocolReader*);
  extern template uint32_t BasicTypes::write<>(apache::thrift::NimbleProtocolWriter*) const;
  extern template uint32_t BasicTypes::serializedSize<>(apache::thrift::NimbleProtocolWriter const*) const;
  extern template uint32_t BasicTypes::serializedSizeZC<>(apache::thrift::NimbleProtocolWriter const*) const;
  
  } // cpp2
  