Program Listing for File nest_zone_metrics.hpp

Return to documentation for file (cosm/spatial/metrics/nest_zone_metrics.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/spatial/euclidean_dist.hpp"
#include "rcppsw/metrics/base_metrics.hpp"
#include "rcppsw/math/vector3.hpp"
#include "rcppsw/types/timestep.hpp"

#include "cosm/cosm.hpp"

/*******************************************************************************
 * Namespaces/Decls
 ******************************************************************************/
namespace cosm::spatial::metrics {

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
class nest_zone_metrics : public virtual rmetrics::base_metrics {
 public:
  nest_zone_metrics(void) = default;
  ~nest_zone_metrics(void) override = default;

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

  virtual bool in_nest(void) const = 0;

  virtual bool entered_nest(void) const = 0;

  virtual bool exited_nest(void) const = 0;

  virtual rtypes::timestep nest_duration(void) const = 0;

  virtual rtypes::timestep nest_entry_time(void) const = 0;
};

} /* namespace cosm::spatial::metrics */