{-# LANGUAGE DeriveGeneric #-}
module GHC.ForeignSrcLang.Type
  ( ForeignSrcLang(..)
  ) where

import Prelude -- See note [Why do we import Prelude here?]
import GHC.Generics (Generic)

-- | Foreign formats supported by GHC via TH
data ForeignSrcLang
  = LangC      -- ^ C
  | LangCxx    -- ^ C++
  | LangObjc   -- ^ Objective C
  | LangObjcxx -- ^ Objective C++
  | LangAsm    -- ^ Assembly language (.s)
  | RawObject  -- ^ Object (.o)
  deriving (ForeignSrcLang -> ForeignSrcLang -> Bool
(ForeignSrcLang -> ForeignSrcLang -> Bool)
-> (ForeignSrcLang -> ForeignSrcLang -> Bool) -> Eq ForeignSrcLang
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: ForeignSrcLang -> ForeignSrcLang -> Bool
== :: ForeignSrcLang -> ForeignSrcLang -> Bool
$c/= :: ForeignSrcLang -> ForeignSrcLang -> Bool
/= :: ForeignSrcLang -> ForeignSrcLang -> Bool
Eq, Int -> ForeignSrcLang -> ShowS
[ForeignSrcLang] -> ShowS
ForeignSrcLang -> String
(Int -> ForeignSrcLang -> ShowS)
-> (ForeignSrcLang -> String)
-> ([ForeignSrcLang] -> ShowS)
-> Show ForeignSrcLang
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> ForeignSrcLang -> ShowS
showsPrec :: Int -> ForeignSrcLang -> ShowS
$cshow :: ForeignSrcLang -> String
show :: ForeignSrcLang -> String
$cshowList :: [ForeignSrcLang] -> ShowS
showList :: [ForeignSrcLang] -> ShowS
Show, (forall x. ForeignSrcLang -> Rep ForeignSrcLang x)
-> (forall x. Rep ForeignSrcLang x -> ForeignSrcLang)
-> Generic ForeignSrcLang
forall x. Rep ForeignSrcLang x -> ForeignSrcLang
forall x. ForeignSrcLang -> Rep ForeignSrcLang x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cfrom :: forall x. ForeignSrcLang -> Rep ForeignSrcLang x
from :: forall x. ForeignSrcLang -> Rep ForeignSrcLang x
$cto :: forall x. Rep ForeignSrcLang x -> ForeignSrcLang
to :: forall x. Rep ForeignSrcLang x -> ForeignSrcLang
Generic)