summaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authorShea Levy <shea@shealevy.com>2017-01-10 13:33:58 -0500
committerBen Gamari <ben@smart-cactus.org>2017-01-10 13:34:05 -0500
commit226c5352bb63ab53b11a23484c8ec8f20a57d538 (patch)
tree5b25c0f78748a237c8ea6fa45b3b49f004f096f9 /libraries
parent12ad4d417b89462ba8e19a3c7772a931b3a93f0e (diff)
downloadhaskell-226c5352bb63ab53b11a23484c8ec8f20a57d538.tar.gz
base: Add Foreign.ForeignPtr.plusForeignPtr.
Reviewers: simonmar, austin, hvr, bgamari Reviewed By: bgamari Subscribers: RyanGlScott, thomie Differential Revision: https://phabricator.haskell.org/D2900
Diffstat (limited to 'libraries')
-rw-r--r--libraries/base/Foreign/ForeignPtr.hs1
-rw-r--r--libraries/base/Foreign/ForeignPtr/Imp.hs1
-rw-r--r--libraries/base/GHC/ForeignPtr.hs7
-rw-r--r--libraries/base/changelog.md2
4 files changed, 11 insertions, 0 deletions
diff --git a/libraries/base/Foreign/ForeignPtr.hs b/libraries/base/Foreign/ForeignPtr.hs
index cedfba7138..a684a8d25b 100644
--- a/libraries/base/Foreign/ForeignPtr.hs
+++ b/libraries/base/Foreign/ForeignPtr.hs
@@ -35,6 +35,7 @@ module Foreign.ForeignPtr (
-- ** Low-level operations
, touchForeignPtr
, castForeignPtr
+ , plusForeignPtr
-- ** Allocating managed memory
, mallocForeignPtr
diff --git a/libraries/base/Foreign/ForeignPtr/Imp.hs b/libraries/base/Foreign/ForeignPtr/Imp.hs
index 2c3f39365b..4824c3058a 100644
--- a/libraries/base/Foreign/ForeignPtr/Imp.hs
+++ b/libraries/base/Foreign/ForeignPtr/Imp.hs
@@ -38,6 +38,7 @@ module Foreign.ForeignPtr.Imp
, unsafeForeignPtrToPtr
, touchForeignPtr
, castForeignPtr
+ , plusForeignPtr
-- ** Allocating managed memory
, mallocForeignPtr
diff --git a/libraries/base/GHC/ForeignPtr.hs b/libraries/base/GHC/ForeignPtr.hs
index b9b29eaff6..60880846b6 100644
--- a/libraries/base/GHC/ForeignPtr.hs
+++ b/libraries/base/GHC/ForeignPtr.hs
@@ -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 ()
diff --git a/libraries/base/changelog.md b/libraries/base/changelog.md
index e0cd3845fc..b73e01ecc0 100644
--- a/libraries/base/changelog.md
+++ b/libraries/base/changelog.md
@@ -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