// Generated by the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: Column.proto
// Protobuf C++ Version: 6.33.5

#ifndef Column_2eproto_2epb_2eh
#define Column_2eproto_2epb_2eh

#include <limits>
#include <string>
#include <type_traits>
#include <utility>

#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 6033005
#error "Protobuf C++ gencode is built with an incompatible version of"
#error "Protobuf C++ headers/runtime. See"
#error "https://protobuf.dev/support/cross-version-runtime-guarantee/#cpp"
#endif
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_bases.h"
#include "google/protobuf/generated_message_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/message_lite.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/generated_enum_reflection.h"
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

// Must be included last.
#include "google/protobuf/port_def.inc"

#define PROTOBUF_INTERNAL_EXPORT_Column_2eproto

namespace google {
namespace protobuf {
namespace internal {
template <typename T>
::absl::string_view GetAnyMessageName();
}  // namespace internal
}  // namespace protobuf
}  // namespace google

// Internal implementation detail -- do not use these members.
struct TableStruct_Column_2eproto {
  static const ::uint32_t offsets[];
};
extern "C" {
extern const ::google::protobuf::internal::DescriptorTable descriptor_table_Column_2eproto;
}  // extern "C"
namespace mojo {
namespace spec {
enum DataType : int;
extern const uint32_t DataType_internal_data_[];
class ArrayType;
struct ArrayTypeDefaultTypeInternal;
extern ArrayTypeDefaultTypeInternal _ArrayType_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ArrayType_class_data_;
class BoolType;
struct BoolTypeDefaultTypeInternal;
extern BoolTypeDefaultTypeInternal _BoolType_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull BoolType_class_data_;
class Column;
struct ColumnDefaultTypeInternal;
extern ColumnDefaultTypeInternal _Column_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Column_class_data_;
class DatetimeType;
struct DatetimeTypeDefaultTypeInternal;
extern DatetimeTypeDefaultTypeInternal _DatetimeType_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull DatetimeType_class_data_;
class Float32Type;
struct Float32TypeDefaultTypeInternal;
extern Float32TypeDefaultTypeInternal _Float32Type_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Float32Type_class_data_;
class Float64Type;
struct Float64TypeDefaultTypeInternal;
extern Float64TypeDefaultTypeInternal _Float64Type_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Float64Type_class_data_;
class ImageType;
struct ImageTypeDefaultTypeInternal;
extern ImageTypeDefaultTypeInternal _ImageType_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull ImageType_class_data_;
class Int32Type;
struct Int32TypeDefaultTypeInternal;
extern Int32TypeDefaultTypeInternal _Int32Type_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Int32Type_class_data_;
class Int64Type;
struct Int64TypeDefaultTypeInternal;
extern Int64TypeDefaultTypeInternal _Int64Type_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull Int64Type_class_data_;
class StrType;
struct StrTypeDefaultTypeInternal;
extern StrTypeDefaultTypeInternal _StrType_default_instance_;
extern const ::google::protobuf::internal::ClassDataFull StrType_class_data_;
}  // namespace spec
}  // namespace mojo
namespace google {
namespace protobuf {
template <>
internal::EnumTraitsT<::mojo::spec::DataType_internal_data_>
    internal::EnumTraitsImpl::value<::mojo::spec::DataType>;
}  // namespace protobuf
}  // namespace google

namespace mojo {
namespace spec {
enum DataType : int {
  UNKNOWN_COLUMN_TYPE = 0,
  BOOL = 1,
  INT32 = 2,
  INT64 = 3,
  FLOAT32 = 4,
  FLOAT64 = 5,
  STR = 6,
  DATETIME = 7,
  DataType_INT_MIN_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::min(),
  DataType_INT_MAX_SENTINEL_DO_NOT_USE_ =
      ::std::numeric_limits<::int32_t>::max(),
};

extern const uint32_t DataType_internal_data_[];
inline constexpr DataType DataType_MIN =
    static_cast<DataType>(0);
inline constexpr DataType DataType_MAX =
    static_cast<DataType>(7);
inline bool DataType_IsValid(int value) {
  return 0 <= value && value <= 7;
}
inline constexpr int DataType_ARRAYSIZE = 7 + 1;
const ::google::protobuf::EnumDescriptor* PROTOBUF_NONNULL DataType_descriptor();
template <typename T>
const ::std::string& DataType_Name(T value) {
  static_assert(::std::is_same<T, DataType>::value ||
                    ::std::is_integral<T>::value,
                "Incorrect type passed to DataType_Name().");
  return DataType_Name(static_cast<DataType>(value));
}
template <>
inline const ::std::string& DataType_Name(DataType value) {
  return ::google::protobuf::internal::NameOfDenseEnum<DataType_descriptor, 0, 7>(
      static_cast<int>(value));
}
inline bool DataType_Parse(
    ::absl::string_view name, DataType* PROTOBUF_NONNULL value) {
  return ::google::protobuf::internal::ParseNamedEnum<DataType>(DataType_descriptor(), name,
                                           value);
}

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


// -------------------------------------------------------------------

class StrType final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.StrType) */ {
 public:
  inline StrType() : StrType(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(StrType* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(StrType));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR StrType(::google::protobuf::internal::ConstantInitialized);

  inline StrType(const StrType& from) : StrType(nullptr, from) {}
  inline StrType(StrType&& from) noexcept
      : StrType(nullptr, ::std::move(from)) {}
  inline StrType& operator=(const StrType& from) {
    CopyFrom(from);
    return *this;
  }
  inline StrType& operator=(StrType&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const StrType& default_instance() {
    return *reinterpret_cast<const StrType*>(
        &_StrType_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(StrType& a, StrType& b) { a.Swap(&b); }
  inline void Swap(StrType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(StrType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  StrType* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<StrType>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const StrType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const StrType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.StrType"; }

  explicit StrType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  StrType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const StrType& from);
  StrType(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, StrType&& from) noexcept
      : StrType(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.StrType)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull StrType_class_data_;
// -------------------------------------------------------------------

class Int64Type final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.Int64Type) */ {
 public:
  inline Int64Type() : Int64Type(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Int64Type* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Int64Type));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Int64Type(::google::protobuf::internal::ConstantInitialized);

  inline Int64Type(const Int64Type& from) : Int64Type(nullptr, from) {}
  inline Int64Type(Int64Type&& from) noexcept
      : Int64Type(nullptr, ::std::move(from)) {}
  inline Int64Type& operator=(const Int64Type& from) {
    CopyFrom(from);
    return *this;
  }
  inline Int64Type& operator=(Int64Type&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Int64Type& default_instance() {
    return *reinterpret_cast<const Int64Type*>(
        &_Int64Type_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(Int64Type& a, Int64Type& b) { a.Swap(&b); }
  inline void Swap(Int64Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Int64Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Int64Type* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Int64Type>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Int64Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Int64Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Int64Type"; }

  explicit Int64Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Int64Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Int64Type& from);
  Int64Type(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Int64Type&& from) noexcept
      : Int64Type(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.Int64Type)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Int64Type_class_data_;
// -------------------------------------------------------------------

class Int32Type final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.Int32Type) */ {
 public:
  inline Int32Type() : Int32Type(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Int32Type* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Int32Type));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Int32Type(::google::protobuf::internal::ConstantInitialized);

  inline Int32Type(const Int32Type& from) : Int32Type(nullptr, from) {}
  inline Int32Type(Int32Type&& from) noexcept
      : Int32Type(nullptr, ::std::move(from)) {}
  inline Int32Type& operator=(const Int32Type& from) {
    CopyFrom(from);
    return *this;
  }
  inline Int32Type& operator=(Int32Type&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Int32Type& default_instance() {
    return *reinterpret_cast<const Int32Type*>(
        &_Int32Type_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(Int32Type& a, Int32Type& b) { a.Swap(&b); }
  inline void Swap(Int32Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Int32Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Int32Type* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Int32Type>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Int32Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Int32Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Int32Type"; }

  explicit Int32Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Int32Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Int32Type& from);
  Int32Type(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Int32Type&& from) noexcept
      : Int32Type(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.Int32Type)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Int32Type_class_data_;
// -------------------------------------------------------------------

class ImageType final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.ImageType) */ {
 public:
  inline ImageType() : ImageType(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ImageType* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ImageType));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ImageType(::google::protobuf::internal::ConstantInitialized);

  inline ImageType(const ImageType& from) : ImageType(nullptr, from) {}
  inline ImageType(ImageType&& from) noexcept
      : ImageType(nullptr, ::std::move(from)) {}
  inline ImageType& operator=(const ImageType& from) {
    CopyFrom(from);
    return *this;
  }
  inline ImageType& operator=(ImageType&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ImageType& default_instance() {
    return *reinterpret_cast<const ImageType*>(
        &_ImageType_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ImageType& a, ImageType& b) { a.Swap(&b); }
  inline void Swap(ImageType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ImageType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ImageType* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<ImageType>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const ImageType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const ImageType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ImageType"; }

  explicit ImageType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ImageType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ImageType& from);
  ImageType(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ImageType&& from) noexcept
      : ImageType(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.ImageType)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ImageType_class_data_;
// -------------------------------------------------------------------

class Float64Type final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.Float64Type) */ {
 public:
  inline Float64Type() : Float64Type(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Float64Type* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Float64Type));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Float64Type(::google::protobuf::internal::ConstantInitialized);

  inline Float64Type(const Float64Type& from) : Float64Type(nullptr, from) {}
  inline Float64Type(Float64Type&& from) noexcept
      : Float64Type(nullptr, ::std::move(from)) {}
  inline Float64Type& operator=(const Float64Type& from) {
    CopyFrom(from);
    return *this;
  }
  inline Float64Type& operator=(Float64Type&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Float64Type& default_instance() {
    return *reinterpret_cast<const Float64Type*>(
        &_Float64Type_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(Float64Type& a, Float64Type& b) { a.Swap(&b); }
  inline void Swap(Float64Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Float64Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Float64Type* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Float64Type>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Float64Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Float64Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Float64Type"; }

  explicit Float64Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Float64Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Float64Type& from);
  Float64Type(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Float64Type&& from) noexcept
      : Float64Type(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.Float64Type)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Float64Type_class_data_;
// -------------------------------------------------------------------

class Float32Type final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.Float32Type) */ {
 public:
  inline Float32Type() : Float32Type(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Float32Type* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Float32Type));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Float32Type(::google::protobuf::internal::ConstantInitialized);

  inline Float32Type(const Float32Type& from) : Float32Type(nullptr, from) {}
  inline Float32Type(Float32Type&& from) noexcept
      : Float32Type(nullptr, ::std::move(from)) {}
  inline Float32Type& operator=(const Float32Type& from) {
    CopyFrom(from);
    return *this;
  }
  inline Float32Type& operator=(Float32Type&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Float32Type& default_instance() {
    return *reinterpret_cast<const Float32Type*>(
        &_Float32Type_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(Float32Type& a, Float32Type& b) { a.Swap(&b); }
  inline void Swap(Float32Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Float32Type* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Float32Type* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<Float32Type>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const Float32Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const Float32Type& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Float32Type"; }

  explicit Float32Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Float32Type(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Float32Type& from);
  Float32Type(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Float32Type&& from) noexcept
      : Float32Type(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.Float32Type)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Float32Type_class_data_;
// -------------------------------------------------------------------

class DatetimeType final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.DatetimeType) */ {
 public:
  inline DatetimeType() : DatetimeType(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(DatetimeType* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(DatetimeType));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR DatetimeType(::google::protobuf::internal::ConstantInitialized);

  inline DatetimeType(const DatetimeType& from) : DatetimeType(nullptr, from) {}
  inline DatetimeType(DatetimeType&& from) noexcept
      : DatetimeType(nullptr, ::std::move(from)) {}
  inline DatetimeType& operator=(const DatetimeType& from) {
    CopyFrom(from);
    return *this;
  }
  inline DatetimeType& operator=(DatetimeType&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const DatetimeType& default_instance() {
    return *reinterpret_cast<const DatetimeType*>(
        &_DatetimeType_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(DatetimeType& a, DatetimeType& b) { a.Swap(&b); }
  inline void Swap(DatetimeType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(DatetimeType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  DatetimeType* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<DatetimeType>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const DatetimeType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const DatetimeType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.DatetimeType"; }

  explicit DatetimeType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  DatetimeType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const DatetimeType& from);
  DatetimeType(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, DatetimeType&& from) noexcept
      : DatetimeType(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.DatetimeType)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull DatetimeType_class_data_;
// -------------------------------------------------------------------

class BoolType final : public ::google::protobuf::internal::ZeroFieldsBase
/* @@protoc_insertion_point(class_definition:mojo.spec.BoolType) */ {
 public:
  inline BoolType() : BoolType(nullptr) {}

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(BoolType* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(BoolType));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR BoolType(::google::protobuf::internal::ConstantInitialized);

  inline BoolType(const BoolType& from) : BoolType(nullptr, from) {}
  inline BoolType(BoolType&& from) noexcept
      : BoolType(nullptr, ::std::move(from)) {}
  inline BoolType& operator=(const BoolType& from) {
    CopyFrom(from);
    return *this;
  }
  inline BoolType& operator=(BoolType&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BoolType& default_instance() {
    return *reinterpret_cast<const BoolType*>(
        &_BoolType_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(BoolType& a, BoolType& b) { a.Swap(&b); }
  inline void Swap(BoolType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BoolType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  BoolType* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::internal::ZeroFieldsBase::DefaultConstruct<BoolType>(arena);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const BoolType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::google::protobuf::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const BoolType& from) {
    ::google::protobuf::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }

  public:
  bool IsInitialized() const {
    return true;
  }
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.BoolType"; }

  explicit BoolType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  BoolType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const BoolType& from);
  BoolType(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, BoolType&& from) noexcept
      : BoolType(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  // @@protoc_insertion_point(class_scope:mojo.spec.BoolType)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 0,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull BoolType_class_data_;
// -------------------------------------------------------------------

class ArrayType final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.ArrayType) */ {
 public:
  inline ArrayType() : ArrayType(nullptr) {}
  ~ArrayType() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(ArrayType* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(ArrayType));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR ArrayType(::google::protobuf::internal::ConstantInitialized);

  inline ArrayType(const ArrayType& from) : ArrayType(nullptr, from) {}
  inline ArrayType(ArrayType&& from) noexcept
      : ArrayType(nullptr, ::std::move(from)) {}
  inline ArrayType& operator=(const ArrayType& from) {
    CopyFrom(from);
    return *this;
  }
  inline ArrayType& operator=(ArrayType&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ArrayType& default_instance() {
    return *reinterpret_cast<const ArrayType*>(
        &_ArrayType_default_instance_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(ArrayType& a, ArrayType& b) { a.Swap(&b); }
  inline void Swap(ArrayType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ArrayType* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  ArrayType* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<ArrayType>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const ArrayType& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const ArrayType& from) { ArrayType::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(ArrayType* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.ArrayType"; }

  explicit ArrayType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ArrayType(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ArrayType& from);
  ArrayType(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ArrayType&& from) noexcept
      : ArrayType(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kShapeFieldNumber = 2,
    kDataTypeFieldNumber = 1,
  };
  // repeated int64 shape = 2;
  int shape_size() const;
  private:
  int _internal_shape_size() const;

  public:
  void clear_shape() ;
  ::int64_t shape(int index) const;
  void set_shape(int index, ::int64_t value);
  void add_shape(::int64_t value);
  const ::google::protobuf::RepeatedField<::int64_t>& shape() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL mutable_shape();

  private:
  const ::google::protobuf::RepeatedField<::int64_t>& _internal_shape() const;
  ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL _internal_mutable_shape();

  public:
  // .mojo.spec.DataType data_type = 1;
  void clear_data_type() ;
  ::mojo::spec::DataType data_type() const;
  void set_data_type(::mojo::spec::DataType value);

  private:
  ::mojo::spec::DataType _internal_data_type() const;
  void _internal_set_data_type(::mojo::spec::DataType value);

  public:
  // @@protoc_insertion_point(class_scope:mojo.spec.ArrayType)
 private:
  class _Internal;
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<1, 2,
                                   0, 0,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const ArrayType& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedField<::int64_t> shape_;
    ::google::protobuf::internal::CachedSize _shape_cached_byte_size_;
    int data_type_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull ArrayType_class_data_;
// -------------------------------------------------------------------

class Column final : public ::google::protobuf::Message
/* @@protoc_insertion_point(class_definition:mojo.spec.Column) */ {
 public:
  inline Column() : Column(nullptr) {}
  ~Column() PROTOBUF_FINAL;

#if defined(PROTOBUF_CUSTOM_VTABLE)
  void operator delete(Column* PROTOBUF_NONNULL msg, ::std::destroying_delete_t) {
    SharedDtor(*msg);
    ::google::protobuf::internal::SizedDelete(msg, sizeof(Column));
  }
#endif

  template <typename = void>
  explicit PROTOBUF_CONSTEXPR Column(::google::protobuf::internal::ConstantInitialized);

  inline Column(const Column& from) : Column(nullptr, from) {}
  inline Column(Column&& from) noexcept
      : Column(nullptr, ::std::move(from)) {}
  inline Column& operator=(const Column& from) {
    CopyFrom(from);
    return *this;
  }
  inline Column& operator=(Column&& from) noexcept {
    if (this == &from) return *this;
    if (::google::protobuf::internal::CanMoveWithInternalSwap(GetArena(), from.GetArena())) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::google::protobuf::UnknownFieldSet& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::google::protobuf::UnknownFieldSet>(::google::protobuf::UnknownFieldSet::default_instance);
  }
  inline ::google::protobuf::UnknownFieldSet* PROTOBUF_NONNULL mutable_unknown_fields()
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::google::protobuf::UnknownFieldSet>();
  }

  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL descriptor() {
    return GetDescriptor();
  }
  static const ::google::protobuf::Descriptor* PROTOBUF_NONNULL GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::google::protobuf::Reflection* PROTOBUF_NONNULL GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const Column& default_instance() {
    return *reinterpret_cast<const Column*>(
        &_Column_default_instance_);
  }
  enum TypeCase {
    kBoolType = 2,
    kInt32Type = 3,
    kInt64Type = 4,
    kFloat32Type = 5,
    kFloat64Type = 6,
    kStrType = 7,
    kDatetimeType = 8,
    kImageType = 9,
    kArrayType = 10,
    TYPE_NOT_SET = 0,
  };
  static constexpr int kIndexInFileMessages = 9;
  friend void swap(Column& a, Column& b) { a.Swap(&b); }
  inline void Swap(Column* PROTOBUF_NONNULL other) {
    if (other == this) return;
    if (::google::protobuf::internal::CanUseInternalSwap(GetArena(), other->GetArena())) {
      InternalSwap(other);
    } else {
      ::google::protobuf::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Column* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  Column* PROTOBUF_NONNULL New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::Message::DefaultConstruct<Column>(arena);
  }
  using ::google::protobuf::Message::CopyFrom;
  void CopyFrom(const Column& from);
  using ::google::protobuf::Message::MergeFrom;
  void MergeFrom(const Column& from) { Column::MergeImpl(*this, from); }

  private:
  static void MergeImpl(::google::protobuf::MessageLite& to_msg,
                        const ::google::protobuf::MessageLite& from_msg);

  public:
  bool IsInitialized() const {
    return true;
  }
  ABSL_ATTRIBUTE_REINITIALIZES void Clear() PROTOBUF_FINAL;
  #if defined(PROTOBUF_CUSTOM_VTABLE)
  private:
  static ::size_t ByteSizeLong(const ::google::protobuf::MessageLite& msg);
  static ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      const ::google::protobuf::MessageLite& msg, ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream);

  public:
  ::size_t ByteSizeLong() const { return ByteSizeLong(*this); }
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const {
    return _InternalSerialize(*this, target, stream);
  }
  #else   // PROTOBUF_CUSTOM_VTABLE
  ::size_t ByteSizeLong() const final;
  ::uint8_t* PROTOBUF_NONNULL _InternalSerialize(
      ::uint8_t* PROTOBUF_NONNULL target,
      ::google::protobuf::io::EpsCopyOutputStream* PROTOBUF_NONNULL stream) const final;
  #endif  // PROTOBUF_CUSTOM_VTABLE
  int GetCachedSize() const { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static void SharedDtor(MessageLite& self);
  void InternalSwap(Column* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "mojo.spec.Column"; }

  explicit Column(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  Column(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Column& from);
  Column(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, Column&& from) noexcept
      : Column(arena) {
    *this = ::std::move(from);
  }
  const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL GetClassData() const PROTOBUF_FINAL;
  static void* PROTOBUF_NONNULL PlacementNew_(
      const void* PROTOBUF_NONNULL, void* PROTOBUF_NONNULL mem,
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  static constexpr auto InternalNewImpl_();

 public:
  static constexpr auto InternalGenerateClassData_();

  ::google::protobuf::Metadata GetMetadata() const;
  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kNameFieldNumber = 1,
    kBoolTypeFieldNumber = 2,
    kInt32TypeFieldNumber = 3,
    kInt64TypeFieldNumber = 4,
    kFloat32TypeFieldNumber = 5,
    kFloat64TypeFieldNumber = 6,
    kStrTypeFieldNumber = 7,
    kDatetimeTypeFieldNumber = 8,
    kImageTypeFieldNumber = 9,
    kArrayTypeFieldNumber = 10,
  };
  // string name = 1;
  void clear_name() ;
  const ::std::string& name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_name();
  [[nodiscard]] ::std::string* PROTOBUF_NULLABLE release_name();
  void set_allocated_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_name();

  public:
  // .mojo.spec.BoolType bool_type = 2;
  bool has_bool_type() const;
  private:
  bool _internal_has_bool_type() const;

  public:
  void clear_bool_type() ;
  const ::mojo::spec::BoolType& bool_type() const;
  [[nodiscard]] ::mojo::spec::BoolType* PROTOBUF_NULLABLE release_bool_type();
  ::mojo::spec::BoolType* PROTOBUF_NONNULL mutable_bool_type();
  void set_allocated_bool_type(::mojo::spec::BoolType* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_bool_type(::mojo::spec::BoolType* PROTOBUF_NULLABLE value);
  ::mojo::spec::BoolType* PROTOBUF_NULLABLE unsafe_arena_release_bool_type();

  private:
  const ::mojo::spec::BoolType& _internal_bool_type() const;
  ::mojo::spec::BoolType* PROTOBUF_NONNULL _internal_mutable_bool_type();

  public:
  // .mojo.spec.Int32Type int32_type = 3;
  bool has_int32_type() const;
  private:
  bool _internal_has_int32_type() const;

  public:
  void clear_int32_type() ;
  const ::mojo::spec::Int32Type& int32_type() const;
  [[nodiscard]] ::mojo::spec::Int32Type* PROTOBUF_NULLABLE release_int32_type();
  ::mojo::spec::Int32Type* PROTOBUF_NONNULL mutable_int32_type();
  void set_allocated_int32_type(::mojo::spec::Int32Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_int32_type(::mojo::spec::Int32Type* PROTOBUF_NULLABLE value);
  ::mojo::spec::Int32Type* PROTOBUF_NULLABLE unsafe_arena_release_int32_type();

  private:
  const ::mojo::spec::Int32Type& _internal_int32_type() const;
  ::mojo::spec::Int32Type* PROTOBUF_NONNULL _internal_mutable_int32_type();

  public:
  // .mojo.spec.Int64Type int64_type = 4;
  bool has_int64_type() const;
  private:
  bool _internal_has_int64_type() const;

  public:
  void clear_int64_type() ;
  const ::mojo::spec::Int64Type& int64_type() const;
  [[nodiscard]] ::mojo::spec::Int64Type* PROTOBUF_NULLABLE release_int64_type();
  ::mojo::spec::Int64Type* PROTOBUF_NONNULL mutable_int64_type();
  void set_allocated_int64_type(::mojo::spec::Int64Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_int64_type(::mojo::spec::Int64Type* PROTOBUF_NULLABLE value);
  ::mojo::spec::Int64Type* PROTOBUF_NULLABLE unsafe_arena_release_int64_type();

  private:
  const ::mojo::spec::Int64Type& _internal_int64_type() const;
  ::mojo::spec::Int64Type* PROTOBUF_NONNULL _internal_mutable_int64_type();

  public:
  // .mojo.spec.Float32Type float32_type = 5;
  bool has_float32_type() const;
  private:
  bool _internal_has_float32_type() const;

  public:
  void clear_float32_type() ;
  const ::mojo::spec::Float32Type& float32_type() const;
  [[nodiscard]] ::mojo::spec::Float32Type* PROTOBUF_NULLABLE release_float32_type();
  ::mojo::spec::Float32Type* PROTOBUF_NONNULL mutable_float32_type();
  void set_allocated_float32_type(::mojo::spec::Float32Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_float32_type(::mojo::spec::Float32Type* PROTOBUF_NULLABLE value);
  ::mojo::spec::Float32Type* PROTOBUF_NULLABLE unsafe_arena_release_float32_type();

  private:
  const ::mojo::spec::Float32Type& _internal_float32_type() const;
  ::mojo::spec::Float32Type* PROTOBUF_NONNULL _internal_mutable_float32_type();

  public:
  // .mojo.spec.Float64Type float64_type = 6;
  bool has_float64_type() const;
  private:
  bool _internal_has_float64_type() const;

  public:
  void clear_float64_type() ;
  const ::mojo::spec::Float64Type& float64_type() const;
  [[nodiscard]] ::mojo::spec::Float64Type* PROTOBUF_NULLABLE release_float64_type();
  ::mojo::spec::Float64Type* PROTOBUF_NONNULL mutable_float64_type();
  void set_allocated_float64_type(::mojo::spec::Float64Type* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_float64_type(::mojo::spec::Float64Type* PROTOBUF_NULLABLE value);
  ::mojo::spec::Float64Type* PROTOBUF_NULLABLE unsafe_arena_release_float64_type();

  private:
  const ::mojo::spec::Float64Type& _internal_float64_type() const;
  ::mojo::spec::Float64Type* PROTOBUF_NONNULL _internal_mutable_float64_type();

  public:
  // .mojo.spec.StrType str_type = 7;
  bool has_str_type() const;
  private:
  bool _internal_has_str_type() const;

  public:
  void clear_str_type() ;
  const ::mojo::spec::StrType& str_type() const;
  [[nodiscard]] ::mojo::spec::StrType* PROTOBUF_NULLABLE release_str_type();
  ::mojo::spec::StrType* PROTOBUF_NONNULL mutable_str_type();
  void set_allocated_str_type(::mojo::spec::StrType* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_str_type(::mojo::spec::StrType* PROTOBUF_NULLABLE value);
  ::mojo::spec::StrType* PROTOBUF_NULLABLE unsafe_arena_release_str_type();

  private:
  const ::mojo::spec::StrType& _internal_str_type() const;
  ::mojo::spec::StrType* PROTOBUF_NONNULL _internal_mutable_str_type();

  public:
  // .mojo.spec.DatetimeType datetime_type = 8;
  bool has_datetime_type() const;
  private:
  bool _internal_has_datetime_type() const;

  public:
  void clear_datetime_type() ;
  const ::mojo::spec::DatetimeType& datetime_type() const;
  [[nodiscard]] ::mojo::spec::DatetimeType* PROTOBUF_NULLABLE release_datetime_type();
  ::mojo::spec::DatetimeType* PROTOBUF_NONNULL mutable_datetime_type();
  void set_allocated_datetime_type(::mojo::spec::DatetimeType* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_datetime_type(::mojo::spec::DatetimeType* PROTOBUF_NULLABLE value);
  ::mojo::spec::DatetimeType* PROTOBUF_NULLABLE unsafe_arena_release_datetime_type();

  private:
  const ::mojo::spec::DatetimeType& _internal_datetime_type() const;
  ::mojo::spec::DatetimeType* PROTOBUF_NONNULL _internal_mutable_datetime_type();

  public:
  // .mojo.spec.ImageType image_type = 9;
  bool has_image_type() const;
  private:
  bool _internal_has_image_type() const;

  public:
  void clear_image_type() ;
  const ::mojo::spec::ImageType& image_type() const;
  [[nodiscard]] ::mojo::spec::ImageType* PROTOBUF_NULLABLE release_image_type();
  ::mojo::spec::ImageType* PROTOBUF_NONNULL mutable_image_type();
  void set_allocated_image_type(::mojo::spec::ImageType* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_image_type(::mojo::spec::ImageType* PROTOBUF_NULLABLE value);
  ::mojo::spec::ImageType* PROTOBUF_NULLABLE unsafe_arena_release_image_type();

  private:
  const ::mojo::spec::ImageType& _internal_image_type() const;
  ::mojo::spec::ImageType* PROTOBUF_NONNULL _internal_mutable_image_type();

  public:
  // .mojo.spec.ArrayType array_type = 10;
  bool has_array_type() const;
  private:
  bool _internal_has_array_type() const;

  public:
  void clear_array_type() ;
  const ::mojo::spec::ArrayType& array_type() const;
  [[nodiscard]] ::mojo::spec::ArrayType* PROTOBUF_NULLABLE release_array_type();
  ::mojo::spec::ArrayType* PROTOBUF_NONNULL mutable_array_type();
  void set_allocated_array_type(::mojo::spec::ArrayType* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_array_type(::mojo::spec::ArrayType* PROTOBUF_NULLABLE value);
  ::mojo::spec::ArrayType* PROTOBUF_NULLABLE unsafe_arena_release_array_type();

  private:
  const ::mojo::spec::ArrayType& _internal_array_type() const;
  ::mojo::spec::ArrayType* PROTOBUF_NONNULL _internal_mutable_array_type();

  public:
  void clear_Type();
  TypeCase Type_case() const;
  // @@protoc_insertion_point(class_scope:mojo.spec.Column)
 private:
  class _Internal;
  void set_has_bool_type();
  void set_has_int32_type();
  void set_has_int64_type();
  void set_has_float32_type();
  void set_has_float64_type();
  void set_has_str_type();
  void set_has_datetime_type();
  void set_has_image_type();
  void set_has_array_type();
  inline bool has_Type() const;
  inline void clear_has_Type();
  friend class ::google::protobuf::internal::TcParser;
  static const ::google::protobuf::internal::TcParseTable<0, 10,
                                   9, 37,
                                   2>
      _table_;

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::ConstantInitialized) noexcept;
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
    inline explicit Impl_(
        ::google::protobuf::internal::InternalVisibility visibility,
        ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const Impl_& from,
        const Column& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    union TypeUnion {
      constexpr TypeUnion() : _constinit_{} {}
      ::google::protobuf::internal::ConstantInitialized _constinit_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE bool_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE int32_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE int64_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE float32_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE float64_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE str_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE datetime_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE image_type_;
      ::google::protobuf::Message* PROTOBUF_NULLABLE array_type_;
    } Type_;
    ::uint32_t _oneof_case_[1];
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_Column_2eproto;
};

extern const ::google::protobuf::internal::ClassDataFull Column_class_data_;

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




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


#ifdef __GNUC__
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// -------------------------------------------------------------------

// BoolType

// -------------------------------------------------------------------

// Int32Type

// -------------------------------------------------------------------

// Int64Type

// -------------------------------------------------------------------

// Float32Type

// -------------------------------------------------------------------

// Float64Type

// -------------------------------------------------------------------

// StrType

// -------------------------------------------------------------------

// DatetimeType

// -------------------------------------------------------------------

// ImageType

// -------------------------------------------------------------------

// ArrayType

// .mojo.spec.DataType data_type = 1;
inline void ArrayType::clear_data_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_type_ = 0;
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000002U);
}
inline ::mojo::spec::DataType ArrayType::data_type() const {
  // @@protoc_insertion_point(field_get:mojo.spec.ArrayType.data_type)
  return _internal_data_type();
}
inline void ArrayType::set_data_type(::mojo::spec::DataType value) {
  _internal_set_data_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:mojo.spec.ArrayType.data_type)
}
inline ::mojo::spec::DataType ArrayType::_internal_data_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return static_cast<::mojo::spec::DataType>(_impl_.data_type_);
}
inline void ArrayType::_internal_set_data_type(::mojo::spec::DataType value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.data_type_ = value;
}

// repeated int64 shape = 2;
inline int ArrayType::_internal_shape_size() const {
  return _internal_shape().size();
}
inline int ArrayType::shape_size() const {
  return _internal_shape_size();
}
inline void ArrayType::clear_shape() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.shape_.Clear();
  ClearHasBitForRepeated(_impl_._has_bits_[0],
                  0x00000001U);
}
inline ::int64_t ArrayType::shape(int index) const {
  // @@protoc_insertion_point(field_get:mojo.spec.ArrayType.shape)
  return _internal_shape().Get(index);
}
inline void ArrayType::set_shape(int index, ::int64_t value) {
  _internal_mutable_shape()->Set(index, value);
  // @@protoc_insertion_point(field_set:mojo.spec.ArrayType.shape)
}
inline void ArrayType::add_shape(::int64_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _internal_mutable_shape()->Add(value);
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:mojo.spec.ArrayType.shape)
}
inline const ::google::protobuf::RepeatedField<::int64_t>& ArrayType::shape() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:mojo.spec.ArrayType.shape)
  return _internal_shape();
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL ArrayType::mutable_shape()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBitForRepeated(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:mojo.spec.ArrayType.shape)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_shape();
}
inline const ::google::protobuf::RepeatedField<::int64_t>&
ArrayType::_internal_shape() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.shape_;
}
inline ::google::protobuf::RepeatedField<::int64_t>* PROTOBUF_NONNULL
ArrayType::_internal_mutable_shape() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.shape_;
}

// -------------------------------------------------------------------

// Column

// string name = 1;
inline void Column::clear_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0],
                  0x00000001U);
}
inline const ::std::string& Column::name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.name)
  return _internal_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void Column::set_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:mojo.spec.Column.name)
}
inline ::std::string* PROTOBUF_NONNULL Column::mutable_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_name();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.name)
  return _s;
}
inline const ::std::string& Column::_internal_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.name_.Get();
}
inline void Column::_internal_set_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL Column::_internal_mutable_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE Column::release_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:mojo.spec.Column.name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.name_.Set("", GetArena());
  }
  return released;
}
inline void Column::set_allocated_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  _impl_.name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.name_.IsDefault()) {
    _impl_.name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:mojo.spec.Column.name)
}

// .mojo.spec.BoolType bool_type = 2;
inline bool Column::has_bool_type() const {
  return Type_case() == kBoolType;
}
inline bool Column::_internal_has_bool_type() const {
  return Type_case() == kBoolType;
}
inline void Column::set_has_bool_type() {
  _impl_._oneof_case_[0] = kBoolType;
}
inline void Column::clear_bool_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kBoolType) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.bool_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.bool_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::BoolType* PROTOBUF_NULLABLE Column::release_bool_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.bool_type)
  if (Type_case() == kBoolType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::BoolType*>(_impl_.Type_.bool_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.bool_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::BoolType& Column::_internal_bool_type() const {
  return Type_case() == kBoolType ? static_cast<const ::mojo::spec::BoolType&>(*reinterpret_cast<::mojo::spec::BoolType*>(_impl_.Type_.bool_type_))
                     : reinterpret_cast<const ::mojo::spec::BoolType&>(::mojo::spec::_BoolType_default_instance_);
}
inline const ::mojo::spec::BoolType& Column::bool_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.bool_type)
  return _internal_bool_type();
}
inline ::mojo::spec::BoolType* PROTOBUF_NULLABLE Column::unsafe_arena_release_bool_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.bool_type)
  if (Type_case() == kBoolType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::BoolType*>(_impl_.Type_.bool_type_);
    _impl_.Type_.bool_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_bool_type(
    ::mojo::spec::BoolType* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_bool_type();
    _impl_.Type_.bool_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.bool_type)
}
inline ::mojo::spec::BoolType* PROTOBUF_NONNULL Column::_internal_mutable_bool_type() {
  if (Type_case() != kBoolType) {
    clear_Type();
    set_has_bool_type();
    _impl_.Type_.bool_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::BoolType>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::BoolType*>(_impl_.Type_.bool_type_);
}
inline ::mojo::spec::BoolType* PROTOBUF_NONNULL Column::mutable_bool_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::BoolType* _msg = _internal_mutable_bool_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.bool_type)
  return _msg;
}

// .mojo.spec.Int32Type int32_type = 3;
inline bool Column::has_int32_type() const {
  return Type_case() == kInt32Type;
}
inline bool Column::_internal_has_int32_type() const {
  return Type_case() == kInt32Type;
}
inline void Column::set_has_int32_type() {
  _impl_._oneof_case_[0] = kInt32Type;
}
inline void Column::clear_int32_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kInt32Type) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.int32_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.int32_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::Int32Type* PROTOBUF_NULLABLE Column::release_int32_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.int32_type)
  if (Type_case() == kInt32Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Int32Type*>(_impl_.Type_.int32_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.int32_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::Int32Type& Column::_internal_int32_type() const {
  return Type_case() == kInt32Type ? static_cast<const ::mojo::spec::Int32Type&>(*reinterpret_cast<::mojo::spec::Int32Type*>(_impl_.Type_.int32_type_))
                     : reinterpret_cast<const ::mojo::spec::Int32Type&>(::mojo::spec::_Int32Type_default_instance_);
}
inline const ::mojo::spec::Int32Type& Column::int32_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.int32_type)
  return _internal_int32_type();
}
inline ::mojo::spec::Int32Type* PROTOBUF_NULLABLE Column::unsafe_arena_release_int32_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.int32_type)
  if (Type_case() == kInt32Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Int32Type*>(_impl_.Type_.int32_type_);
    _impl_.Type_.int32_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_int32_type(
    ::mojo::spec::Int32Type* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_int32_type();
    _impl_.Type_.int32_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.int32_type)
}
inline ::mojo::spec::Int32Type* PROTOBUF_NONNULL Column::_internal_mutable_int32_type() {
  if (Type_case() != kInt32Type) {
    clear_Type();
    set_has_int32_type();
    _impl_.Type_.int32_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Int32Type>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::Int32Type*>(_impl_.Type_.int32_type_);
}
inline ::mojo::spec::Int32Type* PROTOBUF_NONNULL Column::mutable_int32_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::Int32Type* _msg = _internal_mutable_int32_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.int32_type)
  return _msg;
}

// .mojo.spec.Int64Type int64_type = 4;
inline bool Column::has_int64_type() const {
  return Type_case() == kInt64Type;
}
inline bool Column::_internal_has_int64_type() const {
  return Type_case() == kInt64Type;
}
inline void Column::set_has_int64_type() {
  _impl_._oneof_case_[0] = kInt64Type;
}
inline void Column::clear_int64_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kInt64Type) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.int64_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.int64_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::Int64Type* PROTOBUF_NULLABLE Column::release_int64_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.int64_type)
  if (Type_case() == kInt64Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Int64Type*>(_impl_.Type_.int64_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.int64_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::Int64Type& Column::_internal_int64_type() const {
  return Type_case() == kInt64Type ? static_cast<const ::mojo::spec::Int64Type&>(*reinterpret_cast<::mojo::spec::Int64Type*>(_impl_.Type_.int64_type_))
                     : reinterpret_cast<const ::mojo::spec::Int64Type&>(::mojo::spec::_Int64Type_default_instance_);
}
inline const ::mojo::spec::Int64Type& Column::int64_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.int64_type)
  return _internal_int64_type();
}
inline ::mojo::spec::Int64Type* PROTOBUF_NULLABLE Column::unsafe_arena_release_int64_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.int64_type)
  if (Type_case() == kInt64Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Int64Type*>(_impl_.Type_.int64_type_);
    _impl_.Type_.int64_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_int64_type(
    ::mojo::spec::Int64Type* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_int64_type();
    _impl_.Type_.int64_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.int64_type)
}
inline ::mojo::spec::Int64Type* PROTOBUF_NONNULL Column::_internal_mutable_int64_type() {
  if (Type_case() != kInt64Type) {
    clear_Type();
    set_has_int64_type();
    _impl_.Type_.int64_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Int64Type>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::Int64Type*>(_impl_.Type_.int64_type_);
}
inline ::mojo::spec::Int64Type* PROTOBUF_NONNULL Column::mutable_int64_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::Int64Type* _msg = _internal_mutable_int64_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.int64_type)
  return _msg;
}

// .mojo.spec.Float32Type float32_type = 5;
inline bool Column::has_float32_type() const {
  return Type_case() == kFloat32Type;
}
inline bool Column::_internal_has_float32_type() const {
  return Type_case() == kFloat32Type;
}
inline void Column::set_has_float32_type() {
  _impl_._oneof_case_[0] = kFloat32Type;
}
inline void Column::clear_float32_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kFloat32Type) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.float32_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.float32_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::Float32Type* PROTOBUF_NULLABLE Column::release_float32_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.float32_type)
  if (Type_case() == kFloat32Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Float32Type*>(_impl_.Type_.float32_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.float32_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::Float32Type& Column::_internal_float32_type() const {
  return Type_case() == kFloat32Type ? static_cast<const ::mojo::spec::Float32Type&>(*reinterpret_cast<::mojo::spec::Float32Type*>(_impl_.Type_.float32_type_))
                     : reinterpret_cast<const ::mojo::spec::Float32Type&>(::mojo::spec::_Float32Type_default_instance_);
}
inline const ::mojo::spec::Float32Type& Column::float32_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.float32_type)
  return _internal_float32_type();
}
inline ::mojo::spec::Float32Type* PROTOBUF_NULLABLE Column::unsafe_arena_release_float32_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.float32_type)
  if (Type_case() == kFloat32Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Float32Type*>(_impl_.Type_.float32_type_);
    _impl_.Type_.float32_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_float32_type(
    ::mojo::spec::Float32Type* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_float32_type();
    _impl_.Type_.float32_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.float32_type)
}
inline ::mojo::spec::Float32Type* PROTOBUF_NONNULL Column::_internal_mutable_float32_type() {
  if (Type_case() != kFloat32Type) {
    clear_Type();
    set_has_float32_type();
    _impl_.Type_.float32_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Float32Type>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::Float32Type*>(_impl_.Type_.float32_type_);
}
inline ::mojo::spec::Float32Type* PROTOBUF_NONNULL Column::mutable_float32_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::Float32Type* _msg = _internal_mutable_float32_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.float32_type)
  return _msg;
}

// .mojo.spec.Float64Type float64_type = 6;
inline bool Column::has_float64_type() const {
  return Type_case() == kFloat64Type;
}
inline bool Column::_internal_has_float64_type() const {
  return Type_case() == kFloat64Type;
}
inline void Column::set_has_float64_type() {
  _impl_._oneof_case_[0] = kFloat64Type;
}
inline void Column::clear_float64_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kFloat64Type) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.float64_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.float64_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::Float64Type* PROTOBUF_NULLABLE Column::release_float64_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.float64_type)
  if (Type_case() == kFloat64Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Float64Type*>(_impl_.Type_.float64_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.float64_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::Float64Type& Column::_internal_float64_type() const {
  return Type_case() == kFloat64Type ? static_cast<const ::mojo::spec::Float64Type&>(*reinterpret_cast<::mojo::spec::Float64Type*>(_impl_.Type_.float64_type_))
                     : reinterpret_cast<const ::mojo::spec::Float64Type&>(::mojo::spec::_Float64Type_default_instance_);
}
inline const ::mojo::spec::Float64Type& Column::float64_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.float64_type)
  return _internal_float64_type();
}
inline ::mojo::spec::Float64Type* PROTOBUF_NULLABLE Column::unsafe_arena_release_float64_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.float64_type)
  if (Type_case() == kFloat64Type) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::Float64Type*>(_impl_.Type_.float64_type_);
    _impl_.Type_.float64_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_float64_type(
    ::mojo::spec::Float64Type* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_float64_type();
    _impl_.Type_.float64_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.float64_type)
}
inline ::mojo::spec::Float64Type* PROTOBUF_NONNULL Column::_internal_mutable_float64_type() {
  if (Type_case() != kFloat64Type) {
    clear_Type();
    set_has_float64_type();
    _impl_.Type_.float64_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::Float64Type>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::Float64Type*>(_impl_.Type_.float64_type_);
}
inline ::mojo::spec::Float64Type* PROTOBUF_NONNULL Column::mutable_float64_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::Float64Type* _msg = _internal_mutable_float64_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.float64_type)
  return _msg;
}

// .mojo.spec.StrType str_type = 7;
inline bool Column::has_str_type() const {
  return Type_case() == kStrType;
}
inline bool Column::_internal_has_str_type() const {
  return Type_case() == kStrType;
}
inline void Column::set_has_str_type() {
  _impl_._oneof_case_[0] = kStrType;
}
inline void Column::clear_str_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kStrType) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.str_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.str_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::StrType* PROTOBUF_NULLABLE Column::release_str_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.str_type)
  if (Type_case() == kStrType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::StrType*>(_impl_.Type_.str_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.str_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::StrType& Column::_internal_str_type() const {
  return Type_case() == kStrType ? static_cast<const ::mojo::spec::StrType&>(*reinterpret_cast<::mojo::spec::StrType*>(_impl_.Type_.str_type_))
                     : reinterpret_cast<const ::mojo::spec::StrType&>(::mojo::spec::_StrType_default_instance_);
}
inline const ::mojo::spec::StrType& Column::str_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.str_type)
  return _internal_str_type();
}
inline ::mojo::spec::StrType* PROTOBUF_NULLABLE Column::unsafe_arena_release_str_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.str_type)
  if (Type_case() == kStrType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::StrType*>(_impl_.Type_.str_type_);
    _impl_.Type_.str_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_str_type(
    ::mojo::spec::StrType* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_str_type();
    _impl_.Type_.str_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.str_type)
}
inline ::mojo::spec::StrType* PROTOBUF_NONNULL Column::_internal_mutable_str_type() {
  if (Type_case() != kStrType) {
    clear_Type();
    set_has_str_type();
    _impl_.Type_.str_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::StrType>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::StrType*>(_impl_.Type_.str_type_);
}
inline ::mojo::spec::StrType* PROTOBUF_NONNULL Column::mutable_str_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::StrType* _msg = _internal_mutable_str_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.str_type)
  return _msg;
}

// .mojo.spec.DatetimeType datetime_type = 8;
inline bool Column::has_datetime_type() const {
  return Type_case() == kDatetimeType;
}
inline bool Column::_internal_has_datetime_type() const {
  return Type_case() == kDatetimeType;
}
inline void Column::set_has_datetime_type() {
  _impl_._oneof_case_[0] = kDatetimeType;
}
inline void Column::clear_datetime_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kDatetimeType) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.datetime_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.datetime_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::DatetimeType* PROTOBUF_NULLABLE Column::release_datetime_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.datetime_type)
  if (Type_case() == kDatetimeType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::DatetimeType*>(_impl_.Type_.datetime_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.datetime_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::DatetimeType& Column::_internal_datetime_type() const {
  return Type_case() == kDatetimeType ? static_cast<const ::mojo::spec::DatetimeType&>(*reinterpret_cast<::mojo::spec::DatetimeType*>(_impl_.Type_.datetime_type_))
                     : reinterpret_cast<const ::mojo::spec::DatetimeType&>(::mojo::spec::_DatetimeType_default_instance_);
}
inline const ::mojo::spec::DatetimeType& Column::datetime_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.datetime_type)
  return _internal_datetime_type();
}
inline ::mojo::spec::DatetimeType* PROTOBUF_NULLABLE Column::unsafe_arena_release_datetime_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.datetime_type)
  if (Type_case() == kDatetimeType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::DatetimeType*>(_impl_.Type_.datetime_type_);
    _impl_.Type_.datetime_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_datetime_type(
    ::mojo::spec::DatetimeType* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_datetime_type();
    _impl_.Type_.datetime_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.datetime_type)
}
inline ::mojo::spec::DatetimeType* PROTOBUF_NONNULL Column::_internal_mutable_datetime_type() {
  if (Type_case() != kDatetimeType) {
    clear_Type();
    set_has_datetime_type();
    _impl_.Type_.datetime_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::DatetimeType>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::DatetimeType*>(_impl_.Type_.datetime_type_);
}
inline ::mojo::spec::DatetimeType* PROTOBUF_NONNULL Column::mutable_datetime_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::DatetimeType* _msg = _internal_mutable_datetime_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.datetime_type)
  return _msg;
}

// .mojo.spec.ImageType image_type = 9;
inline bool Column::has_image_type() const {
  return Type_case() == kImageType;
}
inline bool Column::_internal_has_image_type() const {
  return Type_case() == kImageType;
}
inline void Column::set_has_image_type() {
  _impl_._oneof_case_[0] = kImageType;
}
inline void Column::clear_image_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kImageType) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.image_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.image_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ImageType* PROTOBUF_NULLABLE Column::release_image_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.image_type)
  if (Type_case() == kImageType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImageType*>(_impl_.Type_.image_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.image_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ImageType& Column::_internal_image_type() const {
  return Type_case() == kImageType ? static_cast<const ::mojo::spec::ImageType&>(*reinterpret_cast<::mojo::spec::ImageType*>(_impl_.Type_.image_type_))
                     : reinterpret_cast<const ::mojo::spec::ImageType&>(::mojo::spec::_ImageType_default_instance_);
}
inline const ::mojo::spec::ImageType& Column::image_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.image_type)
  return _internal_image_type();
}
inline ::mojo::spec::ImageType* PROTOBUF_NULLABLE Column::unsafe_arena_release_image_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.image_type)
  if (Type_case() == kImageType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ImageType*>(_impl_.Type_.image_type_);
    _impl_.Type_.image_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_image_type(
    ::mojo::spec::ImageType* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_image_type();
    _impl_.Type_.image_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.image_type)
}
inline ::mojo::spec::ImageType* PROTOBUF_NONNULL Column::_internal_mutable_image_type() {
  if (Type_case() != kImageType) {
    clear_Type();
    set_has_image_type();
    _impl_.Type_.image_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ImageType>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ImageType*>(_impl_.Type_.image_type_);
}
inline ::mojo::spec::ImageType* PROTOBUF_NONNULL Column::mutable_image_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ImageType* _msg = _internal_mutable_image_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.image_type)
  return _msg;
}

// .mojo.spec.ArrayType array_type = 10;
inline bool Column::has_array_type() const {
  return Type_case() == kArrayType;
}
inline bool Column::_internal_has_array_type() const {
  return Type_case() == kArrayType;
}
inline void Column::set_has_array_type() {
  _impl_._oneof_case_[0] = kArrayType;
}
inline void Column::clear_array_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (Type_case() == kArrayType) {
    if (GetArena() == nullptr) {
      delete _impl_.Type_.array_type_;
    } else if (::google::protobuf::internal::DebugHardenClearOneofMessageOnArena()) {
      ::google::protobuf::internal::MaybePoisonAfterClear(_impl_.Type_.array_type_);
    }
    clear_has_Type();
  }
}
inline ::mojo::spec::ArrayType* PROTOBUF_NULLABLE Column::release_array_type() {
  // @@protoc_insertion_point(field_release:mojo.spec.Column.array_type)
  if (Type_case() == kArrayType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ArrayType*>(_impl_.Type_.array_type_);
    if (GetArena() != nullptr) {
      temp = ::google::protobuf::internal::DuplicateIfNonNull(temp);
    }
    _impl_.Type_.array_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline const ::mojo::spec::ArrayType& Column::_internal_array_type() const {
  return Type_case() == kArrayType ? static_cast<const ::mojo::spec::ArrayType&>(*reinterpret_cast<::mojo::spec::ArrayType*>(_impl_.Type_.array_type_))
                     : reinterpret_cast<const ::mojo::spec::ArrayType&>(::mojo::spec::_ArrayType_default_instance_);
}
inline const ::mojo::spec::ArrayType& Column::array_type() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:mojo.spec.Column.array_type)
  return _internal_array_type();
}
inline ::mojo::spec::ArrayType* PROTOBUF_NULLABLE Column::unsafe_arena_release_array_type() {
  // @@protoc_insertion_point(field_unsafe_arena_release:mojo.spec.Column.array_type)
  if (Type_case() == kArrayType) {
    clear_has_Type();
    auto* temp = reinterpret_cast<::mojo::spec::ArrayType*>(_impl_.Type_.array_type_);
    _impl_.Type_.array_type_ = nullptr;
    return temp;
  } else {
    return nullptr;
  }
}
inline void Column::unsafe_arena_set_allocated_array_type(
    ::mojo::spec::ArrayType* PROTOBUF_NULLABLE value) {
  // We rely on the oneof clear method to free the earlier contents
  // of this oneof. We can directly use the pointer we're given to
  // set the new value.
  clear_Type();
  if (value) {
    set_has_array_type();
    _impl_.Type_.array_type_ = reinterpret_cast<::google::protobuf::Message*>(value);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:mojo.spec.Column.array_type)
}
inline ::mojo::spec::ArrayType* PROTOBUF_NONNULL Column::_internal_mutable_array_type() {
  if (Type_case() != kArrayType) {
    clear_Type();
    set_has_array_type();
    _impl_.Type_.array_type_ = reinterpret_cast<::google::protobuf::Message*>(
        ::google::protobuf::Message::DefaultConstruct<::mojo::spec::ArrayType>(GetArena()));
  }
  return reinterpret_cast<::mojo::spec::ArrayType*>(_impl_.Type_.array_type_);
}
inline ::mojo::spec::ArrayType* PROTOBUF_NONNULL Column::mutable_array_type()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::mojo::spec::ArrayType* _msg = _internal_mutable_array_type();
  // @@protoc_insertion_point(field_mutable:mojo.spec.Column.array_type)
  return _msg;
}

inline bool Column::has_Type() const {
  return Type_case() != TYPE_NOT_SET;
}
inline void Column::clear_has_Type() {
  _impl_._oneof_case_[0] = TYPE_NOT_SET;
}
inline Column::TypeCase Column::Type_case() const {
  return Column::TypeCase(_impl_._oneof_case_[0]);
}
#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)
}  // namespace spec
}  // namespace mojo


namespace google {
namespace protobuf {

template <>
struct is_proto_enum<::mojo::spec::DataType> : std::true_type {};
template <>
inline const EnumDescriptor* PROTOBUF_NONNULL GetEnumDescriptor<::mojo::spec::DataType>() {
  return ::mojo::spec::DataType_descriptor();
}

}  // namespace protobuf
}  // namespace google

// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // Column_2eproto_2epb_2eh
