For GHC, implement the Typeable.hs macros using standalone deriving
[ghc-base.git] / Foreign / C / Types.hs
index 39a6b00..98113c8 100644 (file)
@@ -1,7 +1,15 @@
-{-# OPTIONS_GHC -XNoImplicitPrelude #-}
+{-# LANGUAGE CPP
+           , NoImplicitPrelude
+           , MagicHash
+           , GeneralizedNewtypeDeriving
+  #-}
 {-# OPTIONS_GHC -fno-warn-unused-binds #-}
+#ifdef __GLASGOW_HASKELL__
+{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving #-}
+#endif
 -- XXX -fno-warn-unused-binds stops us warning about unused constructors,
 -- but really we should just remove them if we don't want them
+
 -----------------------------------------------------------------------------
 -- |
 -- Module      :  Foreign.C.Types
@@ -72,6 +80,7 @@ module Foreign.C.Types
         , CLLong(..),   CULLong(..)
         , CClock(..),   CTime(..)
         , CFloat(..),   CDouble(..), CLDouble(..)
+        , CIntPtr(..), CUIntPtr(..), CIntMax(..), CUIntMax(..)
 #endif
           -- ** Other types
 
@@ -85,7 +94,7 @@ import Foreign.Storable
 import Data.Bits        ( Bits(..) )
 import Data.Int         ( Int8,  Int16,  Int32,  Int64  )
 import Data.Word        ( Word8, Word16, Word32, Word64 )
-import {-# SOURCE #-} Data.Typeable (Typeable(typeOf), TyCon, mkTyCon, mkTyConApp)
+import {-# SOURCE #-} Data.Typeable
 
 #ifdef __GLASGOW_HASKELL__
 import GHC.Base
@@ -284,6 +293,7 @@ import NHC.FFI
   , CPtrdiff(..), CSize(..),   CWchar(..), CSigAtomic(..)
   , CClock(..),   CTime(..)
   , CFloat(..),   CDouble(..), CLDouble(..)
+  , CIntPtr(..),  CUIntPtr(..),CIntMax(..), CUIntMax(..)
   , CFile,        CFpos,       CJmpBuf
   , Storable(..)
   )
@@ -321,5 +331,9 @@ INSTANCE_BITS(CPtrdiff)
 INSTANCE_BITS(CWchar)
 INSTANCE_BITS(CSigAtomic)
 INSTANCE_BITS(CSize)
+INSTANCE_BITS(CIntPtr)
+INSTANCE_BITS(CUIntPtr)
+INSTANCE_BITS(CIntMax)
+INSTANCE_BITS(CUIntMax)
 
 #endif