This commit is contained in:
Timur A. Fatkhullin
2025-07-14 23:41:20 +03:00
parent 2dbb23dc46
commit 62258a991b
4 changed files with 42 additions and 23 deletions

View File

@@ -68,8 +68,8 @@ namespace mcc::traits
template <typename T>
concept mcc_astrom_engine_c = requires(T t, const T t_const) {
requires mcc_error_c<typename T::error_t>;
typename T::engine_state_t;
requires std::movable<typename T::engine_state_t>;
// typename T::engine_state_t;
// requires std::movable<typename T::engine_state_t>;
typename T::coord_t; // type for coordinates representation
typename T::time_point_t; // type to represent UTC time point
@@ -81,20 +81,21 @@ concept mcc_astrom_engine_c = requires(T t, const T t_const) {
typename T::refract_result_t;
{ t.setState(std::declval<typename T::engine_state_t>()) };
// { t.setState(std::declval<typename T::engine_state_t>()) };
{ t_const.getState() } -> std::same_as<typename T::engine_state_t>;
// { t_const.getState() } -> std::same_as<typename T::engine_state_t>;
{ t_const.errorString(std::declval<typename T::error_t>()) } -> mcc_formattable;
/* coordinates conversional methods */
// ICRS RA and DEC to observed place: icrs2obs(ra, dec, jd, ra_app, dec_app, ha, az, alt)
// ICRS RA and DEC to observed place: icrs2obs(ra, dec, jd, ra_app, dec_app, ha, az, alt, eo)
{
t.icrs2obs(std::declval<typename T::coord_t>(), std::declval<typename T::coord_t>(),
std::declval<typename T::juldate_t>(), std::declval<typename T::coord_t&>(),
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>(),
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>())
std::declval<typename T::coord_t&>(), std::declval<typename T::coord_t&>(),
std::declval<typename T::eo_t&>())
} -> std::same_as<typename T::error_t>;
// compute hour angle and declination from azimuth and altitude: hadec2azalt(ha, dec, az, alt)
@@ -185,6 +186,7 @@ concept mcc_mount_pec_c = requires(T t, const T t_const) {
requires std::same_as<decltype(T::mountType), const MccMountType>;
[]() {
static constexpr MccMountType val = T::mountType;
return val;
}(); // to ensure 'mountType' can be used in compile-time context
};
@@ -307,6 +309,7 @@ concept mcc_prohibited_zone_c =
requires std::same_as<decltype(T::zoneCoordPairKind), const MccCoordPairKind>;
[]() {
constexpr MccCoordPairKind val = T::zoneCoordPairKind;
return val;
}(); // to ensure that 'zoneCoordPairKind' can be used at compile-time context
};
@@ -350,7 +353,7 @@ concept mcc_prohibited_zone_c =
template <typename T>
concept mcc_mount_config_c = requires(T t) {
concept mcc_mount_config_c = std::movable<T> && requires(T t) {
// { t.astromEngine() } -> mcc_astrom_engine_c;
// { t.pec() } -> mcc_mount_pec_c;
// { t.hardware() } -> mcc_mount_hardware_c;