   -- | default nodata value when writing to bands with no datavalue set
   nodata   :: a
   -- | how to convert to double for use in setBandNodataValue
-  nodataAsDouble :: a -> Double
+  toNodata :: a -> CDouble
   -- | how to convert from double for use with bandNodataValue
-  nodataFromDouble :: Double -> a
+  fromNodata :: CDouble -> a
 
 {# enum GDALDataType as Datatype {upcaseFirstLetter} deriving (Eq) #}
 

  -> GDAL s (Vector (Value a))
unsafeLazyReadBand band xoff yoff sx sy bx by = liftIO $
  unsafeInterleaveIO $ readBandIO band xoff yoff sx sy bx by

readBandIO :: forall s t a. GDALType a
  => (Band s t a)

  -> GDAL s (Vector (Value a))
readBand band xoff yoff sx sy bx by = liftIO $
  readBandIO band xoff yoff sx sy bx by
{-# INLINE readBand #-}

-- | Unsafe lazy IO version of readBand.
--   *must* make sure vectors are evaluated inside the GDAL monad and in the
