module Clang.Range
(
create
, createInvalid
, getStart
, getEnd
, isInvalid
) where
import Control.Monad.IO.Class
import qualified Clang.Internal.FFI as FFI
import Clang.Internal.Monad
import System.IO.Unsafe (unsafePerformIO)
create :: ClangBase m
=> FFI.SourceLocation s'
-> FFI.SourceLocation s''
-> ClangT s m (FFI.SourceRange s)
create from to = liftIO $ FFI.getRange mkProxy from to
createInvalid :: ClangBase m => ClangT s m (FFI.SourceRange s)
createInvalid = liftIO $ FFI.getNullRange mkProxy
getStart :: ClangBase m => FFI.SourceRange s' -> ClangT s m (FFI.SourceLocation s)
getStart sr = liftIO $ FFI.getRangeStart mkProxy sr
getEnd :: ClangBase m => FFI.SourceRange s' -> ClangT s m (FFI.SourceLocation s)
getEnd sr = liftIO $ FFI.getRangeEnd mkProxy sr
isInvalid :: FFI.SourceRange s' -> Bool
isInvalid r = unsafePerformIO $ FFI.range_isNull r