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

module Shaderc.CompileOptions.Core where

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

import Shaderc.Enum
import Shaderc.Include.Core



data CTag
type C = Ptr CTag

foreign import ccall "shaderc_compile_options_initialize" initialize :: IO C
foreign import ccall "shaderc_compile_options_clone" clone :: C -> IO C
foreign import ccall "shaderc_compile_options_release" release :: C -> IO ()

foreign import ccall "shaderc_compile_options_add_macro_definition"
	addMacroDefinition ::
	C -> Ptr CChar -> Word64 -> Ptr CChar -> Word64 -> IO ()
{-# LINE 24 "src/Shaderc/CompileOptions/Core.hsc" #-}

foreign import ccall "shaderc_compile_options_set_source_language"
	setSourceLanguage :: C -> SourceLanguage -> IO ()

foreign import ccall "shaderc_compile_options_set_generate_debug_info"
	setGenerateDebugInfo :: C -> IO ()

foreign import ccall "shaderc_compile_options_set_optimization_level"
	setOptimizationLevel :: C -> OptimizationLevel -> IO ()

foreign import ccall "shaderc_compile_options_set_forced_version_profile"
	setForcedVersionProfile :: C -> Version -> Profile -> IO()

setIncludeCallbacks :: C -> ResolveFn -> ResultReleaseFn -> PtrVoid -> IO ()
setIncludeCallbacks :: C -> ResolveFn -> ResultReleaseFn -> PtrVoid -> IO ()
setIncludeCallbacks C
opts ResolveFn
rfn ResultReleaseFn
rrfn PtrVoid
ud = do
	prfn <- ResolveFn -> IO (FunPtr ResolveFn)
wrap_resolveFn ResolveFn
rfn
	prrfn <- wrap_resultReleaseFn rrfn
	c_shaderc_compile_options_set_include_callbacks opts prfn prrfn ud

foreign import ccall "shaderc_compile_options_set_include_callbacks"
	c_shaderc_compile_options_set_include_callbacks ::
	C -> FunPtr ResolveFn -> FunPtr ResultReleaseFn -> PtrVoid -> IO ()