.. _program_listing_file_include_rclcpp_duration.hpp: Program Listing for File duration.hpp ===================================== |exhale_lsh| :ref:`Return to documentation for file ` (``include/rclcpp/duration.hpp``) .. |exhale_lsh| unicode:: U+021B0 .. UPWARDS ARROW WITH TIP LEFTWARDS .. code-block:: cpp // Copyright 2017 Open Source Robotics Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. #ifndef RCLCPP__DURATION_HPP_ #define RCLCPP__DURATION_HPP_ #include #include "builtin_interfaces/msg/duration.hpp" #include "rcl/time.h" #include "rclcpp/visibility_control.hpp" namespace rclcpp { class RCLCPP_PUBLIC Duration { public: Duration(int32_t seconds, uint32_t nanoseconds); explicit Duration(std::chrono::nanoseconds nanoseconds); // This constructor matches any std::chrono value other than nanoseconds // intentionally not using explicit to create a conversion constructor template // cppcheck-suppress noExplicitConstructor Duration(const std::chrono::duration & duration) // NOLINT(runtime/explicit) : Duration(std::chrono::duration_cast(duration)) {} // cppcheck-suppress noExplicitConstructor Duration(const builtin_interfaces::msg::Duration & duration_msg); // NOLINT(runtime/explicit) explicit Duration(const rcl_duration_t & duration); Duration(const Duration & rhs); virtual ~Duration() = default; operator builtin_interfaces::msg::Duration() const; // cppcheck-suppress operatorEq // this is a false positive from cppcheck Duration & operator=(const Duration & rhs); Duration & operator=(const builtin_interfaces::msg::Duration & duration_msg); bool operator==(const rclcpp::Duration & rhs) const; bool operator!=(const rclcpp::Duration & rhs) const; bool operator<(const rclcpp::Duration & rhs) const; bool operator<=(const rclcpp::Duration & rhs) const; bool operator>=(const rclcpp::Duration & rhs) const; bool operator>(const rclcpp::Duration & rhs) const; Duration operator+(const rclcpp::Duration & rhs) const; Duration operator-(const rclcpp::Duration & rhs) const; static Duration max(); Duration operator*(double scale) const; rcl_duration_value_t nanoseconds() const; double seconds() const; static Duration from_seconds(double seconds); static Duration from_nanoseconds(rcl_duration_value_t nanoseconds); static Duration from_rmw_time(rmw_time_t duration); template DurationT to_chrono() const { return std::chrono::duration_cast(std::chrono::nanoseconds(this->nanoseconds())); } rmw_time_t to_rmw_time() const; private: rcl_duration_t rcl_duration_; Duration() = default; }; } // namespace rclcpp #endif // RCLCPP__DURATION_HPP_