packages feed

shaderc-0.1.0.5: 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

#include <shaderc/shaderc.h>

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 -> #{type size_t} -> Ptr CChar -> #{type size_t} -> IO ()

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 opts rfn rrfn ud = do
	prfn <- wrap_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 ()