Program Listing for File base_flocking.hpp

Return to documentation for file (cosm/flocking/base_flocking.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "cosm/spatial/strategy/base_strategy.hpp"
#include "cosm/flocking/config/flocking_config.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace cosm::flocking {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class base_flocking : public csstrategy::base_strategy,
                      public rpprototype::clonable<base_flocking> {
 public:
  base_flocking(const cflocking::config::flocking_config* config,
                const csfsm::fsm_params* params,
                rmath::rng* rng);

  /* Not move/copy constructable/assignable by default */
  base_flocking(const base_flocking&) = delete;
  base_flocking& operator=(const base_flocking&) = delete;
  base_flocking(base_flocking&&) = delete;
  base_flocking& operator=(base_flocking&&) = delete;

 protected:
  const cflocking::config::flocking_config* config(void) const {
    return &mc_config;
  }

 private:
  /* clang-format off */
  const cflocking::config::flocking_config mc_config;
  /* clang-format on */
};

} /* namespace cosm::flocking */