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

#ifndef disk_5fcache_5fproto_2eproto_2epb_2eh
#define disk_5fcache_5fproto_2eproto_2epb_2eh

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

// clang-format off
#include "google/protobuf/runtime_version.h"
#if PROTOBUF_VERSION != 7035001
#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_tctable_decl.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.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
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_disk_5fcache_5fproto_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_disk_5fcache_5fproto_2eproto {
  static const ::uint32_t offsets[];
};
class GpuProgramProto;
struct GpuProgramProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern GpuProgramProtoGlobalsTypeInternal GpuProgramProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite GpuProgramProto_class_data_;
#else
extern const GpuProgramProtoGlobalsTypeInternal GpuProgramProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderAttributeProto;
struct ShaderAttributeProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderAttributeProtoGlobalsTypeInternal ShaderAttributeProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderAttributeProto_class_data_;
#else
extern const ShaderAttributeProtoGlobalsTypeInternal ShaderAttributeProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderInterfaceBlockFieldProto;
struct ShaderInterfaceBlockFieldProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderInterfaceBlockFieldProtoGlobalsTypeInternal ShaderInterfaceBlockFieldProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderInterfaceBlockFieldProto_class_data_;
#else
extern const ShaderInterfaceBlockFieldProtoGlobalsTypeInternal ShaderInterfaceBlockFieldProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderInterfaceBlockProto;
struct ShaderInterfaceBlockProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderInterfaceBlockProtoGlobalsTypeInternal ShaderInterfaceBlockProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderInterfaceBlockProto_class_data_;
#else
extern const ShaderInterfaceBlockProtoGlobalsTypeInternal ShaderInterfaceBlockProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderOutputVariableProto;
struct ShaderOutputVariableProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderOutputVariableProtoGlobalsTypeInternal ShaderOutputVariableProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderOutputVariableProto_class_data_;
#else
extern const ShaderOutputVariableProtoGlobalsTypeInternal ShaderOutputVariableProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderProto;
struct ShaderProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderProtoGlobalsTypeInternal ShaderProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderProto_class_data_;
#else
extern const ShaderProtoGlobalsTypeInternal ShaderProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderUniformProto;
struct ShaderUniformProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderUniformProtoGlobalsTypeInternal ShaderUniformProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderUniformProto_class_data_;
#else
extern const ShaderUniformProtoGlobalsTypeInternal ShaderUniformProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderVariableProto;
struct ShaderVariableProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderVariableProtoGlobalsTypeInternal ShaderVariableProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderVariableProto_class_data_;
#else
extern const ShaderVariableProtoGlobalsTypeInternal ShaderVariableProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
class ShaderVaryingProto;
struct ShaderVaryingProtoGlobalsTypeInternal;
#ifndef PROTOBUF_MESSAGE_GLOBALS
extern ShaderVaryingProtoGlobalsTypeInternal ShaderVaryingProto_globals_;
extern const ::google::protobuf::internal::ClassDataLite ShaderVaryingProto_class_data_;
#else
extern const ShaderVaryingProtoGlobalsTypeInternal ShaderVaryingProto_globals_;
#endif  // PROTOBUF_MESSAGE_GLOBALS
namespace google {
namespace protobuf {
}  // namespace protobuf
}  // namespace google


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


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

class  ShaderVariableProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderVariableProto) */ {
 public:
  inline ShaderVariableProto() : ShaderVariableProto(nullptr) {}
  ~ShaderVariableProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderVariableProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderVariableProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderVariableProto>(&ShaderVariableProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 0;
  friend void swap(ShaderVariableProto& a, ShaderVariableProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderVariableProto* 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(ShaderVariableProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderVariableProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderVariableProto>(arena);
  }
  void CopyFrom(const ShaderVariableProto& from);
  void MergeFrom(const ShaderVariableProto& from) { ShaderVariableProto::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(ShaderVariableProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderVariableProto"; }

  explicit ShaderVariableProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderVariableProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderVariableProto& from);
  ShaderVariableProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderVariableProto&& from) noexcept
      : ShaderVariableProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFieldsFieldNumber = 7,
    kNameFieldNumber = 3,
    kMappedNameFieldNumber = 4,
    kStructNameFieldNumber = 8,
    kTypeFieldNumber = 1,
    kPrecisionFieldNumber = 2,
    kArraySizeFieldNumber = 5,
    kStaticUseFieldNumber = 6,
  };
  // repeated .ShaderVariableProto fields = 7;
  int fields_size()
      const;
  private:
  int _internal_fields_size() const;

  public:
  void clear_fields() ;
  const ::ShaderVariableProto& fields(int index) const;
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_fields(int index);
  ::ShaderVariableProto* PROTOBUF_NONNULL add_fields();
  const ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>&
  fields() const;
  ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>* PROTOBUF_NONNULL
  mutable_fields();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>& _internal_fields() const;
  ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>* PROTOBUF_NONNULL _internal_mutable_fields();

  public:
  // optional string name = 3;
  bool has_name()
      const;
  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();
  ::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:
  // optional string mapped_name = 4;
  bool has_mapped_name()
      const;
  void clear_mapped_name() ;
  const ::std::string& mapped_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_mapped_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_mapped_name();
  ::std::string* PROTOBUF_NULLABLE release_mapped_name();
  void set_allocated_mapped_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_mapped_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_mapped_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_mapped_name();

  public:
  // optional string struct_name = 8;
  bool has_struct_name()
      const;
  void clear_struct_name() ;
  const ::std::string& struct_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_struct_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_struct_name();
  ::std::string* PROTOBUF_NULLABLE release_struct_name();
  void set_allocated_struct_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_struct_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_struct_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_struct_name();

  public:
  // optional uint32 type = 1;
  bool has_type()
      const;
  void clear_type() ;
  ::uint32_t type() const;
  void set_type(::uint32_t value);

  private:
  ::uint32_t _internal_type() const;
  void _internal_set_type(::uint32_t value);

  public:
  // optional uint32 precision = 2;
  bool has_precision()
      const;
  void clear_precision() ;
  ::uint32_t precision() const;
  void set_precision(::uint32_t value);

  private:
  ::uint32_t _internal_precision() const;
  void _internal_set_precision(::uint32_t value);

  public:
  // optional uint32 array_size = 5;
  bool has_array_size()
      const;
  void clear_array_size() ;
  ::uint32_t array_size() const;
  void set_array_size(::uint32_t value);

  private:
  ::uint32_t _internal_array_size() const;
  void _internal_set_array_size(::uint32_t value);

  public:
  // optional bool static_use = 6;
  bool has_static_use()
      const;
  void clear_static_use() ;
  bool static_use() const;
  void set_static_use(bool value);

  private:
  bool _internal_static_use() const;
  void _internal_set_static_use(bool value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderVariableProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 8,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderVariableProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::ShaderVariableProto > fields_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr mapped_name_;
    ::google::protobuf::internal::ArenaStringPtr struct_name_;
    ::uint32_t type_;
    ::uint32_t precision_;
    ::uint32_t array_size_;
    bool static_use_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderVaryingProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderVaryingProto) */ {
 public:
  inline ShaderVaryingProto() : ShaderVaryingProto(nullptr) {}
  ~ShaderVaryingProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderVaryingProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderVaryingProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderVaryingProto>(&ShaderVaryingProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 3;
  friend void swap(ShaderVaryingProto& a, ShaderVaryingProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderVaryingProto* 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(ShaderVaryingProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderVaryingProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderVaryingProto>(arena);
  }
  void CopyFrom(const ShaderVaryingProto& from);
  void MergeFrom(const ShaderVaryingProto& from) { ShaderVaryingProto::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(ShaderVaryingProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderVaryingProto"; }

  explicit ShaderVaryingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderVaryingProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderVaryingProto& from);
  ShaderVaryingProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderVaryingProto&& from) noexcept
      : ShaderVaryingProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBasicFieldNumber = 1,
    kInterpolationFieldNumber = 2,
    kIsInvariantFieldNumber = 3,
  };
  // optional .ShaderVariableProto basic = 1;
  bool has_basic()
      const;
  void clear_basic() ;
  const ::ShaderVariableProto& basic() const;
  ::ShaderVariableProto* PROTOBUF_NULLABLE release_basic();
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_basic();
  void set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  ::ShaderVariableProto* PROTOBUF_NULLABLE unsafe_arena_release_basic();

  private:
  const ::ShaderVariableProto& _internal_basic() const;
  ::ShaderVariableProto* PROTOBUF_NONNULL _internal_mutable_basic();

  public:
  // optional int32 interpolation = 2;
  bool has_interpolation()
      const;
  void clear_interpolation() ;
  ::int32_t interpolation() const;
  void set_interpolation(::int32_t value);

  private:
  ::int32_t _internal_interpolation() const;
  void _internal_set_interpolation(::int32_t value);

  public:
  // optional bool is_invariant = 3;
  bool has_is_invariant()
      const;
  void clear_is_invariant() ;
  bool is_invariant() const;
  void set_is_invariant(bool value);

  private:
  bool _internal_is_invariant() const;
  void _internal_set_is_invariant(bool value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderVaryingProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<2, 3,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderVaryingProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::ShaderVariableProto* PROTOBUF_NULLABLE basic_;
    ::int32_t interpolation_;
    bool is_invariant_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderUniformProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderUniformProto) */ {
 public:
  inline ShaderUniformProto() : ShaderUniformProto(nullptr) {}
  ~ShaderUniformProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderUniformProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderUniformProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderUniformProto>(&ShaderUniformProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 2;
  friend void swap(ShaderUniformProto& a, ShaderUniformProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderUniformProto* 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(ShaderUniformProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderUniformProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderUniformProto>(arena);
  }
  void CopyFrom(const ShaderUniformProto& from);
  void MergeFrom(const ShaderUniformProto& from) { ShaderUniformProto::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(ShaderUniformProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderUniformProto"; }

  explicit ShaderUniformProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderUniformProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderUniformProto& from);
  ShaderUniformProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderUniformProto&& from) noexcept
      : ShaderUniformProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBasicFieldNumber = 1,
  };
  // optional .ShaderVariableProto basic = 1;
  bool has_basic()
      const;
  void clear_basic() ;
  const ::ShaderVariableProto& basic() const;
  ::ShaderVariableProto* PROTOBUF_NULLABLE release_basic();
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_basic();
  void set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  ::ShaderVariableProto* PROTOBUF_NULLABLE unsafe_arena_release_basic();

  private:
  const ::ShaderVariableProto& _internal_basic() const;
  ::ShaderVariableProto* PROTOBUF_NONNULL _internal_mutable_basic();

  public:
  // @@protoc_insertion_point(class_scope:ShaderUniformProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<0, 1,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderUniformProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::ShaderVariableProto* PROTOBUF_NULLABLE basic_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderOutputVariableProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderOutputVariableProto) */ {
 public:
  inline ShaderOutputVariableProto() : ShaderOutputVariableProto(nullptr) {}
  ~ShaderOutputVariableProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderOutputVariableProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderOutputVariableProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderOutputVariableProto>(&ShaderOutputVariableProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 4;
  friend void swap(ShaderOutputVariableProto& a, ShaderOutputVariableProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderOutputVariableProto* 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(ShaderOutputVariableProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderOutputVariableProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderOutputVariableProto>(arena);
  }
  void CopyFrom(const ShaderOutputVariableProto& from);
  void MergeFrom(const ShaderOutputVariableProto& from) { ShaderOutputVariableProto::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(ShaderOutputVariableProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderOutputVariableProto"; }

  explicit ShaderOutputVariableProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderOutputVariableProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderOutputVariableProto& from);
  ShaderOutputVariableProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderOutputVariableProto&& from) noexcept
      : ShaderOutputVariableProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBasicFieldNumber = 1,
    kLocationFieldNumber = 2,
  };
  // optional .ShaderVariableProto basic = 1;
  bool has_basic()
      const;
  void clear_basic() ;
  const ::ShaderVariableProto& basic() const;
  ::ShaderVariableProto* PROTOBUF_NULLABLE release_basic();
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_basic();
  void set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  ::ShaderVariableProto* PROTOBUF_NULLABLE unsafe_arena_release_basic();

  private:
  const ::ShaderVariableProto& _internal_basic() const;
  ::ShaderVariableProto* PROTOBUF_NONNULL _internal_mutable_basic();

  public:
  // optional int32 location = 2;
  bool has_location()
      const;
  void clear_location() ;
  ::int32_t location() const;
  void set_location(::int32_t value);

  private:
  ::int32_t _internal_location() const;
  void _internal_set_location(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderOutputVariableProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderOutputVariableProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::ShaderVariableProto* PROTOBUF_NULLABLE basic_;
    ::int32_t location_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderInterfaceBlockFieldProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderInterfaceBlockFieldProto) */ {
 public:
  inline ShaderInterfaceBlockFieldProto() : ShaderInterfaceBlockFieldProto(nullptr) {}
  ~ShaderInterfaceBlockFieldProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderInterfaceBlockFieldProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderInterfaceBlockFieldProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderInterfaceBlockFieldProto>(&ShaderInterfaceBlockFieldProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 5;
  friend void swap(ShaderInterfaceBlockFieldProto& a, ShaderInterfaceBlockFieldProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderInterfaceBlockFieldProto* 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(ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderInterfaceBlockFieldProto>(arena);
  }
  void CopyFrom(const ShaderInterfaceBlockFieldProto& from);
  void MergeFrom(const ShaderInterfaceBlockFieldProto& from) { ShaderInterfaceBlockFieldProto::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(ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderInterfaceBlockFieldProto"; }

  explicit ShaderInterfaceBlockFieldProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderInterfaceBlockFieldProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderInterfaceBlockFieldProto& from);
  ShaderInterfaceBlockFieldProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderInterfaceBlockFieldProto&& from) noexcept
      : ShaderInterfaceBlockFieldProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBasicFieldNumber = 1,
    kIsRowMajorLayoutFieldNumber = 2,
  };
  // optional .ShaderVariableProto basic = 1;
  bool has_basic()
      const;
  void clear_basic() ;
  const ::ShaderVariableProto& basic() const;
  ::ShaderVariableProto* PROTOBUF_NULLABLE release_basic();
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_basic();
  void set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  ::ShaderVariableProto* PROTOBUF_NULLABLE unsafe_arena_release_basic();

  private:
  const ::ShaderVariableProto& _internal_basic() const;
  ::ShaderVariableProto* PROTOBUF_NONNULL _internal_mutable_basic();

  public:
  // optional bool is_row_major_layout = 2;
  bool has_is_row_major_layout()
      const;
  void clear_is_row_major_layout() ;
  bool is_row_major_layout() const;
  void set_is_row_major_layout(bool value);

  private:
  bool _internal_is_row_major_layout() const;
  void _internal_set_is_row_major_layout(bool value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderInterfaceBlockFieldProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderInterfaceBlockFieldProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::ShaderVariableProto* PROTOBUF_NULLABLE basic_;
    bool is_row_major_layout_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderAttributeProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderAttributeProto) */ {
 public:
  inline ShaderAttributeProto() : ShaderAttributeProto(nullptr) {}
  ~ShaderAttributeProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderAttributeProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderAttributeProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderAttributeProto>(&ShaderAttributeProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 1;
  friend void swap(ShaderAttributeProto& a, ShaderAttributeProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderAttributeProto* 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(ShaderAttributeProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderAttributeProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderAttributeProto>(arena);
  }
  void CopyFrom(const ShaderAttributeProto& from);
  void MergeFrom(const ShaderAttributeProto& from) { ShaderAttributeProto::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(ShaderAttributeProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderAttributeProto"; }

  explicit ShaderAttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderAttributeProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderAttributeProto& from);
  ShaderAttributeProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderAttributeProto&& from) noexcept
      : ShaderAttributeProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kBasicFieldNumber = 1,
    kLocationFieldNumber = 2,
  };
  // optional .ShaderVariableProto basic = 1;
  bool has_basic()
      const;
  void clear_basic() ;
  const ::ShaderVariableProto& basic() const;
  ::ShaderVariableProto* PROTOBUF_NULLABLE release_basic();
  ::ShaderVariableProto* PROTOBUF_NONNULL mutable_basic();
  void set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value);
  ::ShaderVariableProto* PROTOBUF_NULLABLE unsafe_arena_release_basic();

  private:
  const ::ShaderVariableProto& _internal_basic() const;
  ::ShaderVariableProto* PROTOBUF_NONNULL _internal_mutable_basic();

  public:
  // optional int32 location = 2;
  bool has_location()
      const;
  void clear_location() ;
  ::int32_t location() const;
  void set_location(::int32_t value);

  private:
  ::int32_t _internal_location() const;
  void _internal_set_location(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderAttributeProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<1, 2,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderAttributeProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::ShaderVariableProto* PROTOBUF_NULLABLE basic_;
    ::int32_t location_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderInterfaceBlockProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderInterfaceBlockProto) */ {
 public:
  inline ShaderInterfaceBlockProto() : ShaderInterfaceBlockProto(nullptr) {}
  ~ShaderInterfaceBlockProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderInterfaceBlockProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderInterfaceBlockProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderInterfaceBlockProto>(&ShaderInterfaceBlockProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 6;
  friend void swap(ShaderInterfaceBlockProto& a, ShaderInterfaceBlockProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderInterfaceBlockProto* 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(ShaderInterfaceBlockProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderInterfaceBlockProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderInterfaceBlockProto>(arena);
  }
  void CopyFrom(const ShaderInterfaceBlockProto& from);
  void MergeFrom(const ShaderInterfaceBlockProto& from) { ShaderInterfaceBlockProto::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(ShaderInterfaceBlockProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderInterfaceBlockProto"; }

  explicit ShaderInterfaceBlockProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderInterfaceBlockProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderInterfaceBlockProto& from);
  ShaderInterfaceBlockProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderInterfaceBlockProto&& from) noexcept
      : ShaderInterfaceBlockProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kFieldsFieldNumber = 7,
    kNameFieldNumber = 1,
    kMappedNameFieldNumber = 2,
    kInstanceNameFieldNumber = 3,
    kArraySizeFieldNumber = 4,
    kLayoutFieldNumber = 5,
    kStaticUseFieldNumber = 6,
  };
  // repeated .ShaderInterfaceBlockFieldProto fields = 7;
  int fields_size()
      const;
  private:
  int _internal_fields_size() const;

  public:
  void clear_fields() ;
  const ::ShaderInterfaceBlockFieldProto& fields(int index) const;
  ::ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL mutable_fields(int index);
  ::ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL add_fields();
  const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>&
  fields() const;
  ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>* PROTOBUF_NONNULL
  mutable_fields();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>& _internal_fields() const;
  ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>* PROTOBUF_NONNULL _internal_mutable_fields();

  public:
  // optional string name = 1;
  bool has_name()
      const;
  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();
  ::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:
  // optional string mapped_name = 2;
  bool has_mapped_name()
      const;
  void clear_mapped_name() ;
  const ::std::string& mapped_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_mapped_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_mapped_name();
  ::std::string* PROTOBUF_NULLABLE release_mapped_name();
  void set_allocated_mapped_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_mapped_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_mapped_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_mapped_name();

  public:
  // optional string instance_name = 3;
  bool has_instance_name()
      const;
  void clear_instance_name() ;
  const ::std::string& instance_name() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_instance_name(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_instance_name();
  ::std::string* PROTOBUF_NULLABLE release_instance_name();
  void set_allocated_instance_name(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_instance_name() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_instance_name(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_instance_name();

  public:
  // optional uint32 array_size = 4;
  bool has_array_size()
      const;
  void clear_array_size() ;
  ::uint32_t array_size() const;
  void set_array_size(::uint32_t value);

  private:
  ::uint32_t _internal_array_size() const;
  void _internal_set_array_size(::uint32_t value);

  public:
  // optional int32 layout = 5;
  bool has_layout()
      const;
  void clear_layout() ;
  ::int32_t layout() const;
  void set_layout(::int32_t value);

  private:
  ::int32_t _internal_layout() const;
  void _internal_set_layout(::int32_t value);

  public:
  // optional bool static_use = 6;
  bool has_static_use()
      const;
  void clear_static_use() ;
  bool static_use() const;
  void set_static_use(bool value);

  private:
  bool _internal_static_use() const;
  void _internal_set_static_use(bool value);

  public:
  // @@protoc_insertion_point(class_scope:ShaderInterfaceBlockProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          1, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderInterfaceBlockProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::ShaderInterfaceBlockFieldProto > fields_;
    ::google::protobuf::internal::ArenaStringPtr name_;
    ::google::protobuf::internal::ArenaStringPtr mapped_name_;
    ::google::protobuf::internal::ArenaStringPtr instance_name_;
    ::uint32_t array_size_;
    ::int32_t layout_;
    bool static_use_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  ShaderProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:ShaderProto) */ {
 public:
  inline ShaderProto() : ShaderProto(nullptr) {}
  ~ShaderProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr ShaderProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const ShaderProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<ShaderProto>(&ShaderProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 7;
  friend void swap(ShaderProto& a, ShaderProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(ShaderProto* 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(ShaderProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  ShaderProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<ShaderProto>(arena);
  }
  void CopyFrom(const ShaderProto& from);
  void MergeFrom(const ShaderProto& from) { ShaderProto::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(ShaderProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "ShaderProto"; }

  explicit ShaderProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  ShaderProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const ShaderProto& from);
  ShaderProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, ShaderProto&& from) noexcept
      : ShaderProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kAttribsFieldNumber = 2,
    kUniformsFieldNumber = 3,
    kVaryingsFieldNumber = 4,
    kOutputVariablesFieldNumber = 5,
    kInterfaceBlocksFieldNumber = 6,
    kShaFieldNumber = 1,
  };
  // repeated .ShaderAttributeProto attribs = 2;
  int attribs_size()
      const;
  private:
  int _internal_attribs_size() const;

  public:
  void clear_attribs() ;
  const ::ShaderAttributeProto& attribs(int index) const;
  ::ShaderAttributeProto* PROTOBUF_NONNULL mutable_attribs(int index);
  ::ShaderAttributeProto* PROTOBUF_NONNULL add_attribs();
  const ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>&
  attribs() const;
  ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>* PROTOBUF_NONNULL
  mutable_attribs();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>& _internal_attribs() const;
  ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>* PROTOBUF_NONNULL _internal_mutable_attribs();

  public:
  // repeated .ShaderUniformProto uniforms = 3;
  int uniforms_size()
      const;
  private:
  int _internal_uniforms_size() const;

  public:
  void clear_uniforms() ;
  const ::ShaderUniformProto& uniforms(int index) const;
  ::ShaderUniformProto* PROTOBUF_NONNULL mutable_uniforms(int index);
  ::ShaderUniformProto* PROTOBUF_NONNULL add_uniforms();
  const ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>&
  uniforms() const;
  ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>* PROTOBUF_NONNULL
  mutable_uniforms();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>& _internal_uniforms() const;
  ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>* PROTOBUF_NONNULL _internal_mutable_uniforms();

  public:
  // repeated .ShaderVaryingProto varyings = 4;
  int varyings_size()
      const;
  private:
  int _internal_varyings_size() const;

  public:
  void clear_varyings() ;
  const ::ShaderVaryingProto& varyings(int index) const;
  ::ShaderVaryingProto* PROTOBUF_NONNULL mutable_varyings(int index);
  ::ShaderVaryingProto* PROTOBUF_NONNULL add_varyings();
  const ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>&
  varyings() const;
  ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>* PROTOBUF_NONNULL
  mutable_varyings();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>& _internal_varyings() const;
  ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>* PROTOBUF_NONNULL _internal_mutable_varyings();

  public:
  // repeated .ShaderOutputVariableProto output_variables = 5;
  int output_variables_size()
      const;
  private:
  int _internal_output_variables_size() const;

  public:
  void clear_output_variables() ;
  const ::ShaderOutputVariableProto& output_variables(int index) const;
  ::ShaderOutputVariableProto* PROTOBUF_NONNULL mutable_output_variables(int index);
  ::ShaderOutputVariableProto* PROTOBUF_NONNULL add_output_variables();
  const ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>&
  output_variables() const;
  ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>* PROTOBUF_NONNULL
  mutable_output_variables();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>& _internal_output_variables() const;
  ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>* PROTOBUF_NONNULL _internal_mutable_output_variables();

  public:
  // repeated .ShaderInterfaceBlockProto interface_blocks = 6;
  int interface_blocks_size()
      const;
  private:
  int _internal_interface_blocks_size() const;

  public:
  void clear_interface_blocks() ;
  const ::ShaderInterfaceBlockProto& interface_blocks(int index) const;
  ::ShaderInterfaceBlockProto* PROTOBUF_NONNULL mutable_interface_blocks(int index);
  ::ShaderInterfaceBlockProto* PROTOBUF_NONNULL add_interface_blocks();
  const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>&
  interface_blocks() const;
  ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>* PROTOBUF_NONNULL
  mutable_interface_blocks();

  private:
  const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>& _internal_interface_blocks() const;
  ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>* PROTOBUF_NONNULL _internal_mutable_interface_blocks();

  public:
  // optional bytes sha = 1;
  bool has_sha()
      const;
  void clear_sha() ;
  const ::std::string& sha() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sha(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sha();
  ::std::string* PROTOBUF_NULLABLE release_sha();
  void set_allocated_sha(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sha() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sha(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sha();

  public:
  // @@protoc_insertion_point(class_scope:ShaderProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 6,
                          5, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 ShaderProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::RepeatedPtrField< ::ShaderAttributeProto > attribs_;
    ::google::protobuf::RepeatedPtrField< ::ShaderUniformProto > uniforms_;
    ::google::protobuf::RepeatedPtrField< ::ShaderVaryingProto > varyings_;
    ::google::protobuf::RepeatedPtrField< ::ShaderOutputVariableProto > output_variables_;
    ::google::protobuf::RepeatedPtrField< ::ShaderInterfaceBlockProto > interface_blocks_;
    ::google::protobuf::internal::ArenaStringPtr sha_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};
// -------------------------------------------------------------------

class  GpuProgramProto final : public ::google::protobuf::MessageLite
/* @@protoc_insertion_point(class_definition:GpuProgramProto) */ {
 public:
  inline GpuProgramProto() : GpuProgramProto(nullptr) {}
  ~GpuProgramProto() PROTOBUF_FINAL;

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

  template <typename = void>
  explicit constexpr GpuProgramProto(::google::protobuf::internal::ConstantInitialized,
                           const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL
                               class_data);

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

  inline const ::std::string& unknown_fields() const
      ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.unknown_fields<::std::string>(::google::protobuf::internal::GetEmptyString);
  }
  inline ::std::string* PROTOBUF_NONNULL
  mutable_unknown_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
    return _internal_metadata_.mutable_unknown_fields<::std::string>();
  }

  static const GpuProgramProto& default_instance() {
    return *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<GpuProgramProto>(&GpuProgramProto_globals_);
  }
  static constexpr int kIndexInFileMessages = 8;
  friend void swap(GpuProgramProto& a, GpuProgramProto& b) { a.Swap(&b); }
  PROTOBUF_NOINLINE void Swap(GpuProgramProto* 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(GpuProgramProto* PROTOBUF_NONNULL other) {
    if (other == this) return;
    ABSL_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  GpuProgramProto* PROTOBUF_NONNULL
  New(::google::protobuf::Arena* PROTOBUF_NULLABLE arena = nullptr) const {
    return ::google::protobuf::MessageLite::DefaultConstruct<GpuProgramProto>(arena);
  }
  void CopyFrom(const GpuProgramProto& from);
  void MergeFrom(const GpuProgramProto& from) { GpuProgramProto::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(GpuProgramProto* PROTOBUF_NONNULL other);
 private:
  template <typename T>
  friend ::absl::string_view(::google::protobuf::internal::GetAnyMessageName)();
  static ::absl::string_view FullMessageName() { return "GpuProgramProto"; }

  explicit GpuProgramProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena);
  GpuProgramProto(::google::protobuf::Arena* PROTOBUF_NULLABLE arena, const GpuProgramProto& from);
  GpuProgramProto(
      ::google::protobuf::Arena* PROTOBUF_NULLABLE arena, GpuProgramProto&& from) noexcept
      : GpuProgramProto(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_(
      const MessageLite& prototype,
      const ::google::protobuf::internal::TcParseTableBase* PROTOBUF_NULLABLE tc_table = nullptr);

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------
  enum : int {
    kShaFieldNumber = 1,
    kProgramFieldNumber = 3,
    kVertexShaderFieldNumber = 4,
    kFragmentShaderFieldNumber = 5,
    kFormatFieldNumber = 2,
    kProgramIsCompressedFieldNumber = 6,
    kProgramDecompressedLengthFieldNumber = 7,
  };
  // optional bytes sha = 1;
  bool has_sha()
      const;
  void clear_sha() ;
  const ::std::string& sha() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_sha(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_sha();
  ::std::string* PROTOBUF_NULLABLE release_sha();
  void set_allocated_sha(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_sha() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_sha(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_sha();

  public:
  // optional bytes program = 3;
  bool has_program()
      const;
  void clear_program() ;
  const ::std::string& program() const;
  template <typename Arg_ = const ::std::string&, typename... Args_>
  void set_program(Arg_&& arg, Args_... args);
  ::std::string* PROTOBUF_NONNULL mutable_program();
  ::std::string* PROTOBUF_NULLABLE release_program();
  void set_allocated_program(::std::string* PROTOBUF_NULLABLE value);

  private:
  const ::std::string& _internal_program() const;
  PROTOBUF_ALWAYS_INLINE void _internal_set_program(const ::std::string& value);
  ::std::string* PROTOBUF_NONNULL _internal_mutable_program();

  public:
  // optional .ShaderProto vertex_shader = 4;
  bool has_vertex_shader()
      const;
  void clear_vertex_shader() ;
  const ::ShaderProto& vertex_shader() const;
  ::ShaderProto* PROTOBUF_NULLABLE release_vertex_shader();
  ::ShaderProto* PROTOBUF_NONNULL mutable_vertex_shader();
  void set_allocated_vertex_shader(::ShaderProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_vertex_shader(::ShaderProto* PROTOBUF_NULLABLE value);
  ::ShaderProto* PROTOBUF_NULLABLE unsafe_arena_release_vertex_shader();

  private:
  const ::ShaderProto& _internal_vertex_shader() const;
  ::ShaderProto* PROTOBUF_NONNULL _internal_mutable_vertex_shader();

  public:
  // optional .ShaderProto fragment_shader = 5;
  bool has_fragment_shader()
      const;
  void clear_fragment_shader() ;
  const ::ShaderProto& fragment_shader() const;
  ::ShaderProto* PROTOBUF_NULLABLE release_fragment_shader();
  ::ShaderProto* PROTOBUF_NONNULL mutable_fragment_shader();
  void set_allocated_fragment_shader(::ShaderProto* PROTOBUF_NULLABLE value);
  void unsafe_arena_set_allocated_fragment_shader(::ShaderProto* PROTOBUF_NULLABLE value);
  ::ShaderProto* PROTOBUF_NULLABLE unsafe_arena_release_fragment_shader();

  private:
  const ::ShaderProto& _internal_fragment_shader() const;
  ::ShaderProto* PROTOBUF_NONNULL _internal_mutable_fragment_shader();

  public:
  // optional uint32 format = 2;
  bool has_format()
      const;
  void clear_format() ;
  ::uint32_t format() const;
  void set_format(::uint32_t value);

  private:
  ::uint32_t _internal_format() const;
  void _internal_set_format(::uint32_t value);

  public:
  // optional bool program_is_compressed = 6;
  bool has_program_is_compressed()
      const;
  void clear_program_is_compressed() ;
  bool program_is_compressed() const;
  void set_program_is_compressed(bool value);

  private:
  bool _internal_program_is_compressed() const;
  void _internal_set_program_is_compressed(bool value);

  public:
  // optional uint32 program_decompressed_length = 7;
  bool has_program_decompressed_length()
      const;
  void clear_program_decompressed_length() ;
  ::uint32_t program_decompressed_length() const;
  void set_program_decompressed_length(::uint32_t value);

  private:
  ::uint32_t _internal_program_decompressed_length() const;
  void _internal_set_program_decompressed_length(::uint32_t value);

  public:
  // @@protoc_insertion_point(class_scope:GpuProgramProto)
 private:
  class _Internal;
  using ParseTableT_ =
      ::google::protobuf::internal::TcParseTable<3, 7,
                          2, 0,
                          2>;
  static constexpr ParseTableT_ InternalGenerateParseTable_(
      const ::google::protobuf::internal::ClassData* PROTOBUF_NONNULL class_data);
  friend class ::google::protobuf::internal::TcParser;
  #ifndef PROTOBUF_MESSAGE_GLOBALS
  static const ParseTableT_ _table_;
  #endif

  friend class ::google::protobuf::MessageLite;
  friend class ::google::protobuf::Arena;
  friend ::google::protobuf::internal::PrivateAccess;
  template <typename T>
  friend class ::google::protobuf::Arena::InternalHelper;
  using InternalArenaConstructable_ = void;
  using DestructorSkippable_ = void;
  struct Impl_ {
    inline explicit constexpr Impl_(::google::protobuf::internal::InternalVisibility visibility,
                                    ::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 GpuProgramProto& from_msg);
    ::google::protobuf::internal::HasBits<1> _has_bits_;
    ::google::protobuf::internal::CachedSize _cached_size_;
    ::google::protobuf::internal::ArenaStringPtr sha_;
    ::google::protobuf::internal::ArenaStringPtr program_;
    ::ShaderProto* PROTOBUF_NULLABLE vertex_shader_;
    ::ShaderProto* PROTOBUF_NULLABLE fragment_shader_;
    ::uint32_t format_;
    bool program_is_compressed_;
    ::uint32_t program_decompressed_length_;
    PROTOBUF_TSAN_DECLARE_MEMBER
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_disk_5fcache_5fproto_2eproto;
};

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




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


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

// ShaderVariableProto

// optional uint32 type = 1;
inline bool ShaderVariableProto::has_type() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void ShaderVariableProto::clear_type() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t ShaderVariableProto::type() const {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.type)
  return _internal_type();
}
inline void ShaderVariableProto::set_type(::uint32_t value) {
  _internal_set_type(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:ShaderVariableProto.type)
}
inline ::uint32_t ShaderVariableProto::_internal_type() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.type_;
}
inline void ShaderVariableProto::_internal_set_type(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.type_ = value;
}

// optional uint32 precision = 2;
inline bool ShaderVariableProto::has_precision() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void ShaderVariableProto::clear_precision() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::uint32_t ShaderVariableProto::precision() const {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.precision)
  return _internal_precision();
}
inline void ShaderVariableProto::set_precision(::uint32_t value) {
  _internal_set_precision(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:ShaderVariableProto.precision)
}
inline ::uint32_t ShaderVariableProto::_internal_precision() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.precision_;
}
inline void ShaderVariableProto::_internal_set_precision(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.precision_ = value;
}

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

// optional string mapped_name = 4;
inline bool ShaderVariableProto::has_mapped_name() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ShaderVariableProto::clear_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mapped_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& ShaderVariableProto::mapped_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.mapped_name)
  return _internal_mapped_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ShaderVariableProto::set_mapped_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.mapped_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:ShaderVariableProto.mapped_name)
}
inline ::std::string* PROTOBUF_NONNULL ShaderVariableProto::mutable_mapped_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_mapped_name();
  // @@protoc_insertion_point(field_mutable:ShaderVariableProto.mapped_name)
  return _s;
}
inline const ::std::string& ShaderVariableProto::_internal_mapped_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mapped_name_.Get();
}
inline void ShaderVariableProto::_internal_set_mapped_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mapped_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ShaderVariableProto::_internal_mutable_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.mapped_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ShaderVariableProto::release_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderVariableProto.mapped_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.mapped_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.mapped_name_.Set("", GetArena());
  }
  return released;
}
inline void ShaderVariableProto::set_allocated_mapped_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.mapped_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.mapped_name_.IsDefault()) {
    _impl_.mapped_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:ShaderVariableProto.mapped_name)
}

// optional uint32 array_size = 5;
inline bool ShaderVariableProto::has_array_size() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void ShaderVariableProto::clear_array_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.array_size_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::uint32_t ShaderVariableProto::array_size() const {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.array_size)
  return _internal_array_size();
}
inline void ShaderVariableProto::set_array_size(::uint32_t value) {
  _internal_set_array_size(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:ShaderVariableProto.array_size)
}
inline ::uint32_t ShaderVariableProto::_internal_array_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.array_size_;
}
inline void ShaderVariableProto::_internal_set_array_size(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.array_size_ = value;
}

// optional bool static_use = 6;
inline bool ShaderVariableProto::has_static_use() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000080U);
  return value;
}
inline void ShaderVariableProto::clear_static_use() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.static_use_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000080U);
}
inline bool ShaderVariableProto::static_use() const {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.static_use)
  return _internal_static_use();
}
inline void ShaderVariableProto::set_static_use(bool value) {
  _internal_set_static_use(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000080U);
  // @@protoc_insertion_point(field_set:ShaderVariableProto.static_use)
}
inline bool ShaderVariableProto::_internal_static_use() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.static_use_;
}
inline void ShaderVariableProto::_internal_set_static_use(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.static_use_ = value;
}

// repeated .ShaderVariableProto fields = 7;
inline int ShaderVariableProto::_internal_fields_size() const {
  return _internal_fields().size();
}
inline int ShaderVariableProto::fields_size() const {
  return _internal_fields_size();
}
inline void ShaderVariableProto::clear_fields() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fields_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderVariableProto::fields(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.fields)
  return _internal_fields().Get(index);
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderVariableProto::mutable_fields(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderVariableProto.fields)
  return _internal_mutable_fields()->Mutable(index);
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderVariableProto::add_fields()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderVariableProto* _add =
      _internal_mutable_fields()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:ShaderVariableProto.fields)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>& ShaderVariableProto::fields() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderVariableProto.fields)
  return _internal_fields();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>* PROTOBUF_NONNULL
ShaderVariableProto::mutable_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:ShaderVariableProto.fields)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_fields();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>&
ShaderVariableProto::_internal_fields() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fields_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderVariableProto>* PROTOBUF_NONNULL
ShaderVariableProto::_internal_mutable_fields() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.fields_;
}

// optional string struct_name = 8;
inline bool ShaderVariableProto::has_struct_name() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void ShaderVariableProto::clear_struct_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.struct_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& ShaderVariableProto::struct_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderVariableProto.struct_name)
  return _internal_struct_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ShaderVariableProto::set_struct_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.struct_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:ShaderVariableProto.struct_name)
}
inline ::std::string* PROTOBUF_NONNULL ShaderVariableProto::mutable_struct_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_struct_name();
  // @@protoc_insertion_point(field_mutable:ShaderVariableProto.struct_name)
  return _s;
}
inline const ::std::string& ShaderVariableProto::_internal_struct_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.struct_name_.Get();
}
inline void ShaderVariableProto::_internal_set_struct_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.struct_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ShaderVariableProto::_internal_mutable_struct_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.struct_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ShaderVariableProto::release_struct_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderVariableProto.struct_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.struct_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.struct_name_.Set("", GetArena());
  }
  return released;
}
inline void ShaderVariableProto::set_allocated_struct_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.struct_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.struct_name_.IsDefault()) {
    _impl_.struct_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:ShaderVariableProto.struct_name)
}

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

// ShaderAttributeProto

// optional .ShaderVariableProto basic = 1;
inline bool ShaderAttributeProto::has_basic() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.basic_ != nullptr);
  return value;
}
inline void ShaderAttributeProto::clear_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ != nullptr) _impl_.basic_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderAttributeProto::_internal_basic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderVariableProto* p = _impl_.basic_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderVariableProto>(&::ShaderVariableProto_globals_);
}
inline const ::ShaderVariableProto& ShaderAttributeProto::basic() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderAttributeProto.basic)
  return _internal_basic();
}
inline void ShaderAttributeProto::unsafe_arena_set_allocated_basic(
    ::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }
  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:ShaderAttributeProto.basic)
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderAttributeProto::release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* released = _impl_.basic_;
  _impl_.basic_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderAttributeProto::unsafe_arena_release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderAttributeProto.basic)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* temp = _impl_.basic_;
  _impl_.basic_ = nullptr;
  return temp;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderAttributeProto::_internal_mutable_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderVariableProto>(GetArena());
    _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(p);
  }
  return _impl_.basic_;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderAttributeProto::mutable_basic()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* _msg = _internal_mutable_basic();
  // @@protoc_insertion_point(field_mutable:ShaderAttributeProto.basic)
  return _msg;
}
inline void ShaderAttributeProto::set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:ShaderAttributeProto.basic)
}

// optional int32 location = 2;
inline bool ShaderAttributeProto::has_location() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ShaderAttributeProto::clear_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int32_t ShaderAttributeProto::location() const {
  // @@protoc_insertion_point(field_get:ShaderAttributeProto.location)
  return _internal_location();
}
inline void ShaderAttributeProto::set_location(::int32_t value) {
  _internal_set_location(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:ShaderAttributeProto.location)
}
inline ::int32_t ShaderAttributeProto::_internal_location() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.location_;
}
inline void ShaderAttributeProto::_internal_set_location(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_ = value;
}

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

// ShaderUniformProto

// optional .ShaderVariableProto basic = 1;
inline bool ShaderUniformProto::has_basic() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.basic_ != nullptr);
  return value;
}
inline void ShaderUniformProto::clear_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ != nullptr) _impl_.basic_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderUniformProto::_internal_basic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderVariableProto* p = _impl_.basic_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderVariableProto>(&::ShaderVariableProto_globals_);
}
inline const ::ShaderVariableProto& ShaderUniformProto::basic() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderUniformProto.basic)
  return _internal_basic();
}
inline void ShaderUniformProto::unsafe_arena_set_allocated_basic(
    ::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }
  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:ShaderUniformProto.basic)
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderUniformProto::release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* released = _impl_.basic_;
  _impl_.basic_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderUniformProto::unsafe_arena_release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderUniformProto.basic)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* temp = _impl_.basic_;
  _impl_.basic_ = nullptr;
  return temp;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderUniformProto::_internal_mutable_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderVariableProto>(GetArena());
    _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(p);
  }
  return _impl_.basic_;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderUniformProto::mutable_basic()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* _msg = _internal_mutable_basic();
  // @@protoc_insertion_point(field_mutable:ShaderUniformProto.basic)
  return _msg;
}
inline void ShaderUniformProto::set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:ShaderUniformProto.basic)
}

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

// ShaderVaryingProto

// optional .ShaderVariableProto basic = 1;
inline bool ShaderVaryingProto::has_basic() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.basic_ != nullptr);
  return value;
}
inline void ShaderVaryingProto::clear_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ != nullptr) _impl_.basic_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderVaryingProto::_internal_basic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderVariableProto* p = _impl_.basic_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderVariableProto>(&::ShaderVariableProto_globals_);
}
inline const ::ShaderVariableProto& ShaderVaryingProto::basic() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderVaryingProto.basic)
  return _internal_basic();
}
inline void ShaderVaryingProto::unsafe_arena_set_allocated_basic(
    ::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }
  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:ShaderVaryingProto.basic)
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderVaryingProto::release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* released = _impl_.basic_;
  _impl_.basic_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderVaryingProto::unsafe_arena_release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderVaryingProto.basic)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* temp = _impl_.basic_;
  _impl_.basic_ = nullptr;
  return temp;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderVaryingProto::_internal_mutable_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderVariableProto>(GetArena());
    _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(p);
  }
  return _impl_.basic_;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderVaryingProto::mutable_basic()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* _msg = _internal_mutable_basic();
  // @@protoc_insertion_point(field_mutable:ShaderVaryingProto.basic)
  return _msg;
}
inline void ShaderVaryingProto::set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:ShaderVaryingProto.basic)
}

// optional int32 interpolation = 2;
inline bool ShaderVaryingProto::has_interpolation() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ShaderVaryingProto::clear_interpolation() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interpolation_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int32_t ShaderVaryingProto::interpolation() const {
  // @@protoc_insertion_point(field_get:ShaderVaryingProto.interpolation)
  return _internal_interpolation();
}
inline void ShaderVaryingProto::set_interpolation(::int32_t value) {
  _internal_set_interpolation(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:ShaderVaryingProto.interpolation)
}
inline ::int32_t ShaderVaryingProto::_internal_interpolation() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interpolation_;
}
inline void ShaderVaryingProto::_internal_set_interpolation(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interpolation_ = value;
}

// optional bool is_invariant = 3;
inline bool ShaderVaryingProto::has_is_invariant() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ShaderVaryingProto::clear_is_invariant() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_invariant_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline bool ShaderVaryingProto::is_invariant() const {
  // @@protoc_insertion_point(field_get:ShaderVaryingProto.is_invariant)
  return _internal_is_invariant();
}
inline void ShaderVaryingProto::set_is_invariant(bool value) {
  _internal_set_is_invariant(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_set:ShaderVaryingProto.is_invariant)
}
inline bool ShaderVaryingProto::_internal_is_invariant() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_invariant_;
}
inline void ShaderVaryingProto::_internal_set_is_invariant(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_invariant_ = value;
}

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

// ShaderOutputVariableProto

// optional .ShaderVariableProto basic = 1;
inline bool ShaderOutputVariableProto::has_basic() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.basic_ != nullptr);
  return value;
}
inline void ShaderOutputVariableProto::clear_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ != nullptr) _impl_.basic_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderOutputVariableProto::_internal_basic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderVariableProto* p = _impl_.basic_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderVariableProto>(&::ShaderVariableProto_globals_);
}
inline const ::ShaderVariableProto& ShaderOutputVariableProto::basic() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderOutputVariableProto.basic)
  return _internal_basic();
}
inline void ShaderOutputVariableProto::unsafe_arena_set_allocated_basic(
    ::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }
  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:ShaderOutputVariableProto.basic)
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderOutputVariableProto::release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* released = _impl_.basic_;
  _impl_.basic_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderOutputVariableProto::unsafe_arena_release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderOutputVariableProto.basic)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* temp = _impl_.basic_;
  _impl_.basic_ = nullptr;
  return temp;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderOutputVariableProto::_internal_mutable_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderVariableProto>(GetArena());
    _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(p);
  }
  return _impl_.basic_;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderOutputVariableProto::mutable_basic()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* _msg = _internal_mutable_basic();
  // @@protoc_insertion_point(field_mutable:ShaderOutputVariableProto.basic)
  return _msg;
}
inline void ShaderOutputVariableProto::set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:ShaderOutputVariableProto.basic)
}

// optional int32 location = 2;
inline bool ShaderOutputVariableProto::has_location() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ShaderOutputVariableProto::clear_location() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline ::int32_t ShaderOutputVariableProto::location() const {
  // @@protoc_insertion_point(field_get:ShaderOutputVariableProto.location)
  return _internal_location();
}
inline void ShaderOutputVariableProto::set_location(::int32_t value) {
  _internal_set_location(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:ShaderOutputVariableProto.location)
}
inline ::int32_t ShaderOutputVariableProto::_internal_location() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.location_;
}
inline void ShaderOutputVariableProto::_internal_set_location(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.location_ = value;
}

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

// ShaderInterfaceBlockFieldProto

// optional .ShaderVariableProto basic = 1;
inline bool ShaderInterfaceBlockFieldProto::has_basic() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  PROTOBUF_ASSUME(!value || _impl_.basic_ != nullptr);
  return value;
}
inline void ShaderInterfaceBlockFieldProto::clear_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ != nullptr) _impl_.basic_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderVariableProto& ShaderInterfaceBlockFieldProto::_internal_basic() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderVariableProto* p = _impl_.basic_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderVariableProto>(&::ShaderVariableProto_globals_);
}
inline const ::ShaderVariableProto& ShaderInterfaceBlockFieldProto::basic() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockFieldProto.basic)
  return _internal_basic();
}
inline void ShaderInterfaceBlockFieldProto::unsafe_arena_set_allocated_basic(
    ::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }
  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:ShaderInterfaceBlockFieldProto.basic)
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderInterfaceBlockFieldProto::release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* released = _impl_.basic_;
  _impl_.basic_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderVariableProto* PROTOBUF_NULLABLE ShaderInterfaceBlockFieldProto::unsafe_arena_release_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderInterfaceBlockFieldProto.basic)

  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* temp = _impl_.basic_;
  _impl_.basic_ = nullptr;
  return temp;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderInterfaceBlockFieldProto::_internal_mutable_basic() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.basic_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderVariableProto>(GetArena());
    _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(p);
  }
  return _impl_.basic_;
}
inline ::ShaderVariableProto* PROTOBUF_NONNULL ShaderInterfaceBlockFieldProto::mutable_basic()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::ShaderVariableProto* _msg = _internal_mutable_basic();
  // @@protoc_insertion_point(field_mutable:ShaderInterfaceBlockFieldProto.basic)
  return _msg;
}
inline void ShaderInterfaceBlockFieldProto::set_allocated_basic(::ShaderVariableProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.basic_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  }

  _impl_.basic_ = reinterpret_cast<::ShaderVariableProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:ShaderInterfaceBlockFieldProto.basic)
}

// optional bool is_row_major_layout = 2;
inline bool ShaderInterfaceBlockFieldProto::has_is_row_major_layout() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void ShaderInterfaceBlockFieldProto::clear_is_row_major_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_row_major_layout_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline bool ShaderInterfaceBlockFieldProto::is_row_major_layout() const {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockFieldProto.is_row_major_layout)
  return _internal_is_row_major_layout();
}
inline void ShaderInterfaceBlockFieldProto::set_is_row_major_layout(bool value) {
  _internal_set_is_row_major_layout(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockFieldProto.is_row_major_layout)
}
inline bool ShaderInterfaceBlockFieldProto::_internal_is_row_major_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.is_row_major_layout_;
}
inline void ShaderInterfaceBlockFieldProto::_internal_set_is_row_major_layout(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.is_row_major_layout_ = value;
}

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

// ShaderInterfaceBlockProto

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

// optional string mapped_name = 2;
inline bool ShaderInterfaceBlockProto::has_mapped_name() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  return value;
}
inline void ShaderInterfaceBlockProto::clear_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mapped_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::std::string& ShaderInterfaceBlockProto::mapped_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.mapped_name)
  return _internal_mapped_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ShaderInterfaceBlockProto::set_mapped_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  _impl_.mapped_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockProto.mapped_name)
}
inline ::std::string* PROTOBUF_NONNULL ShaderInterfaceBlockProto::mutable_mapped_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::std::string* _s = _internal_mutable_mapped_name();
  // @@protoc_insertion_point(field_mutable:ShaderInterfaceBlockProto.mapped_name)
  return _s;
}
inline const ::std::string& ShaderInterfaceBlockProto::_internal_mapped_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.mapped_name_.Get();
}
inline void ShaderInterfaceBlockProto::_internal_set_mapped_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.mapped_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ShaderInterfaceBlockProto::_internal_mutable_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.mapped_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ShaderInterfaceBlockProto::release_mapped_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderInterfaceBlockProto.mapped_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000004U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  auto* released = _impl_.mapped_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.mapped_name_.Set("", GetArena());
  }
  return released;
}
inline void ShaderInterfaceBlockProto::set_allocated_mapped_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  _impl_.mapped_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.mapped_name_.IsDefault()) {
    _impl_.mapped_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:ShaderInterfaceBlockProto.mapped_name)
}

// optional string instance_name = 3;
inline bool ShaderInterfaceBlockProto::has_instance_name() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  return value;
}
inline void ShaderInterfaceBlockProto::clear_instance_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instance_name_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::std::string& ShaderInterfaceBlockProto::instance_name() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.instance_name)
  return _internal_instance_name();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ShaderInterfaceBlockProto::set_instance_name(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  _impl_.instance_name_.Set(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockProto.instance_name)
}
inline ::std::string* PROTOBUF_NONNULL ShaderInterfaceBlockProto::mutable_instance_name()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::std::string* _s = _internal_mutable_instance_name();
  // @@protoc_insertion_point(field_mutable:ShaderInterfaceBlockProto.instance_name)
  return _s;
}
inline const ::std::string& ShaderInterfaceBlockProto::_internal_instance_name() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.instance_name_.Get();
}
inline void ShaderInterfaceBlockProto::_internal_set_instance_name(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.instance_name_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ShaderInterfaceBlockProto::_internal_mutable_instance_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.instance_name_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ShaderInterfaceBlockProto::release_instance_name() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderInterfaceBlockProto.instance_name)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000008U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  auto* released = _impl_.instance_name_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.instance_name_.Set("", GetArena());
  }
  return released;
}
inline void ShaderInterfaceBlockProto::set_allocated_instance_name(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  _impl_.instance_name_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.instance_name_.IsDefault()) {
    _impl_.instance_name_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:ShaderInterfaceBlockProto.instance_name)
}

// optional uint32 array_size = 4;
inline bool ShaderInterfaceBlockProto::has_array_size() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void ShaderInterfaceBlockProto::clear_array_size() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.array_size_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t ShaderInterfaceBlockProto::array_size() const {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.array_size)
  return _internal_array_size();
}
inline void ShaderInterfaceBlockProto::set_array_size(::uint32_t value) {
  _internal_set_array_size(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockProto.array_size)
}
inline ::uint32_t ShaderInterfaceBlockProto::_internal_array_size() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.array_size_;
}
inline void ShaderInterfaceBlockProto::_internal_set_array_size(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.array_size_ = value;
}

// optional int32 layout = 5;
inline bool ShaderInterfaceBlockProto::has_layout() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void ShaderInterfaceBlockProto::clear_layout() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.layout_ = 0;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline ::int32_t ShaderInterfaceBlockProto::layout() const {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.layout)
  return _internal_layout();
}
inline void ShaderInterfaceBlockProto::set_layout(::int32_t value) {
  _internal_set_layout(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockProto.layout)
}
inline ::int32_t ShaderInterfaceBlockProto::_internal_layout() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.layout_;
}
inline void ShaderInterfaceBlockProto::_internal_set_layout(::int32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.layout_ = value;
}

// optional bool static_use = 6;
inline bool ShaderInterfaceBlockProto::has_static_use() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void ShaderInterfaceBlockProto::clear_static_use() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.static_use_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline bool ShaderInterfaceBlockProto::static_use() const {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.static_use)
  return _internal_static_use();
}
inline void ShaderInterfaceBlockProto::set_static_use(bool value) {
  _internal_set_static_use(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:ShaderInterfaceBlockProto.static_use)
}
inline bool ShaderInterfaceBlockProto::_internal_static_use() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.static_use_;
}
inline void ShaderInterfaceBlockProto::_internal_set_static_use(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.static_use_ = value;
}

// repeated .ShaderInterfaceBlockFieldProto fields = 7;
inline int ShaderInterfaceBlockProto::_internal_fields_size() const {
  return _internal_fields().size();
}
inline int ShaderInterfaceBlockProto::fields_size() const {
  return _internal_fields_size();
}
inline void ShaderInterfaceBlockProto::clear_fields() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.fields_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderInterfaceBlockFieldProto& ShaderInterfaceBlockProto::fields(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderInterfaceBlockProto.fields)
  return _internal_fields().Get(index);
}
inline ::ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL ShaderInterfaceBlockProto::mutable_fields(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderInterfaceBlockProto.fields)
  return _internal_mutable_fields()->Mutable(index);
}
inline ::ShaderInterfaceBlockFieldProto* PROTOBUF_NONNULL ShaderInterfaceBlockProto::add_fields()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderInterfaceBlockFieldProto* _add =
      _internal_mutable_fields()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:ShaderInterfaceBlockProto.fields)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>& ShaderInterfaceBlockProto::fields() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderInterfaceBlockProto.fields)
  return _internal_fields();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>* PROTOBUF_NONNULL
ShaderInterfaceBlockProto::mutable_fields() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:ShaderInterfaceBlockProto.fields)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_fields();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>&
ShaderInterfaceBlockProto::_internal_fields() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.fields_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockFieldProto>* PROTOBUF_NONNULL
ShaderInterfaceBlockProto::_internal_mutable_fields() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.fields_;
}

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

// ShaderProto

// optional bytes sha = 1;
inline bool ShaderProto::has_sha() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void ShaderProto::clear_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sha_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline const ::std::string& ShaderProto::sha() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.sha)
  return _internal_sha();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void ShaderProto::set_sha(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  _impl_.sha_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:ShaderProto.sha)
}
inline ::std::string* PROTOBUF_NONNULL ShaderProto::mutable_sha()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  ::std::string* _s = _internal_mutable_sha();
  // @@protoc_insertion_point(field_mutable:ShaderProto.sha)
  return _s;
}
inline const ::std::string& ShaderProto::_internal_sha() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sha_.Get();
}
inline void ShaderProto::_internal_set_sha(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sha_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL ShaderProto::_internal_mutable_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sha_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE ShaderProto::release_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:ShaderProto.sha)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000020U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  auto* released = _impl_.sha_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sha_.Set("", GetArena());
  }
  return released;
}
inline void ShaderProto::set_allocated_sha(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
  }
  _impl_.sha_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sha_.IsDefault()) {
    _impl_.sha_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:ShaderProto.sha)
}

// repeated .ShaderAttributeProto attribs = 2;
inline int ShaderProto::_internal_attribs_size() const {
  return _internal_attribs().size();
}
inline int ShaderProto::attribs_size() const {
  return _internal_attribs_size();
}
inline void ShaderProto::clear_attribs() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.attribs_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::ShaderAttributeProto& ShaderProto::attribs(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.attribs)
  return _internal_attribs().Get(index);
}
inline ::ShaderAttributeProto* PROTOBUF_NONNULL ShaderProto::mutable_attribs(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderProto.attribs)
  return _internal_mutable_attribs()->Mutable(index);
}
inline ::ShaderAttributeProto* PROTOBUF_NONNULL ShaderProto::add_attribs()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderAttributeProto* _add =
      _internal_mutable_attribs()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_add:ShaderProto.attribs)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>& ShaderProto::attribs() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderProto.attribs)
  return _internal_attribs();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>* PROTOBUF_NONNULL
ShaderProto::mutable_attribs() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  // @@protoc_insertion_point(field_mutable_list:ShaderProto.attribs)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_attribs();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>&
ShaderProto::_internal_attribs() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.attribs_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderAttributeProto>* PROTOBUF_NONNULL
ShaderProto::_internal_mutable_attribs() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.attribs_;
}

// repeated .ShaderUniformProto uniforms = 3;
inline int ShaderProto::_internal_uniforms_size() const {
  return _internal_uniforms().size();
}
inline int ShaderProto::uniforms_size() const {
  return _internal_uniforms_size();
}
inline void ShaderProto::clear_uniforms() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.uniforms_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::ShaderUniformProto& ShaderProto::uniforms(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.uniforms)
  return _internal_uniforms().Get(index);
}
inline ::ShaderUniformProto* PROTOBUF_NONNULL ShaderProto::mutable_uniforms(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderProto.uniforms)
  return _internal_mutable_uniforms()->Mutable(index);
}
inline ::ShaderUniformProto* PROTOBUF_NONNULL ShaderProto::add_uniforms()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderUniformProto* _add =
      _internal_mutable_uniforms()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_add:ShaderProto.uniforms)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>& ShaderProto::uniforms() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderProto.uniforms)
  return _internal_uniforms();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>* PROTOBUF_NONNULL
ShaderProto::mutable_uniforms() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  // @@protoc_insertion_point(field_mutable_list:ShaderProto.uniforms)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_uniforms();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>&
ShaderProto::_internal_uniforms() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.uniforms_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderUniformProto>* PROTOBUF_NONNULL
ShaderProto::_internal_mutable_uniforms() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.uniforms_;
}

// repeated .ShaderVaryingProto varyings = 4;
inline int ShaderProto::_internal_varyings_size() const {
  return _internal_varyings().size();
}
inline int ShaderProto::varyings_size() const {
  return _internal_varyings_size();
}
inline void ShaderProto::clear_varyings() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.varyings_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::ShaderVaryingProto& ShaderProto::varyings(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.varyings)
  return _internal_varyings().Get(index);
}
inline ::ShaderVaryingProto* PROTOBUF_NONNULL ShaderProto::mutable_varyings(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderProto.varyings)
  return _internal_mutable_varyings()->Mutable(index);
}
inline ::ShaderVaryingProto* PROTOBUF_NONNULL ShaderProto::add_varyings()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderVaryingProto* _add =
      _internal_mutable_varyings()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_add:ShaderProto.varyings)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>& ShaderProto::varyings() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderProto.varyings)
  return _internal_varyings();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>* PROTOBUF_NONNULL
ShaderProto::mutable_varyings() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  // @@protoc_insertion_point(field_mutable_list:ShaderProto.varyings)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_varyings();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>&
ShaderProto::_internal_varyings() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.varyings_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderVaryingProto>* PROTOBUF_NONNULL
ShaderProto::_internal_mutable_varyings() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.varyings_;
}

// repeated .ShaderOutputVariableProto output_variables = 5;
inline int ShaderProto::_internal_output_variables_size() const {
  return _internal_output_variables().size();
}
inline int ShaderProto::output_variables_size() const {
  return _internal_output_variables_size();
}
inline void ShaderProto::clear_output_variables() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.output_variables_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::ShaderOutputVariableProto& ShaderProto::output_variables(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.output_variables)
  return _internal_output_variables().Get(index);
}
inline ::ShaderOutputVariableProto* PROTOBUF_NONNULL ShaderProto::mutable_output_variables(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderProto.output_variables)
  return _internal_mutable_output_variables()->Mutable(index);
}
inline ::ShaderOutputVariableProto* PROTOBUF_NONNULL ShaderProto::add_output_variables()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderOutputVariableProto* _add =
      _internal_mutable_output_variables()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_add:ShaderProto.output_variables)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>& ShaderProto::output_variables() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderProto.output_variables)
  return _internal_output_variables();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>* PROTOBUF_NONNULL
ShaderProto::mutable_output_variables() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  // @@protoc_insertion_point(field_mutable_list:ShaderProto.output_variables)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_output_variables();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>&
ShaderProto::_internal_output_variables() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.output_variables_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderOutputVariableProto>* PROTOBUF_NONNULL
ShaderProto::_internal_mutable_output_variables() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.output_variables_;
}

// repeated .ShaderInterfaceBlockProto interface_blocks = 6;
inline int ShaderProto::_internal_interface_blocks_size() const {
  return _internal_interface_blocks().size();
}
inline int ShaderProto::interface_blocks_size() const {
  return _internal_interface_blocks_size();
}
inline void ShaderProto::clear_interface_blocks() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.interface_blocks_.Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline const ::ShaderInterfaceBlockProto& ShaderProto::interface_blocks(int index) const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:ShaderProto.interface_blocks)
  return _internal_interface_blocks().Get(index);
}
inline ::ShaderInterfaceBlockProto* PROTOBUF_NONNULL ShaderProto::mutable_interface_blocks(int index)
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_mutable:ShaderProto.interface_blocks)
  return _internal_mutable_interface_blocks()->Mutable(index);
}
inline ::ShaderInterfaceBlockProto* PROTOBUF_NONNULL ShaderProto::add_interface_blocks()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  ::ShaderInterfaceBlockProto* _add =
      _internal_mutable_interface_blocks()->InternalAddWithArena(
          ::google::protobuf::MessageLite::internal_visibility(), GetArena());
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_add:ShaderProto.interface_blocks)
  return _add;
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>& ShaderProto::interface_blocks() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_list:ShaderProto.interface_blocks)
  return _internal_interface_blocks();
}
inline ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>* PROTOBUF_NONNULL
ShaderProto::mutable_interface_blocks() ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_mutable_list:ShaderProto.interface_blocks)
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _internal_mutable_interface_blocks();
}
inline const ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>&
ShaderProto::_internal_interface_blocks() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.interface_blocks_;
}
inline ::google::protobuf::RepeatedPtrField<::ShaderInterfaceBlockProto>* PROTOBUF_NONNULL
ShaderProto::_internal_mutable_interface_blocks() {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return &_impl_.interface_blocks_;
}

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

// GpuProgramProto

// optional bytes sha = 1;
inline bool GpuProgramProto::has_sha() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000001U);
  return value;
}
inline void GpuProgramProto::clear_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sha_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
}
inline const ::std::string& GpuProgramProto::sha() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:GpuProgramProto.sha)
  return _internal_sha();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void GpuProgramProto::set_sha(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  _impl_.sha_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:GpuProgramProto.sha)
}
inline ::std::string* PROTOBUF_NONNULL GpuProgramProto::mutable_sha()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000001U);
  ::std::string* _s = _internal_mutable_sha();
  // @@protoc_insertion_point(field_mutable:GpuProgramProto.sha)
  return _s;
}
inline const ::std::string& GpuProgramProto::_internal_sha() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.sha_.Get();
}
inline void GpuProgramProto::_internal_set_sha(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.sha_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL GpuProgramProto::_internal_mutable_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.sha_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE GpuProgramProto::release_sha() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:GpuProgramProto.sha)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000001U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000001U);
  auto* released = _impl_.sha_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.sha_.Set("", GetArena());
  }
  return released;
}
inline void GpuProgramProto::set_allocated_sha(::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_.sha_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.sha_.IsDefault()) {
    _impl_.sha_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:GpuProgramProto.sha)
}

// optional uint32 format = 2;
inline bool GpuProgramProto::has_format() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000010U);
  return value;
}
inline void GpuProgramProto::clear_format() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.format_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000010U);
}
inline ::uint32_t GpuProgramProto::format() const {
  // @@protoc_insertion_point(field_get:GpuProgramProto.format)
  return _internal_format();
}
inline void GpuProgramProto::set_format(::uint32_t value) {
  _internal_set_format(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000010U);
  // @@protoc_insertion_point(field_set:GpuProgramProto.format)
}
inline ::uint32_t GpuProgramProto::_internal_format() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.format_;
}
inline void GpuProgramProto::_internal_set_format(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.format_ = value;
}

// optional bytes program = 3;
inline bool GpuProgramProto::has_program() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000002U);
  return value;
}
inline void GpuProgramProto::clear_program() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_.ClearToEmpty();
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
}
inline const ::std::string& GpuProgramProto::program() const
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:GpuProgramProto.program)
  return _internal_program();
}
template <typename Arg_, typename... Args_>
PROTOBUF_ALWAYS_INLINE void GpuProgramProto::set_program(Arg_&& arg, Args_... args) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  _impl_.program_.SetBytes(static_cast<Arg_&&>(arg), args..., GetArena());
  // @@protoc_insertion_point(field_set:GpuProgramProto.program)
}
inline ::std::string* PROTOBUF_NONNULL GpuProgramProto::mutable_program()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  ::std::string* _s = _internal_mutable_program();
  // @@protoc_insertion_point(field_mutable:GpuProgramProto.program)
  return _s;
}
inline const ::std::string& GpuProgramProto::_internal_program() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.program_.Get();
}
inline void GpuProgramProto::_internal_set_program(const ::std::string& value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_.Set(value, GetArena());
}
inline ::std::string* PROTOBUF_NONNULL GpuProgramProto::_internal_mutable_program() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  return _impl_.program_.Mutable( GetArena());
}
inline ::std::string* PROTOBUF_NULLABLE GpuProgramProto::release_program() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:GpuProgramProto.program)
  if (!CheckHasBit(_impl_._has_bits_[0], 0x00000002U)) {
    return nullptr;
  }
  ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  auto* released = _impl_.program_.Release();
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString()) {
    _impl_.program_.Set("", GetArena());
  }
  return released;
}
inline void GpuProgramProto::set_allocated_program(::std::string* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000002U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000002U);
  }
  _impl_.program_.SetAllocated(value, GetArena());
  if (::google::protobuf::internal::DebugHardenForceCopyDefaultString() && _impl_.program_.IsDefault()) {
    _impl_.program_.Set("", GetArena());
  }
  // @@protoc_insertion_point(field_set_allocated:GpuProgramProto.program)
}

// optional bool program_is_compressed = 6;
inline bool GpuProgramProto::has_program_is_compressed() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000020U);
  return value;
}
inline void GpuProgramProto::clear_program_is_compressed() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_is_compressed_ = false;
  ClearHasBit(_impl_._has_bits_[0], 0x00000020U);
}
inline bool GpuProgramProto::program_is_compressed() const {
  // @@protoc_insertion_point(field_get:GpuProgramProto.program_is_compressed)
  return _internal_program_is_compressed();
}
inline void GpuProgramProto::set_program_is_compressed(bool value) {
  _internal_set_program_is_compressed(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000020U);
  // @@protoc_insertion_point(field_set:GpuProgramProto.program_is_compressed)
}
inline bool GpuProgramProto::_internal_program_is_compressed() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.program_is_compressed_;
}
inline void GpuProgramProto::_internal_set_program_is_compressed(bool value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_is_compressed_ = value;
}

// optional uint32 program_decompressed_length = 7;
inline bool GpuProgramProto::has_program_decompressed_length() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000040U);
  return value;
}
inline void GpuProgramProto::clear_program_decompressed_length() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_decompressed_length_ = 0u;
  ClearHasBit(_impl_._has_bits_[0], 0x00000040U);
}
inline ::uint32_t GpuProgramProto::program_decompressed_length() const {
  // @@protoc_insertion_point(field_get:GpuProgramProto.program_decompressed_length)
  return _internal_program_decompressed_length();
}
inline void GpuProgramProto::set_program_decompressed_length(::uint32_t value) {
  _internal_set_program_decompressed_length(value);
  SetHasBit(_impl_._has_bits_[0], 0x00000040U);
  // @@protoc_insertion_point(field_set:GpuProgramProto.program_decompressed_length)
}
inline ::uint32_t GpuProgramProto::_internal_program_decompressed_length() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  return _impl_.program_decompressed_length_;
}
inline void GpuProgramProto::_internal_set_program_decompressed_length(::uint32_t value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  _impl_.program_decompressed_length_ = value;
}

// optional .ShaderProto vertex_shader = 4;
inline bool GpuProgramProto::has_vertex_shader() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000004U);
  PROTOBUF_ASSUME(!value || _impl_.vertex_shader_ != nullptr);
  return value;
}
inline void GpuProgramProto::clear_vertex_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.vertex_shader_ != nullptr) _impl_.vertex_shader_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
}
inline const ::ShaderProto& GpuProgramProto::_internal_vertex_shader() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderProto* p = _impl_.vertex_shader_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderProto>(&::ShaderProto_globals_);
}
inline const ::ShaderProto& GpuProgramProto::vertex_shader() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:GpuProgramProto.vertex_shader)
  return _internal_vertex_shader();
}
inline void GpuProgramProto::unsafe_arena_set_allocated_vertex_shader(
    ::ShaderProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.vertex_shader_);
  }
  _impl_.vertex_shader_ = reinterpret_cast<::ShaderProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:GpuProgramProto.vertex_shader)
}
inline ::ShaderProto* PROTOBUF_NULLABLE GpuProgramProto::release_vertex_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::ShaderProto* released = _impl_.vertex_shader_;
  _impl_.vertex_shader_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderProto* PROTOBUF_NULLABLE GpuProgramProto::unsafe_arena_release_vertex_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:GpuProgramProto.vertex_shader)

  ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::ShaderProto* temp = _impl_.vertex_shader_;
  _impl_.vertex_shader_ = nullptr;
  return temp;
}
inline ::ShaderProto* PROTOBUF_NONNULL GpuProgramProto::_internal_mutable_vertex_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.vertex_shader_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderProto>(GetArena());
    _impl_.vertex_shader_ = reinterpret_cast<::ShaderProto*>(p);
  }
  return _impl_.vertex_shader_;
}
inline ::ShaderProto* PROTOBUF_NONNULL GpuProgramProto::mutable_vertex_shader()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  ::ShaderProto* _msg = _internal_mutable_vertex_shader();
  // @@protoc_insertion_point(field_mutable:GpuProgramProto.vertex_shader)
  return _msg;
}
inline void GpuProgramProto::set_allocated_vertex_shader(::ShaderProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.vertex_shader_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000004U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000004U);
  }

  _impl_.vertex_shader_ = reinterpret_cast<::ShaderProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:GpuProgramProto.vertex_shader)
}

// optional .ShaderProto fragment_shader = 5;
inline bool GpuProgramProto::has_fragment_shader() const {
  bool value = CheckHasBit(_impl_._has_bits_[0], 0x00000008U);
  PROTOBUF_ASSUME(!value || _impl_.fragment_shader_ != nullptr);
  return value;
}
inline void GpuProgramProto::clear_fragment_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fragment_shader_ != nullptr) _impl_.fragment_shader_->Clear();
  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
}
inline const ::ShaderProto& GpuProgramProto::_internal_fragment_shader() const {
  ::google::protobuf::internal::TSanRead(&_impl_);
  const ::ShaderProto* p = _impl_.fragment_shader_;
  return p != nullptr ? *p : *::google::protobuf::internal::MessageGlobalsBase::ToDefaultInstance<::ShaderProto>(&::ShaderProto_globals_);
}
inline const ::ShaderProto& GpuProgramProto::fragment_shader() const ABSL_ATTRIBUTE_LIFETIME_BOUND {
  // @@protoc_insertion_point(field_get:GpuProgramProto.fragment_shader)
  return _internal_fragment_shader();
}
inline void GpuProgramProto::unsafe_arena_set_allocated_fragment_shader(
    ::ShaderProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (GetArena() == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fragment_shader_);
  }
  _impl_.fragment_shader_ = reinterpret_cast<::ShaderProto*>(value);
  if (value != nullptr) {
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:GpuProgramProto.fragment_shader)
}
inline ::ShaderProto* PROTOBUF_NULLABLE GpuProgramProto::release_fragment_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::ShaderProto* released = _impl_.fragment_shader_;
  _impl_.fragment_shader_ = nullptr;
  if (::google::protobuf::internal::DebugHardenForceCopyInRelease()) {
    auto* old = reinterpret_cast<::google::protobuf::MessageLite*>(released);
    released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    if (GetArena() == nullptr) {
      delete old;
    }
  } else {
    if (GetArena() != nullptr) {
      released = ::google::protobuf::internal::DuplicateIfNonNull(released);
    }
  }
  return released;
}
inline ::ShaderProto* PROTOBUF_NULLABLE GpuProgramProto::unsafe_arena_release_fragment_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  // @@protoc_insertion_point(field_release:GpuProgramProto.fragment_shader)

  ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::ShaderProto* temp = _impl_.fragment_shader_;
  _impl_.fragment_shader_ = nullptr;
  return temp;
}
inline ::ShaderProto* PROTOBUF_NONNULL GpuProgramProto::_internal_mutable_fragment_shader() {
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (_impl_.fragment_shader_ == nullptr) {
    auto* p = ::google::protobuf::MessageLite::DefaultConstruct<::ShaderProto>(GetArena());
    _impl_.fragment_shader_ = reinterpret_cast<::ShaderProto*>(p);
  }
  return _impl_.fragment_shader_;
}
inline ::ShaderProto* PROTOBUF_NONNULL GpuProgramProto::mutable_fragment_shader()
    ABSL_ATTRIBUTE_LIFETIME_BOUND {
  SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  ::ShaderProto* _msg = _internal_mutable_fragment_shader();
  // @@protoc_insertion_point(field_mutable:GpuProgramProto.fragment_shader)
  return _msg;
}
inline void GpuProgramProto::set_allocated_fragment_shader(::ShaderProto* PROTOBUF_NULLABLE value) {
  ::google::protobuf::Arena* message_arena = GetArena();
  ::google::protobuf::internal::TSanWrite(&_impl_);
  if (message_arena == nullptr) {
    delete reinterpret_cast<::google::protobuf::MessageLite*>(_impl_.fragment_shader_);
  }

  if (value != nullptr) {
    ::google::protobuf::Arena* submessage_arena = value->GetArena();
    if (message_arena != submessage_arena) {
      value = ::google::protobuf::internal::GetOwnedMessage(message_arena, value, submessage_arena);
    }
    SetHasBit(_impl_._has_bits_[0], 0x00000008U);
  } else {
    ClearHasBit(_impl_._has_bits_[0], 0x00000008U);
  }

  _impl_.fragment_shader_ = reinterpret_cast<::ShaderProto*>(value);
  // @@protoc_insertion_point(field_set_allocated:GpuProgramProto.fragment_shader)
}

#ifdef __GNUC__
#pragma GCC diagnostic pop
#endif  // __GNUC__

// @@protoc_insertion_point(namespace_scope)


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"
// clang-format on

#endif  // disk_5fcache_5fproto_2eproto_2epb_2eh
