base: Add Foreign.ForeignPtr.plusForeignPtr.
authorShea Levy <shea@shealevy.com>
Tue, 10 Jan 2017 18:33:58 +0000 (13:33 -0500)
committerBen Gamari <ben@smart-cactus.org>
Tue, 10 Jan 2017 18:34:05 +0000 (13:34 -0500)
Reviewers: simonmar, austin, hvr, bgamari

Reviewed By: bgamari

Subscribers: RyanGlScott, thomie

Differential Revision: https://phabricator.haskell.org/D2900

libraries/base/Foreign/ForeignPtr.hs
libraries/base/Foreign/ForeignPtr/Imp.hs
libraries/base/GHC/ForeignPtr.hs
libraries/base/changelog.md

index cedfba7..a684a8d 100644 (file)
@@ -35,6 +35,7 @@ module Foreign.ForeignPtr (
         -- ** Low-level operations
         , touchForeignPtr
         , castForeignPtr
+        , plusForeignPtr
 
         -- ** Allocating managed memory
         , mallocForeignPtr
index 2c3f393..4824c30 100644 (file)
@@ -38,6 +38,7 @@ module Foreign.ForeignPtr.Imp
         , unsafeForeignPtrToPtr
         , touchForeignPtr
         , castForeignPtr
+        , plusForeignPtr
 
         -- ** Allocating managed memory
         , mallocForeignPtr
index b9b29ea..6088084 100644 (file)
@@ -39,6 +39,7 @@ module GHC.ForeignPtr
         touchForeignPtr,
         unsafeForeignPtrToPtr,
         castForeignPtr,
+        plusForeignPtr,
         newConcForeignPtr,
         addForeignPtrConcFinalizer,
         finalizeForeignPtr
@@ -434,6 +435,12 @@ castForeignPtr :: ForeignPtr a -> ForeignPtr b
 -- parameterised by one type into another type.
 castForeignPtr = coerce
 
+plusForeignPtr :: ForeignPtr a -> Int -> ForeignPtr b
+-- ^Advances the given address by the given offset in bytes.
+--
+-- @since 4.10.0.0
+plusForeignPtr (ForeignPtr addr c) (I# d) = ForeignPtr (plusAddr# addr d) c
+
 -- | Causes the finalizers associated with a foreign pointer to be run
 -- immediately.
 finalizeForeignPtr :: ForeignPtr a -> IO ()
index e0cd384..b73e01e 100644 (file)
@@ -35,6 +35,8 @@
 
   * Raw buffer operations in `GHC.IO.FD` are now strict in the buffer, offset, and length operations (#9696)
 
+  * Add `plusForeignPtr` to `Foreign.ForeignPtr`.
+
 ## 4.9.0.0  *May 2016*
 
   * Bundled with GHC 8.0