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

module Shaderc.Include.Core where

import Foreign.Ptr
import Foreign.Storable
import Foreign.C.String
import Foreign.C.Enum
import Foreign.C.Struct
import Data.Word



type PtrVoid = Ptr ()

struct "Result" (40)
{-# LINE 20 "src/Shaderc/Include/Core.hsc" #-}
		8 [
{-# LINE 21 "src/Shaderc/Include/Core.hsc" #-}
	("sourceName", ''CString,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 23 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 24 "src/Shaderc/Include/Core.hsc" #-}
	("sourceNameLength", ''Word64,
{-# LINE 25 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 26 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 27 "src/Shaderc/Include/Core.hsc" #-}
	("content", ''CString,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 29 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 30 "src/Shaderc/Include/Core.hsc" #-}
	("contentLength", ''Word64,
{-# LINE 31 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 32 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 33 "src/Shaderc/Include/Core.hsc" #-}
	("userData", ''PtrVoid,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 35 "src/Shaderc/Include/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]) ]
{-# LINE 36 "src/Shaderc/Include/Core.hsc" #-}
	[''Show, ''Storable]

enum "Type" ''Word32 [''Show, ''Storable] [
{-# LINE 39 "src/Shaderc/Include/Core.hsc" #-}
	("TypeRelative", 0),
{-# LINE 40 "src/Shaderc/Include/Core.hsc" #-}
	("TypeStandard", 1) ]
{-# LINE 41 "src/Shaderc/Include/Core.hsc" #-}

type ResolveFn =
	PtrVoid -> CString -> Type -> CString -> Word64 ->
{-# LINE 44 "src/Shaderc/Include/Core.hsc" #-}
	IO (Ptr Result)

foreign import ccall "wrapper"
	wrap_resolveFn :: ResolveFn -> IO (FunPtr ResolveFn)

type ResultReleaseFn = PtrVoid -> Ptr Result -> IO ()

foreign import ccall "wrapper"
	wrap_resultReleaseFn :: ResultReleaseFn -> IO (FunPtr ResultReleaseFn)