psOff_public/core/timer/timer.h
2024-06-03 17:16:19 +02:00

115 lines
1.9 KiB
C++

#pragma once
#include "modules_include/common.h"
#include "utility/utility.h"
class ITimer {
CLASS_NO_COPY(ITimer);
protected:
ITimer() = default;
public:
/**
* @brief init the timer. Sets start time for relative time
*
*/
virtual void init() = 0;
/**
* @brief Get the relative ticks
*
* @return uint64_t
*/
virtual uint64_t getTicks() = 0;
/**
* @brief Get the relative Time in secounds
*
* @return double
*/
virtual double getTimeS() = 0;
/**
* @brief Get the relative Time in ms
*
* @return double
*/
virtual double getTimeMs() = 0;
/**
* @brief Get the absolute ticks
*
* @return uint64_t
*/
virtual uint64_t queryPerformance() = 0;
/**
* @brief Pauses the relative timer
*
*/
virtual void pause() = 0;
/**
* @brief Resumes the relative timer
*
*/
virtual void resume() = 0;
/**
* @brief Get the Frequency of the ticks
*
* @return uint64_t
*/
virtual uint64_t getFrequency() = 0;
/**
* @brief Check if paused
*
* @return true
* @return false
*/
virtual bool getPaused() = 0;
/**
* @brief Get the Time from clockId
*
* @param id
* @param tp
* @return int getErr()
*/
virtual int getTime(SceKernelClockid id, SceKernelTimespec* tp) = 0;
/**
* @brief Get the Time Resolution from clockId
*
* @param id
* @param tp
* @return int getErr()
*/
virtual int getTimeRes(SceKernelClockid id, SceKernelTimespec* tp) = 0;
/**
* @brief Get the timeOfDay
*
* @param tp
* @return int getErr()
*/
virtual int getTimeofDay(SceKernelTimeval* tp) = 0;
/**
* @brief Get the time zone info
*
*/
virtual int getTimeZone(SceKernelTimezone* tz) = 0;
};
#if defined(__APICALL_EXTERN)
#define __APICALL __declspec(dllexport)
#elif defined(__APICALL_IMPORT)
#define __APICALL __declspec(dllimport)
#else
#define __APICALL
#endif
__APICALL ITimer& accessTimer();
#undef __APICALL