#pragma once /* MOUNT CONTROL COMPONENTS LIBRARY */ /* GENERIC MOUNT REFERENCE IMPLEMENTATION */ #include "mcc_generics.h" namespace mcc { template class MccGenericMount : public TelemetryT, public PZoneContT, public LoggerT { public: MccGenericMount(TelemetryT telemetry, PZoneContT pzone_cont, LoggerT logger) : TelemetryT(std::move(telemetry)), PZoneContT(std::move(pzone_cont)), LoggerT(std::move(logger)) { } virtual ~MccGenericMount() = default; template SelfT> auto slewToTarget(this SelfT&& self) { return std::forward(self).slewToTarget(); } template SelfT> auto trackTarget(this SelfT&& self) { return std::forward(self).trackTarget(); } template SelfT> auto startGuidingTarget(this SelfT&& self) { return std::forward(self).startGuidingTarget(); } template SelfT> auto stopGuidingTarget(this SelfT&& self) { return std::forward(self).stopGuidingTarget(); } template SelfT> auto stopMount(this SelfT&& self) { return std::forward(self).stopMount(); } }; } // namespace mcc