   , getLinearUnits
 
   , coordinateTransformation
+  , coordinateTransformationIO
 
   , cleanup
   , initialize

  , srsFromWkt
  , srsFromProj4
  , srsFromEPSG
  , srsFromXML

  , srsToWkt

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 ^
