// Generated by the protocol buffer compiler.  DO NOT EDIT!

#define INTERNAL_SUPPRESS_PROTOBUF_FIELD_DEPRECATION
#include "Reads.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/once.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/wire_format_lite_inl.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)

namespace goby {

namespace {

const ::google::protobuf::Descriptor* ReadCollection_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  ReadCollection_reflection_ = NULL;
const ::google::protobuf::Descriptor* ReadEntry_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  ReadEntry_reflection_ = NULL;
const ::google::protobuf::Descriptor* MetaData_descriptor_ = NULL;
const ::google::protobuf::internal::GeneratedMessageReflection*
  MetaData_reflection_ = NULL;

}  // namespace


void protobuf_AssignDesc_Reads_2eproto() {
  protobuf_AddDesc_Reads_2eproto();
  const ::google::protobuf::FileDescriptor* file =
    ::google::protobuf::DescriptorPool::generated_pool()->FindFileByName(
      "Reads.proto");
  GOOGLE_CHECK(file != NULL);
  ReadCollection_descriptor_ = file->message_type(0);
  static const int ReadCollection_offsets_[1] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, reads_),
  };
  ReadCollection_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      ReadCollection_descriptor_,
      ReadCollection::default_instance_,
      ReadCollection_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadCollection, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(ReadCollection));
  ReadEntry_descriptor_ = file->message_type(1);
  static const int ReadEntry_offsets_[12] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_index_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, barcode_index_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_identifier_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, description_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_length_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, sequence_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, sequence_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, read_length_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, quality_scores_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, quality_scores_pair_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, compressed_data_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, meta_data_),
  };
  ReadEntry_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      ReadEntry_descriptor_,
      ReadEntry::default_instance_,
      ReadEntry_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(ReadEntry, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(ReadEntry));
  MetaData_descriptor_ = file->message_type(2);
  static const int MetaData_offsets_[2] = {
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, key_),
    GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, value_),
  };
  MetaData_reflection_ =
    new ::google::protobuf::internal::GeneratedMessageReflection(
      MetaData_descriptor_,
      MetaData::default_instance_,
      MetaData_offsets_,
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, _has_bits_[0]),
      GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(MetaData, _unknown_fields_),
      -1,
      ::google::protobuf::DescriptorPool::generated_pool(),
      ::google::protobuf::MessageFactory::generated_factory(),
      sizeof(MetaData));
}

namespace {

GOOGLE_PROTOBUF_DECLARE_ONCE(protobuf_AssignDescriptors_once_);
inline void protobuf_AssignDescriptorsOnce() {
  ::google::protobuf::GoogleOnceInit(&protobuf_AssignDescriptors_once_,
                 &protobuf_AssignDesc_Reads_2eproto);
}

void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    ReadCollection_descriptor_, &ReadCollection::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    ReadEntry_descriptor_, &ReadEntry::default_instance());
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedMessage(
    MetaData_descriptor_, &MetaData::default_instance());
}

}  // namespace

void protobuf_ShutdownFile_Reads_2eproto() {
  delete ReadCollection::default_instance_;
  delete ReadCollection_reflection_;
  delete ReadEntry::default_instance_;
  delete ReadEntry_reflection_;
  delete MetaData::default_instance_;
  delete MetaData_reflection_;
}

void protobuf_AddDesc_Reads_2eproto() {
  static bool already_here = false;
  if (already_here) return;
  already_here = true;
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
    "\n\013Reads.proto\022\004goby\"0\n\016ReadCollection\022\036\n"
    "\005reads\030\001 \003(\0132\017.goby.ReadEntry\"\255\002\n\tReadEn"
    "try\022\022\n\nread_index\030\001 \002(\r\022\025\n\rbarcode_index"
    "\030\n \001(\r\022\027\n\017read_identifier\030\027 \001(\t\022\023\n\013descr"
    "iption\030\026 \001(\t\022\023\n\013read_length\030\002 \002(\r\022\020\n\010seq"
    "uence\030\003 \001(\014\022\025\n\rsequence_pair\030\005 \001(\014\022\030\n\020re"
    "ad_length_pair\030\006 \001(\r\022\026\n\016quality_scores\030\004"
    " \001(\014\022\033\n\023quality_scores_pair\030\007 \001(\014\022\027\n\017com"
    "pressed_data\030\010 \001(\014\022!\n\tmeta_data\030\031 \003(\0132\016."
    "goby.MetaData\"&\n\010MetaData\022\013\n\003key\030\001 \002(\t\022\r"
    "\n\005value\030\002 \002(\tB\"\n\036edu.cornell.med.icb.gob"
    "y.readsH\001", 449);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "Reads.proto", &protobuf_RegisterTypes);
  ReadCollection::default_instance_ = new ReadCollection();
  ReadEntry::default_instance_ = new ReadEntry();
  MetaData::default_instance_ = new MetaData();
  ReadCollection::default_instance_->InitAsDefaultInstance();
  ReadEntry::default_instance_->InitAsDefaultInstance();
  MetaData::default_instance_->InitAsDefaultInstance();
  ::google::protobuf::internal::OnShutdown(&protobuf_ShutdownFile_Reads_2eproto);
}

// Force AddDescriptors() to be called at static initialization time.
struct StaticDescriptorInitializer_Reads_2eproto {
  StaticDescriptorInitializer_Reads_2eproto() {
    protobuf_AddDesc_Reads_2eproto();
  }
} static_descriptor_initializer_Reads_2eproto_;


// ===================================================================

#ifndef _MSC_VER
const int ReadCollection::kReadsFieldNumber;
#endif  // !_MSC_VER

ReadCollection::ReadCollection()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void ReadCollection::InitAsDefaultInstance() {
}

ReadCollection::ReadCollection(const ReadCollection& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void ReadCollection::SharedCtor() {
  _cached_size_ = 0;
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ReadCollection::~ReadCollection() {
  SharedDtor();
}

void ReadCollection::SharedDtor() {
  if (this != default_instance_) {
  }
}

void ReadCollection::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ReadCollection::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return ReadCollection_descriptor_;
}

const ReadCollection& ReadCollection::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();  return *default_instance_;
}

ReadCollection* ReadCollection::default_instance_ = NULL;

ReadCollection* ReadCollection::New() const {
  return new ReadCollection;
}

void ReadCollection::Clear() {
  reads_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool ReadCollection::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .goby.ReadEntry reads = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_reads:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_reads()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(10)) goto parse_reads;
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ReadCollection::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // repeated .goby.ReadEntry reads = 1;
  for (int i = 0; i < this->reads_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->reads(i), output);
  }
  
  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* ReadCollection::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // repeated .goby.ReadEntry reads = 1;
  for (int i = 0; i < this->reads_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        1, this->reads(i), target);
  }
  
  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int ReadCollection::ByteSize() const {
  int total_size = 0;
  
  // repeated .goby.ReadEntry reads = 1;
  total_size += 1 * this->reads_size();
  for (int i = 0; i < this->reads_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->reads(i));
  }
  
  if (!unknown_fields().empty()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ReadCollection::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const ReadCollection* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const ReadCollection*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void ReadCollection::MergeFrom(const ReadCollection& from) {
  GOOGLE_CHECK_NE(&from, this);
  reads_.MergeFrom(from.reads_);
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void ReadCollection::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ReadCollection::CopyFrom(const ReadCollection& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReadCollection::IsInitialized() const {
  
  for (int i = 0; i < reads_size(); i++) {
    if (!this->reads(i).IsInitialized()) return false;
  }
  return true;
}

void ReadCollection::Swap(ReadCollection* other) {
  if (other != this) {
    reads_.Swap(&other->reads_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata ReadCollection::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = ReadCollection_descriptor_;
  metadata.reflection = ReadCollection_reflection_;
  return metadata;
}


// ===================================================================

#ifndef _MSC_VER
const int ReadEntry::kReadIndexFieldNumber;
const int ReadEntry::kBarcodeIndexFieldNumber;
const int ReadEntry::kReadIdentifierFieldNumber;
const int ReadEntry::kDescriptionFieldNumber;
const int ReadEntry::kReadLengthFieldNumber;
const int ReadEntry::kSequenceFieldNumber;
const int ReadEntry::kSequencePairFieldNumber;
const int ReadEntry::kReadLengthPairFieldNumber;
const int ReadEntry::kQualityScoresFieldNumber;
const int ReadEntry::kQualityScoresPairFieldNumber;
const int ReadEntry::kCompressedDataFieldNumber;
const int ReadEntry::kMetaDataFieldNumber;
#endif  // !_MSC_VER

ReadEntry::ReadEntry()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void ReadEntry::InitAsDefaultInstance() {
}

ReadEntry::ReadEntry(const ReadEntry& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void ReadEntry::SharedCtor() {
  _cached_size_ = 0;
  read_index_ = 0u;
  barcode_index_ = 0u;
  read_identifier_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  description_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  read_length_ = 0u;
  sequence_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  sequence_pair_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  read_length_pair_ = 0u;
  quality_scores_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  quality_scores_pair_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  compressed_data_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

ReadEntry::~ReadEntry() {
  SharedDtor();
}

void ReadEntry::SharedDtor() {
  if (read_identifier_ != &::google::protobuf::internal::kEmptyString) {
    delete read_identifier_;
  }
  if (description_ != &::google::protobuf::internal::kEmptyString) {
    delete description_;
  }
  if (sequence_ != &::google::protobuf::internal::kEmptyString) {
    delete sequence_;
  }
  if (sequence_pair_ != &::google::protobuf::internal::kEmptyString) {
    delete sequence_pair_;
  }
  if (quality_scores_ != &::google::protobuf::internal::kEmptyString) {
    delete quality_scores_;
  }
  if (quality_scores_pair_ != &::google::protobuf::internal::kEmptyString) {
    delete quality_scores_pair_;
  }
  if (compressed_data_ != &::google::protobuf::internal::kEmptyString) {
    delete compressed_data_;
  }
  if (this != default_instance_) {
  }
}

void ReadEntry::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* ReadEntry::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return ReadEntry_descriptor_;
}

const ReadEntry& ReadEntry::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();  return *default_instance_;
}

ReadEntry* ReadEntry::default_instance_ = NULL;

ReadEntry* ReadEntry::New() const {
  return new ReadEntry;
}

void ReadEntry::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    read_index_ = 0u;
    barcode_index_ = 0u;
    if (has_read_identifier()) {
      if (read_identifier_ != &::google::protobuf::internal::kEmptyString) {
        read_identifier_->clear();
      }
    }
    if (has_description()) {
      if (description_ != &::google::protobuf::internal::kEmptyString) {
        description_->clear();
      }
    }
    read_length_ = 0u;
    if (has_sequence()) {
      if (sequence_ != &::google::protobuf::internal::kEmptyString) {
        sequence_->clear();
      }
    }
    if (has_sequence_pair()) {
      if (sequence_pair_ != &::google::protobuf::internal::kEmptyString) {
        sequence_pair_->clear();
      }
    }
    read_length_pair_ = 0u;
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (has_quality_scores()) {
      if (quality_scores_ != &::google::protobuf::internal::kEmptyString) {
        quality_scores_->clear();
      }
    }
    if (has_quality_scores_pair()) {
      if (quality_scores_pair_ != &::google::protobuf::internal::kEmptyString) {
        quality_scores_pair_->clear();
      }
    }
    if (has_compressed_data()) {
      if (compressed_data_ != &::google::protobuf::internal::kEmptyString) {
        compressed_data_->clear();
      }
    }
  }
  meta_data_.Clear();
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool ReadEntry::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required uint32 read_index = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_index_)));
          set_has_read_index();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(16)) goto parse_read_length;
        break;
      }
      
      // required uint32 read_length = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_read_length:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_length_)));
          set_has_read_length();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(26)) goto parse_sequence;
        break;
      }
      
      // optional bytes sequence = 3;
      case 3: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sequence:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sequence()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(34)) goto parse_quality_scores;
        break;
      }
      
      // optional bytes quality_scores = 4;
      case 4: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_quality_scores:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_quality_scores()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(42)) goto parse_sequence_pair;
        break;
      }
      
      // optional bytes sequence_pair = 5;
      case 5: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_sequence_pair:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_sequence_pair()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(48)) goto parse_read_length_pair;
        break;
      }
      
      // optional uint32 read_length_pair = 6;
      case 6: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_read_length_pair:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &read_length_pair_)));
          set_has_read_length_pair();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(58)) goto parse_quality_scores_pair;
        break;
      }
      
      // optional bytes quality_scores_pair = 7;
      case 7: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_quality_scores_pair:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_quality_scores_pair()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(66)) goto parse_compressed_data;
        break;
      }
      
      // optional bytes compressed_data = 8;
      case 8: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_compressed_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadBytes(
                input, this->mutable_compressed_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(80)) goto parse_barcode_index;
        break;
      }
      
      // optional uint32 barcode_index = 10;
      case 10: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_VARINT) {
         parse_barcode_index:
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::uint32, ::google::protobuf::internal::WireFormatLite::TYPE_UINT32>(
                 input, &barcode_index_)));
          set_has_barcode_index();
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(178)) goto parse_description;
        break;
      }
      
      // optional string description = 22;
      case 22: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_description:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_description()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->description().data(), this->description().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(186)) goto parse_read_identifier;
        break;
      }
      
      // optional string read_identifier = 23;
      case 23: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_read_identifier:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_read_identifier()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->read_identifier().data(), this->read_identifier().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(202)) goto parse_meta_data;
        break;
      }
      
      // repeated .goby.MetaData meta_data = 25;
      case 25: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_meta_data:
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessageNoVirtual(
                input, add_meta_data()));
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(202)) goto parse_meta_data;
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void ReadEntry::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required uint32 read_index = 1;
  if (has_read_index()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(1, this->read_index(), output);
  }
  
  // required uint32 read_length = 2;
  if (has_read_length()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(2, this->read_length(), output);
  }
  
  // optional bytes sequence = 3;
  if (has_sequence()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      3, this->sequence(), output);
  }
  
  // optional bytes quality_scores = 4;
  if (has_quality_scores()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      4, this->quality_scores(), output);
  }
  
  // optional bytes sequence_pair = 5;
  if (has_sequence_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      5, this->sequence_pair(), output);
  }
  
  // optional uint32 read_length_pair = 6;
  if (has_read_length_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(6, this->read_length_pair(), output);
  }
  
  // optional bytes quality_scores_pair = 7;
  if (has_quality_scores_pair()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      7, this->quality_scores_pair(), output);
  }
  
  // optional bytes compressed_data = 8;
  if (has_compressed_data()) {
    ::google::protobuf::internal::WireFormatLite::WriteBytes(
      8, this->compressed_data(), output);
  }
  
  // optional uint32 barcode_index = 10;
  if (has_barcode_index()) {
    ::google::protobuf::internal::WireFormatLite::WriteUInt32(10, this->barcode_index(), output);
  }
  
  // optional string description = 22;
  if (has_description()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->description().data(), this->description().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      22, this->description(), output);
  }
  
  // optional string read_identifier = 23;
  if (has_read_identifier()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->read_identifier().data(), this->read_identifier().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      23, this->read_identifier(), output);
  }
  
  // repeated .goby.MetaData meta_data = 25;
  for (int i = 0; i < this->meta_data_size(); i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      25, this->meta_data(i), output);
  }
  
  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* ReadEntry::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // required uint32 read_index = 1;
  if (has_read_index()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(1, this->read_index(), target);
  }
  
  // required uint32 read_length = 2;
  if (has_read_length()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(2, this->read_length(), target);
  }
  
  // optional bytes sequence = 3;
  if (has_sequence()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        3, this->sequence(), target);
  }
  
  // optional bytes quality_scores = 4;
  if (has_quality_scores()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        4, this->quality_scores(), target);
  }
  
  // optional bytes sequence_pair = 5;
  if (has_sequence_pair()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        5, this->sequence_pair(), target);
  }
  
  // optional uint32 read_length_pair = 6;
  if (has_read_length_pair()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(6, this->read_length_pair(), target);
  }
  
  // optional bytes quality_scores_pair = 7;
  if (has_quality_scores_pair()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        7, this->quality_scores_pair(), target);
  }
  
  // optional bytes compressed_data = 8;
  if (has_compressed_data()) {
    target =
      ::google::protobuf::internal::WireFormatLite::WriteBytesToArray(
        8, this->compressed_data(), target);
  }
  
  // optional uint32 barcode_index = 10;
  if (has_barcode_index()) {
    target = ::google::protobuf::internal::WireFormatLite::WriteUInt32ToArray(10, this->barcode_index(), target);
  }
  
  // optional string description = 22;
  if (has_description()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->description().data(), this->description().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        22, this->description(), target);
  }
  
  // optional string read_identifier = 23;
  if (has_read_identifier()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->read_identifier().data(), this->read_identifier().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        23, this->read_identifier(), target);
  }
  
  // repeated .goby.MetaData meta_data = 25;
  for (int i = 0; i < this->meta_data_size(); i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      WriteMessageNoVirtualToArray(
        25, this->meta_data(i), target);
  }
  
  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int ReadEntry::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required uint32 read_index = 1;
    if (has_read_index()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->read_index());
    }
    
    // optional uint32 barcode_index = 10;
    if (has_barcode_index()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->barcode_index());
    }
    
    // optional string read_identifier = 23;
    if (has_read_identifier()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->read_identifier());
    }
    
    // optional string description = 22;
    if (has_description()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->description());
    }
    
    // required uint32 read_length = 2;
    if (has_read_length()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->read_length());
    }
    
    // optional bytes sequence = 3;
    if (has_sequence()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sequence());
    }
    
    // optional bytes sequence_pair = 5;
    if (has_sequence_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->sequence_pair());
    }
    
    // optional uint32 read_length_pair = 6;
    if (has_read_length_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::UInt32Size(
          this->read_length_pair());
    }
    
  }
  if (_has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    // optional bytes quality_scores = 4;
    if (has_quality_scores()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->quality_scores());
    }
    
    // optional bytes quality_scores_pair = 7;
    if (has_quality_scores_pair()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->quality_scores_pair());
    }
    
    // optional bytes compressed_data = 8;
    if (has_compressed_data()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::BytesSize(
          this->compressed_data());
    }
    
  }
  // repeated .goby.MetaData meta_data = 25;
  total_size += 2 * this->meta_data_size();
  for (int i = 0; i < this->meta_data_size(); i++) {
    total_size +=
      ::google::protobuf::internal::WireFormatLite::MessageSizeNoVirtual(
        this->meta_data(i));
  }
  
  if (!unknown_fields().empty()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void ReadEntry::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const ReadEntry* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const ReadEntry*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void ReadEntry::MergeFrom(const ReadEntry& from) {
  GOOGLE_CHECK_NE(&from, this);
  meta_data_.MergeFrom(from.meta_data_);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_read_index()) {
      set_read_index(from.read_index());
    }
    if (from.has_barcode_index()) {
      set_barcode_index(from.barcode_index());
    }
    if (from.has_read_identifier()) {
      set_read_identifier(from.read_identifier());
    }
    if (from.has_description()) {
      set_description(from.description());
    }
    if (from.has_read_length()) {
      set_read_length(from.read_length());
    }
    if (from.has_sequence()) {
      set_sequence(from.sequence());
    }
    if (from.has_sequence_pair()) {
      set_sequence_pair(from.sequence_pair());
    }
    if (from.has_read_length_pair()) {
      set_read_length_pair(from.read_length_pair());
    }
  }
  if (from._has_bits_[8 / 32] & (0xffu << (8 % 32))) {
    if (from.has_quality_scores()) {
      set_quality_scores(from.quality_scores());
    }
    if (from.has_quality_scores_pair()) {
      set_quality_scores_pair(from.quality_scores_pair());
    }
    if (from.has_compressed_data()) {
      set_compressed_data(from.compressed_data());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void ReadEntry::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ReadEntry::CopyFrom(const ReadEntry& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool ReadEntry::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000011) != 0x00000011) return false;
  
  for (int i = 0; i < meta_data_size(); i++) {
    if (!this->meta_data(i).IsInitialized()) return false;
  }
  return true;
}

void ReadEntry::Swap(ReadEntry* other) {
  if (other != this) {
    std::swap(read_index_, other->read_index_);
    std::swap(barcode_index_, other->barcode_index_);
    std::swap(read_identifier_, other->read_identifier_);
    std::swap(description_, other->description_);
    std::swap(read_length_, other->read_length_);
    std::swap(sequence_, other->sequence_);
    std::swap(sequence_pair_, other->sequence_pair_);
    std::swap(read_length_pair_, other->read_length_pair_);
    std::swap(quality_scores_, other->quality_scores_);
    std::swap(quality_scores_pair_, other->quality_scores_pair_);
    std::swap(compressed_data_, other->compressed_data_);
    meta_data_.Swap(&other->meta_data_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata ReadEntry::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = ReadEntry_descriptor_;
  metadata.reflection = ReadEntry_reflection_;
  return metadata;
}


// ===================================================================

#ifndef _MSC_VER
const int MetaData::kKeyFieldNumber;
const int MetaData::kValueFieldNumber;
#endif  // !_MSC_VER

MetaData::MetaData()
  : ::google::protobuf::Message() {
  SharedCtor();
}

void MetaData::InitAsDefaultInstance() {
}

MetaData::MetaData(const MetaData& from)
  : ::google::protobuf::Message() {
  SharedCtor();
  MergeFrom(from);
}

void MetaData::SharedCtor() {
  _cached_size_ = 0;
  key_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  value_ = const_cast< ::std::string*>(&::google::protobuf::internal::kEmptyString);
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
}

MetaData::~MetaData() {
  SharedDtor();
}

void MetaData::SharedDtor() {
  if (key_ != &::google::protobuf::internal::kEmptyString) {
    delete key_;
  }
  if (value_ != &::google::protobuf::internal::kEmptyString) {
    delete value_;
  }
  if (this != default_instance_) {
  }
}

void MetaData::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* MetaData::descriptor() {
  protobuf_AssignDescriptorsOnce();
  return MetaData_descriptor_;
}

const MetaData& MetaData::default_instance() {
  if (default_instance_ == NULL) protobuf_AddDesc_Reads_2eproto();  return *default_instance_;
}

MetaData* MetaData::default_instance_ = NULL;

MetaData* MetaData::New() const {
  return new MetaData;
}

void MetaData::Clear() {
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (has_key()) {
      if (key_ != &::google::protobuf::internal::kEmptyString) {
        key_->clear();
      }
    }
    if (has_value()) {
      if (value_ != &::google::protobuf::internal::kEmptyString) {
        value_->clear();
      }
    }
  }
  ::memset(_has_bits_, 0, sizeof(_has_bits_));
  mutable_unknown_fields()->Clear();
}

bool MetaData::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!(EXPRESSION)) return false
  ::google::protobuf::uint32 tag;
  while ((tag = input->ReadTag()) != 0) {
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // required string key = 1;
      case 1: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_key()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->key().data(), this->key().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectTag(18)) goto parse_value;
        break;
      }
      
      // required string value = 2;
      case 2: {
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_LENGTH_DELIMITED) {
         parse_value:
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_value()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8String(
            this->value().data(), this->value().length(),
            ::google::protobuf::internal::WireFormat::PARSE);
        } else {
          goto handle_uninterpreted;
        }
        if (input->ExpectAtEnd()) return true;
        break;
      }
      
      default: {
      handle_uninterpreted:
        if (::google::protobuf::internal::WireFormatLite::GetTagWireType(tag) ==
            ::google::protobuf::internal::WireFormatLite::WIRETYPE_END_GROUP) {
          return true;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, mutable_unknown_fields()));
        break;
      }
    }
  }
  return true;
#undef DO_
}

void MetaData::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // required string key = 1;
  if (has_key()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->key().data(), this->key().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      1, this->key(), output);
  }
  
  // required string value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    ::google::protobuf::internal::WireFormatLite::WriteString(
      2, this->value(), output);
  }
  
  if (!unknown_fields().empty()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        unknown_fields(), output);
  }
}

::google::protobuf::uint8* MetaData::SerializeWithCachedSizesToArray(
    ::google::protobuf::uint8* target) const {
  // required string key = 1;
  if (has_key()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->key().data(), this->key().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->key(), target);
  }
  
  // required string value = 2;
  if (has_value()) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8String(
      this->value().data(), this->value().length(),
      ::google::protobuf::internal::WireFormat::SERIALIZE);
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        2, this->value(), target);
  }
  
  if (!unknown_fields().empty()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        unknown_fields(), target);
  }
  return target;
}

int MetaData::ByteSize() const {
  int total_size = 0;
  
  if (_has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    // required string key = 1;
    if (has_key()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->key());
    }
    
    // required string value = 2;
    if (has_value()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->value());
    }
    
  }
  if (!unknown_fields().empty()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        unknown_fields());
  }
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = total_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void MetaData::MergeFrom(const ::google::protobuf::Message& from) {
  GOOGLE_CHECK_NE(&from, this);
  const MetaData* source =
    ::google::protobuf::internal::dynamic_cast_if_available<const MetaData*>(
      &from);
  if (source == NULL) {
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
    MergeFrom(*source);
  }
}

void MetaData::MergeFrom(const MetaData& from) {
  GOOGLE_CHECK_NE(&from, this);
  if (from._has_bits_[0 / 32] & (0xffu << (0 % 32))) {
    if (from.has_key()) {
      set_key(from.key());
    }
    if (from.has_value()) {
      set_value(from.value());
    }
  }
  mutable_unknown_fields()->MergeFrom(from.unknown_fields());
}

void MetaData::CopyFrom(const ::google::protobuf::Message& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void MetaData::CopyFrom(const MetaData& from) {
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool MetaData::IsInitialized() const {
  if ((_has_bits_[0] & 0x00000003) != 0x00000003) return false;
  
  return true;
}

void MetaData::Swap(MetaData* other) {
  if (other != this) {
    std::swap(key_, other->key_);
    std::swap(value_, other->value_);
    std::swap(_has_bits_[0], other->_has_bits_[0]);
    _unknown_fields_.Swap(&other->_unknown_fields_);
    std::swap(_cached_size_, other->_cached_size_);
  }
}

::google::protobuf::Metadata MetaData::GetMetadata() const {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::Metadata metadata;
  metadata.descriptor = MetaData_descriptor_;
  metadata.reflection = MetaData_reflection_;
  return metadata;
}


// @@protoc_insertion_point(namespace_scope)

}  // namespace goby

// @@protoc_insertion_point(global_scope)
