#include "HsVersions.h"
-- The *host* architecture version:
-#include "MachDeps.h"
+#include "../includes/MachDeps.h"
import {-# SOURCE #-} Name (Name)
import FastString
import Foreign
import Data.Array
-import Data.Bits
-import Data.Int
-import Data.Word
import Data.IORef
import Data.Char ( ord, chr )
import Data.Typeable
import GHC.Real ( Ratio(..) )
import GHC.Exts
import GHC.Word ( Word8(..) )
-import System.IO ( openBinaryFile )
-
-#if __GLASGOW_HASKELL__ >= 611
import GHC.IO ( IO(..) )
-#else
-import GHC.IOBase ( IO(..) )
-#endif
type BinArray = ForeignPtr Word8
instance Binary () where
put_ _ () = return ()
get _ = return ()
--- getF bh p = case getBitsF bh 0 p of (_,b) -> ((),b)
instance Binary Bool where
put_ bh b = putByte bh (fromIntegral (fromEnum b))
get bh = do x <- getWord8 bh; return $! (toEnum (fromIntegral x))
--- getF bh p = case getBitsF bh 1 p of (x,b) -> (toEnum x,b)
instance Binary Char where
put_ bh c = put_ bh (fromIntegral (ord c) :: Word32)
get bh = do x <- get bh; return $! (chr (fromIntegral (x :: Word32)))
--- getF bh p = case getBitsF bh 8 p of (x,b) -> (toEnum x,b)
instance Binary Int where
-#if SIZEOF_HSINT == 4
- put_ bh i = put_ bh (fromIntegral i :: Int32)
- get bh = do
- x <- get bh
- return $! (fromIntegral (x :: Int32))
-#elif SIZEOF_HSINT == 8
put_ bh i = put_ bh (fromIntegral i :: Int64)
get bh = do
x <- get bh
return $! (fromIntegral (x :: Int64))
-#else
-#error "unsupported sizeof(HsInt)"
-#endif
--- getF bh = getBitsF bh 32
instance Binary a => Binary [a] where
put_ bh l = do
#endif
instance Binary (Bin a) where
- put_ bh (BinPtr i) = put_ bh i
- get bh = do i <- get bh; return (BinPtr i)
+ put_ bh (BinPtr i) = put_ bh (fromIntegral i :: Int32)
+ get bh = do i <- get bh; return (BinPtr (fromIntegral (i :: Int32)))
-- -----------------------------------------------------------------------------
-- Instances for Data.Typeable stuff
get bh = do
j <- get bh
- return $! (ud_dict (getUserData bh) ! j)
+ return $! (ud_dict (getUserData bh) ! (fromIntegral (j :: Word32)))
-- Here to avoid loop