Program Listing for File strategy_set.hpp

Return to documentation for file (cosm/foraging/fsm/strategy_set.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include <memory>

#include "cosm/cosm.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace cosm::spatial::strategy::nest::acq { class base_acq;}
namespace cosm::spatial::strategy::nest::exit { class base_exit;}
namespace cosm::spatial::strategy::explore { class base_explore;}
namespace cosm::spatial::strategy::blocks::drop { class base_drop;}

namespace cosm::foraging::fsm {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
struct strategy_set {
  strategy_set(void);
  strategy_set(std::unique_ptr<cssexplore::base_explore> explore_in,
               std::unique_ptr<cssnest::acq::base_acq> nest_acq_in,
               std::unique_ptr<cssnest::exit::base_exit> nest_exit_in,
               std::unique_ptr<cssblocks::drop::base_drop> block_drop);

  ~strategy_set(void);

  strategy_set(strategy_set&& other);

  std::unique_ptr<cssexplore::base_explore> explore{nullptr};
  std::unique_ptr<cssnest::acq::base_acq> nest_acq{nullptr};
  std::unique_ptr<cssnest::exit::base_exit> nest_exit{nullptr};
  std::unique_ptr<cssblocks::drop::base_drop> block_drop{nullptr};
};

} /* namespace cosm::foraging::fsm */