 {-# LANGUAGE DataKinds #-}
 {-# LANGUAGE KindSignatures #-}
 {-# LANGUAGE GeneralizedNewtypeDeriving #-}
+{-# LANGUAGE StandaloneDeriving #-}
 
 module GDAL.Internal.DataType (
     GDALType (..)

  GType 'GDT_CFloat64 = CComplex CDouble

newtype CComplex a = CComplex (Complex a)
  deriving (Eq, Storable, Show)

class KnownDataType (k :: DataType) where
  dataTypeVal :: Proxy (k :: DataType) -> DataType

  {-# INLINE fromCDouble #-}

#ifdef STORABLE_COMPLEX

deriving instance Storable a => Storable (CComplex a)

instance GDALType (Complex Int16) where
  type DataTypeT (Complex Int16) = 'GDT_CInt16
  toCDouble = fromIntegral . realPart
