// Copyright 2020 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UTIL_CHRONO_HELPERS_H_ #define UTIL_CHRONO_HELPERS_H_ #include // This file is a collection of helpful utilities and using statement for // working with std::chrono. In practice we previously defined these frequently, // this header allows for a single set of convenience statements. namespace openscreen { using hours = std::chrono::hours; using microseconds = std::chrono::microseconds; using milliseconds = std::chrono::milliseconds; using nanoseconds = std::chrono::nanoseconds; using seconds = std::chrono::seconds; // Casting statements. Note that duration_cast is not a type, it's a function, // so its behavior is different than the using statements above. template static constexpr hours to_hours(D d) { return std::chrono::duration_cast(d); } template static constexpr microseconds to_microseconds(D d) { return std::chrono::duration_cast(d); } template static constexpr milliseconds to_milliseconds(D d) { return std::chrono::duration_cast(d); } template static constexpr nanoseconds to_nanoseconds(D d) { return std::chrono::duration_cast(d); } template static constexpr seconds to_seconds(D d) { return std::chrono::duration_cast(d); } } // namespace openscreen #endif // UTIL_CHRONO_HELPERS_H_