// Copyright © 2025 Stephane Capponi and individual contributors. All Rights Reserved.

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ueagents_envs/communicator_objects/brain_parameters.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto_2epb_2eh
#define GOOGLE_PROTOBUF_INCLUDED_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto_2epb_2eh

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

#include "google/protobuf/port_def.inc"
#if PROTOBUF_VERSION < 4023000
#error "This file was generated by a newer version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please update"
#error "your headers."
#endif  // PROTOBUF_VERSION

#if 4023004 < PROTOBUF_MIN_PROTOC_VERSION
#error "This file was generated by an older version of protoc which is"
#error "incompatible with your Protocol Buffer headers. Please"
#error "regenerate this file with a newer version of protoc."
#endif  // PROTOBUF_MIN_PROTOC_VERSION
#include "google/protobuf/port_undef.inc"
#include "google/protobuf/io/coded_stream.h"
#include "google/protobuf/arena.h"
#include "google/protobuf/arenastring.h"
#include "google/protobuf/generated_message_util.h"
#include "google/protobuf/metadata_lite.h"
#include "google/protobuf/generated_message_reflection.h"
#include "google/protobuf/message.h"
#include "google/protobuf/repeated_field.h"  // IWYU pragma: export
#include "google/protobuf/extension_set.h"  // IWYU pragma: export
#include "google/protobuf/unknown_field_set.h"
// @@protoc_insertion_point(includes)

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

#define PROTOBUF_INTERNAL_EXPORT_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto

PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto {
  static const ::uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable
    descriptor_table_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto;
namespace communicator_objects {
class ActionSpecProto;
struct ActionSpecProtoDefaultTypeInternal;
extern ActionSpecProtoDefaultTypeInternal _ActionSpecProto_default_instance_;
class BrainParametersProto;
struct BrainParametersProtoDefaultTypeInternal;
extern BrainParametersProtoDefaultTypeInternal _BrainParametersProto_default_instance_;
}  // namespace communicator_objects
PROTOBUF_NAMESPACE_OPEN
template <>
::communicator_objects::ActionSpecProto* Arena::CreateMaybeMessage<::communicator_objects::ActionSpecProto>(Arena*);
template <>
::communicator_objects::BrainParametersProto* Arena::CreateMaybeMessage<::communicator_objects::BrainParametersProto>(Arena*);
PROTOBUF_NAMESPACE_CLOSE

namespace communicator_objects {

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


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

class ActionSpecProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:communicator_objects.ActionSpecProto) */ {
 public:
  inline ActionSpecProto() : ActionSpecProto(nullptr) {}
  ~ActionSpecProto() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR ActionSpecProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  ActionSpecProto(const ActionSpecProto& from);
  ActionSpecProto(ActionSpecProto&& from) noexcept
    : ActionSpecProto() {
    *this = ::std::move(from);
  }

  inline ActionSpecProto& operator=(const ActionSpecProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline ActionSpecProto& operator=(ActionSpecProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const ActionSpecProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const ActionSpecProto* internal_default_instance() {
    return reinterpret_cast<const ActionSpecProto*>(
               &_ActionSpecProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(ActionSpecProto& a, ActionSpecProto& b) {
    a.Swap(&b);
  }
  inline void Swap(ActionSpecProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(ActionSpecProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  ActionSpecProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<ActionSpecProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const ActionSpecProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const ActionSpecProto& from) {
    ActionSpecProto::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(ActionSpecProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "communicator_objects.ActionSpecProto";
  }
  protected:
  explicit ActionSpecProto(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

  // accessors -------------------------------------------------------

  enum : int {
    kDiscreteBranchSizesFieldNumber = 3,
    kActionDescriptionsFieldNumber = 4,
    kNumContinuousActionsFieldNumber = 1,
    kNumDiscreteActionsFieldNumber = 2,
  };
  // repeated int32 discrete_branch_sizes = 3;
  int discrete_branch_sizes_size() const;
  private:
  int _internal_discrete_branch_sizes_size() const;

  public:
  void clear_discrete_branch_sizes() ;
  ::int32_t discrete_branch_sizes(int index) const;
  void set_discrete_branch_sizes(int index, ::int32_t value);
  void add_discrete_branch_sizes(::int32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>& discrete_branch_sizes() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* mutable_discrete_branch_sizes();

  private:
  ::int32_t _internal_discrete_branch_sizes(int index) const;
  void _internal_add_discrete_branch_sizes(::int32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>& _internal_discrete_branch_sizes() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* _internal_mutable_discrete_branch_sizes();

  public:
  // repeated string action_descriptions = 4;
  int action_descriptions_size() const;
  private:
  int _internal_action_descriptions_size() const;

  public:
  void clear_action_descriptions() ;
  const std::string& action_descriptions(int index) const;
  std::string* mutable_action_descriptions(int index);
  void set_action_descriptions(int index, const std::string& value);
  void set_action_descriptions(int index, std::string&& value);
  void set_action_descriptions(int index, const char* value);
  void set_action_descriptions(int index, const char* value, std::size_t size);
  void set_action_descriptions(int index, absl::string_view value);
  std::string* add_action_descriptions();
  void add_action_descriptions(const std::string& value);
  void add_action_descriptions(std::string&& value);
  void add_action_descriptions(const char* value);
  void add_action_descriptions(const char* value, std::size_t size);
  void add_action_descriptions(absl::string_view value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& action_descriptions() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_action_descriptions();

  private:
  const std::string& _internal_action_descriptions(int index) const;
  std::string* _internal_add_action_descriptions();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& _internal_action_descriptions() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* _internal_mutable_action_descriptions();

  public:
  // int32 num_continuous_actions = 1;
  void clear_num_continuous_actions() ;
  ::int32_t num_continuous_actions() const;
  void set_num_continuous_actions(::int32_t value);

  private:
  ::int32_t _internal_num_continuous_actions() const;
  void _internal_set_num_continuous_actions(::int32_t value);

  public:
  // int32 num_discrete_actions = 2;
  void clear_num_discrete_actions() ;
  ::int32_t num_discrete_actions() const;
  void set_num_discrete_actions(::int32_t value);

  private:
  ::int32_t _internal_num_discrete_actions() const;
  void _internal_set_num_discrete_actions(::int32_t value);

  public:
  // @@protoc_insertion_point(class_scope:communicator_objects.ActionSpecProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t> discrete_branch_sizes_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _discrete_branch_sizes_cached_byte_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> action_descriptions_;
    ::int32_t num_continuous_actions_;
    ::int32_t num_discrete_actions_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto;
};// -------------------------------------------------------------------

class BrainParametersProto final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:communicator_objects.BrainParametersProto) */ {
 public:
  inline BrainParametersProto() : BrainParametersProto(nullptr) {}
  ~BrainParametersProto() override;
  template<typename = void>
  explicit PROTOBUF_CONSTEXPR BrainParametersProto(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  BrainParametersProto(const BrainParametersProto& from);
  BrainParametersProto(BrainParametersProto&& from) noexcept
    : BrainParametersProto() {
    *this = ::std::move(from);
  }

  inline BrainParametersProto& operator=(const BrainParametersProto& from) {
    CopyFrom(from);
    return *this;
  }
  inline BrainParametersProto& operator=(BrainParametersProto&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const BrainParametersProto& default_instance() {
    return *internal_default_instance();
  }
  static inline const BrainParametersProto* internal_default_instance() {
    return reinterpret_cast<const BrainParametersProto*>(
               &_BrainParametersProto_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(BrainParametersProto& a, BrainParametersProto& b) {
    a.Swap(&b);
  }
  inline void Swap(BrainParametersProto* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(BrainParametersProto* other) {
    if (other == this) return;
    ABSL_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

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

  BrainParametersProto* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<BrainParametersProto>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const BrainParametersProto& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const BrainParametersProto& from) {
    BrainParametersProto::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  ::size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  ::uint8_t* _InternalSerialize(
      ::uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(BrainParametersProto* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::absl::string_view FullMessageName() {
    return "communicator_objects.BrainParametersProto";
  }
  protected:
  explicit BrainParametersProto(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

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

  // accessors -------------------------------------------------------

  enum : int {
    kBrainNameFieldNumber = 1,
    kActionSpecFieldNumber = 3,
    kIsTrainingFieldNumber = 2,
  };
  // string brain_name = 1;
  void clear_brain_name() ;
  const std::string& brain_name() const;




  template <typename Arg_ = const std::string&, typename... Args_>
  void set_brain_name(Arg_&& arg, Args_... args);
  std::string* mutable_brain_name();
  PROTOBUF_NODISCARD std::string* release_brain_name();
  void set_allocated_brain_name(std::string* ptr);

  private:
  const std::string& _internal_brain_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_brain_name(
      const std::string& value);
  std::string* _internal_mutable_brain_name();

  public:
  // .communicator_objects.ActionSpecProto action_spec = 3;
  bool has_action_spec() const;
  void clear_action_spec() ;
  const ::communicator_objects::ActionSpecProto& action_spec() const;
  PROTOBUF_NODISCARD ::communicator_objects::ActionSpecProto* release_action_spec();
  ::communicator_objects::ActionSpecProto* mutable_action_spec();
  void set_allocated_action_spec(::communicator_objects::ActionSpecProto* action_spec);
  private:
  const ::communicator_objects::ActionSpecProto& _internal_action_spec() const;
  ::communicator_objects::ActionSpecProto* _internal_mutable_action_spec();
  public:
  void unsafe_arena_set_allocated_action_spec(
      ::communicator_objects::ActionSpecProto* action_spec);
  ::communicator_objects::ActionSpecProto* unsafe_arena_release_action_spec();
  // bool is_training = 2;
  void clear_is_training() ;
  bool is_training() const;
  void set_is_training(bool value);

  private:
  bool _internal_is_training() const;
  void _internal_set_is_training(bool value);

  public:
  // @@protoc_insertion_point(class_scope:communicator_objects.BrainParametersProto)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr brain_name_;
    ::communicator_objects::ActionSpecProto* action_spec_;
    bool is_training_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto;
};

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




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


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

// ActionSpecProto

// int32 num_continuous_actions = 1;
inline void ActionSpecProto::clear_num_continuous_actions() {
  _impl_.num_continuous_actions_ = 0;
}
inline ::int32_t ActionSpecProto::num_continuous_actions() const {
  // @@protoc_insertion_point(field_get:communicator_objects.ActionSpecProto.num_continuous_actions)
  return _internal_num_continuous_actions();
}
inline void ActionSpecProto::set_num_continuous_actions(::int32_t value) {
  _internal_set_num_continuous_actions(value);
  // @@protoc_insertion_point(field_set:communicator_objects.ActionSpecProto.num_continuous_actions)
}
inline ::int32_t ActionSpecProto::_internal_num_continuous_actions() const {
  return _impl_.num_continuous_actions_;
}
inline void ActionSpecProto::_internal_set_num_continuous_actions(::int32_t value) {
  ;
  _impl_.num_continuous_actions_ = value;
}

// int32 num_discrete_actions = 2;
inline void ActionSpecProto::clear_num_discrete_actions() {
  _impl_.num_discrete_actions_ = 0;
}
inline ::int32_t ActionSpecProto::num_discrete_actions() const {
  // @@protoc_insertion_point(field_get:communicator_objects.ActionSpecProto.num_discrete_actions)
  return _internal_num_discrete_actions();
}
inline void ActionSpecProto::set_num_discrete_actions(::int32_t value) {
  _internal_set_num_discrete_actions(value);
  // @@protoc_insertion_point(field_set:communicator_objects.ActionSpecProto.num_discrete_actions)
}
inline ::int32_t ActionSpecProto::_internal_num_discrete_actions() const {
  return _impl_.num_discrete_actions_;
}
inline void ActionSpecProto::_internal_set_num_discrete_actions(::int32_t value) {
  ;
  _impl_.num_discrete_actions_ = value;
}

// repeated int32 discrete_branch_sizes = 3;
inline int ActionSpecProto::_internal_discrete_branch_sizes_size() const {
  return _impl_.discrete_branch_sizes_.size();
}
inline int ActionSpecProto::discrete_branch_sizes_size() const {
  return _internal_discrete_branch_sizes_size();
}
inline void ActionSpecProto::clear_discrete_branch_sizes() {
  _internal_mutable_discrete_branch_sizes()->Clear();
}
inline ::int32_t ActionSpecProto::discrete_branch_sizes(int index) const {
  // @@protoc_insertion_point(field_get:communicator_objects.ActionSpecProto.discrete_branch_sizes)
  return _internal_discrete_branch_sizes(index);
}
inline void ActionSpecProto::set_discrete_branch_sizes(int index, ::int32_t value) {
  _internal_mutable_discrete_branch_sizes()->Set(index, value);
  // @@protoc_insertion_point(field_set:communicator_objects.ActionSpecProto.discrete_branch_sizes)
}
inline void ActionSpecProto::add_discrete_branch_sizes(::int32_t value) {
  _internal_add_discrete_branch_sizes(value);
  // @@protoc_insertion_point(field_add:communicator_objects.ActionSpecProto.discrete_branch_sizes)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>& ActionSpecProto::discrete_branch_sizes() const {
  // @@protoc_insertion_point(field_list:communicator_objects.ActionSpecProto.discrete_branch_sizes)
  return _internal_discrete_branch_sizes();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* ActionSpecProto::mutable_discrete_branch_sizes() {
  // @@protoc_insertion_point(field_mutable_list:communicator_objects.ActionSpecProto.discrete_branch_sizes)
  return _internal_mutable_discrete_branch_sizes();
}

inline ::int32_t ActionSpecProto::_internal_discrete_branch_sizes(int index) const {
  return _internal_discrete_branch_sizes().Get(index);
}
inline void ActionSpecProto::_internal_add_discrete_branch_sizes(::int32_t value) {
  _internal_mutable_discrete_branch_sizes()->Add(value);
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>& ActionSpecProto::_internal_discrete_branch_sizes() const {
  return _impl_.discrete_branch_sizes_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField<::int32_t>* ActionSpecProto::_internal_mutable_discrete_branch_sizes() {
  return &_impl_.discrete_branch_sizes_;
}

// repeated string action_descriptions = 4;
inline int ActionSpecProto::_internal_action_descriptions_size() const {
  return _impl_.action_descriptions_.size();
}
inline int ActionSpecProto::action_descriptions_size() const {
  return _internal_action_descriptions_size();
}
inline void ActionSpecProto::clear_action_descriptions() {
  _internal_mutable_action_descriptions()->Clear();
}
inline std::string* ActionSpecProto::add_action_descriptions() {
  std::string* _s = _internal_add_action_descriptions();
  // @@protoc_insertion_point(field_add_mutable:communicator_objects.ActionSpecProto.action_descriptions)
  return _s;
}
inline const std::string& ActionSpecProto::action_descriptions(int index) const {
  // @@protoc_insertion_point(field_get:communicator_objects.ActionSpecProto.action_descriptions)
  return _internal_action_descriptions(index);
}
inline std::string* ActionSpecProto::mutable_action_descriptions(int index) {
  // @@protoc_insertion_point(field_mutable:communicator_objects.ActionSpecProto.action_descriptions)
  return _internal_mutable_action_descriptions()->Mutable(index);
}
inline void ActionSpecProto::set_action_descriptions(int index, const std::string& value) {
  _internal_mutable_action_descriptions()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::set_action_descriptions(int index, std::string&& value) {
  _internal_mutable_action_descriptions()->Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::set_action_descriptions(int index, const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_action_descriptions()->Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::set_action_descriptions(int index, const char* value,
                              std::size_t size) {
  _internal_mutable_action_descriptions()->Mutable(index)->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::set_action_descriptions(int index, absl::string_view value) {
  _internal_mutable_action_descriptions()->Mutable(index)->assign(value.data(),
                                                     value.size());
  // @@protoc_insertion_point(field_set_string_piece:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::add_action_descriptions(const std::string& value) {
  _internal_mutable_action_descriptions()->Add()->assign(value);
  // @@protoc_insertion_point(field_add:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::add_action_descriptions(std::string&& value) {
  _internal_mutable_action_descriptions()->Add(std::move(value));
  // @@protoc_insertion_point(field_add:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::add_action_descriptions(const char* value) {
  ABSL_DCHECK(value != nullptr);
  _internal_mutable_action_descriptions()->Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::add_action_descriptions(const char* value, std::size_t size) {
  _internal_mutable_action_descriptions()->Add()->assign(
      reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:communicator_objects.ActionSpecProto.action_descriptions)
}
inline void ActionSpecProto::add_action_descriptions(absl::string_view value) {
  _internal_mutable_action_descriptions()->Add()->assign(value.data(), value.size());
  // @@protoc_insertion_point(field_add_string_piece:communicator_objects.ActionSpecProto.action_descriptions)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ActionSpecProto::action_descriptions() const {
  // @@protoc_insertion_point(field_list:communicator_objects.ActionSpecProto.action_descriptions)
  return _internal_action_descriptions();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* ActionSpecProto::mutable_action_descriptions() {
  // @@protoc_insertion_point(field_mutable_list:communicator_objects.ActionSpecProto.action_descriptions)
  return _internal_mutable_action_descriptions();
}
inline const std::string& ActionSpecProto::_internal_action_descriptions(int index) const {
  return _internal_action_descriptions().Get(index);
}
inline std::string* ActionSpecProto::_internal_add_action_descriptions() {
  return _internal_mutable_action_descriptions()->Add();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
ActionSpecProto::_internal_action_descriptions() const {
  return _impl_.action_descriptions_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
ActionSpecProto::_internal_mutable_action_descriptions() {
  return &_impl_.action_descriptions_;
}

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

// BrainParametersProto

// string brain_name = 1;
inline void BrainParametersProto::clear_brain_name() {
  _impl_.brain_name_.ClearToEmpty();
}
inline const std::string& BrainParametersProto::brain_name() const {
  // @@protoc_insertion_point(field_get:communicator_objects.BrainParametersProto.brain_name)
  return _internal_brain_name();
}
template <typename Arg_, typename... Args_>
inline PROTOBUF_ALWAYS_INLINE void BrainParametersProto::set_brain_name(Arg_&& arg,
                                                     Args_... args) {
  ;
  _impl_.brain_name_.Set(static_cast<Arg_&&>(arg), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:communicator_objects.BrainParametersProto.brain_name)
}
inline std::string* BrainParametersProto::mutable_brain_name() {
  std::string* _s = _internal_mutable_brain_name();
  // @@protoc_insertion_point(field_mutable:communicator_objects.BrainParametersProto.brain_name)
  return _s;
}
inline const std::string& BrainParametersProto::_internal_brain_name() const {
  return _impl_.brain_name_.Get();
}
inline void BrainParametersProto::_internal_set_brain_name(const std::string& value) {
  ;


  _impl_.brain_name_.Set(value, GetArenaForAllocation());
}
inline std::string* BrainParametersProto::_internal_mutable_brain_name() {
  ;
  return _impl_.brain_name_.Mutable( GetArenaForAllocation());
}
inline std::string* BrainParametersProto::release_brain_name() {
  // @@protoc_insertion_point(field_release:communicator_objects.BrainParametersProto.brain_name)
  return _impl_.brain_name_.Release();
}
inline void BrainParametersProto::set_allocated_brain_name(std::string* value) {
  _impl_.brain_name_.SetAllocated(value, GetArenaForAllocation());
  #ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
        if (_impl_.brain_name_.IsDefault()) {
          _impl_.brain_name_.Set("", GetArenaForAllocation());
        }
  #endif  // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:communicator_objects.BrainParametersProto.brain_name)
}

// bool is_training = 2;
inline void BrainParametersProto::clear_is_training() {
  _impl_.is_training_ = false;
}
inline bool BrainParametersProto::is_training() const {
  // @@protoc_insertion_point(field_get:communicator_objects.BrainParametersProto.is_training)
  return _internal_is_training();
}
inline void BrainParametersProto::set_is_training(bool value) {
  _internal_set_is_training(value);
  // @@protoc_insertion_point(field_set:communicator_objects.BrainParametersProto.is_training)
}
inline bool BrainParametersProto::_internal_is_training() const {
  return _impl_.is_training_;
}
inline void BrainParametersProto::_internal_set_is_training(bool value) {
  ;
  _impl_.is_training_ = value;
}

// .communicator_objects.ActionSpecProto action_spec = 3;
inline bool BrainParametersProto::has_action_spec() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.action_spec_ != nullptr);
  return value;
}
inline void BrainParametersProto::clear_action_spec() {
  if (_impl_.action_spec_ != nullptr) _impl_.action_spec_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::communicator_objects::ActionSpecProto& BrainParametersProto::_internal_action_spec() const {
  const ::communicator_objects::ActionSpecProto* p = _impl_.action_spec_;
  return p != nullptr ? *p : reinterpret_cast<const ::communicator_objects::ActionSpecProto&>(
      ::communicator_objects::_ActionSpecProto_default_instance_);
}
inline const ::communicator_objects::ActionSpecProto& BrainParametersProto::action_spec() const {
  // @@protoc_insertion_point(field_get:communicator_objects.BrainParametersProto.action_spec)
  return _internal_action_spec();
}
inline void BrainParametersProto::unsafe_arena_set_allocated_action_spec(
    ::communicator_objects::ActionSpecProto* action_spec) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.action_spec_);
  }
  _impl_.action_spec_ = action_spec;
  if (action_spec) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:communicator_objects.BrainParametersProto.action_spec)
}
inline ::communicator_objects::ActionSpecProto* BrainParametersProto::release_action_spec() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::communicator_objects::ActionSpecProto* temp = _impl_.action_spec_;
  _impl_.action_spec_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::communicator_objects::ActionSpecProto* BrainParametersProto::unsafe_arena_release_action_spec() {
  // @@protoc_insertion_point(field_release:communicator_objects.BrainParametersProto.action_spec)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::communicator_objects::ActionSpecProto* temp = _impl_.action_spec_;
  _impl_.action_spec_ = nullptr;
  return temp;
}
inline ::communicator_objects::ActionSpecProto* BrainParametersProto::_internal_mutable_action_spec() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.action_spec_ == nullptr) {
    auto* p = CreateMaybeMessage<::communicator_objects::ActionSpecProto>(GetArenaForAllocation());
    _impl_.action_spec_ = p;
  }
  return _impl_.action_spec_;
}
inline ::communicator_objects::ActionSpecProto* BrainParametersProto::mutable_action_spec() {
  ::communicator_objects::ActionSpecProto* _msg = _internal_mutable_action_spec();
  // @@protoc_insertion_point(field_mutable:communicator_objects.BrainParametersProto.action_spec)
  return _msg;
}
inline void BrainParametersProto::set_allocated_action_spec(::communicator_objects::ActionSpecProto* action_spec) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.action_spec_;
  }
  if (action_spec) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(action_spec);
    if (message_arena != submessage_arena) {
      action_spec = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, action_spec, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.action_spec_ = action_spec;
  // @@protoc_insertion_point(field_set_allocated:communicator_objects.BrainParametersProto.action_spec)
}

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

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


// @@protoc_insertion_point(global_scope)

#include "google/protobuf/port_undef.inc"

#endif  // GOOGLE_PROTOBUF_INCLUDED_ueagents_5fenvs_2fcommunicator_5fobjects_2fbrain_5fparameters_2eproto_2epb_2eh
