{-# LANGUAGE ViewPatterns #-} {-# OPTIOnS_GHC -Wall -fno-warn-tabs #-} module Shaderc.Middle where import Foreign.Storable import Control.Monad.Trans import Control.Monad.Cont import qualified Data.ByteString as BS import Language.SpirV.ShaderKind.Core import qualified Shaderc.Core as C import qualified Language.SpirV.Shaderc.CompileOptions.Internal as CompileOptions import qualified Shaderc.CompilationResult.Core as CompilationResult compileIntoSpv :: Storable ud => C.CompilerT -> BS.ByteString -> ShaderKind -> BS.ByteString -> BS.ByteString -> CompileOptions.C ud -> ContT r IO CompilationResult.T compileIntoSpv :: forall ud r. Storable ud => CompilerT -> ByteString -> ShaderKind -> ByteString -> ByteString -> C ud -> ContT r IO T compileIntoSpv CompilerT cmp ByteString src ShaderKind knd ByteString ifnm ByteString epnm C ud opts = do (Ptr CChar csrc, Int -> Word64 forall a b. (Integral a, Num b) => a -> b fromIntegral -> Word64 csrcln) <- (((Ptr CChar, Int) -> IO r) -> IO r) -> ContT r IO (Ptr CChar, Int) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT ((((Ptr CChar, Int) -> IO r) -> IO r) -> ContT r IO (Ptr CChar, Int)) -> (((Ptr CChar, Int) -> IO r) -> IO r) -> ContT r IO (Ptr CChar, Int) forall a b. (a -> b) -> a -> b $ ByteString -> ((Ptr CChar, Int) -> IO r) -> IO r forall a. ByteString -> ((Ptr CChar, Int) -> IO a) -> IO a BS.useAsCStringLen ByteString src Ptr CChar cifnm <- ((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar)) -> ((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar) forall a b. (a -> b) -> a -> b $ ByteString -> (Ptr CChar -> IO r) -> IO r forall a. ByteString -> (Ptr CChar -> IO a) -> IO a BS.useAsCString ByteString ifnm Ptr CChar cepnm <- ((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar) forall {k} (r :: k) (m :: k -> *) a. ((a -> m r) -> m r) -> ContT r m a ContT (((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar)) -> ((Ptr CChar -> IO r) -> IO r) -> ContT r IO (Ptr CChar) forall a b. (a -> b) -> a -> b $ ByteString -> (Ptr CChar -> IO r) -> IO r forall a. ByteString -> (Ptr CChar -> IO a) -> IO a BS.useAsCString ByteString epnm C copts <- C ud -> ContT r IO C forall ud r. Storable ud => C ud -> ContT r IO C CompileOptions.tToCore C ud opts IO T -> ContT r IO T forall (m :: * -> *) a. Monad m => m a -> ContT r m a forall (t :: (* -> *) -> * -> *) (m :: * -> *) a. (MonadTrans t, Monad m) => m a -> t m a lift (IO T -> ContT r IO T) -> IO T -> ContT r IO T forall a b. (a -> b) -> a -> b $ CompilerT -> Ptr CChar -> Word64 -> ShaderKind -> Ptr CChar -> Ptr CChar -> C -> IO T C.compileIntoSpv CompilerT cmp Ptr CChar csrc Word64 csrcln ShaderKind knd Ptr CChar cifnm Ptr CChar cepnm C copts