// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: ortools/data/rcpsp.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_ortools_2fdata_2frcpsp_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_ortools_2fdata_2frcpsp_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3012000
#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
#if 3012002 < 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

#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_table_driven.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/inlined_string_field.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)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_ortools_2fdata_2frcpsp_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_ortools_2fdata_2frcpsp_2eproto {
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTableField entries[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::AuxillaryParseTableField aux[]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::ParseTable schema[6]
    PROTOBUF_SECTION_VARIABLE(protodesc_cold);
  static const ::PROTOBUF_NAMESPACE_ID::internal::FieldMetadata field_metadata[];
  static const ::PROTOBUF_NAMESPACE_ID::internal::SerializationTable serialization_table[];
  static const ::PROTOBUF_NAMESPACE_ID::uint32 offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_ortools_2fdata_2frcpsp_2eproto;
namespace operations_research {
namespace data {
namespace rcpsp {
class PerRecipeDelays;
class PerRecipeDelaysDefaultTypeInternal;
extern PerRecipeDelaysDefaultTypeInternal _PerRecipeDelays_default_instance_;
class PerSuccessorDelays;
class PerSuccessorDelaysDefaultTypeInternal;
extern PerSuccessorDelaysDefaultTypeInternal _PerSuccessorDelays_default_instance_;
class RcpspProblem;
class RcpspProblemDefaultTypeInternal;
extern RcpspProblemDefaultTypeInternal _RcpspProblem_default_instance_;
class Recipe;
class RecipeDefaultTypeInternal;
extern RecipeDefaultTypeInternal _Recipe_default_instance_;
class Resource;
class ResourceDefaultTypeInternal;
extern ResourceDefaultTypeInternal _Resource_default_instance_;
class Task;
class TaskDefaultTypeInternal;
extern TaskDefaultTypeInternal _Task_default_instance_;
}  // namespace rcpsp
}  // namespace data
}  // namespace operations_research
PROTOBUF_NAMESPACE_OPEN
template<> ::operations_research::data::rcpsp::PerRecipeDelays* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::PerRecipeDelays>(Arena*);
template<> ::operations_research::data::rcpsp::PerSuccessorDelays* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::PerSuccessorDelays>(Arena*);
template<> ::operations_research::data::rcpsp::RcpspProblem* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::RcpspProblem>(Arena*);
template<> ::operations_research::data::rcpsp::Recipe* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::Recipe>(Arena*);
template<> ::operations_research::data::rcpsp::Resource* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::Resource>(Arena*);
template<> ::operations_research::data::rcpsp::Task* Arena::CreateMaybeMessage<::operations_research::data::rcpsp::Task>(Arena*);
PROTOBUF_NAMESPACE_CLOSE
namespace operations_research {
namespace data {
namespace rcpsp {

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

class Resource PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.Resource) */ {
 public:
  inline Resource() : Resource(nullptr) {};
  virtual ~Resource();

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

  inline Resource& operator=(const Resource& from) {
    CopyFrom(from);
    return *this;
  }
  inline Resource& operator=(Resource&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const Resource& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const Resource* internal_default_instance() {
    return reinterpret_cast<const Resource*>(
               &_Resource_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(Resource& a, Resource& b) {
    a.Swap(&b);
  }
  inline void Swap(Resource* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Resource* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline Resource* New() const final {
    return CreateMaybeMessage<Resource>(nullptr);
  }

  Resource* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<Resource>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const Resource& from);
  void MergeFrom(const Resource& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Resource* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.Resource";
  }
  protected:
  explicit Resource(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kMaxCapacityFieldNumber = 1,
    kMinCapacityFieldNumber = 2,
    kRenewableFieldNumber = 3,
    kUnitCostFieldNumber = 4,
  };
  // int32 max_capacity = 1;
  void clear_max_capacity();
  ::PROTOBUF_NAMESPACE_ID::int32 max_capacity() const;
  void set_max_capacity(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_max_capacity() const;
  void _internal_set_max_capacity(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 min_capacity = 2;
  void clear_min_capacity();
  ::PROTOBUF_NAMESPACE_ID::int32 min_capacity() const;
  void set_min_capacity(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_min_capacity() const;
  void _internal_set_min_capacity(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // bool renewable = 3;
  void clear_renewable();
  bool renewable() const;
  void set_renewable(bool value);
  private:
  bool _internal_renewable() const;
  void _internal_set_renewable(bool value);
  public:

  // int32 unit_cost = 4;
  void clear_unit_cost();
  ::PROTOBUF_NAMESPACE_ID::int32 unit_cost() const;
  void set_unit_cost(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_unit_cost() const;
  void _internal_set_unit_cost(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.Resource)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::int32 max_capacity_;
  ::PROTOBUF_NAMESPACE_ID::int32 min_capacity_;
  bool renewable_;
  ::PROTOBUF_NAMESPACE_ID::int32 unit_cost_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// -------------------------------------------------------------------

class Recipe PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.Recipe) */ {
 public:
  inline Recipe() : Recipe(nullptr) {};
  virtual ~Recipe();

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

  inline Recipe& operator=(const Recipe& from) {
    CopyFrom(from);
    return *this;
  }
  inline Recipe& operator=(Recipe&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const Recipe& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const Recipe* internal_default_instance() {
    return reinterpret_cast<const Recipe*>(
               &_Recipe_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(Recipe& a, Recipe& b) {
    a.Swap(&b);
  }
  inline void Swap(Recipe* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Recipe* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline Recipe* New() const final {
    return CreateMaybeMessage<Recipe>(nullptr);
  }

  Recipe* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<Recipe>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const Recipe& from);
  void MergeFrom(const Recipe& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Recipe* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.Recipe";
  }
  protected:
  explicit Recipe(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kDemandsFieldNumber = 2,
    kResourcesFieldNumber = 3,
    kDurationFieldNumber = 1,
  };
  // repeated int32 demands = 2;
  int demands_size() const;
  private:
  int _internal_demands_size() const;
  public:
  void clear_demands();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_demands(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_demands() const;
  void _internal_add_demands(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_demands();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 demands(int index) const;
  void set_demands(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_demands(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      demands() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_demands();

  // repeated int32 resources = 3;
  int resources_size() const;
  private:
  int _internal_resources_size() const;
  public:
  void clear_resources();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_resources(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_resources() const;
  void _internal_add_resources(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_resources();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 resources(int index) const;
  void set_resources(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_resources(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      resources() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_resources();

  // int32 duration = 1;
  void clear_duration();
  ::PROTOBUF_NAMESPACE_ID::int32 duration() const;
  void set_duration(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_duration() const;
  void _internal_set_duration(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.Recipe)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > demands_;
  mutable std::atomic<int> _demands_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > resources_;
  mutable std::atomic<int> _resources_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::int32 duration_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// -------------------------------------------------------------------

class PerRecipeDelays PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.PerRecipeDelays) */ {
 public:
  inline PerRecipeDelays() : PerRecipeDelays(nullptr) {};
  virtual ~PerRecipeDelays();

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

  inline PerRecipeDelays& operator=(const PerRecipeDelays& from) {
    CopyFrom(from);
    return *this;
  }
  inline PerRecipeDelays& operator=(PerRecipeDelays&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const PerRecipeDelays& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const PerRecipeDelays* internal_default_instance() {
    return reinterpret_cast<const PerRecipeDelays*>(
               &_PerRecipeDelays_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(PerRecipeDelays& a, PerRecipeDelays& b) {
    a.Swap(&b);
  }
  inline void Swap(PerRecipeDelays* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PerRecipeDelays* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline PerRecipeDelays* New() const final {
    return CreateMaybeMessage<PerRecipeDelays>(nullptr);
  }

  PerRecipeDelays* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<PerRecipeDelays>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const PerRecipeDelays& from);
  void MergeFrom(const PerRecipeDelays& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(PerRecipeDelays* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.PerRecipeDelays";
  }
  protected:
  explicit PerRecipeDelays(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kMinDelaysFieldNumber = 1,
  };
  // repeated int32 min_delays = 1;
  int min_delays_size() const;
  private:
  int _internal_min_delays_size() const;
  public:
  void clear_min_delays();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_min_delays(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_min_delays() const;
  void _internal_add_min_delays(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_min_delays();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 min_delays(int index) const;
  void set_min_delays(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_min_delays(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      min_delays() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_min_delays();

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.PerRecipeDelays)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > min_delays_;
  mutable std::atomic<int> _min_delays_cached_byte_size_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// -------------------------------------------------------------------

class PerSuccessorDelays PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.PerSuccessorDelays) */ {
 public:
  inline PerSuccessorDelays() : PerSuccessorDelays(nullptr) {};
  virtual ~PerSuccessorDelays();

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

  inline PerSuccessorDelays& operator=(const PerSuccessorDelays& from) {
    CopyFrom(from);
    return *this;
  }
  inline PerSuccessorDelays& operator=(PerSuccessorDelays&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const PerSuccessorDelays& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const PerSuccessorDelays* internal_default_instance() {
    return reinterpret_cast<const PerSuccessorDelays*>(
               &_PerSuccessorDelays_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(PerSuccessorDelays& a, PerSuccessorDelays& b) {
    a.Swap(&b);
  }
  inline void Swap(PerSuccessorDelays* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(PerSuccessorDelays* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline PerSuccessorDelays* New() const final {
    return CreateMaybeMessage<PerSuccessorDelays>(nullptr);
  }

  PerSuccessorDelays* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<PerSuccessorDelays>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const PerSuccessorDelays& from);
  void MergeFrom(const PerSuccessorDelays& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(PerSuccessorDelays* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.PerSuccessorDelays";
  }
  protected:
  explicit PerSuccessorDelays(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kRecipeDelaysFieldNumber = 1,
  };
  // repeated .operations_research.data.rcpsp.PerRecipeDelays recipe_delays = 1;
  int recipe_delays_size() const;
  private:
  int _internal_recipe_delays_size() const;
  public:
  void clear_recipe_delays();
  ::operations_research::data::rcpsp::PerRecipeDelays* mutable_recipe_delays(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerRecipeDelays >*
      mutable_recipe_delays();
  private:
  const ::operations_research::data::rcpsp::PerRecipeDelays& _internal_recipe_delays(int index) const;
  ::operations_research::data::rcpsp::PerRecipeDelays* _internal_add_recipe_delays();
  public:
  const ::operations_research::data::rcpsp::PerRecipeDelays& recipe_delays(int index) const;
  ::operations_research::data::rcpsp::PerRecipeDelays* add_recipe_delays();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerRecipeDelays >&
      recipe_delays() const;

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.PerSuccessorDelays)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerRecipeDelays > recipe_delays_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// -------------------------------------------------------------------

class Task PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.Task) */ {
 public:
  inline Task() : Task(nullptr) {};
  virtual ~Task();

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

  inline Task& operator=(const Task& from) {
    CopyFrom(from);
    return *this;
  }
  inline Task& operator=(Task&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const Task& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const Task* internal_default_instance() {
    return reinterpret_cast<const Task*>(
               &_Task_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(Task& a, Task& b) {
    a.Swap(&b);
  }
  inline void Swap(Task* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(Task* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline Task* New() const final {
    return CreateMaybeMessage<Task>(nullptr);
  }

  Task* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<Task>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const Task& from);
  void MergeFrom(const Task& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(Task* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.Task";
  }
  protected:
  explicit Task(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kSuccessorsFieldNumber = 1,
    kRecipesFieldNumber = 2,
    kSuccessorDelaysFieldNumber = 3,
  };
  // repeated int32 successors = 1;
  int successors_size() const;
  private:
  int _internal_successors_size() const;
  public:
  void clear_successors();
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_successors(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      _internal_successors() const;
  void _internal_add_successors(::PROTOBUF_NAMESPACE_ID::int32 value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      _internal_mutable_successors();
  public:
  ::PROTOBUF_NAMESPACE_ID::int32 successors(int index) const;
  void set_successors(int index, ::PROTOBUF_NAMESPACE_ID::int32 value);
  void add_successors(::PROTOBUF_NAMESPACE_ID::int32 value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
      successors() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
      mutable_successors();

  // repeated .operations_research.data.rcpsp.Recipe recipes = 2;
  int recipes_size() const;
  private:
  int _internal_recipes_size() const;
  public:
  void clear_recipes();
  ::operations_research::data::rcpsp::Recipe* mutable_recipes(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Recipe >*
      mutable_recipes();
  private:
  const ::operations_research::data::rcpsp::Recipe& _internal_recipes(int index) const;
  ::operations_research::data::rcpsp::Recipe* _internal_add_recipes();
  public:
  const ::operations_research::data::rcpsp::Recipe& recipes(int index) const;
  ::operations_research::data::rcpsp::Recipe* add_recipes();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Recipe >&
      recipes() const;

  // repeated .operations_research.data.rcpsp.PerSuccessorDelays successor_delays = 3;
  int successor_delays_size() const;
  private:
  int _internal_successor_delays_size() const;
  public:
  void clear_successor_delays();
  ::operations_research::data::rcpsp::PerSuccessorDelays* mutable_successor_delays(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerSuccessorDelays >*
      mutable_successor_delays();
  private:
  const ::operations_research::data::rcpsp::PerSuccessorDelays& _internal_successor_delays(int index) const;
  ::operations_research::data::rcpsp::PerSuccessorDelays* _internal_add_successor_delays();
  public:
  const ::operations_research::data::rcpsp::PerSuccessorDelays& successor_delays(int index) const;
  ::operations_research::data::rcpsp::PerSuccessorDelays* add_successor_delays();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerSuccessorDelays >&
      successor_delays() const;

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.Task)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 > successors_;
  mutable std::atomic<int> _successors_cached_byte_size_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Recipe > recipes_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerSuccessorDelays > successor_delays_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// -------------------------------------------------------------------

class RcpspProblem PROTOBUF_FINAL :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:operations_research.data.rcpsp.RcpspProblem) */ {
 public:
  inline RcpspProblem() : RcpspProblem(nullptr) {};
  virtual ~RcpspProblem();

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

  inline RcpspProblem& operator=(const RcpspProblem& from) {
    CopyFrom(from);
    return *this;
  }
  inline RcpspProblem& operator=(RcpspProblem&& from) noexcept {
    if (GetArena() == from.GetArena()) {
      if (this != &from) InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return GetMetadataStatic().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return GetMetadataStatic().reflection;
  }
  static const RcpspProblem& default_instance();

  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
  static inline const RcpspProblem* internal_default_instance() {
    return reinterpret_cast<const RcpspProblem*>(
               &_RcpspProblem_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(RcpspProblem& a, RcpspProblem& b) {
    a.Swap(&b);
  }
  inline void Swap(RcpspProblem* other) {
    if (other == this) return;
    if (GetArena() == other->GetArena()) {
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(RcpspProblem* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetArena() == other->GetArena());
    InternalSwap(other);
  }

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

  inline RcpspProblem* New() const final {
    return CreateMaybeMessage<RcpspProblem>(nullptr);
  }

  RcpspProblem* New(::PROTOBUF_NAMESPACE_ID::Arena* arena) const final {
    return CreateMaybeMessage<RcpspProblem>(arena);
  }
  void CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) final;
  void CopyFrom(const RcpspProblem& from);
  void MergeFrom(const RcpspProblem& from);
  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;
  ::PROTOBUF_NAMESPACE_ID::uint8* _InternalSerialize(
      ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _cached_size_.Get(); }

  private:
  inline void SharedCtor();
  inline void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(RcpspProblem* other);
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "operations_research.data.rcpsp.RcpspProblem";
  }
  protected:
  explicit RcpspProblem(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  private:
  static void ArenaDtor(void* object);
  inline void RegisterArenaDtor(::PROTOBUF_NAMESPACE_ID::Arena* arena);
  public:

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;
  private:
  static ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadataStatic() {
    ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&::descriptor_table_ortools_2fdata_2frcpsp_2eproto);
    return ::descriptor_table_ortools_2fdata_2frcpsp_2eproto.file_level_metadata[kIndexInFileMessages];
  }

  public:

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

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

  enum : int {
    kResourcesFieldNumber = 1,
    kTasksFieldNumber = 2,
    kBasedataFieldNumber = 12,
    kNameFieldNumber = 14,
    kIsConsumerProducerFieldNumber = 3,
    kIsResourceInvestmentFieldNumber = 4,
    kIsRcpspMaxFieldNumber = 5,
    kDeadlineFieldNumber = 6,
    kHorizonFieldNumber = 7,
    kReleaseDateFieldNumber = 8,
    kTardinessCostFieldNumber = 9,
    kMpmTimeFieldNumber = 10,
    kSeedFieldNumber = 11,
    kDueDateFieldNumber = 13,
  };
  // repeated .operations_research.data.rcpsp.Resource resources = 1;
  int resources_size() const;
  private:
  int _internal_resources_size() const;
  public:
  void clear_resources();
  ::operations_research::data::rcpsp::Resource* mutable_resources(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Resource >*
      mutable_resources();
  private:
  const ::operations_research::data::rcpsp::Resource& _internal_resources(int index) const;
  ::operations_research::data::rcpsp::Resource* _internal_add_resources();
  public:
  const ::operations_research::data::rcpsp::Resource& resources(int index) const;
  ::operations_research::data::rcpsp::Resource* add_resources();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Resource >&
      resources() const;

  // repeated .operations_research.data.rcpsp.Task tasks = 2;
  int tasks_size() const;
  private:
  int _internal_tasks_size() const;
  public:
  void clear_tasks();
  ::operations_research::data::rcpsp::Task* mutable_tasks(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Task >*
      mutable_tasks();
  private:
  const ::operations_research::data::rcpsp::Task& _internal_tasks(int index) const;
  ::operations_research::data::rcpsp::Task* _internal_add_tasks();
  public:
  const ::operations_research::data::rcpsp::Task& tasks(int index) const;
  ::operations_research::data::rcpsp::Task* add_tasks();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Task >&
      tasks() const;

  // string basedata = 12;
  void clear_basedata();
  const std::string& basedata() const;
  void set_basedata(const std::string& value);
  void set_basedata(std::string&& value);
  void set_basedata(const char* value);
  void set_basedata(const char* value, size_t size);
  std::string* mutable_basedata();
  std::string* release_basedata();
  void set_allocated_basedata(std::string* basedata);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_basedata();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_basedata(
      std::string* basedata);
  private:
  const std::string& _internal_basedata() const;
  void _internal_set_basedata(const std::string& value);
  std::string* _internal_mutable_basedata();
  public:

  // string name = 14;
  void clear_name();
  const std::string& name() const;
  void set_name(const std::string& value);
  void set_name(std::string&& value);
  void set_name(const char* value);
  void set_name(const char* value, size_t size);
  std::string* mutable_name();
  std::string* release_name();
  void set_allocated_name(std::string* name);
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  std::string* unsafe_arena_release_name();
  GOOGLE_PROTOBUF_RUNTIME_DEPRECATED("The unsafe_arena_ accessors for"
  "    string fields are deprecated and will be removed in a"
  "    future release.")
  void unsafe_arena_set_allocated_name(
      std::string* name);
  private:
  const std::string& _internal_name() const;
  void _internal_set_name(const std::string& value);
  std::string* _internal_mutable_name();
  public:

  // bool is_consumer_producer = 3;
  void clear_is_consumer_producer();
  bool is_consumer_producer() const;
  void set_is_consumer_producer(bool value);
  private:
  bool _internal_is_consumer_producer() const;
  void _internal_set_is_consumer_producer(bool value);
  public:

  // bool is_resource_investment = 4;
  void clear_is_resource_investment();
  bool is_resource_investment() const;
  void set_is_resource_investment(bool value);
  private:
  bool _internal_is_resource_investment() const;
  void _internal_set_is_resource_investment(bool value);
  public:

  // bool is_rcpsp_max = 5;
  void clear_is_rcpsp_max();
  bool is_rcpsp_max() const;
  void set_is_rcpsp_max(bool value);
  private:
  bool _internal_is_rcpsp_max() const;
  void _internal_set_is_rcpsp_max(bool value);
  public:

  // int32 deadline = 6;
  void clear_deadline();
  ::PROTOBUF_NAMESPACE_ID::int32 deadline() const;
  void set_deadline(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_deadline() const;
  void _internal_set_deadline(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 horizon = 7;
  void clear_horizon();
  ::PROTOBUF_NAMESPACE_ID::int32 horizon() const;
  void set_horizon(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_horizon() const;
  void _internal_set_horizon(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 release_date = 8;
  void clear_release_date();
  ::PROTOBUF_NAMESPACE_ID::int32 release_date() const;
  void set_release_date(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_release_date() const;
  void _internal_set_release_date(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 tardiness_cost = 9;
  void clear_tardiness_cost();
  ::PROTOBUF_NAMESPACE_ID::int32 tardiness_cost() const;
  void set_tardiness_cost(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_tardiness_cost() const;
  void _internal_set_tardiness_cost(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int32 mpm_time = 10;
  void clear_mpm_time();
  ::PROTOBUF_NAMESPACE_ID::int32 mpm_time() const;
  void set_mpm_time(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_mpm_time() const;
  void _internal_set_mpm_time(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // int64 seed = 11;
  void clear_seed();
  ::PROTOBUF_NAMESPACE_ID::int64 seed() const;
  void set_seed(::PROTOBUF_NAMESPACE_ID::int64 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int64 _internal_seed() const;
  void _internal_set_seed(::PROTOBUF_NAMESPACE_ID::int64 value);
  public:

  // int32 due_date = 13;
  void clear_due_date();
  ::PROTOBUF_NAMESPACE_ID::int32 due_date() const;
  void set_due_date(::PROTOBUF_NAMESPACE_ID::int32 value);
  private:
  ::PROTOBUF_NAMESPACE_ID::int32 _internal_due_date() const;
  void _internal_set_due_date(::PROTOBUF_NAMESPACE_ID::int32 value);
  public:

  // @@protoc_insertion_point(class_scope:operations_research.data.rcpsp.RcpspProblem)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Resource > resources_;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Task > tasks_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr basedata_;
  ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr name_;
  bool is_consumer_producer_;
  bool is_resource_investment_;
  bool is_rcpsp_max_;
  ::PROTOBUF_NAMESPACE_ID::int32 deadline_;
  ::PROTOBUF_NAMESPACE_ID::int32 horizon_;
  ::PROTOBUF_NAMESPACE_ID::int32 release_date_;
  ::PROTOBUF_NAMESPACE_ID::int32 tardiness_cost_;
  ::PROTOBUF_NAMESPACE_ID::int32 mpm_time_;
  ::PROTOBUF_NAMESPACE_ID::int64 seed_;
  ::PROTOBUF_NAMESPACE_ID::int32 due_date_;
  mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  friend struct ::TableStruct_ortools_2fdata_2frcpsp_2eproto;
};
// ===================================================================


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

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

// int32 max_capacity = 1;
inline void Resource::clear_max_capacity() {
  max_capacity_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::_internal_max_capacity() const {
  return max_capacity_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::max_capacity() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Resource.max_capacity)
  return _internal_max_capacity();
}
inline void Resource::_internal_set_max_capacity(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  max_capacity_ = value;
}
inline void Resource::set_max_capacity(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_max_capacity(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Resource.max_capacity)
}

// int32 min_capacity = 2;
inline void Resource::clear_min_capacity() {
  min_capacity_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::_internal_min_capacity() const {
  return min_capacity_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::min_capacity() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Resource.min_capacity)
  return _internal_min_capacity();
}
inline void Resource::_internal_set_min_capacity(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  min_capacity_ = value;
}
inline void Resource::set_min_capacity(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_min_capacity(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Resource.min_capacity)
}

// bool renewable = 3;
inline void Resource::clear_renewable() {
  renewable_ = false;
}
inline bool Resource::_internal_renewable() const {
  return renewable_;
}
inline bool Resource::renewable() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Resource.renewable)
  return _internal_renewable();
}
inline void Resource::_internal_set_renewable(bool value) {
  
  renewable_ = value;
}
inline void Resource::set_renewable(bool value) {
  _internal_set_renewable(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Resource.renewable)
}

// int32 unit_cost = 4;
inline void Resource::clear_unit_cost() {
  unit_cost_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::_internal_unit_cost() const {
  return unit_cost_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Resource::unit_cost() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Resource.unit_cost)
  return _internal_unit_cost();
}
inline void Resource::_internal_set_unit_cost(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  unit_cost_ = value;
}
inline void Resource::set_unit_cost(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_unit_cost(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Resource.unit_cost)
}

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

// Recipe

// int32 duration = 1;
inline void Recipe::clear_duration() {
  duration_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::_internal_duration() const {
  return duration_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::duration() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Recipe.duration)
  return _internal_duration();
}
inline void Recipe::_internal_set_duration(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  duration_ = value;
}
inline void Recipe::set_duration(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_duration(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Recipe.duration)
}

// repeated int32 demands = 2;
inline int Recipe::_internal_demands_size() const {
  return demands_.size();
}
inline int Recipe::demands_size() const {
  return _internal_demands_size();
}
inline void Recipe::clear_demands() {
  demands_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::_internal_demands(int index) const {
  return demands_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::demands(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Recipe.demands)
  return _internal_demands(index);
}
inline void Recipe::set_demands(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  demands_.Set(index, value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Recipe.demands)
}
inline void Recipe::_internal_add_demands(::PROTOBUF_NAMESPACE_ID::int32 value) {
  demands_.Add(value);
}
inline void Recipe::add_demands(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_demands(value);
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.Recipe.demands)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Recipe::_internal_demands() const {
  return demands_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Recipe::demands() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.Recipe.demands)
  return _internal_demands();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Recipe::_internal_mutable_demands() {
  return &demands_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Recipe::mutable_demands() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.Recipe.demands)
  return _internal_mutable_demands();
}

// repeated int32 resources = 3;
inline int Recipe::_internal_resources_size() const {
  return resources_.size();
}
inline int Recipe::resources_size() const {
  return _internal_resources_size();
}
inline void Recipe::clear_resources() {
  resources_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::_internal_resources(int index) const {
  return resources_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Recipe::resources(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Recipe.resources)
  return _internal_resources(index);
}
inline void Recipe::set_resources(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  resources_.Set(index, value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Recipe.resources)
}
inline void Recipe::_internal_add_resources(::PROTOBUF_NAMESPACE_ID::int32 value) {
  resources_.Add(value);
}
inline void Recipe::add_resources(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_resources(value);
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.Recipe.resources)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Recipe::_internal_resources() const {
  return resources_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Recipe::resources() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.Recipe.resources)
  return _internal_resources();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Recipe::_internal_mutable_resources() {
  return &resources_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Recipe::mutable_resources() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.Recipe.resources)
  return _internal_mutable_resources();
}

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

// PerRecipeDelays

// repeated int32 min_delays = 1;
inline int PerRecipeDelays::_internal_min_delays_size() const {
  return min_delays_.size();
}
inline int PerRecipeDelays::min_delays_size() const {
  return _internal_min_delays_size();
}
inline void PerRecipeDelays::clear_min_delays() {
  min_delays_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 PerRecipeDelays::_internal_min_delays(int index) const {
  return min_delays_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 PerRecipeDelays::min_delays(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.PerRecipeDelays.min_delays)
  return _internal_min_delays(index);
}
inline void PerRecipeDelays::set_min_delays(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  min_delays_.Set(index, value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.PerRecipeDelays.min_delays)
}
inline void PerRecipeDelays::_internal_add_min_delays(::PROTOBUF_NAMESPACE_ID::int32 value) {
  min_delays_.Add(value);
}
inline void PerRecipeDelays::add_min_delays(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_min_delays(value);
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.PerRecipeDelays.min_delays)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
PerRecipeDelays::_internal_min_delays() const {
  return min_delays_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
PerRecipeDelays::min_delays() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.PerRecipeDelays.min_delays)
  return _internal_min_delays();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
PerRecipeDelays::_internal_mutable_min_delays() {
  return &min_delays_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
PerRecipeDelays::mutable_min_delays() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.PerRecipeDelays.min_delays)
  return _internal_mutable_min_delays();
}

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

// PerSuccessorDelays

// repeated .operations_research.data.rcpsp.PerRecipeDelays recipe_delays = 1;
inline int PerSuccessorDelays::_internal_recipe_delays_size() const {
  return recipe_delays_.size();
}
inline int PerSuccessorDelays::recipe_delays_size() const {
  return _internal_recipe_delays_size();
}
inline void PerSuccessorDelays::clear_recipe_delays() {
  recipe_delays_.Clear();
}
inline ::operations_research::data::rcpsp::PerRecipeDelays* PerSuccessorDelays::mutable_recipe_delays(int index) {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.PerSuccessorDelays.recipe_delays)
  return recipe_delays_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerRecipeDelays >*
PerSuccessorDelays::mutable_recipe_delays() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.PerSuccessorDelays.recipe_delays)
  return &recipe_delays_;
}
inline const ::operations_research::data::rcpsp::PerRecipeDelays& PerSuccessorDelays::_internal_recipe_delays(int index) const {
  return recipe_delays_.Get(index);
}
inline const ::operations_research::data::rcpsp::PerRecipeDelays& PerSuccessorDelays::recipe_delays(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.PerSuccessorDelays.recipe_delays)
  return _internal_recipe_delays(index);
}
inline ::operations_research::data::rcpsp::PerRecipeDelays* PerSuccessorDelays::_internal_add_recipe_delays() {
  return recipe_delays_.Add();
}
inline ::operations_research::data::rcpsp::PerRecipeDelays* PerSuccessorDelays::add_recipe_delays() {
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.PerSuccessorDelays.recipe_delays)
  return _internal_add_recipe_delays();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerRecipeDelays >&
PerSuccessorDelays::recipe_delays() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.PerSuccessorDelays.recipe_delays)
  return recipe_delays_;
}

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

// Task

// repeated int32 successors = 1;
inline int Task::_internal_successors_size() const {
  return successors_.size();
}
inline int Task::successors_size() const {
  return _internal_successors_size();
}
inline void Task::clear_successors() {
  successors_.Clear();
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Task::_internal_successors(int index) const {
  return successors_.Get(index);
}
inline ::PROTOBUF_NAMESPACE_ID::int32 Task::successors(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Task.successors)
  return _internal_successors(index);
}
inline void Task::set_successors(int index, ::PROTOBUF_NAMESPACE_ID::int32 value) {
  successors_.Set(index, value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.Task.successors)
}
inline void Task::_internal_add_successors(::PROTOBUF_NAMESPACE_ID::int32 value) {
  successors_.Add(value);
}
inline void Task::add_successors(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_add_successors(value);
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.Task.successors)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Task::_internal_successors() const {
  return successors_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >&
Task::successors() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.Task.successors)
  return _internal_successors();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Task::_internal_mutable_successors() {
  return &successors_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< ::PROTOBUF_NAMESPACE_ID::int32 >*
Task::mutable_successors() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.Task.successors)
  return _internal_mutable_successors();
}

// repeated .operations_research.data.rcpsp.Recipe recipes = 2;
inline int Task::_internal_recipes_size() const {
  return recipes_.size();
}
inline int Task::recipes_size() const {
  return _internal_recipes_size();
}
inline void Task::clear_recipes() {
  recipes_.Clear();
}
inline ::operations_research::data::rcpsp::Recipe* Task::mutable_recipes(int index) {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.Task.recipes)
  return recipes_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Recipe >*
Task::mutable_recipes() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.Task.recipes)
  return &recipes_;
}
inline const ::operations_research::data::rcpsp::Recipe& Task::_internal_recipes(int index) const {
  return recipes_.Get(index);
}
inline const ::operations_research::data::rcpsp::Recipe& Task::recipes(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Task.recipes)
  return _internal_recipes(index);
}
inline ::operations_research::data::rcpsp::Recipe* Task::_internal_add_recipes() {
  return recipes_.Add();
}
inline ::operations_research::data::rcpsp::Recipe* Task::add_recipes() {
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.Task.recipes)
  return _internal_add_recipes();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Recipe >&
Task::recipes() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.Task.recipes)
  return recipes_;
}

// repeated .operations_research.data.rcpsp.PerSuccessorDelays successor_delays = 3;
inline int Task::_internal_successor_delays_size() const {
  return successor_delays_.size();
}
inline int Task::successor_delays_size() const {
  return _internal_successor_delays_size();
}
inline void Task::clear_successor_delays() {
  successor_delays_.Clear();
}
inline ::operations_research::data::rcpsp::PerSuccessorDelays* Task::mutable_successor_delays(int index) {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.Task.successor_delays)
  return successor_delays_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerSuccessorDelays >*
Task::mutable_successor_delays() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.Task.successor_delays)
  return &successor_delays_;
}
inline const ::operations_research::data::rcpsp::PerSuccessorDelays& Task::_internal_successor_delays(int index) const {
  return successor_delays_.Get(index);
}
inline const ::operations_research::data::rcpsp::PerSuccessorDelays& Task::successor_delays(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.Task.successor_delays)
  return _internal_successor_delays(index);
}
inline ::operations_research::data::rcpsp::PerSuccessorDelays* Task::_internal_add_successor_delays() {
  return successor_delays_.Add();
}
inline ::operations_research::data::rcpsp::PerSuccessorDelays* Task::add_successor_delays() {
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.Task.successor_delays)
  return _internal_add_successor_delays();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::PerSuccessorDelays >&
Task::successor_delays() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.Task.successor_delays)
  return successor_delays_;
}

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

// RcpspProblem

// repeated .operations_research.data.rcpsp.Resource resources = 1;
inline int RcpspProblem::_internal_resources_size() const {
  return resources_.size();
}
inline int RcpspProblem::resources_size() const {
  return _internal_resources_size();
}
inline void RcpspProblem::clear_resources() {
  resources_.Clear();
}
inline ::operations_research::data::rcpsp::Resource* RcpspProblem::mutable_resources(int index) {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.RcpspProblem.resources)
  return resources_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Resource >*
RcpspProblem::mutable_resources() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.RcpspProblem.resources)
  return &resources_;
}
inline const ::operations_research::data::rcpsp::Resource& RcpspProblem::_internal_resources(int index) const {
  return resources_.Get(index);
}
inline const ::operations_research::data::rcpsp::Resource& RcpspProblem::resources(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.resources)
  return _internal_resources(index);
}
inline ::operations_research::data::rcpsp::Resource* RcpspProblem::_internal_add_resources() {
  return resources_.Add();
}
inline ::operations_research::data::rcpsp::Resource* RcpspProblem::add_resources() {
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.RcpspProblem.resources)
  return _internal_add_resources();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Resource >&
RcpspProblem::resources() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.RcpspProblem.resources)
  return resources_;
}

// repeated .operations_research.data.rcpsp.Task tasks = 2;
inline int RcpspProblem::_internal_tasks_size() const {
  return tasks_.size();
}
inline int RcpspProblem::tasks_size() const {
  return _internal_tasks_size();
}
inline void RcpspProblem::clear_tasks() {
  tasks_.Clear();
}
inline ::operations_research::data::rcpsp::Task* RcpspProblem::mutable_tasks(int index) {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.RcpspProblem.tasks)
  return tasks_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Task >*
RcpspProblem::mutable_tasks() {
  // @@protoc_insertion_point(field_mutable_list:operations_research.data.rcpsp.RcpspProblem.tasks)
  return &tasks_;
}
inline const ::operations_research::data::rcpsp::Task& RcpspProblem::_internal_tasks(int index) const {
  return tasks_.Get(index);
}
inline const ::operations_research::data::rcpsp::Task& RcpspProblem::tasks(int index) const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.tasks)
  return _internal_tasks(index);
}
inline ::operations_research::data::rcpsp::Task* RcpspProblem::_internal_add_tasks() {
  return tasks_.Add();
}
inline ::operations_research::data::rcpsp::Task* RcpspProblem::add_tasks() {
  // @@protoc_insertion_point(field_add:operations_research.data.rcpsp.RcpspProblem.tasks)
  return _internal_add_tasks();
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::operations_research::data::rcpsp::Task >&
RcpspProblem::tasks() const {
  // @@protoc_insertion_point(field_list:operations_research.data.rcpsp.RcpspProblem.tasks)
  return tasks_;
}

// bool is_consumer_producer = 3;
inline void RcpspProblem::clear_is_consumer_producer() {
  is_consumer_producer_ = false;
}
inline bool RcpspProblem::_internal_is_consumer_producer() const {
  return is_consumer_producer_;
}
inline bool RcpspProblem::is_consumer_producer() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.is_consumer_producer)
  return _internal_is_consumer_producer();
}
inline void RcpspProblem::_internal_set_is_consumer_producer(bool value) {
  
  is_consumer_producer_ = value;
}
inline void RcpspProblem::set_is_consumer_producer(bool value) {
  _internal_set_is_consumer_producer(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.is_consumer_producer)
}

// bool is_resource_investment = 4;
inline void RcpspProblem::clear_is_resource_investment() {
  is_resource_investment_ = false;
}
inline bool RcpspProblem::_internal_is_resource_investment() const {
  return is_resource_investment_;
}
inline bool RcpspProblem::is_resource_investment() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.is_resource_investment)
  return _internal_is_resource_investment();
}
inline void RcpspProblem::_internal_set_is_resource_investment(bool value) {
  
  is_resource_investment_ = value;
}
inline void RcpspProblem::set_is_resource_investment(bool value) {
  _internal_set_is_resource_investment(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.is_resource_investment)
}

// bool is_rcpsp_max = 5;
inline void RcpspProblem::clear_is_rcpsp_max() {
  is_rcpsp_max_ = false;
}
inline bool RcpspProblem::_internal_is_rcpsp_max() const {
  return is_rcpsp_max_;
}
inline bool RcpspProblem::is_rcpsp_max() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.is_rcpsp_max)
  return _internal_is_rcpsp_max();
}
inline void RcpspProblem::_internal_set_is_rcpsp_max(bool value) {
  
  is_rcpsp_max_ = value;
}
inline void RcpspProblem::set_is_rcpsp_max(bool value) {
  _internal_set_is_rcpsp_max(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.is_rcpsp_max)
}

// int32 deadline = 6;
inline void RcpspProblem::clear_deadline() {
  deadline_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_deadline() const {
  return deadline_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::deadline() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.deadline)
  return _internal_deadline();
}
inline void RcpspProblem::_internal_set_deadline(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  deadline_ = value;
}
inline void RcpspProblem::set_deadline(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_deadline(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.deadline)
}

// int32 horizon = 7;
inline void RcpspProblem::clear_horizon() {
  horizon_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_horizon() const {
  return horizon_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::horizon() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.horizon)
  return _internal_horizon();
}
inline void RcpspProblem::_internal_set_horizon(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  horizon_ = value;
}
inline void RcpspProblem::set_horizon(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_horizon(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.horizon)
}

// int32 release_date = 8;
inline void RcpspProblem::clear_release_date() {
  release_date_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_release_date() const {
  return release_date_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::release_date() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.release_date)
  return _internal_release_date();
}
inline void RcpspProblem::_internal_set_release_date(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  release_date_ = value;
}
inline void RcpspProblem::set_release_date(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_release_date(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.release_date)
}

// int32 tardiness_cost = 9;
inline void RcpspProblem::clear_tardiness_cost() {
  tardiness_cost_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_tardiness_cost() const {
  return tardiness_cost_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::tardiness_cost() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.tardiness_cost)
  return _internal_tardiness_cost();
}
inline void RcpspProblem::_internal_set_tardiness_cost(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  tardiness_cost_ = value;
}
inline void RcpspProblem::set_tardiness_cost(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_tardiness_cost(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.tardiness_cost)
}

// int32 mpm_time = 10;
inline void RcpspProblem::clear_mpm_time() {
  mpm_time_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_mpm_time() const {
  return mpm_time_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::mpm_time() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.mpm_time)
  return _internal_mpm_time();
}
inline void RcpspProblem::_internal_set_mpm_time(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  mpm_time_ = value;
}
inline void RcpspProblem::set_mpm_time(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_mpm_time(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.mpm_time)
}

// int64 seed = 11;
inline void RcpspProblem::clear_seed() {
  seed_ = PROTOBUF_LONGLONG(0);
}
inline ::PROTOBUF_NAMESPACE_ID::int64 RcpspProblem::_internal_seed() const {
  return seed_;
}
inline ::PROTOBUF_NAMESPACE_ID::int64 RcpspProblem::seed() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.seed)
  return _internal_seed();
}
inline void RcpspProblem::_internal_set_seed(::PROTOBUF_NAMESPACE_ID::int64 value) {
  
  seed_ = value;
}
inline void RcpspProblem::set_seed(::PROTOBUF_NAMESPACE_ID::int64 value) {
  _internal_set_seed(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.seed)
}

// string basedata = 12;
inline void RcpspProblem::clear_basedata() {
  basedata_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& RcpspProblem::basedata() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.basedata)
  return _internal_basedata();
}
inline void RcpspProblem::set_basedata(const std::string& value) {
  _internal_set_basedata(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.basedata)
}
inline std::string* RcpspProblem::mutable_basedata() {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.RcpspProblem.basedata)
  return _internal_mutable_basedata();
}
inline const std::string& RcpspProblem::_internal_basedata() const {
  return basedata_.Get();
}
inline void RcpspProblem::_internal_set_basedata(const std::string& value) {
  
  basedata_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void RcpspProblem::set_basedata(std::string&& value) {
  
  basedata_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:operations_research.data.rcpsp.RcpspProblem.basedata)
}
inline void RcpspProblem::set_basedata(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  basedata_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:operations_research.data.rcpsp.RcpspProblem.basedata)
}
inline void RcpspProblem::set_basedata(const char* value,
    size_t size) {
  
  basedata_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:operations_research.data.rcpsp.RcpspProblem.basedata)
}
inline std::string* RcpspProblem::_internal_mutable_basedata() {
  
  return basedata_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* RcpspProblem::release_basedata() {
  // @@protoc_insertion_point(field_release:operations_research.data.rcpsp.RcpspProblem.basedata)
  return basedata_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void RcpspProblem::set_allocated_basedata(std::string* basedata) {
  if (basedata != nullptr) {
    
  } else {
    
  }
  basedata_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), basedata,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:operations_research.data.rcpsp.RcpspProblem.basedata)
}
inline std::string* RcpspProblem::unsafe_arena_release_basedata() {
  // @@protoc_insertion_point(field_unsafe_arena_release:operations_research.data.rcpsp.RcpspProblem.basedata)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return basedata_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void RcpspProblem::unsafe_arena_set_allocated_basedata(
    std::string* basedata) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (basedata != nullptr) {
    
  } else {
    
  }
  basedata_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      basedata, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.data.rcpsp.RcpspProblem.basedata)
}

// int32 due_date = 13;
inline void RcpspProblem::clear_due_date() {
  due_date_ = 0;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::_internal_due_date() const {
  return due_date_;
}
inline ::PROTOBUF_NAMESPACE_ID::int32 RcpspProblem::due_date() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.due_date)
  return _internal_due_date();
}
inline void RcpspProblem::_internal_set_due_date(::PROTOBUF_NAMESPACE_ID::int32 value) {
  
  due_date_ = value;
}
inline void RcpspProblem::set_due_date(::PROTOBUF_NAMESPACE_ID::int32 value) {
  _internal_set_due_date(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.due_date)
}

// string name = 14;
inline void RcpspProblem::clear_name() {
  name_.ClearToEmpty(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline const std::string& RcpspProblem::name() const {
  // @@protoc_insertion_point(field_get:operations_research.data.rcpsp.RcpspProblem.name)
  return _internal_name();
}
inline void RcpspProblem::set_name(const std::string& value) {
  _internal_set_name(value);
  // @@protoc_insertion_point(field_set:operations_research.data.rcpsp.RcpspProblem.name)
}
inline std::string* RcpspProblem::mutable_name() {
  // @@protoc_insertion_point(field_mutable:operations_research.data.rcpsp.RcpspProblem.name)
  return _internal_mutable_name();
}
inline const std::string& RcpspProblem::_internal_name() const {
  return name_.Get();
}
inline void RcpspProblem::_internal_set_name(const std::string& value) {
  
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), value, GetArena());
}
inline void RcpspProblem::set_name(std::string&& value) {
  
  name_.Set(
    &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::move(value), GetArena());
  // @@protoc_insertion_point(field_set_rvalue:operations_research.data.rcpsp.RcpspProblem.name)
}
inline void RcpspProblem::set_name(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(value),
              GetArena());
  // @@protoc_insertion_point(field_set_char:operations_research.data.rcpsp.RcpspProblem.name)
}
inline void RcpspProblem::set_name(const char* value,
    size_t size) {
  
  name_.Set(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), ::std::string(
      reinterpret_cast<const char*>(value), size), GetArena());
  // @@protoc_insertion_point(field_set_pointer:operations_research.data.rcpsp.RcpspProblem.name)
}
inline std::string* RcpspProblem::_internal_mutable_name() {
  
  return name_.Mutable(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline std::string* RcpspProblem::release_name() {
  // @@protoc_insertion_point(field_release:operations_research.data.rcpsp.RcpspProblem.name)
  return name_.Release(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), GetArena());
}
inline void RcpspProblem::set_allocated_name(std::string* name) {
  if (name != nullptr) {
    
  } else {
    
  }
  name_.SetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), name,
      GetArena());
  // @@protoc_insertion_point(field_set_allocated:operations_research.data.rcpsp.RcpspProblem.name)
}
inline std::string* RcpspProblem::unsafe_arena_release_name() {
  // @@protoc_insertion_point(field_unsafe_arena_release:operations_research.data.rcpsp.RcpspProblem.name)
  GOOGLE_DCHECK(GetArena() != nullptr);
  
  return name_.UnsafeArenaRelease(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      GetArena());
}
inline void RcpspProblem::unsafe_arena_set_allocated_name(
    std::string* name) {
  GOOGLE_DCHECK(GetArena() != nullptr);
  if (name != nullptr) {
    
  } else {
    
  }
  name_.UnsafeArenaSetAllocated(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
      name, GetArena());
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:operations_research.data.rcpsp.RcpspProblem.name)
}

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

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

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

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

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


// @@protoc_insertion_point(namespace_scope)

}  // namespace rcpsp
}  // namespace data
}  // namespace operations_research

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_ortools_2fdata_2frcpsp_2eproto
