Files
palladium/include/pd/drivers/os.hpp
T

32 lines
791 B
C++
Raw Normal View History

2025-06-22 21:05:09 +02:00
#pragma once
2026-03-16 06:37:51 +01:00
#include <pd/drivers/interface.hpp>
2025-06-22 21:05:09 +02:00
namespace PD {
2026-03-16 06:37:51 +01:00
class PD_API OsDriver : public DriverInterface {
2025-06-22 21:05:09 +02:00
public:
2026-03-16 06:37:51 +01:00
OsDriver(std::string_view name = "Default") : DriverInterface(name) {}
virtual ~OsDriver() {}
2025-06-22 21:05:09 +02:00
2026-03-16 06:37:51 +01:00
virtual u64 GetTime() const;
virtual u64 GetTimeNano() const;
};
2025-06-22 21:05:09 +02:00
2026-03-16 06:37:51 +01:00
class PD_API Os {
public:
Os() = default;
~Os() = default;
template <typename T, typename... Args>
static void UseDriver(Args&&... args) {
// assert(driver == nullptr && "OS Driver already set");
driver = std::make_unique<T>(std::forward<Args>(args)...);
}
static u64 GetTime() { return driver->GetTime(); }
static u64 GetTimeNano() { return driver->GetTimeNano(); }
2025-06-22 21:05:09 +02:00
2026-01-26 20:46:27 +01:00
private:
2026-03-16 06:37:51 +01:00
static std::unique_ptr<OsDriver> driver;
2025-06-22 21:05:09 +02:00
};
} // namespace PD