@@ -82,8 +82,7 @@ import Data.Functor.Identity (runIdentity)
82import Data.Word (Word8)
82import Data.Word (Word8)
83import Foreign.C.String (CString)
83import Foreign.C.String (CString)
84import Foreign.C.Types (CSize(..), CInt(..))
84import Foreign.C.Types (CSize(..), CInt(..))
85−import Foreign.ForeignPtr
86− (ForeignPtr, withForeignPtr, touchForeignPtr, plusForeignPtr)
85+import Foreign.ForeignPtr (ForeignPtr, withForeignPtr, touchForeignPtr)
87import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
86import Foreign.ForeignPtr.Unsafe (unsafeForeignPtrToPtr)
88import Foreign.Ptr (plusPtr, minusPtr, castPtr, nullPtr)
87import Foreign.Ptr (plusPtr, minusPtr, castPtr, nullPtr)
89import Foreign.Storable (Storable(..))
88import Foreign.Storable (Storable(..))
@@ -108,6 +107,15 @@ import qualified GHC.Exts as Exts
108import qualified Data.Foldable as F
107import qualified Data.Foldable as F
110+#if MIN_VERSION_base(4,10,0)
111+import Foreign.ForeignPtr (plusForeignPtr)
113+import GHC.Base (Int(..), plusAddr#)
114+import GHC.ForeignPtr (ForeignPtr(..))
115+plusForeignPtr :: ForeignPtr a -> Int -> ForeignPtr b
116+plusForeignPtr (ForeignPtr addr c) (I# d) = ForeignPtr (plusAddr# addr d) c
111-------------------------------------------------------------------------------
119-------------------------------------------------------------------------------
112-- Design Notes
120-- Design Notes
113-------------------------------------------------------------------------------
121-------------------------------------------------------------------------------