packages feed

d3d11binding-0.0.0.1: src/Graphics/D3D11Binding/Interface/Unknown.hs

module Graphics.D3D11Binding.Interface.Unknown where
import Data.Word

import Foreign.Storable
import Foreign.Marshal.Alloc
import Foreign.Ptr

import Graphics.Win32
import Graphics.D3D11Binding.Types

foreign import stdcall "Release" c_release
 :: Ptr IUnknown -> IO Word32

class UnknownInterface interface where
  release :: Ptr interface -> IO Word32
  release ptr = c_release (castPtr ptr)
  use :: Ptr interface -> (Ptr interface -> IO result) -> IO result
  use i f = do
    res <- f i
    release i
    return res
    
data IUnknown = IUnknown
instance UnknownInterface IUnknown