// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: proto/topicData/topicDataRecord/dataStructure/matrix4x4.proto

#include "proto/topicData/topicDataRecord/dataStructure/matrix4x4.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/stubs/port.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 ubii {
namespace dataStructure {
class Matrix4x4DefaultTypeInternal {
 public:
  ::google::protobuf::internal::ExplicitlyConstructed<Matrix4x4>
      _instance;
} _Matrix4x4_default_instance_;
}  // namespace dataStructure
}  // namespace ubii
namespace protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto {
static void InitDefaultsMatrix4x4() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::ubii::dataStructure::_Matrix4x4_default_instance_;
    new (ptr) ::ubii::dataStructure::Matrix4x4();
    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
  }
  ::ubii::dataStructure::Matrix4x4::InitAsDefaultInstance();
}

::google::protobuf::internal::SCCInfo<0> scc_info_Matrix4x4 =
    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsMatrix4x4}, {}};

void InitDefaults() {
  ::google::protobuf::internal::InitSCC(&scc_info_Matrix4x4.base);
}

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

const ::google::protobuf::uint32 TableStruct::offsets[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m00_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m01_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m02_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m03_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m10_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m11_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m12_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m13_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m20_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m21_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m22_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m23_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m30_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m31_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m32_),
  GOOGLE_PROTOBUF_GENERATED_MESSAGE_FIELD_OFFSET(::ubii::dataStructure::Matrix4x4, m33_),
};
static const ::google::protobuf::internal::MigrationSchema schemas[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, sizeof(::ubii::dataStructure::Matrix4x4)},
};

static ::google::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::google::protobuf::Message*>(&::ubii::dataStructure::_Matrix4x4_default_instance_),
};

void protobuf_AssignDescriptors() {
  AddDescriptors();
  AssignDescriptors(
      "proto/topicData/topicDataRecord/dataStructure/matrix4x4.proto", schemas, file_default_instances, TableStruct::offsets,
      file_level_metadata, NULL, NULL);
}

void protobuf_AssignDescriptorsOnce() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(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, 1);
}

void AddDescriptorsImpl() {
  InitDefaults();
  static const char descriptor[] GOOGLE_PROTOBUF_ATTRIBUTE_SECTION_VARIABLE(protodesc_cold) = {
      "\n=proto/topicData/topicDataRecord/dataSt"
      "ructure/matrix4x4.proto\022\022ubii.dataStruct"
      "ure\"\333\001\n\tMatrix4x4\022\013\n\003m00\030\001 \001(\001\022\013\n\003m01\030\002 "
      "\001(\001\022\013\n\003m02\030\003 \001(\001\022\013\n\003m03\030\004 \001(\001\022\013\n\003m10\030\005 \001"
      "(\001\022\013\n\003m11\030\006 \001(\001\022\013\n\003m12\030\007 \001(\001\022\013\n\003m13\030\010 \001("
      "\001\022\013\n\003m20\030\t \001(\001\022\013\n\003m21\030\n \001(\001\022\013\n\003m22\030\013 \001(\001"
      "\022\013\n\003m23\030\014 \001(\001\022\013\n\003m30\030\r \001(\001\022\013\n\003m31\030\016 \001(\001\022"
      "\013\n\003m32\030\017 \001(\001\022\013\n\003m33\030\020 \001(\001b\006proto3"
  };
  ::google::protobuf::DescriptorPool::InternalAddGeneratedFile(
      descriptor, 313);
  ::google::protobuf::MessageFactory::InternalRegisterGeneratedFile(
    "proto/topicData/topicDataRecord/dataStructure/matrix4x4.proto", &protobuf_RegisterTypes);
}

void AddDescriptors() {
  static ::google::protobuf::internal::once_flag once;
  ::google::protobuf::internal::call_once(once, AddDescriptorsImpl);
}
// Force AddDescriptors() to be called at dynamic initialization time.
struct StaticDescriptorInitializer {
  StaticDescriptorInitializer() {
    AddDescriptors();
  }
} static_descriptor_initializer;
}  // namespace protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto
namespace ubii {
namespace dataStructure {

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

void Matrix4x4::InitAsDefaultInstance() {
}
#if !defined(_MSC_VER) || _MSC_VER >= 1900
const int Matrix4x4::kM00FieldNumber;
const int Matrix4x4::kM01FieldNumber;
const int Matrix4x4::kM02FieldNumber;
const int Matrix4x4::kM03FieldNumber;
const int Matrix4x4::kM10FieldNumber;
const int Matrix4x4::kM11FieldNumber;
const int Matrix4x4::kM12FieldNumber;
const int Matrix4x4::kM13FieldNumber;
const int Matrix4x4::kM20FieldNumber;
const int Matrix4x4::kM21FieldNumber;
const int Matrix4x4::kM22FieldNumber;
const int Matrix4x4::kM23FieldNumber;
const int Matrix4x4::kM30FieldNumber;
const int Matrix4x4::kM31FieldNumber;
const int Matrix4x4::kM32FieldNumber;
const int Matrix4x4::kM33FieldNumber;
#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900

Matrix4x4::Matrix4x4()
  : ::google::protobuf::Message(), _internal_metadata_(NULL) {
  ::google::protobuf::internal::InitSCC(
      &protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto::scc_info_Matrix4x4.base);
  SharedCtor();
  // @@protoc_insertion_point(constructor:ubii.dataStructure.Matrix4x4)
}
Matrix4x4::Matrix4x4(const Matrix4x4& from)
  : ::google::protobuf::Message(),
      _internal_metadata_(NULL) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&m00_, &from.m00_,
    static_cast<size_t>(reinterpret_cast<char*>(&m33_) -
    reinterpret_cast<char*>(&m00_)) + sizeof(m33_));
  // @@protoc_insertion_point(copy_constructor:ubii.dataStructure.Matrix4x4)
}

void Matrix4x4::SharedCtor() {
  ::memset(&m00_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&m33_) -
      reinterpret_cast<char*>(&m00_)) + sizeof(m33_));
}

Matrix4x4::~Matrix4x4() {
  // @@protoc_insertion_point(destructor:ubii.dataStructure.Matrix4x4)
  SharedDtor();
}

void Matrix4x4::SharedDtor() {
}

void Matrix4x4::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ::google::protobuf::Descriptor* Matrix4x4::descriptor() {
  ::protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto::protobuf_AssignDescriptorsOnce();
  return ::protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto::file_level_metadata[kIndexInFileMessages].descriptor;
}

const Matrix4x4& Matrix4x4::default_instance() {
  ::google::protobuf::internal::InitSCC(&protobuf_proto_2ftopicData_2ftopicDataRecord_2fdataStructure_2fmatrix4x4_2eproto::scc_info_Matrix4x4.base);
  return *internal_default_instance();
}


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

  ::memset(&m00_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&m33_) -
      reinterpret_cast<char*>(&m00_)) + sizeof(m33_));
  _internal_metadata_.Clear();
}

bool Matrix4x4::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:ubii.dataStructure.Matrix4x4)
  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)) {
      // double m00 = 1;
      case 1: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(9u /* 9 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m00_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m01 = 2;
      case 2: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(17u /* 17 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m01_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m02 = 3;
      case 3: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(25u /* 25 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m02_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m03 = 4;
      case 4: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(33u /* 33 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m03_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m10 = 5;
      case 5: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(41u /* 41 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m10_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m11 = 6;
      case 6: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(49u /* 49 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m11_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m12 = 7;
      case 7: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(57u /* 57 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m12_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m13 = 8;
      case 8: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(65u /* 65 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m13_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m20 = 9;
      case 9: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(73u /* 73 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m20_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m21 = 10;
      case 10: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(81u /* 81 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m21_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m22 = 11;
      case 11: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(89u /* 89 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m22_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m23 = 12;
      case 12: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(97u /* 97 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m23_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m30 = 13;
      case 13: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(105u /* 105 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m30_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m31 = 14;
      case 14: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(113u /* 113 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m31_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m32 = 15;
      case 15: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(121u /* 121 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m32_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // double m33 = 16;
      case 16: {
        if (static_cast< ::google::protobuf::uint8>(tag) ==
            static_cast< ::google::protobuf::uint8>(129u /* 129 & 0xFF */)) {

          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
                   double, ::google::protobuf::internal::WireFormatLite::TYPE_DOUBLE>(
                 input, &m33_)));
        } 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:ubii.dataStructure.Matrix4x4)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:ubii.dataStructure.Matrix4x4)
  return false;
#undef DO_
}

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

  // double m00 = 1;
  if (this->m00() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(1, this->m00(), output);
  }

  // double m01 = 2;
  if (this->m01() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(2, this->m01(), output);
  }

  // double m02 = 3;
  if (this->m02() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(3, this->m02(), output);
  }

  // double m03 = 4;
  if (this->m03() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(4, this->m03(), output);
  }

  // double m10 = 5;
  if (this->m10() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(5, this->m10(), output);
  }

  // double m11 = 6;
  if (this->m11() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(6, this->m11(), output);
  }

  // double m12 = 7;
  if (this->m12() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(7, this->m12(), output);
  }

  // double m13 = 8;
  if (this->m13() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(8, this->m13(), output);
  }

  // double m20 = 9;
  if (this->m20() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(9, this->m20(), output);
  }

  // double m21 = 10;
  if (this->m21() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(10, this->m21(), output);
  }

  // double m22 = 11;
  if (this->m22() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(11, this->m22(), output);
  }

  // double m23 = 12;
  if (this->m23() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(12, this->m23(), output);
  }

  // double m30 = 13;
  if (this->m30() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(13, this->m30(), output);
  }

  // double m31 = 14;
  if (this->m31() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(14, this->m31(), output);
  }

  // double m32 = 15;
  if (this->m32() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(15, this->m32(), output);
  }

  // double m33 = 16;
  if (this->m33() != 0) {
    ::google::protobuf::internal::WireFormatLite::WriteDouble(16, this->m33(), output);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), output);
  }
  // @@protoc_insertion_point(serialize_end:ubii.dataStructure.Matrix4x4)
}

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

  // double m00 = 1;
  if (this->m00() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(1, this->m00(), target);
  }

  // double m01 = 2;
  if (this->m01() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(2, this->m01(), target);
  }

  // double m02 = 3;
  if (this->m02() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(3, this->m02(), target);
  }

  // double m03 = 4;
  if (this->m03() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(4, this->m03(), target);
  }

  // double m10 = 5;
  if (this->m10() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(5, this->m10(), target);
  }

  // double m11 = 6;
  if (this->m11() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(6, this->m11(), target);
  }

  // double m12 = 7;
  if (this->m12() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(7, this->m12(), target);
  }

  // double m13 = 8;
  if (this->m13() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(8, this->m13(), target);
  }

  // double m20 = 9;
  if (this->m20() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(9, this->m20(), target);
  }

  // double m21 = 10;
  if (this->m21() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(10, this->m21(), target);
  }

  // double m22 = 11;
  if (this->m22() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(11, this->m22(), target);
  }

  // double m23 = 12;
  if (this->m23() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(12, this->m23(), target);
  }

  // double m30 = 13;
  if (this->m30() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(13, this->m30(), target);
  }

  // double m31 = 14;
  if (this->m31() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(14, this->m31(), target);
  }

  // double m32 = 15;
  if (this->m32() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(15, this->m32(), target);
  }

  // double m33 = 16;
  if (this->m33() != 0) {
    target = ::google::protobuf::internal::WireFormatLite::WriteDoubleToArray(16, this->m33(), target);
  }

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()), target);
  }
  // @@protoc_insertion_point(serialize_to_array_end:ubii.dataStructure.Matrix4x4)
  return target;
}

size_t Matrix4x4::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:ubii.dataStructure.Matrix4x4)
  size_t total_size = 0;

  if ((_internal_metadata_.have_unknown_fields() &&  ::google::protobuf::internal::GetProto3PreserveUnknownsDefault())) {
    total_size +=
      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
        (::google::protobuf::internal::GetProto3PreserveUnknownsDefault()   ? _internal_metadata_.unknown_fields()   : _internal_metadata_.default_instance()));
  }
  // double m00 = 1;
  if (this->m00() != 0) {
    total_size += 1 + 8;
  }

  // double m01 = 2;
  if (this->m01() != 0) {
    total_size += 1 + 8;
  }

  // double m02 = 3;
  if (this->m02() != 0) {
    total_size += 1 + 8;
  }

  // double m03 = 4;
  if (this->m03() != 0) {
    total_size += 1 + 8;
  }

  // double m10 = 5;
  if (this->m10() != 0) {
    total_size += 1 + 8;
  }

  // double m11 = 6;
  if (this->m11() != 0) {
    total_size += 1 + 8;
  }

  // double m12 = 7;
  if (this->m12() != 0) {
    total_size += 1 + 8;
  }

  // double m13 = 8;
  if (this->m13() != 0) {
    total_size += 1 + 8;
  }

  // double m20 = 9;
  if (this->m20() != 0) {
    total_size += 1 + 8;
  }

  // double m21 = 10;
  if (this->m21() != 0) {
    total_size += 1 + 8;
  }

  // double m22 = 11;
  if (this->m22() != 0) {
    total_size += 1 + 8;
  }

  // double m23 = 12;
  if (this->m23() != 0) {
    total_size += 1 + 8;
  }

  // double m30 = 13;
  if (this->m30() != 0) {
    total_size += 1 + 8;
  }

  // double m31 = 14;
  if (this->m31() != 0) {
    total_size += 1 + 8;
  }

  // double m32 = 15;
  if (this->m32() != 0) {
    total_size += 1 + 8;
  }

  // double m33 = 16;
  if (this->m33() != 0) {
    total_size += 2 + 8;
  }

  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

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

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

  if (from.m00() != 0) {
    set_m00(from.m00());
  }
  if (from.m01() != 0) {
    set_m01(from.m01());
  }
  if (from.m02() != 0) {
    set_m02(from.m02());
  }
  if (from.m03() != 0) {
    set_m03(from.m03());
  }
  if (from.m10() != 0) {
    set_m10(from.m10());
  }
  if (from.m11() != 0) {
    set_m11(from.m11());
  }
  if (from.m12() != 0) {
    set_m12(from.m12());
  }
  if (from.m13() != 0) {
    set_m13(from.m13());
  }
  if (from.m20() != 0) {
    set_m20(from.m20());
  }
  if (from.m21() != 0) {
    set_m21(from.m21());
  }
  if (from.m22() != 0) {
    set_m22(from.m22());
  }
  if (from.m23() != 0) {
    set_m23(from.m23());
  }
  if (from.m30() != 0) {
    set_m30(from.m30());
  }
  if (from.m31() != 0) {
    set_m31(from.m31());
  }
  if (from.m32() != 0) {
    set_m32(from.m32());
  }
  if (from.m33() != 0) {
    set_m33(from.m33());
  }
}

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

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

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

void Matrix4x4::Swap(Matrix4x4* other) {
  if (other == this) return;
  InternalSwap(other);
}
void Matrix4x4::InternalSwap(Matrix4x4* other) {
  using std::swap;
  swap(m00_, other->m00_);
  swap(m01_, other->m01_);
  swap(m02_, other->m02_);
  swap(m03_, other->m03_);
  swap(m10_, other->m10_);
  swap(m11_, other->m11_);
  swap(m12_, other->m12_);
  swap(m13_, other->m13_);
  swap(m20_, other->m20_);
  swap(m21_, other->m21_);
  swap(m22_, other->m22_);
  swap(m23_, other->m23_);
  swap(m30_, other->m30_);
  swap(m31_, other->m31_);
  swap(m32_, other->m32_);
  swap(m33_, other->m33_);
  _internal_metadata_.Swap(&other->_internal_metadata_);
}

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


// @@protoc_insertion_point(namespace_scope)
}  // namespace dataStructure
}  // namespace ubii
namespace google {
namespace protobuf {
template<> GOOGLE_PROTOBUF_ATTRIBUTE_NOINLINE ::ubii::dataStructure::Matrix4x4* Arena::CreateMaybeMessage< ::ubii::dataStructure::Matrix4x4 >(Arena* arena) {
  return Arena::CreateInternal< ::ubii::dataStructure::Matrix4x4 >(arena);
}
}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)
