// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: laser_parameter.proto

#include "laser_parameter.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.h>
#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/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// This is a temporary google only hack
#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
#include "third_party/protobuf/version.h"
#endif
// @@protoc_insertion_point(includes)
namespace Laser_proto {
class laser_parameterDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<laser_parameter>
      _instance;
} _laser_parameter_default_instance_;
class Laser_parameter_allDefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Laser_parameter_all>
      _instance;
} _Laser_parameter_all_default_instance_;
}  // namespace Laser_proto
namespace protobuf_laser_5fparameter_2eproto {
void InitDefaultslaser_parameterImpl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
#else
  ::google::protobuf::internal::InitProtobufDefaults();
#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
  {
    void* ptr = &::Laser_proto::_laser_parameter_default_instance_;
    new (ptr) ::Laser_proto::laser_parameter();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Laser_proto::laser_parameter::InitAsDefaultInstance();
}

void InitDefaultslaser_parameter() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultslaser_parameterImpl);
}

void InitDefaultsLaser_parameter_allImpl() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

#ifdef GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
  ::google::protobuf::internal::InitProtobufDefaultsForceUnique();
#else
  ::google::protobuf::internal::InitProtobufDefaults();
#endif  // GOOGLE_PROTOBUF_ENFORCE_UNIQUENESS
  protobuf_laser_5fparameter_2eproto::InitDefaultslaser_parameter();
  {
    void* ptr = &::Laser_proto::_Laser_parameter_all_default_instance_;
    new (ptr) ::Laser_proto::Laser_parameter_all();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::Laser_proto::Laser_parameter_all::InitAsDefaultInstance();
}

void InitDefaultsLaser_parameter_all() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &InitDefaultsLaser_parameter_allImpl);
}

::google::protobuf::Metadata file_level_metadata[2];

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, laser_ip_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, laser_port_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, laser_port_remote_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r00_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r01_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r02_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r03_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r10_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r11_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r12_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r13_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r20_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r21_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r22_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, mat_r23_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, axis_x_theta_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, axis_y_theta_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, axis_z_theta_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, translation_x_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, translation_y_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, translation_z_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, install_angle_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, scan_direction_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, sn_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, frame_num_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, type_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, is_save_banary_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::laser_parameter, is_save_txt_),
  0,
  3,
  4,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  26,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  13,
  1,
  27,
  2,
  12,
  14,
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::Laser_parameter_all, _has_bits_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::Laser_parameter_all, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::Laser_proto::Laser_parameter_all, laser_parameters_),
  ~0u,
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 33, sizeof(::Laser_proto::laser_parameter)},
  { 61, 67, sizeof(::Laser_proto::Laser_parameter_all)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::Laser_proto::_laser_parameter_default_instance_),
  reinterpret_cast<const ::google::protobuf::Message*>(&::Laser_proto::_Laser_parameter_all_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  ::google::protobuf::MessageFactory* factory = NULL;
  AssignDescriptors(
      "laser_parameter.proto", schemas, file_default_instances, TableStruct::offsets, factory,
      file_level_metadata, NULL, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &protobuf_AssignDescriptors);
}

void protobuf_RegisterTypes(const ::std::string&) GOOGLE_PROTOBUF_ATTRIBUTE_COLD;
void protobuf_RegisterTypes(const ::std::string&) {
  protobuf_AssignDescriptorsOnce();
  ::google::protobuf::internal::RegisterAllTypes(file_level_metadata, 2);
}

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n\025laser_parameter.proto\022\013Laser_proto\"\360\004\n"
      "\017laser_parameter\022\020\n\010laser_ip\030\001 \001(\t\022\022\n\nla"
      "ser_port\030\002 \001(\003\022\031\n\021laser_port_remote\030\003 \001("
      "\003\022\022\n\007mat_r00\030\004 \001(\001:\0011\022\022\n\007mat_r01\030\005 \001(\001:\001"
      "1\022\022\n\007mat_r02\030\006 \001(\001:\0011\022\022\n\007mat_r03\030\007 \001(\001:\001"
      "1\022\022\n\007mat_r10\030\010 \001(\001:\0011\022\022\n\007mat_r11\030\t \001(\001:\001"
      "1\022\022\n\007mat_r12\030\n \001(\001:\0011\022\022\n\007mat_r13\030\013 \001(\001:\001"
      "1\022\022\n\007mat_r20\030\014 \001(\001:\0011\022\022\n\007mat_r21\030\r \001(\001:\001"
      "1\022\022\n\007mat_r22\030\016 \001(\001:\0011\022\022\n\007mat_r23\030\017 \001(\001:\001"
      "1\022\024\n\014axis_x_theta\030\020 \001(\001\022\024\n\014axis_y_theta\030"
      "\021 \001(\001\022\024\n\014axis_z_theta\030\022 \001(\001\022\025\n\rtranslati"
      "on_x\030\023 \001(\001\022\025\n\rtranslation_y\030\024 \001(\001\022\025\n\rtra"
      "nslation_z\030\025 \001(\001\022\030\n\rinstall_angle\030\026 \001(\001:"
      "\0010\022\034\n\016scan_direction\030\027 \001(\010:\004true\022\n\n\002sn\030\030"
      " \001(\t\022\027\n\tframe_num\030\031 \001(\003:\0043000\022\016\n\004type\030\032 "
      "\001(\t:\000\022\035\n\016is_save_banary\030\033 \001(\010:\005false\022\031\n\013"
      "is_save_txt\030\034 \001(\010:\004true\"M\n\023Laser_paramet"
      "er_all\0226\n\020laser_parameters\030\001 \003(\0132\034.Laser"
      "_proto.laser_parameter"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 742);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "laser_parameter.proto", &protobuf_RegisterTypes);
}

void AddDescriptors() {
  static GOOGLE_PROTOBUF_DECLARE_ONCE(once);
  ::google::protobuf::GoogleOnceInit(&once, &AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;
}  // namespace protobuf_laser_5fparameter_2eproto
namespace Laser_proto {

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

void laser_parameter::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int laser_parameter::kLaserIpFieldNumber;
const int laser_parameter::kLaserPortFieldNumber;
const int laser_parameter::kLaserPortRemoteFieldNumber;
const int laser_parameter::kMatR00FieldNumber;
const int laser_parameter::kMatR01FieldNumber;
const int laser_parameter::kMatR02FieldNumber;
const int laser_parameter::kMatR03FieldNumber;
const int laser_parameter::kMatR10FieldNumber;
const int laser_parameter::kMatR11FieldNumber;
const int laser_parameter::kMatR12FieldNumber;
const int laser_parameter::kMatR13FieldNumber;
const int laser_parameter::kMatR20FieldNumber;
const int laser_parameter::kMatR21FieldNumber;
const int laser_parameter::kMatR22FieldNumber;
const int laser_parameter::kMatR23FieldNumber;
const int laser_parameter::kAxisXThetaFieldNumber;
const int laser_parameter::kAxisYThetaFieldNumber;
const int laser_parameter::kAxisZThetaFieldNumber;
const int laser_parameter::kTranslationXFieldNumber;
const int laser_parameter::kTranslationYFieldNumber;
const int laser_parameter::kTranslationZFieldNumber;
const int laser_parameter::kInstallAngleFieldNumber;
const int laser_parameter::kScanDirectionFieldNumber;
const int laser_parameter::kSnFieldNumber;
const int laser_parameter::kFrameNumFieldNumber;
const int laser_parameter::kTypeFieldNumber;
const int laser_parameter::kIsSaveBanaryFieldNumber;
const int laser_parameter::kIsSaveTxtFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

laser_parameter::laser_parameter()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    ::protobuf_laser_5fparameter_2eproto::InitDefaultslaser_parameter();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:Laser_proto.laser_parameter)
}
laser_parameter::laser_parameter(const laser_parameter& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      _cached_size_(0) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  laser_ip_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_laser_ip()) {
    laser_ip_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.laser_ip_);
  }
  sn_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_sn()) {
    sn_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sn_);
  }
  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  if (from.has_type()) {
    type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_);
  }
  ::memcpy(&laser_port_, &from.laser_port_,
    static_cast<size_t>(reinterpret_cast<char*>(&frame_num_) -
    reinterpret_cast<char*>(&laser_port_)) + sizeof(frame_num_));
  // @@protoc_insertion_point(copy_constructor:Laser_proto.laser_parameter)
}

void laser_parameter::SharedCtor() {
  _cached_size_ = 0;
  laser_ip_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sn_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  type_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  ::memset(&laser_port_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_save_banary_) -
      reinterpret_cast<char*>(&laser_port_)) + sizeof(is_save_banary_));
  scan_direction_ = true;
  is_save_txt_ = true;
  mat_r00_ = 1;
  mat_r01_ = 1;
  mat_r02_ = 1;
  mat_r03_ = 1;
  mat_r10_ = 1;
  mat_r11_ = 1;
  mat_r12_ = 1;
  mat_r13_ = 1;
  mat_r20_ = 1;
  mat_r21_ = 1;
  mat_r22_ = 1;
  mat_r23_ = 1;
  frame_num_ = GOOGLE_LONGLONG(3000);
}

laser_parameter::~laser_parameter() {
  // @@protoc_insertion_point(destructor:Laser_proto.laser_parameter)
  SharedDtor();
}

void laser_parameter::SharedDtor() {
  laser_ip_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  sn_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
  type_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
}

void laser_parameter::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* laser_parameter::descriptor() {
  ::protobuf_laser_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_laser_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const laser_parameter& laser_parameter::default_instance() {
  ::protobuf_laser_5fparameter_2eproto::InitDefaultslaser_parameter();
  return *internal_default_instance();
}

laser_parameter* laser_parameter::New(::google::protobuf::Arena* arena) const {
  laser_parameter* n = new laser_parameter;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void laser_parameter::Clear() {
// @@protoc_insertion_point(message_clear_start:Laser_proto.laser_parameter)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 7u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(!laser_ip_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
      (*laser_ip_.UnsafeRawStringPointer())->clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(!sn_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
      (*sn_.UnsafeRawStringPointer())->clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(!type_.IsDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited()));
      (*type_.UnsafeRawStringPointer())->clear();
    }
  }
  if (cached_has_bits & 248u) {
    ::memset(&laser_port_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&axis_z_theta_) -
        reinterpret_cast<char*>(&laser_port_)) + sizeof(axis_z_theta_));
  }
  if (cached_has_bits & 65280u) {
    ::memset(&translation_x_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&is_save_banary_) -
        reinterpret_cast<char*>(&translation_x_)) + sizeof(is_save_banary_));
    scan_direction_ = true;
    is_save_txt_ = true;
    mat_r00_ = 1;
  }
  if (cached_has_bits & 16711680u) {
    mat_r01_ = 1;
    mat_r02_ = 1;
    mat_r03_ = 1;
    mat_r10_ = 1;
    mat_r11_ = 1;
    mat_r12_ = 1;
    mat_r13_ = 1;
    mat_r20_ = 1;
  }
  if (cached_has_bits & 251658240u) {
    mat_r21_ = 1;
    mat_r22_ = 1;
    mat_r23_ = 1;
    frame_num_ = GOOGLE_LONGLONG(3000);
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool laser_parameter::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:Laser_proto.laser_parameter)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string laser_ip = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_laser_ip()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->laser_ip().data(), static_cast<int>(this->laser_ip().length()),
            ::google::protobuf::internal::WireFormat::PARSE,
            "Laser_proto.laser_parameter.laser_ip");
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 laser_port = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(16u /* 16 & 0xFF */)) {
          set_has_laser_port();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &laser_port_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 laser_port_remote = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(24u /* 24 & 0xFF */)) {
          set_has_laser_port_remote();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &laser_port_remote_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r00 = 4 [default = 1];
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(33u /* 33 & 0xFF */)) {
          set_has_mat_r00();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r00_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r01 = 5 [default = 1];
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(41u /* 41 & 0xFF */)) {
          set_has_mat_r01();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r01_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r02 = 6 [default = 1];
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {
          set_has_mat_r02();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r02_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r03 = 7 [default = 1];
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(57u /* 57 & 0xFF */)) {
          set_has_mat_r03();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r03_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r10 = 8 [default = 1];
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(65u /* 65 & 0xFF */)) {
          set_has_mat_r10();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r10_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r11 = 9 [default = 1];
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(73u /* 73 & 0xFF */)) {
          set_has_mat_r11();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r11_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r12 = 10 [default = 1];
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(81u /* 81 & 0xFF */)) {
          set_has_mat_r12();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r12_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r13 = 11 [default = 1];
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(89u /* 89 & 0xFF */)) {
          set_has_mat_r13();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r13_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r20 = 12 [default = 1];
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(97u /* 97 & 0xFF */)) {
          set_has_mat_r20();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r20_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r21 = 13 [default = 1];
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(105u /* 105 & 0xFF */)) {
          set_has_mat_r21();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r21_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r22 = 14 [default = 1];
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(113u /* 113 & 0xFF */)) {
          set_has_mat_r22();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r22_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double mat_r23 = 15 [default = 1];
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(121u /* 121 & 0xFF */)) {
          set_has_mat_r23();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &mat_r23_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double axis_x_theta = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(129u /* 129 & 0xFF */)) {
          set_has_axis_x_theta();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &axis_x_theta_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double axis_y_theta = 17;
      case 17: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(137u /* 137 & 0xFF */)) {
          set_has_axis_y_theta();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &axis_y_theta_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double axis_z_theta = 18;
      case 18: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(145u /* 145 & 0xFF */)) {
          set_has_axis_z_theta();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &axis_z_theta_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double translation_x = 19;
      case 19: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(153u /* 153 & 0xFF */)) {
          set_has_translation_x();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &translation_x_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double translation_y = 20;
      case 20: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(161u /* 161 & 0xFF */)) {
          set_has_translation_y();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &translation_y_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double translation_z = 21;
      case 21: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(169u /* 169 & 0xFF */)) {
          set_has_translation_z();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &translation_z_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional double install_angle = 22 [default = 0];
      case 22: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(177u /* 177 & 0xFF */)) {
          set_has_install_angle();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &install_angle_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool scan_direction = 23 [default = true];
      case 23: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(184u /* 184 & 0xFF */)) {
          set_has_scan_direction();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &scan_direction_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string sn = 24;
      case 24: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(194u /* 194 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_sn()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->sn().data(), static_cast<int>(this->sn().length()),
            ::google::protobuf::internal::WireFormat::PARSE,
            "Laser_proto.laser_parameter.sn");
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 frame_num = 25 [default = 3000];
      case 25: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(200u /* 200 & 0xFF */)) {
          set_has_frame_num();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   ::google::protobuf::int64, ::google::protobuf::internal::WireFormatLite::TYPE_INT64>(
                 input, &frame_num_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string type = 26 [default = ""];
      case 26: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(210u /* 210 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
                input, this->mutable_type()));
          ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
            this->type().data(), static_cast<int>(this->type().length()),
            ::google::protobuf::internal::WireFormat::PARSE,
            "Laser_proto.laser_parameter.type");
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_save_banary = 27 [default = false];
      case 27: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(216u /* 216 & 0xFF */)) {
          set_has_is_save_banary();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_save_banary_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_save_txt = 28 [default = true];
      case 28: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(224u /* 224 & 0xFF */)) {
          set_has_is_save_txt();
          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   bool, ::google::protobuf::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_save_txt_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:Laser_proto.laser_parameter)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:Laser_proto.laser_parameter)
  return false;
#undef DO_
}

void laser_parameter::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:Laser_proto.laser_parameter)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string laser_ip = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->laser_ip().data(), static_cast<int>(this->laser_ip().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.laser_ip");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->laser_ip(), output);
  }

  // optional int64 laser_port = 2;
  if (cached_has_bits & 0x00000008u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(2, this->laser_port(), output);
  }

  // optional int64 laser_port_remote = 3;
  if (cached_has_bits & 0x00000010u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(3, this->laser_port_remote(), output);
  }

  // optional double mat_r00 = 4 [default = 1];
  if (cached_has_bits & 0x00008000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(4, this->mat_r00(), output);
  }

  // optional double mat_r01 = 5 [default = 1];
  if (cached_has_bits & 0x00010000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(5, this->mat_r01(), output);
  }

  // optional double mat_r02 = 6 [default = 1];
  if (cached_has_bits & 0x00020000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->mat_r02(), output);
  }

  // optional double mat_r03 = 7 [default = 1];
  if (cached_has_bits & 0x00040000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(7, this->mat_r03(), output);
  }

  // optional double mat_r10 = 8 [default = 1];
  if (cached_has_bits & 0x00080000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(8, this->mat_r10(), output);
  }

  // optional double mat_r11 = 9 [default = 1];
  if (cached_has_bits & 0x00100000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(9, this->mat_r11(), output);
  }

  // optional double mat_r12 = 10 [default = 1];
  if (cached_has_bits & 0x00200000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(10, this->mat_r12(), output);
  }

  // optional double mat_r13 = 11 [default = 1];
  if (cached_has_bits & 0x00400000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(11, this->mat_r13(), output);
  }

  // optional double mat_r20 = 12 [default = 1];
  if (cached_has_bits & 0x00800000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(12, this->mat_r20(), output);
  }

  // optional double mat_r21 = 13 [default = 1];
  if (cached_has_bits & 0x01000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(13, this->mat_r21(), output);
  }

  // optional double mat_r22 = 14 [default = 1];
  if (cached_has_bits & 0x02000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(14, this->mat_r22(), output);
  }

  // optional double mat_r23 = 15 [default = 1];
  if (cached_has_bits & 0x04000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(15, this->mat_r23(), output);
  }

  // optional double axis_x_theta = 16;
  if (cached_has_bits & 0x00000020u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(16, this->axis_x_theta(), output);
  }

  // optional double axis_y_theta = 17;
  if (cached_has_bits & 0x00000040u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(17, this->axis_y_theta(), output);
  }

  // optional double axis_z_theta = 18;
  if (cached_has_bits & 0x00000080u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(18, this->axis_z_theta(), output);
  }

  // optional double translation_x = 19;
  if (cached_has_bits & 0x00000100u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(19, this->translation_x(), output);
  }

  // optional double translation_y = 20;
  if (cached_has_bits & 0x00000200u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(20, this->translation_y(), output);
  }

  // optional double translation_z = 21;
  if (cached_has_bits & 0x00000400u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(21, this->translation_z(), output);
  }

  // optional double install_angle = 22 [default = 0];
  if (cached_has_bits & 0x00000800u) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(22, this->install_angle(), output);
  }

  // optional bool scan_direction = 23 [default = true];
  if (cached_has_bits & 0x00002000u) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(23, this->scan_direction(), output);
  }

  // optional string sn = 24;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->sn().data(), static_cast<int>(this->sn().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.sn");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      24, this->sn(), output);
  }

  // optional int64 frame_num = 25 [default = 3000];
  if (cached_has_bits & 0x08000000u) {
    ::google::protobuf::internal::WireFormatLite::WriteInt64(25, this->frame_num(), output);
  }

  // optional string type = 26 [default = ""];
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->type().data(), static_cast<int>(this->type().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.type");
    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
      26, this->type(), output);
  }

  // optional bool is_save_banary = 27 [default = false];
  if (cached_has_bits & 0x00001000u) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(27, this->is_save_banary(), output);
  }

  // optional bool is_save_txt = 28 [default = true];
  if (cached_has_bits & 0x00004000u) {
    ::google::protobuf::internal::WireFormatLite::WriteBool(28, this->is_save_txt(), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:Laser_proto.laser_parameter)
}

::google::protobuf::uint8* laser_parameter::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:Laser_proto.laser_parameter)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string laser_ip = 1;
  if (cached_has_bits & 0x00000001u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->laser_ip().data(), static_cast<int>(this->laser_ip().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.laser_ip");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        1, this->laser_ip(), target);
  }

  // optional int64 laser_port = 2;
  if (cached_has_bits & 0x00000008u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->laser_port(), target);
  }

  // optional int64 laser_port_remote = 3;
  if (cached_has_bits & 0x00000010u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->laser_port_remote(), target);
  }

  // optional double mat_r00 = 4 [default = 1];
  if (cached_has_bits & 0x00008000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(4, this->mat_r00(), target);
  }

  // optional double mat_r01 = 5 [default = 1];
  if (cached_has_bits & 0x00010000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(5, this->mat_r01(), target);
  }

  // optional double mat_r02 = 6 [default = 1];
  if (cached_has_bits & 0x00020000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->mat_r02(), target);
  }

  // optional double mat_r03 = 7 [default = 1];
  if (cached_has_bits & 0x00040000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(7, this->mat_r03(), target);
  }

  // optional double mat_r10 = 8 [default = 1];
  if (cached_has_bits & 0x00080000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(8, this->mat_r10(), target);
  }

  // optional double mat_r11 = 9 [default = 1];
  if (cached_has_bits & 0x00100000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(9, this->mat_r11(), target);
  }

  // optional double mat_r12 = 10 [default = 1];
  if (cached_has_bits & 0x00200000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(10, this->mat_r12(), target);
  }

  // optional double mat_r13 = 11 [default = 1];
  if (cached_has_bits & 0x00400000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(11, this->mat_r13(), target);
  }

  // optional double mat_r20 = 12 [default = 1];
  if (cached_has_bits & 0x00800000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(12, this->mat_r20(), target);
  }

  // optional double mat_r21 = 13 [default = 1];
  if (cached_has_bits & 0x01000000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(13, this->mat_r21(), target);
  }

  // optional double mat_r22 = 14 [default = 1];
  if (cached_has_bits & 0x02000000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(14, this->mat_r22(), target);
  }

  // optional double mat_r23 = 15 [default = 1];
  if (cached_has_bits & 0x04000000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(15, this->mat_r23(), target);
  }

  // optional double axis_x_theta = 16;
  if (cached_has_bits & 0x00000020u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(16, this->axis_x_theta(), target);
  }

  // optional double axis_y_theta = 17;
  if (cached_has_bits & 0x00000040u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(17, this->axis_y_theta(), target);
  }

  // optional double axis_z_theta = 18;
  if (cached_has_bits & 0x00000080u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(18, this->axis_z_theta(), target);
  }

  // optional double translation_x = 19;
  if (cached_has_bits & 0x00000100u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(19, this->translation_x(), target);
  }

  // optional double translation_y = 20;
  if (cached_has_bits & 0x00000200u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(20, this->translation_y(), target);
  }

  // optional double translation_z = 21;
  if (cached_has_bits & 0x00000400u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(21, this->translation_z(), target);
  }

  // optional double install_angle = 22 [default = 0];
  if (cached_has_bits & 0x00000800u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(22, this->install_angle(), target);
  }

  // optional bool scan_direction = 23 [default = true];
  if (cached_has_bits & 0x00002000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(23, this->scan_direction(), target);
  }

  // optional string sn = 24;
  if (cached_has_bits & 0x00000002u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->sn().data(), static_cast<int>(this->sn().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.sn");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        24, this->sn(), target);
  }

  // optional int64 frame_num = 25 [default = 3000];
  if (cached_has_bits & 0x08000000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteInt64ToArray(25, this->frame_num(), target);
  }

  // optional string type = 26 [default = ""];
  if (cached_has_bits & 0x00000004u) {
    ::google::protobuf::internal::WireFormat::VerifyUTF8StringNamedField(
      this->type().data(), static_cast<int>(this->type().length()),
      ::google::protobuf::internal::WireFormat::SERIALIZE,
      "Laser_proto.laser_parameter.type");
    target =
      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
        26, this->type(), target);
  }

  // optional bool is_save_banary = 27 [default = false];
  if (cached_has_bits & 0x00001000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(27, this->is_save_banary(), target);
  }

  // optional bool is_save_txt = 28 [default = true];
  if (cached_has_bits & 0x00004000u) {
    target = ::google::protobuf::internal::WireFormatLite::WriteBoolToArray(28, this->is_save_txt(), target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Laser_proto.laser_parameter)
  return target;
}

size_t laser_parameter::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Laser_proto.laser_parameter)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  if (_has_bits_[0 / 32] & 255u) {
    // optional string laser_ip = 1;
    if (has_laser_ip()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->laser_ip());
    }

    // optional string sn = 24;
    if (has_sn()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->sn());
    }

    // optional string type = 26 [default = ""];
    if (has_type()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::StringSize(
          this->type());
    }

    // optional int64 laser_port = 2;
    if (has_laser_port()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->laser_port());
    }

    // optional int64 laser_port_remote = 3;
    if (has_laser_port_remote()) {
      total_size += 1 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->laser_port_remote());
    }

    // optional double axis_x_theta = 16;
    if (has_axis_x_theta()) {
      total_size += 2 + 8;
    }

    // optional double axis_y_theta = 17;
    if (has_axis_y_theta()) {
      total_size += 2 + 8;
    }

    // optional double axis_z_theta = 18;
    if (has_axis_z_theta()) {
      total_size += 2 + 8;
    }

  }
  if (_has_bits_[8 / 32] & 65280u) {
    // optional double translation_x = 19;
    if (has_translation_x()) {
      total_size += 2 + 8;
    }

    // optional double translation_y = 20;
    if (has_translation_y()) {
      total_size += 2 + 8;
    }

    // optional double translation_z = 21;
    if (has_translation_z()) {
      total_size += 2 + 8;
    }

    // optional double install_angle = 22 [default = 0];
    if (has_install_angle()) {
      total_size += 2 + 8;
    }

    // optional bool is_save_banary = 27 [default = false];
    if (has_is_save_banary()) {
      total_size += 2 + 1;
    }

    // optional bool scan_direction = 23 [default = true];
    if (has_scan_direction()) {
      total_size += 2 + 1;
    }

    // optional bool is_save_txt = 28 [default = true];
    if (has_is_save_txt()) {
      total_size += 2 + 1;
    }

    // optional double mat_r00 = 4 [default = 1];
    if (has_mat_r00()) {
      total_size += 1 + 8;
    }

  }
  if (_has_bits_[16 / 32] & 16711680u) {
    // optional double mat_r01 = 5 [default = 1];
    if (has_mat_r01()) {
      total_size += 1 + 8;
    }

    // optional double mat_r02 = 6 [default = 1];
    if (has_mat_r02()) {
      total_size += 1 + 8;
    }

    // optional double mat_r03 = 7 [default = 1];
    if (has_mat_r03()) {
      total_size += 1 + 8;
    }

    // optional double mat_r10 = 8 [default = 1];
    if (has_mat_r10()) {
      total_size += 1 + 8;
    }

    // optional double mat_r11 = 9 [default = 1];
    if (has_mat_r11()) {
      total_size += 1 + 8;
    }

    // optional double mat_r12 = 10 [default = 1];
    if (has_mat_r12()) {
      total_size += 1 + 8;
    }

    // optional double mat_r13 = 11 [default = 1];
    if (has_mat_r13()) {
      total_size += 1 + 8;
    }

    // optional double mat_r20 = 12 [default = 1];
    if (has_mat_r20()) {
      total_size += 1 + 8;
    }

  }
  if (_has_bits_[24 / 32] & 251658240u) {
    // optional double mat_r21 = 13 [default = 1];
    if (has_mat_r21()) {
      total_size += 1 + 8;
    }

    // optional double mat_r22 = 14 [default = 1];
    if (has_mat_r22()) {
      total_size += 1 + 8;
    }

    // optional double mat_r23 = 15 [default = 1];
    if (has_mat_r23()) {
      total_size += 1 + 8;
    }

    // optional int64 frame_num = 25 [default = 3000];
    if (has_frame_num()) {
      total_size += 2 +
        ::google::protobuf::internal::WireFormatLite::Int64Size(
          this->frame_num());
    }

  }
  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void laser_parameter::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Laser_proto.laser_parameter)
  GOOGLE_DCHECK_NE(&from, this);
  const laser_parameter* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const laser_parameter>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Laser_proto.laser_parameter)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Laser_proto.laser_parameter)
    MergeFrom(*source);
  }
}

void laser_parameter::MergeFrom(const laser_parameter& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Laser_proto.laser_parameter)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 255u) {
    if (cached_has_bits & 0x00000001u) {
      set_has_laser_ip();
      laser_ip_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.laser_ip_);
    }
    if (cached_has_bits & 0x00000002u) {
      set_has_sn();
      sn_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.sn_);
    }
    if (cached_has_bits & 0x00000004u) {
      set_has_type();
      type_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.type_);
    }
    if (cached_has_bits & 0x00000008u) {
      laser_port_ = from.laser_port_;
    }
    if (cached_has_bits & 0x00000010u) {
      laser_port_remote_ = from.laser_port_remote_;
    }
    if (cached_has_bits & 0x00000020u) {
      axis_x_theta_ = from.axis_x_theta_;
    }
    if (cached_has_bits & 0x00000040u) {
      axis_y_theta_ = from.axis_y_theta_;
    }
    if (cached_has_bits & 0x00000080u) {
      axis_z_theta_ = from.axis_z_theta_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 65280u) {
    if (cached_has_bits & 0x00000100u) {
      translation_x_ = from.translation_x_;
    }
    if (cached_has_bits & 0x00000200u) {
      translation_y_ = from.translation_y_;
    }
    if (cached_has_bits & 0x00000400u) {
      translation_z_ = from.translation_z_;
    }
    if (cached_has_bits & 0x00000800u) {
      install_angle_ = from.install_angle_;
    }
    if (cached_has_bits & 0x00001000u) {
      is_save_banary_ = from.is_save_banary_;
    }
    if (cached_has_bits & 0x00002000u) {
      scan_direction_ = from.scan_direction_;
    }
    if (cached_has_bits & 0x00004000u) {
      is_save_txt_ = from.is_save_txt_;
    }
    if (cached_has_bits & 0x00008000u) {
      mat_r00_ = from.mat_r00_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 16711680u) {
    if (cached_has_bits & 0x00010000u) {
      mat_r01_ = from.mat_r01_;
    }
    if (cached_has_bits & 0x00020000u) {
      mat_r02_ = from.mat_r02_;
    }
    if (cached_has_bits & 0x00040000u) {
      mat_r03_ = from.mat_r03_;
    }
    if (cached_has_bits & 0x00080000u) {
      mat_r10_ = from.mat_r10_;
    }
    if (cached_has_bits & 0x00100000u) {
      mat_r11_ = from.mat_r11_;
    }
    if (cached_has_bits & 0x00200000u) {
      mat_r12_ = from.mat_r12_;
    }
    if (cached_has_bits & 0x00400000u) {
      mat_r13_ = from.mat_r13_;
    }
    if (cached_has_bits & 0x00800000u) {
      mat_r20_ = from.mat_r20_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 251658240u) {
    if (cached_has_bits & 0x01000000u) {
      mat_r21_ = from.mat_r21_;
    }
    if (cached_has_bits & 0x02000000u) {
      mat_r22_ = from.mat_r22_;
    }
    if (cached_has_bits & 0x04000000u) {
      mat_r23_ = from.mat_r23_;
    }
    if (cached_has_bits & 0x08000000u) {
      frame_num_ = from.frame_num_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void laser_parameter::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Laser_proto.laser_parameter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void laser_parameter::CopyFrom(const laser_parameter& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Laser_proto.laser_parameter)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool laser_parameter::IsInitialized() const {
  return true;
}

void laser_parameter::Swap(laser_parameter* other) {
  if (other == this) return;
  InternalSwap(other);
}
void laser_parameter::InternalSwap(laser_parameter* other) {
  using std::swap;
  laser_ip_.Swap(&other->laser_ip_);
  sn_.Swap(&other->sn_);
  type_.Swap(&other->type_);
  swap(laser_port_, other->laser_port_);
  swap(laser_port_remote_, other->laser_port_remote_);
  swap(axis_x_theta_, other->axis_x_theta_);
  swap(axis_y_theta_, other->axis_y_theta_);
  swap(axis_z_theta_, other->axis_z_theta_);
  swap(translation_x_, other->translation_x_);
  swap(translation_y_, other->translation_y_);
  swap(translation_z_, other->translation_z_);
  swap(install_angle_, other->install_angle_);
  swap(is_save_banary_, other->is_save_banary_);
  swap(scan_direction_, other->scan_direction_);
  swap(is_save_txt_, other->is_save_txt_);
  swap(mat_r00_, other->mat_r00_);
  swap(mat_r01_, other->mat_r01_);
  swap(mat_r02_, other->mat_r02_);
  swap(mat_r03_, other->mat_r03_);
  swap(mat_r10_, other->mat_r10_);
  swap(mat_r11_, other->mat_r11_);
  swap(mat_r12_, other->mat_r12_);
  swap(mat_r13_, other->mat_r13_);
  swap(mat_r20_, other->mat_r20_);
  swap(mat_r21_, other->mat_r21_);
  swap(mat_r22_, other->mat_r22_);
  swap(mat_r23_, other->mat_r23_);
  swap(frame_num_, other->frame_num_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata laser_parameter::GetMetadata() const {
  protobuf_laser_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_laser_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages];
}


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

void Laser_parameter_all::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int Laser_parameter_all::kLaserParametersFieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Laser_parameter_all::Laser_parameter_all()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  if (GOOGLE_PREDICT_TRUE(this != internal_default_instance())) {
    ::protobuf_laser_5fparameter_2eproto::InitDefaultsLaser_parameter_all();
  }
  SharedCtor();
  // @@protoc_insertion_point(constructor:Laser_proto.Laser_parameter_all)
}
Laser_parameter_all::Laser_parameter_all(const Laser_parameter_all& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL),
      _has_bits_(from._has_bits_),
      _cached_size_(0),
      laser_parameters_(from.laser_parameters_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  // @@protoc_insertion_point(copy_constructor:Laser_proto.Laser_parameter_all)
}

void Laser_parameter_all::SharedCtor() {
  _cached_size_ = 0;
}

Laser_parameter_all::~Laser_parameter_all() {
  // @@protoc_insertion_point(destructor:Laser_proto.Laser_parameter_all)
  SharedDtor();
}

void Laser_parameter_all::SharedDtor() {
}

void Laser_parameter_all::SetCachedSize(int size) const {
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
}
const ::google::protobuf::Descriptor* Laser_parameter_all::descriptor() {
  ::protobuf_laser_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_laser_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const Laser_parameter_all& Laser_parameter_all::default_instance() {
  ::protobuf_laser_5fparameter_2eproto::InitDefaultsLaser_parameter_all();
  return *internal_default_instance();
}

Laser_parameter_all* Laser_parameter_all::New(::google::protobuf::Arena* arena) const {
  Laser_parameter_all* n = new Laser_parameter_all;
  if (arena != NULL) {
    arena->Own(n);
  }
  return n;
}

void Laser_parameter_all::Clear() {
// @@protoc_insertion_point(message_clear_start:Laser_proto.Laser_parameter_all)
  ::google::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  laser_parameters_.Clear();
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

bool Laser_parameter_all::MergePartialFromCodedStream(
    ::google::protobuf::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!GOOGLE_PREDICT_TRUE(EXPRESSION)) goto failure
  ::google::protobuf::uint32 tag;
  // @@protoc_insertion_point(parse_start:Laser_proto.Laser_parameter_all)
  for (;;) {
    ::std::pair< ::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // repeated .Laser_proto.laser_parameter laser_parameters = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(10u /* 10 & 0xFF */)) {
          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(input, add_laser_parameters()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::google::protobuf::internal::WireFormat::SkipField(
              input, tag, _internal_metadata_.mutable_unknown_fields()));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:Laser_proto.Laser_parameter_all)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:Laser_proto.Laser_parameter_all)
  return false;
#undef DO_
}

void Laser_parameter_all::SerializeWithCachedSizes(
    ::google::protobuf::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:Laser_proto.Laser_parameter_all)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .Laser_proto.laser_parameter laser_parameters = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->laser_parameters_size()); i < n; i++) {
    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
      1, this->laser_parameters(static_cast<int>(i)), output);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        _internal_metadata_.unknown_fields(), output);
  }
  // @@protoc_insertion_point(serialize_end:Laser_proto.Laser_parameter_all)
}

::google::protobuf::uint8* Laser_parameter_all::InternalSerializeWithCachedSizesToArray(
    bool deterministic, ::google::protobuf::uint8* target) const {
  (void)deterministic; // Unused
  // @@protoc_insertion_point(serialize_to_array_start:Laser_proto.Laser_parameter_all)
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // repeated .Laser_proto.laser_parameter laser_parameters = 1;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->laser_parameters_size()); i < n; i++) {
    target = ::google::protobuf::internal::WireFormatLite::
      InternalWriteMessageToArray(
        1, this->laser_parameters(static_cast<int>(i)), deterministic, target);
  }

  if (_internal_metadata_.have_unknown_fields()) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:Laser_proto.Laser_parameter_all)
  return target;
}

size_t Laser_parameter_all::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:Laser_proto.Laser_parameter_all)
  size_t total_size = 0;

  if (_internal_metadata_.have_unknown_fields()) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        _internal_metadata_.unknown_fields());
  }
  // repeated .Laser_proto.laser_parameter laser_parameters = 1;
  {
    unsigned int count = static_cast<unsigned int>(this->laser_parameters_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::google::protobuf::internal::WireFormatLite::MessageSize(
          this->laser_parameters(static_cast<int>(i)));
    }
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  GOOGLE_SAFE_CONCURRENT_WRITES_BEGIN();
  _cached_size_ = cached_size;
  GOOGLE_SAFE_CONCURRENT_WRITES_END();
  return total_size;
}

void Laser_parameter_all::MergeFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:Laser_proto.Laser_parameter_all)
  GOOGLE_DCHECK_NE(&from, this);
  const Laser_parameter_all* source =
      ::google::protobuf::internal::DynamicCastToGenerated<const Laser_parameter_all>(
          &from);
  if (source == NULL) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:Laser_proto.Laser_parameter_all)
    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:Laser_proto.Laser_parameter_all)
    MergeFrom(*source);
  }
}

void Laser_parameter_all::MergeFrom(const Laser_parameter_all& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:Laser_proto.Laser_parameter_all)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::google::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  laser_parameters_.MergeFrom(from.laser_parameters_);
}

void Laser_parameter_all::CopyFrom(const ::google::protobuf::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:Laser_proto.Laser_parameter_all)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Laser_parameter_all::CopyFrom(const Laser_parameter_all& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:Laser_proto.Laser_parameter_all)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Laser_parameter_all::IsInitialized() const {
  return true;
}

void Laser_parameter_all::Swap(Laser_parameter_all* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Laser_parameter_all::InternalSwap(Laser_parameter_all* other) {
  using std::swap;
  laser_parameters_.InternalSwap(&other->laser_parameters_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_cached_size_, other->_cached_size_);
}

::google::protobuf::Metadata Laser_parameter_all::GetMetadata() const {
  protobuf_laser_5fparameter_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_laser_5fparameter_2eproto::file_level_metadata[kIndexInFileMessages];
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace Laser_proto

// @@protoc_insertion_point(global_scope)
