{-# LINE 1 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE TupleSections #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Gpu.Vulkan.AllocationCallbacks.Core (
	
	A, pattern A,
	aPUserData, aPfnAllocation, aPfnReallocation, aPfnFree,
	aPfnInternalAllocation, aPfnInternalFree,
	
	
	wrapAllocationFunction,
	FnAllocationFunction, PfnAllocationFunction,
	
	wrapReallocationFunction,
	FnReallocationFunction, PfnReallocationFunction,
	
	
	wrapFreeFunction,
	FnFreeFunction, PfnFreeFunction,
	
	
	
	wrapInternalAllocationNotification,
	FnInternalAllocationNotification, PfnInternalAllocationNotification,
	
	
	wrapInternalFreeNotification,
	FnInternalFreeNotification, PfnInternalFreeNotification
	) where
import Foreign.Ptr
import Foreign.Storable
import Foreign.C.Struct
import Foreign.C.Struct.TypeSynonyms
import Data.Word
type FnAllocationFunction a = Ptr a -> Word64 ->
{-# LINE 55 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	Word64 -> Word32 -> IO (Ptr ())
{-# LINE 56 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
type PfnAllocationFunction = FunPtr (FnAllocationFunction ())
wrapAllocationFunction :: FnAllocationFunction a -> IO PfnAllocationFunction
wrapAllocationFunction :: forall a. FnAllocationFunction a -> IO PfnAllocationFunction
wrapAllocationFunction = FnAllocationFunction () -> IO PfnAllocationFunction
wrapAllocationFunctionGen (FnAllocationFunction () -> IO PfnAllocationFunction)
-> (FnAllocationFunction a -> FnAllocationFunction ())
-> FnAllocationFunction a
-> IO PfnAllocationFunction
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FnAllocationFunction a
-> (PtrVoid -> Ptr a) -> FnAllocationFunction ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PtrVoid -> Ptr a
forall a b. Ptr a -> Ptr b
castPtr)
foreign import ccall "wrapper" wrapAllocationFunctionGen ::
	FnAllocationFunction () -> IO PfnAllocationFunction
type FnReallocationFunction a = Ptr a -> Ptr () -> Word64 ->
{-# LINE 68 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	Word64 -> Word32 -> IO (Ptr ())
{-# LINE 69 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
type PfnReallocationFunction = FunPtr (FnReallocationFunction ())
wrapReallocationFunction ::
	FnReallocationFunction a -> IO PfnReallocationFunction
wrapReallocationFunction :: forall a. FnReallocationFunction a -> IO PfnReallocationFunction
wrapReallocationFunction = FnReallocationFunction () -> IO PfnReallocationFunction
wrapReallocationFunctionGen (FnReallocationFunction () -> IO PfnReallocationFunction)
-> (FnReallocationFunction a -> FnReallocationFunction ())
-> FnReallocationFunction a
-> IO PfnReallocationFunction
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FnReallocationFunction a
-> (PtrVoid -> Ptr a) -> FnReallocationFunction ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PtrVoid -> Ptr a
forall a b. Ptr a -> Ptr b
castPtr)
foreign import ccall "wrapper" wrapReallocationFunctionGen ::
	FnReallocationFunction () -> IO PfnReallocationFunction
type FnFreeFunction a = Ptr a -> Ptr () -> IO ()
type PfnFreeFunction = FunPtr (FnFreeFunction ())
wrapFreeFunction :: FnFreeFunction a -> IO PfnFreeFunction
wrapFreeFunction :: forall a. FnFreeFunction a -> IO PfnFreeFunction
wrapFreeFunction = FnFreeFunction () -> IO PfnFreeFunction
wrapFreeFunctionGen (FnFreeFunction () -> IO PfnFreeFunction)
-> (FnFreeFunction a -> FnFreeFunction ())
-> FnFreeFunction a
-> IO PfnFreeFunction
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FnFreeFunction a -> (PtrVoid -> Ptr a) -> FnFreeFunction ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PtrVoid -> Ptr a
forall a b. Ptr a -> Ptr b
castPtr)
foreign import ccall "wrapper" wrapFreeFunctionGen ::
	FnFreeFunction () -> IO (PfnFreeFunction)
type FnInternalAllocationNotification a = Ptr a -> Word64 ->
{-# LINE 94 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	Word32 -> Word32 ->
{-# LINE 95 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	IO ()
type PfnInternalAllocationNotification =
	FunPtr (FnInternalAllocationNotification ())
wrapInternalAllocationNotification ::
	FnInternalAllocationNotification a ->
	IO PfnInternalAllocationNotification
wrapInternalAllocationNotification :: forall a.
FnInternalAllocationNotification a
-> IO PfnInternalAllocationNotification
wrapInternalAllocationNotification =
	FnInternalAllocationNotification ()
-> IO PfnInternalAllocationNotification
wrapInternalAllocationNotificationGen (FnInternalAllocationNotification ()
 -> IO PfnInternalAllocationNotification)
-> (FnInternalAllocationNotification a
    -> FnInternalAllocationNotification ())
-> FnInternalAllocationNotification a
-> IO PfnInternalAllocationNotification
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FnInternalAllocationNotification a
-> (PtrVoid -> Ptr a) -> FnInternalAllocationNotification ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PtrVoid -> Ptr a
forall a b. Ptr a -> Ptr b
castPtr)
foreign import ccall "wrapper" wrapInternalAllocationNotificationGen ::
	FnInternalAllocationNotification () ->
	IO PfnInternalAllocationNotification
type FnInternalFreeNotification a = Ptr a -> Word64 ->
{-# LINE 113 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	Word32 -> Word32 ->
{-# LINE 114 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	IO ()
type PfnInternalFreeNotification = FunPtr (FnInternalFreeNotification ())
wrapInternalFreeNotification ::
	FnInternalFreeNotification a -> IO PfnInternalFreeNotification
wrapInternalFreeNotification :: forall a.
FnInternalAllocationNotification a
-> IO PfnInternalAllocationNotification
wrapInternalFreeNotification = FnInternalAllocationNotification ()
-> IO PfnInternalAllocationNotification
wrapInternalFreeNotificationGen (FnInternalAllocationNotification ()
 -> IO PfnInternalAllocationNotification)
-> (FnInternalFreeNotification a
    -> FnInternalAllocationNotification ())
-> FnInternalFreeNotification a
-> IO PfnInternalAllocationNotification
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (FnInternalFreeNotification a
-> (PtrVoid -> Ptr a) -> FnInternalAllocationNotification ()
forall b c a. (b -> c) -> (a -> b) -> a -> c
. PtrVoid -> Ptr a
forall a b. Ptr a -> Ptr b
castPtr)
foreign import ccall "wrapper" wrapInternalFreeNotificationGen ::
	FnInternalFreeNotification () -> IO PfnInternalFreeNotification
struct "A" (48)
{-# LINE 128 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		8 [
{-# LINE 129 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pUserData", ''PtrVoid,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 0) |],
{-# LINE 131 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 0) |]),
{-# LINE 132 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pfnAllocation", ''PfnAllocationFunction,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 8) |],
{-# LINE 134 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 8) |]),
{-# LINE 135 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pfnReallocation", ''PfnReallocationFunction,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 16) |],
{-# LINE 137 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 16) |]),
{-# LINE 138 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pfnFree", ''PfnFreeFunction,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 24) |],
{-# LINE 140 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 24) |]),
{-# LINE 141 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pfnInternalAllocation", ''PfnInternalAllocationNotification,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 32) |],
{-# LINE 143 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 32) |]),
{-# LINE 144 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	("pfnInternalFree", ''PfnInternalFreeNotification,
		[| (\hsc_ptr -> peekByteOff hsc_ptr 40) |],
{-# LINE 146 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
		[| (\hsc_ptr -> pokeByteOff hsc_ptr 40) |]) ]
{-# LINE 147 "src/Gpu/Vulkan/AllocationCallbacks/Core.hsc" #-}
	[''Show, ''Storable]