{-# LINE 1 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}


{-# LINE 4 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

{-# LINE 5 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

-- | <http://libusb.sourceforge.net/api-1.0/group__hotplug.html>

module Bindings.Libusb.DeviceHotplugEventNotification where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word

{-# LINE 10 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

import Bindings.Libusb.InitializationDeinitialization
import Bindings.Libusb.HandlingAndEnumeration

c'LIBUSB_HOTPLUG_MATCH_ANY = -1
c'LIBUSB_HOTPLUG_MATCH_ANY :: (Num a) => a

{-# LINE 15 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

type C'libusb_hotplug_callback_handle = CInt

{-# LINE 17 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

type C'libusb_hotplug_callback_fn = FunPtr (Ptr C'libusb_context -> Ptr C'libusb_device -> C'libusb_hotplug_event -> Ptr () -> IO CInt)
foreign import ccall "wrapper" mk'libusb_hotplug_callback_fn
  :: (Ptr C'libusb_context -> Ptr C'libusb_device -> C'libusb_hotplug_event -> Ptr () -> IO CInt) -> IO C'libusb_hotplug_callback_fn
foreign import ccall "dynamic" mK'libusb_hotplug_callback_fn
  :: C'libusb_hotplug_callback_fn -> (Ptr C'libusb_context -> Ptr C'libusb_device -> C'libusb_hotplug_event -> Ptr () -> IO CInt)

{-# LINE 20 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

type C'libusb_hotplug_flag = CUInt

{-# LINE 22 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

c'LIBUSB_HOTPLUG_ENUMERATE = 1
c'LIBUSB_HOTPLUG_ENUMERATE :: (Num a) => a

{-# LINE 24 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

type C'libusb_hotplug_event = CUInt

{-# LINE 26 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

c'LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED = 1
c'LIBUSB_HOTPLUG_EVENT_DEVICE_ARRIVED :: (Num a) => a

{-# LINE 28 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}
c'LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT = 2
c'LIBUSB_HOTPLUG_EVENT_DEVICE_LEFT :: (Num a) => a

{-# LINE 29 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

foreign import ccall "libusb_hotplug_register_callback" c'libusb_hotplug_register_callback
  :: Ptr C'libusb_context -> C'libusb_hotplug_event -> C'libusb_hotplug_flag -> CInt -> CInt -> CInt -> C'libusb_hotplug_callback_fn -> Ptr () -> Ptr C'libusb_hotplug_callback_handle -> IO CInt
foreign import ccall "&libusb_hotplug_register_callback" p'libusb_hotplug_register_callback
  :: FunPtr (Ptr C'libusb_context -> C'libusb_hotplug_event -> C'libusb_hotplug_flag -> CInt -> CInt -> CInt -> C'libusb_hotplug_callback_fn -> Ptr () -> Ptr C'libusb_hotplug_callback_handle -> IO CInt)

{-# LINE 40 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}

foreign import ccall "libusb_hotplug_deregister_callback" c'libusb_hotplug_deregister_callback
  :: Ptr C'libusb_context -> C'libusb_hotplug_callback_handle -> IO ()
foreign import ccall "&libusb_hotplug_deregister_callback" p'libusb_hotplug_deregister_callback
  :: FunPtr (Ptr C'libusb_context -> C'libusb_hotplug_callback_handle -> IO ())

{-# LINE 43 "src/Bindings/Libusb/DeviceHotplugEventNotification.hsc" #-}