content: {-# LANGUAGE ForeignFunctionInterface, FlexibleInstances #-}
  module Convert(Convert(..)) where
  import Data.Int
  import Data.Word
  import Foreign.Ptr (FunPtr)
  
  type Importer f = FunPtr f -> f
  
  class Convert f where
      convert :: Importer f
  
  foreign import ccall safe "dynamic" c_IOFloat :: Importer (IO Float)
  instance Convert (IO Float) where convert = c_IOFloat
  
  foreign import ccall safe "dynamic" c_Float_IOFloat :: Importer (Float -> IO Float)
  instance Convert (Float -> IO Float) where convert = c_Float_IOFloat
  
  foreign import ccall safe "dynamic" c_Float_Float :: Importer (Float -> Float)
  instance Convert (Float -> Float) where convert = c_Float_Float
  
  foreign import ccall safe "dynamic" c_IODouble :: Importer (IO Double)
  instance Convert (IO Double) where convert = c_IODouble
  
  foreign import ccall safe "dynamic" c_Double_IODouble :: Importer (Double -> IO Double)
  instance Convert (Double -> IO Double) where convert = c_Double_IODouble
  
  foreign import ccall safe "dynamic" c_Double_Double :: Importer (Double -> Double)
  instance Convert (Double -> Double) where convert = c_Double_Double
  
  foreign import ccall safe "dynamic" c_Word32_IOWord32 :: Importer (Word32 -> IO Word32)
  instance Convert (Word32 -> IO Word32) where convert = c_Word32_IOWord32
  
  foreign import ccall safe "dynamic" c_Word32_Word32 :: Importer (Word32 -> Word32)
  instance Convert (Word32 -> Word32) where convert = c_Word32_Word32
  
  foreign import ccall safe "dynamic" c_Int32_IOInt32 :: Importer (Int32 -> IO Int32)
  instance Convert (Int32 -> IO Int32) where convert = c_Int32_IOInt32
  
  foreign import ccall safe "dynamic" c_Int32_Int32 :: Importer (Int32 -> Int32)
  instance Convert (Int32 -> Int32) where convert = c_Int32_Int32
  
  