LibClang-3.8.0: src/Clang/Remapping.hs
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE FlexibleContexts #-}
-- | Functions for manipulating remappings.
--
-- This module is intended to be imported qualified.
module Clang.Remapping
( getRemappings
, getRemappingsFromFileList
, getRemappedFiles
) where
import Control.Monad.IO.Class
import qualified Clang.Internal.FFI as FFI
import Clang.Internal.Monad
-- | Given a 'FilePath' for a file, returns information about the remappings that
-- apply to that file. If an error occurs, returns 'Nothing'.
getRemappings :: ClangBase m => FilePath -> ClangT s m (Maybe (FFI.Remapping s))
getRemappings = FFI.getRemappings
-- | Given a list of 'FilePath's, returns information about the
-- remappings that apply to the corresponding files. If an error
-- occurs, returns 'Nothing'.
getRemappingsFromFileList :: ClangBase m => [FilePath] -> ClangT s m (Maybe (FFI.Remapping s))
getRemappingsFromFileList = FFI.getRemappingsFromFileList
-- | Retrieves a list of the remappings described by a
-- 'FFI.Remapping'. Each entry in the list consists of a pair.
-- The first element is the original filename, and the second element
-- is the filename it has been remapped to.
getRemappedFiles :: ClangBase m => FFI.Remapping s'
-> ClangT s m [(FFI.ClangString s, FFI.ClangString s)]
getRemappedFiles remaps = do
numRemaps <- liftIO $ FFI.remap_getNumFiles remaps
mapM (FFI.remap_getFilenames remaps) [0..(numRemaps - 1)]