   , srsFromWkt
   , srsFromProj4
   , srsFromEPSG
+  , srsFromEPSGIO
   , srsFromXML
 
   , srsToWkt

  , getLinearUnits

  , coordinateTransformation

  , cleanup
  , initialize

srsFromEPSG = fromImporter importFromEPSG
{-# NOINLINE srsFromEPSG #-}

srsFromEPSGIO :: Int -> IO (Either OGRException SpatialReference)
srsFromEPSGIO = fromImporterIO importFromEPSG

fromImporter
  :: (SpatialReference -> a -> IO CInt) -> a
  -> Either OGRException SpatialReference
fromImporter f = unsafePerformIO . fromImporterIO f
{-# NOINLINE fromImporter #-}

fromImporterIO
  :: (SpatialReference -> a -> IO CInt) -> a
  -> IO (Either OGRException SpatialReference)
fromImporterIO f s = do
  r <- emptySpatialRef
  try (checkOGRError "srsFrom" (f r s) >> return r)


{#fun ImportFromProj4 as ^
