{-# LINE 1 "src/Shaderc/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE PatternSynonyms #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Shaderc.Core where

import Foreign.Ptr
import Foreign.C.Types
import Foreign.C.String
import Data.Word

import Language.SpirV.ShaderKind.Core

import qualified Shaderc.CompileOptions.Core as CompileOptions
import qualified Shaderc.CompilationResult.Core as CompilationResult



data CompilerTag
type CompilerT = Ptr CompilerTag

foreign import ccall "shaderc_compiler_initialize"
	compilerInitialize :: IO CompilerT

foreign import ccall "shaderc_compiler_release"
	compilerRelease :: CompilerT -> IO ()

foreign import ccall "shaderc_compile_into_spv" compileIntoSpv ::
	CompilerT -> Ptr CChar -> Word64 ->
{-# LINE 30 "src/Shaderc/Core.hsc" #-}
	ShaderKind -> CString -> CString ->
	CompileOptions.C -> IO CompilationResult.T

foreign import ccall "shaderc_compile_into_spv_assembly"
	compileIntoSpvAssembly ::
	CompilerT -> Ptr CChar -> Word64 ->
{-# LINE 36 "src/Shaderc/Core.hsc" #-}
	ShaderKind -> CString -> CString ->
	CompileOptions.C -> IO CompilationResult.T

foreign import ccall "shaderc_compile_into_preprocessed_text"
	compileIntoPreprocessedText ::
	CompilerT -> Ptr CChar -> Word64 ->
{-# LINE 42 "src/Shaderc/Core.hsc" #-}
	ShaderKind -> CString -> CString ->
	CompileOptions.C -> IO CompilationResult.T

glslVertexShader :: Word32
{-# LINE 46 "src/Shaderc/Core.hsc" #-}
glslVertexShader = 0
{-# LINE 47 "src/Shaderc/Core.hsc" #-}

vertexShader :: Word32
{-# LINE 49 "src/Shaderc/Core.hsc" #-}
vertexShader = 0
{-# LINE 50 "src/Shaderc/Core.hsc" #-}

sourceLanguageHlsl :: Word32
{-# LINE 52 "src/Shaderc/Core.hsc" #-}
sourceLanguageHlsl = 1
{-# LINE 53 "src/Shaderc/Core.hsc" #-}

optimizationLevelZero :: Word32
{-# LINE 55 "src/Shaderc/Core.hsc" #-}
optimizationLevelZero = 0
{-# LINE 56 "src/Shaderc/Core.hsc" #-}

optimizationLevelSize :: Word32
{-# LINE 58 "src/Shaderc/Core.hsc" #-}
optimizationLevelSize = 1
{-# LINE 59 "src/Shaderc/Core.hsc" #-}

optimizationLevelPerformance :: Word32
{-# LINE 61 "src/Shaderc/Core.hsc" #-}
optimizationLevelPerformance =
	2
{-# LINE 63 "src/Shaderc/Core.hsc" #-}