From 47876812c54faff745367b85533d0862cc3097ba Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Wed, 14 Dec 2022 12:14:18 +1100 Subject: [PATCH] ArduCopter: code-generate chan-fetching methods A recent PR had to change every single one of these methods, which was kind of unfortunate. So generate the methods using a #define so the duplication happens at preprocessor-time. --- ArduCopter/GCS_Copter.h | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/ArduCopter/GCS_Copter.h b/ArduCopter/GCS_Copter.h index f51d5acd1b..e00ec46f37 100644 --- a/ArduCopter/GCS_Copter.h +++ b/ArduCopter/GCS_Copter.h @@ -9,21 +9,12 @@ class GCS_Copter : public GCS public: - // return GCS link at offset ofs - GCS_MAVLINK_Copter *chan(const uint8_t ofs) override { - if (ofs > _num_gcs) { - INTERNAL_ERROR(AP_InternalError::error_t::gcs_offset); - return nullptr; - } - return (GCS_MAVLINK_Copter *)_chan[ofs]; - } - const GCS_MAVLINK_Copter *chan(const uint8_t ofs) const override { - if (ofs > _num_gcs) { - INTERNAL_ERROR(AP_InternalError::error_t::gcs_offset); - return nullptr; - } - return (GCS_MAVLINK_Copter *)_chan[ofs]; - } + // the following define expands to a pair of methods to retrieve a + // pointer to an object of the correct subclass for the link at + // offset ofs. These are of the form: + // GCS_MAVLINK_XXXX *chan(const uint8_t ofs) override; + // const GCS_MAVLINK_XXXX *chan(const uint8_t ofs) override const; + GCS_MAVLINK_CHAN_METHOD_DEFINITIONS(GCS_MAVLINK_Copter); void update_vehicle_sensor_status_flags(void) override;