language-c-0.10.1: Analysis and generation of C code

Copyright | (c) 2008 Benedikt Huber
License | BSD-style
Maintainer | benedikt.huber@gmail.com
Stability | experimental
Portability | portable
Safe Haskell | None
Language | Haskell2010

Language.C.System.Preprocess

Description

Invoking external preprocessors.

Synopsis

- class Preprocessor cpp where
  - parseCPPArgs :: cpp -> [String] -> Either String (CppArgs, [String])
  - runCPP :: cpp -> CppArgs -> IO ExitCode
- data CppOption
  - = IncludeDir FilePath
  - | Define String String
  - | Undefine String
  - | IncludeFile FilePath
- data CppArgs = CppArgs {
  - cppOptions :: [CppOption]
  - extraOptions :: [String]
  - cppTmpDir :: Maybe FilePath
  - inputFile :: FilePath
  - outputFile :: Maybe FilePath
  }
- rawCppArgs :: [String] -> FilePath -> CppArgs
- addCppOption :: CppArgs -> CppOption -> CppArgs
- addExtraOption :: CppArgs -> String -> CppArgs
- cppFile :: FilePath -> CppArgs
- runPreprocessor :: Preprocessor cpp => cpp -> CppArgs -> IO (Either ExitCode InputStream)
- isPreprocessed :: FilePath -> Bool

# Documentation

class Preprocessor cpp where Source #

`Preprocessor` encapsulates the abstract interface for invoking C preprocessors

Methods

parseCPPArgs :: cpp -> [String] -> Either String (CppArgs, [String]) Source #

parse the given command line arguments, and return a pair of parsed and ignored arguments

runCPP :: cpp -> CppArgs -> IO ExitCode Source #

run the preprocessor

#### Instances

Instances details

Preprocessor GCC Source # |
Instance details Defined in Language.C.System.GCC Methods parseCPPArgs :: GCC -> [String] -> Either String (CppArgs, [String]) Source # runCPP :: GCC -> CppArgs -> IO ExitCode Source #

data CppOption Source #

Generic Options for the preprocessor

Constructors

IncludeDir FilePath |
Define String String |
Undefine String |
IncludeFile FilePath |

data CppArgs Source #

Generic arguments for the preprocessor

Constructors

CppArgs |

Fields

- cppOptions :: [CppOption]
- extraOptions :: [String]
- cppTmpDir :: Maybe FilePath
- inputFile :: FilePath
- outputFile :: Maybe FilePath

rawCppArgs :: [String] -> FilePath -> CppArgs Source #

use the given preprocessor arguments without analyzing them

addCppOption :: CppArgs -> CppOption -> CppArgs Source #

add a typed option to the given preprocessor arguments

addExtraOption :: CppArgs -> String -> CppArgs Source #

add a string option to the given preprocessor arguments

cppFile :: FilePath -> CppArgs Source #

Cpp arguments that only specify the input file name.

runPreprocessor :: Preprocessor cpp => cpp -> CppArgs -> IO (Either ExitCode InputStream) Source #

run the preprocessor and return an `InputStream` if preprocesssing succeeded

isPreprocessed :: FilePath -> Bool Source #

guess whether a file is preprocessed (file end with .i)