packages feed

libclang-bindings-0.1.0.0: src/Clang/Args.hs

module Clang.Args (
    -- * Clang arguments
    ClangArgs(..)
  , InvalidClangArgs(..)
  ) where

import Control.Exception (Exception)
import Data.Default (Default (def))
import Data.String (IsString)

{-------------------------------------------------------------------------------
  Clang arguments
-------------------------------------------------------------------------------}

-- | Command-line arguments passed to @libclang@
--
-- The order of command-line arguments is significant.
--
-- Reference:
--
-- * <https://clang.llvm.org/docs/ClangCommandLineReference.html>
newtype ClangArgs = ClangArgs { unClangArgs :: [String] }
  deriving stock (Show)
  deriving newtype (Eq)

instance Default ClangArgs where
  def = ClangArgs []

-- | Invalid Clang arguments exception
newtype InvalidClangArgs = InvalidClangArgs String
  deriving stock (Show)
  deriving newtype (IsString)
  deriving anyclass (Exception)