module Clang.File
(
createFromPath
, getName
, isMultipleIncludeGuarded
, getMTime
, getPosixMTime
, getUniqueId
, FFI.UniqueId
) where
import Control.Monad.IO.Class
import Data.Time.Clock.POSIX (POSIXTime, posixSecondsToUTCTime)
import Data.Time.Clock (UTCTime)
import qualified Clang.Internal.FFI as FFI
import Clang.Internal.Monad
createFromPath :: ClangBase m => FFI.TranslationUnit s' -> FilePath -> ClangT s m (FFI.File s)
createFromPath t f = liftIO $ FFI.getFile mkProxy t f
getName :: ClangBase m => FFI.File s' -> ClangT s m (FFI.ClangString s)
getName = FFI.getFileName
isMultipleIncludeGuarded :: ClangBase m => FFI.TranslationUnit s' -> FFI.File s''
-> ClangT s m Bool
isMultipleIncludeGuarded t f = liftIO $ FFI.isFileMultipleIncludeGuarded t f
getMTime :: ClangBase m => FFI.File s' -> ClangT s m UTCTime
getMTime f = liftIO $ posixSecondsToUTCTime . realToFrac <$> FFI.getFileTime f
getPosixMTime :: ClangBase m => FFI.File s' -> ClangT s m POSIXTime
getPosixMTime f = liftIO $ realToFrac <$> FFI.getFileTime f
getUniqueId :: ClangBase m => FFI.File s' -> ClangT s m (Maybe FFI.UniqueId)
getUniqueId f = liftIO $ FFI.getFileUniqueID f