packages feed

shaderc-0.1.0.5: src/Shaderc/Middle.hs

{-# 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 cmp src knd ifnm epnm opts = do
	(csrc, fromIntegral -> csrcln) <- ContT $ BS.useAsCStringLen src
	cifnm <- ContT $ BS.useAsCString ifnm
	cepnm <- ContT $ BS.useAsCString epnm
	copts <- CompileOptions.tToCore opts
	lift $ C.compileIntoSpv cmp csrc csrcln knd cifnm cepnm copts