#ifndef CORE_CLOCK_HPP #define CORE_CLOCK_HPP #include "core/data/Array.hpp" #include "core/utils/Check.hpp" #include "core/utils/Types.hpp" namespace Core { struct Clock final { using Nanos = i64; private: int index; Nanos last; Nanos sum; Array time; public: Clock(); // the first invocation will always return 0 nanos check_return Error update(Nanos& n); float getUpdatesPerSecond() const; check_return Error wait(Nanos nanos) const; check_return static Error getNanos(Nanos& n); }; } #endif