...
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
|
||||
|
||||
#include <concepts>
|
||||
#include <string>
|
||||
|
||||
// #include "mcc_traits.h"
|
||||
|
||||
@@ -14,11 +15,14 @@ namespace mcc::traits
|
||||
{
|
||||
|
||||
template <typename T>
|
||||
concept mcc_astrom_engine_c = requires(T t) {
|
||||
concept mcc_astrom_engine_c = requires(T t, const T t_const) {
|
||||
typename T::engine_err_t;
|
||||
typename T::engine_state_t;
|
||||
requires std::movable<typename T::engine_state_t>;
|
||||
|
||||
typename T::coord_t;
|
||||
typename T::prop_motion_t;
|
||||
typename T::parallax_t;
|
||||
typename T::time_point_t;
|
||||
typename T::juldate_t;
|
||||
typename T::gst_t;
|
||||
@@ -30,15 +34,20 @@ concept mcc_astrom_engine_c = requires(T t) {
|
||||
|
||||
{ t.updateState(std::declval<typename T::engine_state_t>()) };
|
||||
|
||||
{ t_const.getState() } -> std::same_as<typename T::engine_state_t>;
|
||||
|
||||
{ t_const.errorString(std::declval<typename T::engine_err_t>()) } -> std::convertible_to<std::string>;
|
||||
|
||||
/* coordinates conversional methods */
|
||||
|
||||
// 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::prop_motion_t>(), std::declval<typename T::prop_motion_t>(),
|
||||
std::declval<typename T::parallax_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::eo_t&>())
|
||||
std::declval<typename T::coord_t&>(), std::declval<typename T::eo_t&>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
|
||||
// compute hour angle and declination from azimuth and altitude: hadec2azalt(ha, dec, az, alt)
|
||||
@@ -69,9 +78,10 @@ concept mcc_astrom_engine_c = requires(T t) {
|
||||
// requires mcc_systime_c<mcc_func_arg1_t<decltype(&T::greg2jul)>>;
|
||||
// requires mcc_output_arg_c<mcc_func_argN_t<decltype(&T::greg2jul), 2>, typename T::juldate_t>;
|
||||
|
||||
// apparent sideral time: apparentSiderTime(jd, gst)
|
||||
// apparent sideral time: apparentSiderTime(jd, gst, islocal)
|
||||
{
|
||||
t.apparentSiderTime(std::declval<typename T::juldate_t&>(), std::declval<typename T::gst_t&>())
|
||||
t.apparentSiderTime(std::declval<typename T::juldate_t>(), std::declval<typename T::gst_t&>(),
|
||||
std::declval<bool>())
|
||||
} -> std::same_as<typename T::engine_err_t>;
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user