module HIndent.Ast.Declaration.Foreign.CallingConvention ( CallingConvention , mkCallingConvention ) where import qualified GHC.Types.ForeignCall as GHC import HIndent.Ast.NodeComments import {-# SOURCE #-} HIndent.Pretty import HIndent.Pretty.Combinators import HIndent.Pretty.NodeComments data CallingConvention = CCall | CApi | StdCall | Prim | JavaScript instance CommentExtraction CallingConvention where nodeComments :: CallingConvention -> NodeComments nodeComments CallingConvention _ = [LEpaComment] -> [LEpaComment] -> [LEpaComment] -> NodeComments NodeComments [] [] [] instance Pretty CallingConvention where pretty' :: CallingConvention -> Printer () pretty' CallingConvention CCall = HasCallStack => String -> Printer () String -> Printer () string String "ccall" pretty' CallingConvention CApi = HasCallStack => String -> Printer () String -> Printer () string String "capi" pretty' CallingConvention StdCall = HasCallStack => String -> Printer () String -> Printer () string String "stdcall" pretty' CallingConvention Prim = HasCallStack => String -> Printer () String -> Printer () string String "prim" pretty' CallingConvention JavaScript = HasCallStack => String -> Printer () String -> Printer () string String "javascript" mkCallingConvention :: GHC.CCallConv -> CallingConvention mkCallingConvention :: CCallConv -> CallingConvention mkCallingConvention CCallConv GHC.CCallConv = CallingConvention CCall mkCallingConvention CCallConv GHC.StdCallConv = CallingConvention StdCall mkCallingConvention CCallConv GHC.CApiConv = CallingConvention CApi mkCallingConvention CCallConv GHC.PrimCallConv = CallingConvention Prim mkCallingConvention CCallConv GHC.JavaScriptCallConv = CallingConvention JavaScript