Program Listing for File duration.h

Return to documentation for file (include/franka/duration.h)

// Copyright (c) 2023 Franka Robotics GmbH
// Use of this source code is governed by the Apache-2.0 license, see LICENSE
#pragma once

#include <chrono>
#include <cstdint>
#include <ratio>

namespace franka {

class Duration {
 public:
  Duration() noexcept;

  explicit Duration(uint64_t milliseconds) noexcept;

  Duration(std::chrono::duration<uint64_t, std::milli> duration) noexcept;

  Duration(const Duration&) = default;

  Duration& operator=(const Duration&) = default;

  operator std::chrono::duration<uint64_t, std::milli>() const noexcept;

  double toSec() const noexcept;

  uint64_t toMSec() const noexcept;

  Duration operator+(const Duration& rhs) const noexcept;
  Duration& operator+=(const Duration& rhs) noexcept;

  Duration operator-(const Duration& rhs) const noexcept;
  Duration& operator-=(const Duration& rhs) noexcept;

  Duration operator*(uint64_t rhs) const noexcept;
  Duration& operator*=(uint64_t rhs) noexcept;

  uint64_t operator/(const Duration& rhs) const noexcept;
  Duration operator/(uint64_t rhs) const noexcept;
  Duration& operator/=(uint64_t rhs) noexcept;

  Duration operator%(const Duration& rhs) const noexcept;
  Duration operator%(uint64_t rhs) const noexcept;
  Duration& operator%=(const Duration& rhs) noexcept;
  Duration& operator%=(uint64_t rhs) noexcept;

  bool operator==(const Duration& rhs) const noexcept;
  bool operator!=(const Duration& rhs) const noexcept;

  bool operator<(const Duration& rhs) const noexcept;
  bool operator<=(const Duration& rhs) const noexcept;

  bool operator>(const Duration& rhs) const noexcept;
  bool operator>=(const Duration& rhs) const noexcept;

 private:
  std::chrono::duration<uint64_t, std::milli> duration_;
};

Duration operator*(uint64_t lhs, const Duration& rhs) noexcept;

}  // namespace franka