From 26a6b8cec771b3d17a4982e7f433f4618f33d86c Mon Sep 17 00:00:00 2001 From: Rene Paris <rene.paris@in-tech.com> Date: Wed, 4 Jan 2023 15:41:24 +0100 Subject: [PATCH] For discussion: forced [[nodiscard]] --- .clang-tidy | 3 -- include/MantleAPI/Common/i_geometry_helper.h | 6 ++-- include/MantleAPI/Common/i_identifiable.h | 4 +-- include/MantleAPI/Common/orientation.h | 4 +-- include/MantleAPI/Common/spline.h | 4 +-- include/MantleAPI/Execution/i_environment.h | 12 +++---- .../MantleAPI/Execution/i_scenario_engine.h | 4 +-- include/MantleAPI/Map/i_coord_converter.h | 2 +- .../Map/i_lane_location_query_service.h | 32 +++++++++---------- include/MantleAPI/Map/i_route.h | 16 +++++----- .../MantleAPI/Traffic/i_controller_config.h | 2 +- .../Traffic/i_controller_repository.h | 2 +- include/MantleAPI/Traffic/i_entity.h | 26 +++++++-------- .../MantleAPI/Traffic/i_entity_repository.h | 8 ++--- 14 files changed, 61 insertions(+), 64 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index c6046c51..fb1e61e2 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -17,10 +17,7 @@ Checks: > misc-*, -misc-non-private-member-variables-in-classes, modernize-*, - -modernize-use-nodiscard, - -modernize-use-equals-default, -modernize-use-trailing-return-type, - -modernize-use-using, performance-*, readability-*, -readability-identifier-naming, diff --git a/include/MantleAPI/Common/i_geometry_helper.h b/include/MantleAPI/Common/i_geometry_helper.h index 214c6859..61a334d2 100644 --- a/include/MantleAPI/Common/i_geometry_helper.h +++ b/include/MantleAPI/Common/i_geometry_helper.h @@ -34,7 +34,7 @@ public: /// the global coordinate system /// @param local_translation desired translation in local coordinates /// @return translated position in global coordinates - virtual Vec3<units::length::meter_t> TranslateGlobalPositionLocally( + [[nodiscard]] virtual Vec3<units::length::meter_t> TranslateGlobalPositionLocally( const Vec3<units::length::meter_t>& global_position, const Orientation3<units::angle::radian_t>& local_orientation, const Vec3<units::length::meter_t>& local_translation) const = 0; @@ -44,7 +44,7 @@ public: /// @param local_origin local coordinate system origin /// @param local_orientation local system orientation /// @return converted polyline points - virtual std::vector<Vec3<units::length::meter_t>> TransformPolylinePointsFromWorldToLocal( + [[nodiscard]] virtual std::vector<Vec3<units::length::meter_t>> TransformPolylinePointsFromWorldToLocal( const std::vector<Vec3<units::length::meter_t>>& polyline_points, const Vec3<units::length::meter_t>& local_origin, const Orientation3<units::angle::radian_t>& local_orientation) const = 0; @@ -54,7 +54,7 @@ public: /// @param local_origin local coordinate system origin /// @param local_orientation local system orientation /// @return transformed point - virtual Vec3<units::length::meter_t> TransformPositionFromWorldToLocal( + [[nodiscard]] virtual Vec3<units::length::meter_t> TransformPositionFromWorldToLocal( const Vec3<units::length::meter_t>& world_position, const Vec3<units::length::meter_t>& local_origin, const Orientation3<units::angle::radian_t>& local_orientation) const = 0; diff --git a/include/MantleAPI/Common/i_identifiable.h b/include/MantleAPI/Common/i_identifiable.h index a46500c7..f063d97a 100644 --- a/include/MantleAPI/Common/i_identifiable.h +++ b/include/MantleAPI/Common/i_identifiable.h @@ -31,12 +31,12 @@ public: virtual ~IIdentifiable() = default; /// The unique id is provided and maintained by the scenario simulator. - virtual UniqueId GetUniqueId() const = 0; + [[nodiscard]] virtual UniqueId GetUniqueId() const = 0; /// Scenario specific name of an object. /// /// The scenario description is responsible for keeping the name unique. virtual void SetName(const std::string& name) = 0; - virtual const std::string& GetName() const = 0; + [[nodiscard]] virtual const std::string& GetName() const = 0; }; } // namespace mantle_api diff --git a/include/MantleAPI/Common/orientation.h b/include/MantleAPI/Common/orientation.h index 58331452..47ac54a5 100644 --- a/include/MantleAPI/Common/orientation.h +++ b/include/MantleAPI/Common/orientation.h @@ -28,7 +28,7 @@ UNIT_ADD(angular_acceleration, namespace category { -typedef base_unit<detail::meter_ratio<0>, std::ratio<0>, std::ratio<-2>, std::ratio<1>> angular_acceleration_unit; +using angular_acceleration_unit = base_unit<detail::meter_ratio<0>, std::ratio<0>, std::ratio<-2>, std::ratio<1>>; } UNIT_ADD_CATEGORY_TRAIT(angular_acceleration) @@ -41,7 +41,7 @@ UNIT_ADD(angular_jerk, namespace category { -typedef base_unit<detail::meter_ratio<0>, std::ratio<0>, std::ratio<-3>, std::ratio<1>> angular_jerk_unit; +using angular_jerk_unit = base_unit<detail::meter_ratio<0>, std::ratio<0>, std::ratio<-3>, std::ratio<1>>; } UNIT_ADD_CATEGORY_TRAIT(angular_jerk) diff --git a/include/MantleAPI/Common/spline.h b/include/MantleAPI/Common/spline.h index 4c109eec..e5710508 100644 --- a/include/MantleAPI/Common/spline.h +++ b/include/MantleAPI/Common/spline.h @@ -34,7 +34,7 @@ UNIT_ADD(jerk, namespace category { -typedef base_unit<detail::meter_ratio<1>, std::ratio<0>, std::ratio<-3>> jerk_unit; +using jerk_unit = base_unit<detail::meter_ratio<1>, std::ratio<0>, std::ratio<-3>>; } UNIT_ADD_CATEGORY_TRAIT(jerk) @@ -47,7 +47,7 @@ UNIT_ADD(jerk_acceleration, namespace category { -typedef base_unit<detail::meter_ratio<1>, std::ratio<0>, std::ratio<-4>> jerk_acceleration_unit; +using jerk_acceleration_unit = base_unit<detail::meter_ratio<1>, std::ratio<0>, std::ratio<-4>>; } UNIT_ADD_CATEGORY_TRAIT(jerk_acceleration) diff --git a/include/MantleAPI/Execution/i_environment.h b/include/MantleAPI/Execution/i_environment.h index 2b244534..0d680ae6 100644 --- a/include/MantleAPI/Execution/i_environment.h +++ b/include/MantleAPI/Execution/i_environment.h @@ -63,17 +63,17 @@ public: /// /// @param entity_id The entity to check /// @param type The control strategy type - virtual bool HasControlStrategyGoalBeenReached(UniqueId entity_id, mantle_api::ControlStrategyType type) const = 0; + [[nodiscard]] virtual bool HasControlStrategyGoalBeenReached(UniqueId entity_id, mantle_api::ControlStrategyType type) const = 0; - virtual const ILaneLocationQueryService& GetQueryService() const = 0; - virtual const ICoordConverter* GetConverter() const = 0; - virtual const IGeometryHelper* GetGeometryHelper() const = 0; + [[nodiscard]] virtual const ILaneLocationQueryService& GetQueryService() const = 0; + [[nodiscard]] virtual const ICoordConverter* GetConverter() const = 0; + [[nodiscard]] virtual const IGeometryHelper* GetGeometryHelper() const = 0; virtual IEntityRepository& GetEntityRepository() = 0; - virtual const IEntityRepository& GetEntityRepository() const = 0; + [[nodiscard]] virtual const IEntityRepository& GetEntityRepository() const = 0; virtual IControllerRepository& GetControllerRepository() = 0; - virtual const IControllerRepository& GetControllerRepository() const = 0; + [[nodiscard]] virtual const IControllerRepository& GetControllerRepository() const = 0; /// @brief DateTime in UTC (converted from RFC 3339 standard) virtual void SetDateTime(mantle_api::Time time) = 0; diff --git a/include/MantleAPI/Execution/i_scenario_engine.h b/include/MantleAPI/Execution/i_scenario_engine.h index f4cbff81..e7bbbde8 100644 --- a/include/MantleAPI/Execution/i_scenario_engine.h +++ b/include/MantleAPI/Execution/i_scenario_engine.h @@ -30,7 +30,7 @@ public: virtual void Init() = 0; /// Provide information about the scenario loaded in `Init()` - virtual ScenarioInfo GetScenarioInfo() const = 0; + [[nodiscard]] virtual ScenarioInfo GetScenarioInfo() const = 0; /// Calculate the new state of the scenario implementation. /// @@ -40,7 +40,7 @@ public: /// Indicates whether the scenario implementation has finished processing the scenario (end of scenario is reached). /// @return `true` if processing the scenario is complete, `false` otherwise. - virtual bool IsFinished() const = 0; + [[nodiscard]] virtual bool IsFinished() const = 0; virtual void ActivateExternalHostControl() = 0; diff --git a/include/MantleAPI/Map/i_coord_converter.h b/include/MantleAPI/Map/i_coord_converter.h index 1b03af12..d4850f99 100644 --- a/include/MantleAPI/Map/i_coord_converter.h +++ b/include/MantleAPI/Map/i_coord_converter.h @@ -28,7 +28,7 @@ class ICoordConverter public: virtual ~ICoordConverter() = default; /// Converts a track position to its corresponding inertial position. - virtual Vec3<units::length::meter_t> Convert(Position position) const = 0; + [[nodiscard]] virtual Vec3<units::length::meter_t> Convert(Position position) const = 0; }; } // namespace mantle_api diff --git a/include/MantleAPI/Map/i_lane_location_query_service.h b/include/MantleAPI/Map/i_lane_location_query_service.h index 61eaef35..12434aac 100644 --- a/include/MantleAPI/Map/i_lane_location_query_service.h +++ b/include/MantleAPI/Map/i_lane_location_query_service.h @@ -52,7 +52,7 @@ public: /// @param position Position that shall be mapped to a lane /// @return Orientation of the lane at this position /// @throw If the position cannot be mapped to a lane - virtual Orientation3<units::angle::radian_t> GetLaneOrientation( + [[nodiscard]] virtual Orientation3<units::angle::radian_t> GetLaneOrientation( const Vec3<units::length::meter_t>& position) const = 0; /// @brief Shifts a position the given amount upwards along the lane normal. This function is used for shifting @@ -65,21 +65,21 @@ public: /// world z-direction is used instead of the lane normal for the shift /// @return Upwards shifted position /// @throw If the position cannot be mapped to a lane and allow_invalid_positions=false. - virtual Vec3<units::length::meter_t> GetUpwardsShiftedLanePosition(const Vec3<units::length::meter_t>& position, - double upwards_shift, - bool allow_invalid_positions = false) const = 0; + [[nodiscard]] virtual Vec3<units::length::meter_t> GetUpwardsShiftedLanePosition(const Vec3<units::length::meter_t>& position, + double upwards_shift, + bool allow_invalid_positions = false) const = 0; /// @brief Checks, if a given position can be mapped to a lane /// /// @param position Position to be checked /// @return true if the position can be mapped to a lane, false otherwise - virtual bool IsPositionOnLane(const Vec3<units::length::meter_t>& position) const = 0; + [[nodiscard]] virtual bool IsPositionOnLane(const Vec3<units::length::meter_t>& position) const = 0; /// @brief Returns a list of IDs representing all lanes enclosing the passed in position within their shape(s). /// /// @param position Position to search for the Lane IDs /// @return List of global lane IDs - virtual std::vector<UniqueId> GetLaneIdsAtPosition(const Vec3<units::length::meter_t>& position) const = 0; + [[nodiscard]] virtual std::vector<UniqueId> GetLaneIdsAtPosition(const Vec3<units::length::meter_t>& position) const = 0; /// @brief Calculate the new pose which is at a certain longitudinal distance from the reference_pose_on_lane /// following a direction. @@ -94,9 +94,9 @@ public: /// orientation is parallel to the lane orientation at the target position. The lateral offset from the lane /// center line stays the same as at reference_pose_on_lane. If the reference_pose_on_lane cannot be mapped to /// a lane or the target position would be beyond the road network limits, no value is returned. - virtual std::optional<Pose> FindLanePoseAtDistanceFrom(const Pose& reference_pose_on_lane, - units::length::meter_t distance, - Direction direction) const = 0; + [[nodiscard]] virtual std::optional<Pose> FindLanePoseAtDistanceFrom(const Pose& reference_pose_on_lane, + units::length::meter_t distance, + Direction direction) const = 0; /// @brief Calculate the longitudinal distance of two given positions on a lane. /// @@ -107,7 +107,7 @@ public: /// service implementation. /// No value returned if the distance is not calculable. - virtual std::optional<units::length::meter_t> GetLongitudinalLaneDistanceBetweenPositions( + [[nodiscard]] virtual std::optional<units::length::meter_t> GetLongitudinalLaneDistanceBetweenPositions( const mantle_api::Vec3<units::length::meter_t>& start_position, const mantle_api::Vec3<units::length::meter_t>& target_position) const = 0; @@ -126,10 +126,10 @@ public: /// parallel to the lane orientation at the target position. No value is returned, if the /// reference_pose_on_lane cannot be mapped to a lane or if the target position would be beyond the road /// network limits in longitudinal or lateral direction. - virtual std::optional<Pose> FindRelativeLanePoseAtDistanceFrom(const Pose& reference_pose_on_lane, - int relative_target_lane, - units::length::meter_t distance, - units::length::meter_t lateral_offset) const = 0; + [[nodiscard]] virtual std::optional<Pose> FindRelativeLanePoseAtDistanceFrom(const Pose& reference_pose_on_lane, + int relative_target_lane, + units::length::meter_t distance, + units::length::meter_t lateral_offset) const = 0; /// @brief Calculate the lane id of the relative target lane from a given position /// @@ -139,8 +139,8 @@ public: /// @return Lane id that is at the given lateral shift (relative_lane_target) from given position /// (reference_pose_on_lane). No value, if reference pose is not on a lane or if the lane doesn't have a /// suitable adjacent lane. - virtual std::optional<mantle_api::LaneId> GetRelativeLaneId(const mantle_api::Pose& reference_pose_on_lane, - int relative_lane_target) const = 0; + [[nodiscard]] virtual std::optional<mantle_api::LaneId> GetRelativeLaneId(const mantle_api::Pose& reference_pose_on_lane, + int relative_lane_target) const = 0; }; } // namespace mantle_api diff --git a/include/MantleAPI/Map/i_route.h b/include/MantleAPI/Map/i_route.h index eee882f8..4f32d9c4 100644 --- a/include/MantleAPI/Map/i_route.h +++ b/include/MantleAPI/Map/i_route.h @@ -28,14 +28,14 @@ class IRoute : public virtual IIdentifiable public: virtual IRoute& AddWaypoint(const Vec3<units::length::meter_t>& inert_pos) = 0; virtual IRoute& AddWaypoint(Vec3<units::length::meter_t>&& inert_pos) = 0; - virtual Vec3<units::length::meter_t> GetInertPos(units::length::meter_t route_pos, - LaneId lane_id, - units::length::meter_t lane_offset = units::length::meter_t{ - 0.0}) const = 0; - virtual units::length::meter_t GetLaneWidth(units::length::meter_t route_pos, LaneId lane_id) const = 0; - virtual LaneId GetLaneId(const Vec3<units::length::meter_t>& inert_pos) const = 0; - virtual units::length::meter_t GetDistanceFromStartTo(const Vec3<units::length::meter_t>& inert_pos) const = 0; - virtual units::length::meter_t GetLength() const = 0; + [[nodiscard]] virtual Vec3<units::length::meter_t> GetInertPos(units::length::meter_t route_pos, + LaneId lane_id, + units::length::meter_t lane_offset = units::length::meter_t{ + 0.0}) const = 0; + [[nodiscard]] virtual units::length::meter_t GetLaneWidth(units::length::meter_t route_pos, LaneId lane_id) const = 0; + [[nodiscard]] virtual LaneId GetLaneId(const Vec3<units::length::meter_t>& inert_pos) const = 0; + [[nodiscard]] virtual units::length::meter_t GetDistanceFromStartTo(const Vec3<units::length::meter_t>& inert_pos) const = 0; + [[nodiscard]] virtual units::length::meter_t GetLength() const = 0; }; } // namespace mantle_api diff --git a/include/MantleAPI/Traffic/i_controller_config.h b/include/MantleAPI/Traffic/i_controller_config.h index ce353309..a0c2a7a9 100644 --- a/include/MantleAPI/Traffic/i_controller_config.h +++ b/include/MantleAPI/Traffic/i_controller_config.h @@ -30,7 +30,7 @@ namespace mantle_api { struct IControllerConfig { - IControllerConfig() {} + IControllerConfig() = default; IControllerConfig(const IControllerConfig& controller_config) : map_query_service(controller_config.map_query_service) { diff --git a/include/MantleAPI/Traffic/i_controller_repository.h b/include/MantleAPI/Traffic/i_controller_repository.h index d245c9a2..864e44d0 100644 --- a/include/MantleAPI/Traffic/i_controller_repository.h +++ b/include/MantleAPI/Traffic/i_controller_repository.h @@ -30,7 +30,7 @@ public: [[deprecated]] virtual IController& Create(UniqueId id, std::unique_ptr<IControllerConfig> config) = 0; // deprecated virtual std::optional<std::reference_wrapper<IController>> Get(UniqueId id) = 0; - virtual bool Contains(UniqueId id) const = 0; + [[nodiscard]] virtual bool Contains(UniqueId id) const = 0; virtual void Delete(UniqueId id) = 0; diff --git a/include/MantleAPI/Traffic/i_entity.h b/include/MantleAPI/Traffic/i_entity.h index 3918b9d2..b8d33bd9 100644 --- a/include/MantleAPI/Traffic/i_entity.h +++ b/include/MantleAPI/Traffic/i_entity.h @@ -53,43 +53,43 @@ public: /// The position of the entity is the geometric center of its bounding box. The origin of the entity coordinate system /// can be defined flexibly in relation to the geometric center (see bounding box). virtual void SetPosition(const Vec3<units::length::meter_t>& inert_pos) = 0; - virtual Vec3<units::length::meter_t> GetPosition() const = 0; + [[nodiscard]] virtual Vec3<units::length::meter_t> GetPosition() const = 0; virtual void SetVelocity(const Vec3<units::velocity::meters_per_second_t>& velocity) = 0; - virtual Vec3<units::velocity::meters_per_second_t> GetVelocity() const = 0; + [[nodiscard]] virtual Vec3<units::velocity::meters_per_second_t> GetVelocity() const = 0; virtual void SetAcceleration(const Vec3<units::acceleration::meters_per_second_squared_t>& acceleration) = 0; - virtual Vec3<units::acceleration::meters_per_second_squared_t> GetAcceleration() const = 0; + [[nodiscard]] virtual Vec3<units::acceleration::meters_per_second_squared_t> GetAcceleration() const = 0; virtual void SetOrientation(const Orientation3<units::angle::radian_t>& orientation) = 0; - virtual Orientation3<units::angle::radian_t> GetOrientation() const = 0; + [[nodiscard]] virtual Orientation3<units::angle::radian_t> GetOrientation() const = 0; virtual void SetOrientationRate( const Orientation3<units::angular_velocity::radians_per_second_t>& orientation_rate) = 0; - virtual Orientation3<units::angular_velocity::radians_per_second_t> GetOrientationRate() const = 0; + [[nodiscard]] virtual Orientation3<units::angular_velocity::radians_per_second_t> GetOrientationRate() const = 0; virtual void SetOrientationAcceleration( const Orientation3<units::angular_acceleration::radians_per_second_squared_t>& orientation_acceleration) = 0; - virtual Orientation3<units::angular_acceleration::radians_per_second_squared_t> GetOrientationAcceleration() + [[nodiscard]] virtual Orientation3<units::angular_acceleration::radians_per_second_squared_t> GetOrientationAcceleration() const = 0; virtual void SetProperties(std::unique_ptr<mantle_api::EntityProperties> properties) = 0; - virtual EntityProperties* GetProperties() const = 0; + [[nodiscard]] virtual EntityProperties* GetProperties() const = 0; virtual void SetAssignedLaneIds(const std::vector<std::uint64_t>& assigned_lane_ids) = 0; - virtual std::vector<std::uint64_t> GetAssignedLaneIds() const = 0; + [[nodiscard]] virtual std::vector<std::uint64_t> GetAssignedLaneIds() const = 0; virtual void SetVisibility(const EntityVisibilityConfig& visibility) = 0; - virtual EntityVisibilityConfig GetVisibility() const = 0; + [[nodiscard]] virtual EntityVisibilityConfig GetVisibility() const = 0; }; class IVehicle : public virtual IEntity { public: - VehicleProperties* GetProperties() const override = 0; + [[nodiscard]] VehicleProperties* GetProperties() const override = 0; virtual void SetIndicatorState(IndicatorState state) = 0; - virtual IndicatorState GetIndicatorState() const = 0; + [[nodiscard]] virtual IndicatorState GetIndicatorState() const = 0; // virtual bool IsHost() const = 0; // virtual void SetHost() = 0; @@ -98,13 +98,13 @@ public: class IPedestrian : public virtual IEntity { public: - PedestrianProperties* GetProperties() const override = 0; + [[nodiscard]] PedestrianProperties* GetProperties() const override = 0; }; class IStaticObject : public virtual IEntity { public: - StaticObjectProperties* GetProperties() const override = 0; + [[nodiscard]] StaticObjectProperties* GetProperties() const override = 0; }; } // namespace mantle_api diff --git a/include/MantleAPI/Traffic/i_entity_repository.h b/include/MantleAPI/Traffic/i_entity_repository.h index 080d3827..03cd4f2b 100644 --- a/include/MantleAPI/Traffic/i_entity_repository.h +++ b/include/MantleAPI/Traffic/i_entity_repository.h @@ -38,15 +38,15 @@ public: virtual IVehicle& GetHost() = 0; virtual std::optional<std::reference_wrapper<IEntity>> Get(const std::string& name) = 0; - virtual std::optional<std::reference_wrapper<const IEntity>> Get(const std::string& name) const = 0; + [[nodiscard]] virtual std::optional<std::reference_wrapper<const IEntity>> Get(const std::string& name) const = 0; virtual std::optional<std::reference_wrapper<IEntity>> Get(UniqueId id) = 0; - virtual std::optional<std::reference_wrapper<const IEntity>> Get(UniqueId id) const = 0; - virtual bool Contains(UniqueId id) const = 0; + [[nodiscard]] virtual std::optional<std::reference_wrapper<const IEntity>> Get(UniqueId id) const = 0; + [[nodiscard]] virtual bool Contains(UniqueId id) const = 0; virtual void Delete(const std::string& name) = 0; virtual void Delete(UniqueId id) = 0; - virtual const std::vector<std::unique_ptr<mantle_api::IEntity>>& GetEntities() const = 0; + [[nodiscard]] virtual const std::vector<std::unique_ptr<mantle_api::IEntity>>& GetEntities() const = 0; virtual void RegisterEntityCreatedCallback(const std::function<void(IEntity&)>& callback) = 0; virtual void RegisterEntityDeletedCallback(const std::function<void(const std::string&)>& callback) = 0; -- GitLab