summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
9185a42)
an instance for FunPtr, and minor Hugs fixes:
* for Hugs only, move the instances for ST, STRef and STArray back.
Having them in Data.Typeable, which is imported by Data.Dynamic,
would mean that every invocation of runhugs or ffihugs would need
the -98 option.
* Hugs also has MVar and the exception types.
and NHC has ForeignPtr too.
import Hugs.ST
import qualified Hugs.LazyST as LazyST
import Hugs.ST
import qualified Hugs.LazyST as LazyST
+INSTANCE_TYPEABLE2(ST,sTTc,"ST")
INSTANCE_TYPEABLE0(RealWorld,realWorldTc,"RealWorld")
fixST :: (a -> ST s a) -> ST s a
INSTANCE_TYPEABLE0(RealWorld,realWorldTc,"RealWorld")
fixST :: (a -> ST s a) -> ST s a
{-# INLINE unsafeWrite #-}
unsafeWrite = ArrST.unsafeWriteSTArray
{-# INLINE unsafeWrite #-}
unsafeWrite = ArrST.unsafeWriteSTArray
+#ifdef __HUGS__
+INSTANCE_TYPEABLE3(STArray,sTArrayTc,"STArray")
+#endif
+
-----------------------------------------------------------------------------
-- Flat unboxed mutable arrays (ST monad)
-----------------------------------------------------------------------------
-- Flat unboxed mutable arrays (ST monad)
#ifdef __HUGS__
import Hugs.ST
#ifdef __HUGS__
import Hugs.ST
+import Data.Typeable
+
+#include "Typeable.h"
+INSTANCE_TYPEABLE2(STRef,stRefTc,"STRef")
#endif
-- |Mutate the contents of an 'STRef'
#endif
-- |Mutate the contents of an 'STRef'
ArrayException, AsyncException, Handle )
import GHC.ST ( ST )
import GHC.STRef ( STRef )
ArrayException, AsyncException, Handle )
import GHC.ST ( ST )
import GHC.STRef ( STRef )
+import GHC.Ptr ( Ptr, FunPtr )
import GHC.ForeignPtr ( ForeignPtr )
import GHC.Stable ( StablePtr )
import GHC.Arr ( Array, STArray )
import GHC.ForeignPtr ( ForeignPtr )
import GHC.Stable ( StablePtr )
import GHC.Arr ( Array, STArray )
import Hugs.IORef
import Hugs.IOExts
-- For the Typeable instance
import Hugs.IORef
import Hugs.IOExts
-- For the Typeable instance
-import Hugs.Array ( Array )
-import Hugs.ST ( ST, STRef, STArray )
-import Hugs.ForeignPtr ( ForeignPtr )
-imprt
+import Hugs.Array ( Array )
+import Hugs.ConcBase ( MVar )
#endif
#ifdef __GLASGOW_HASKELL__
#endif
#ifdef __GLASGOW_HASKELL__
import IO (Handle)
import Ratio (Ratio)
-- For the Typeable instance
import IO (Handle)
import Ratio (Ratio)
-- For the Typeable instance
-import NHC.FFI ( Ptr,StablePtr )
+import NHC.FFI ( Ptr,FunPtr,StablePtr,ForeignPtr )
import Array ( Array )
#endif
import Array ( Array )
#endif
INSTANCE_TYPEABLE2((->),funTc,"->")
INSTANCE_TYPEABLE1(IO,ioTc,"IO")
INSTANCE_TYPEABLE2((->),funTc,"->")
INSTANCE_TYPEABLE1(IO,ioTc,"IO")
-#ifdef __GLASGOW_HASKELL__
-
-
+#if defined(__GLASGOW_HASKELL__) || defined(__HUGS__)
-- Types defined in GHC.IOBase
INSTANCE_TYPEABLE1(MVar,mvarTc,"MVar" )
INSTANCE_TYPEABLE0(Exception,exceptionTc,"Exception")
-- Types defined in GHC.IOBase
INSTANCE_TYPEABLE1(MVar,mvarTc,"MVar" )
INSTANCE_TYPEABLE0(Exception,exceptionTc,"Exception")
INSTANCE_TYPEABLE0(ArithException,arithExceptionTc,"ArithException")
INSTANCE_TYPEABLE0(ArrayException,arrayExceptionTc,"ArrayException")
INSTANCE_TYPEABLE0(AsyncException,asyncExceptionTc,"AsyncException")
INSTANCE_TYPEABLE0(ArithException,arithExceptionTc,"ArithException")
INSTANCE_TYPEABLE0(ArrayException,arrayExceptionTc,"ArrayException")
INSTANCE_TYPEABLE0(AsyncException,asyncExceptionTc,"AsyncException")
-- Types defined in GHC.Arr
INSTANCE_TYPEABLE2(Array,arrayTc,"Array")
-- Types defined in GHC.Arr
INSTANCE_TYPEABLE2(Array,arrayTc,"Array")
-#endif
-
-
-#ifndef __NHC__
-INSTANCE_TYPEABLE2((,),pairTc,",")
-INSTANCE_TYPEABLE3((,,),tup3Tc,",,")
--- I don't think NHC has ST, STRef, STArray, ForeignPtr
--- but GHC and Hugs do
+#ifdef __GLASGOW_HASKELL__
+-- Hugs has these too, but their Typeable<n> instances are defined
+-- elsewhere to keep this module within Haskell 98.
+-- This is important because every invocation of runhugs or ffihugs
+-- uses this module via Data.Dynamic.
INSTANCE_TYPEABLE2(ST,stTc,"ST")
INSTANCE_TYPEABLE2(STRef,stRefTc,"STRef")
INSTANCE_TYPEABLE2(ST,stTc,"ST")
INSTANCE_TYPEABLE2(STRef,stRefTc,"STRef")
-INSTANCE_TYPEABLE1(ForeignPtr,foreignPtrTc,"ForeignPtr")
INSTANCE_TYPEABLE3(STArray,sTArrayTc,"STArray")
INSTANCE_TYPEABLE3(STArray,sTArrayTc,"STArray")
+#ifndef __NHC__
+INSTANCE_TYPEABLE2((,),pairTc,",")
+INSTANCE_TYPEABLE3((,,),tup3Tc,",,")
tup4Tc :: TyCon
tup4Tc = mkTyCon ",,,"
tup4Tc :: TyCon
tup4Tc = mkTyCon ",,,"
instance Typeable7 (,,,,,,) where
typeOf7 tu = mkTyConApp tup7Tc []
instance Typeable7 (,,,,,,) where
typeOf7 tu = mkTyConApp tup7Tc []
INSTANCE_TYPEABLE1(Ptr,ptrTc,"Ptr")
INSTANCE_TYPEABLE1(Ptr,ptrTc,"Ptr")
-INSTANCE_TYPEABLE1(StablePtr,stableptrTc,"StablePtr")
-INSTANCE_TYPEABLE1(IORef,iorefTc,"IORef")
+INSTANCE_TYPEABLE1(FunPtr,funPtrTc,"FunPtr")
+INSTANCE_TYPEABLE1(ForeignPtr,foreignPtrTc,"ForeignPtr")
+INSTANCE_TYPEABLE1(StablePtr,stablePtrTc,"StablePtr")
+INSTANCE_TYPEABLE1(IORef,iORefTc,"IORef")
-------------------------------------------------------
--
-------------------------------------------------------
--