123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107 |
- // Copyright (C) 2002-2012 Nikolaus Gebhardt
- // This file is part of the "Irrlicht Engine".
- // For conditions of distribution and use, see copyright notice in irrlicht.h
- #pragma once
- #include "irrTypes.h"
- #include "irrString.h"
- #include "path.h"
- #include "ILogger.h"
- #include "ITimer.h"
- // CODE_UNREACHABLE(): Invokes undefined behavior for unreachable code optimization
- #if defined(__cpp_lib_unreachable)
- #include <utility>
- #define CODE_UNREACHABLE() std::unreachable()
- #elif defined(__has_builtin)
- #if __has_builtin(__builtin_unreachable)
- #define CODE_UNREACHABLE() __builtin_unreachable()
- #endif
- #elif defined(_MSC_VER)
- #define CODE_UNREACHABLE() __assume(false)
- #endif
- #ifndef CODE_UNREACHABLE
- #define CODE_UNREACHABLE() (void)0
- #endif
- namespace irr
- {
- namespace os
- {
- class Byteswap
- {
- public:
- static u16 byteswap(u16 num);
- static s16 byteswap(s16 num);
- static u32 byteswap(u32 num);
- static s32 byteswap(s32 num);
- static u64 byteswap(u64 num);
- static s64 byteswap(s64 num);
- static f32 byteswap(f32 num);
- // prevent accidental swapping of chars
- static inline u8 byteswap(u8 num) { return num; }
- static inline c8 byteswap(c8 num) { return num; }
- };
- class Printer
- {
- public:
- // prints out a string to the console out stdout or debug log or whatever
- static void print(const c8 *message, ELOG_LEVEL ll = ELL_INFORMATION);
- static void log(const c8 *message, ELOG_LEVEL ll = ELL_INFORMATION);
- // The string ": " is added between message and hint
- static void log(const c8 *message, const c8 *hint, ELOG_LEVEL ll = ELL_INFORMATION);
- static void log(const c8 *message, const io::path &hint, ELOG_LEVEL ll = ELL_INFORMATION);
- static ILogger *Logger;
- };
- class Timer
- {
- public:
- //! returns the current time in milliseconds
- static u32 getTime();
- //! initializes the real timer
- static void initTimer();
- //! sets the current virtual (game) time
- static void setTime(u32 time);
- //! stops the virtual (game) timer
- static void stopTimer();
- //! starts the game timer
- static void startTimer();
- //! sets the speed of the virtual timer
- static void setSpeed(f32 speed);
- //! gets the speed of the virtual timer
- static f32 getSpeed();
- //! returns if the timer currently is stopped
- static bool isStopped();
- //! makes the virtual timer update the time value based on the real time
- static void tick();
- //! returns the current real time in milliseconds
- static u32 getRealTime();
- private:
- static void initVirtualTimer();
- static f32 VirtualTimerSpeed;
- static s32 VirtualTimerStopCounter;
- static u32 StartRealTime;
- static u32 LastVirtualTime;
- static u32 StaticTime;
- };
- } // end namespace os
- } // end namespace irr
|