-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Preprocess+parse haskell code
--   
--   Preprocess+parse haskell code
@package hse-cpp
@version 0.2

module Language.Haskell.Exts.CPP
parseFileWithCommentsAndCPP :: CpphsOptions -> ParseMode -> FilePath -> IO (ParseResult (Module SrcSpanInfo, [Comment]))
parseFileContentsWithCommentsAndCPP :: CpphsOptions -> ParseMode -> String -> IO (ParseResult (Module SrcSpanInfo, [Comment]))
defaultCpphsOptions :: CpphsOptions

-- | Cpphs options structure.
data CpphsOptions :: *
CpphsOptions :: [FilePath] -> [FilePath] -> [(String, String)] -> [String] -> [FilePath] -> BoolOptions -> CpphsOptions
[infiles] :: CpphsOptions -> [FilePath]
[outfiles] :: CpphsOptions -> [FilePath]
[defines] :: CpphsOptions -> [(String, String)]
[includes] :: CpphsOptions -> [String]

-- | Files to #include before anything else
[preInclude] :: CpphsOptions -> [FilePath]
[boolopts] :: CpphsOptions -> BoolOptions

-- | Options representable as Booleans.
data BoolOptions :: *
BoolOptions :: Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> BoolOptions

-- | Leave #define and #undef in output of ifdef?
[macros] :: BoolOptions -> Bool

-- | Place #line droppings in output?
[locations] :: BoolOptions -> Bool

-- | Write #line or {-# LINE #-} ?
[hashline] :: BoolOptions -> Bool

-- | Keep #pragma in final output?
[pragma] :: BoolOptions -> Bool

-- | Remove C eol (//) comments everywhere?
[stripEol] :: BoolOptions -> Bool

-- | Remove C inline (/**/) comments everywhere?
[stripC89] :: BoolOptions -> Bool

-- | Lex input as Haskell code?
[lang] :: BoolOptions -> Bool

-- | Permit stringise # and catenate ## operators?
[ansi] :: BoolOptions -> Bool

-- | Retain newlines in macro expansions?
[layout] :: BoolOptions -> Bool

-- | Remove literate markup?
[literate] :: BoolOptions -> Bool

-- | Issue warnings?
[warnings] :: BoolOptions -> Bool
