{-# OPTIONS -fno-implicit-prelude #-}
-----------------------------------------------------------------------------
---
+-- |
-- Module : Foreign.C.TypesISO
-- Copyright : (c) The FFI task force 2001
--- License : BSD-style (see the file libraries/core/LICENSE)
+-- License : BSD-style (see the file libraries/base/LICENSE)
--
-- Maintainer : ffi@haskell.org
-- Stability : provisional
-- Portability : portable
--
--- $Id: TypesISO.hs,v 1.2 2001/07/03 11:37:50 simonmar Exp $
---
-- A mapping of C types defined by the ISO C standard to corresponding Haskell
-- types. Like CTypes, this is a cool hack...
--
-- Numeric types, instances of: Eq, Ord, Num, Read, Show, Enum,
-- Typeable, Storable
- , CClock(..), CTime(..),
+ , CClock(..), CTime(..)
+ -- Instances of: Eq and Storable
, CFile, CFpos, CJmpBuf
) where
+#ifdef __NHC__
+import NHC.FFI
+ ( CPtrdiff(..)
+ , CSize(..)
+ , CWchar(..)
+ , CSigAtomic(..)
+ , CClock(..)
+ , CTime(..)
+ , CFile
+ , CFpos
+ , CJmpBuf
+ )
+#else
+
import Data.Bits ( Bits(..) )
import Data.Int
import Data.Word
import Data.Dynamic
+import Foreign.Storable
#ifdef __GLASGOW_HASKELL__
import GHC.Base
import GHC.Show
import GHC.Read
import GHC.Num
+#else
+import Control.Monad
+import Foreign.Ptr
#endif
+#include "Dynamic.h"
#include "CTypes.h"
INTEGRAL_TYPE(CPtrdiff,tyConCPtrdiff,"CPtrdiff",HTYPE_PTRDIFF_T)
INTEGRAL_TYPE(CClock,tyConCClock,"CClock",HTYPE_CLOCK_T)
INTEGRAL_TYPE(CTime,tyConCTime,"CTime",HTYPE_TIME_T)
--- TODO: Instances. But which...? :-}
-
+-- FIXME: Implement and provide instances for Eq and Storable
data CFile = CFile
-
data CFpos = CFpos
-
data CJmpBuf = CJmpBuf
-- C99 types which are still missing include:
-- intptr_t, uintptr_t, intmax_t, uintmax_t, wint_t, wctrans_t, wctype_t
-#include "Dynamic.h"
-INSTANCE_TYPEABLE0(CPtrdiff,cPtrdiffTc,"CPtrdiff")
-INSTANCE_TYPEABLE0(CSize,cSizeTc,"CSize")
-INSTANCE_TYPEABLE0(CWchar,cWcharTc,"CWchar")
-INSTANCE_TYPEABLE0(CSigAtomic,cSigAtomicTc,"CSigAtomic")
-INSTANCE_TYPEABLE0(CClock,cClockTc,"CClock")
-INSTANCE_TYPEABLE0(CTime,cTimeTc,"CTime")
+#endif