Program Listing for File base_grid_los.hpp

Return to documentation for file (cosm/repr/base_grid_los.hpp)

#pragma once

/*******************************************************************************
 * Includes
 ******************************************************************************/
#include "rcppsw/er/client.hpp"
#include "rcppsw/math/vector2.hpp"
#include "rcppsw/types/discretize_ratio.hpp"
#include "rcppsw/types/type_uuid.hpp"

#include "cosm/repr/base_grid_view_entity.hpp"

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

/*******************************************************************************
 * Class Definitions
 ******************************************************************************/
template <typename TGridViewEntityType, typename TFieldCoordRType>
class base_grid_los
    : public rer::client<base_grid_los<TGridViewEntityType, TFieldCoordRType>>,
      public TGridViewEntityType {
 public:
  using field_coord_rtype = TFieldCoordRType;
  using los_coord_type = rmath::vector2z;
  using grid_view_entity_type = TGridViewEntityType;

  using typename grid_view_entity_type::cell_type;
  using typename grid_view_entity_type::grid_type;
  using typename grid_view_entity_type::grid_view_type;
  using field_coord_dtype = typename grid_view_entity_type::coord_type;

  using grid_view_entity_type::access;
  using grid_view_entity_type::xdsize;
  using grid_view_entity_type::ydsize;

  virtual field_coord_dtype abs_ll(void) const = 0;
  virtual field_coord_dtype abs_ul(void) const = 0;
  virtual field_coord_dtype abs_lr(void) const = 0;
  virtual field_coord_dtype abs_ur(void) const = 0;

  base_grid_los(const rtypes::type_uuid& c_id,
                const grid_view_type& c_view,
                const rtypes::discretize_ratio& c_resolution)
      : ER_CLIENT_INIT("cosm.repr.base_grid_los"),
        grid_view_entity_type(c_id, c_view, c_resolution) {}
};

} /* namespace cosm::repr */