Program Listing for File Time.hpp

Return to documentation for file (include/rmf_traffic/Time.hpp)

/*
 * Copyright (C) 2019 Open Source Robotics Foundation
 *
 * 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 RMF_TRAFFIC__TIME_HPP
#define RMF_TRAFFIC__TIME_HPP

#include <chrono>

namespace rmf_traffic {

//
// NOTE(MXG): An int64 nanosecond representation of time since the Unix Epoch
// will not overflow until the year 2262. Please be sure to change this
// implementation before then.
using Time = std::chrono::steady_clock::time_point;
// TODO(MXG): We should seriously consider a complete overhaul of how we are
// using time in this library.


using Duration = std::chrono::steady_clock::duration;

namespace time {

double to_seconds(Duration delta_t);

Duration from_seconds(double delta_t);

Time apply_offset(Time start_time, double delta_seconds);

} // namespace time


// TODO(MXG): Make user-friendly interfaces for interacting with the STL
// time points and durations. They have good semantics from a technical point
// of view, but they tend to be difficult for users to do tests and experiments
// with, so it might be good to provide some APIs to help people use it.

} // namespace rmf_traffic

#endif // RMF_TRAFFIC__TIME_HPP