module SFML.System.Clock
(
Clock(..)
, createClock
, copy
, destroy
, getElapsedTime
, restartClock
)
where
import SFML.SFCopyable
import SFML.SFResource
import SFML.System.Time
import Foreign.Marshal.Alloc (alloca)
import Foreign.Ptr
import Foreign.Storable (peek)
newtype Clock = Clock (Ptr Clock)
createClock :: IO Clock
createClock = sfClock_create
foreign import ccall unsafe "sfClock_create"
sfClock_create :: IO Clock
instance SFCopyable Clock where
copy = sfClock_copy
foreign import ccall unsafe "sfClock_copy"
sfClock_copy :: Clock -> IO Clock
instance SFResource Clock where
destroy = sfClock_destroy
foreign import ccall unsafe "sfClock_destroy"
sfClock_destroy :: Clock -> IO ()
getElapsedTime :: Clock -> IO Time
getElapsedTime clock = alloca $ \ptr -> sfClock_getElapsedTime_helper clock ptr >> peek ptr
foreign import ccall unsafe "sfClock_getElapsedTime_helper"
sfClock_getElapsedTime_helper :: Clock -> Ptr Time -> IO ()
restartClock :: Clock -> IO Time
restartClock clock = alloca $ \ptr -> sfClock_restart_helper clock ptr >> peek ptr
foreign import ccall unsafe "sfClock_restart_helper"
sfClock_restart_helper :: Clock -> Ptr Time -> IO ()