regional-pointers 0.6.0.1 → 0.7
raw patch · 6 files changed
+48/−60 lines, 6 filesdep −monad-controldep ~regionsPVP ok
version bump matches the API change (PVP)
Dependencies removed: monad-control
Dependency ranges changed: regions
API changes (from Hackage documentation)
- Foreign.C.String.Region: newCAString :: MonadControlIO pr => String -> RegionT s pr (RegionalCString RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCAString :: RegionControlIO pr => String -> RegionT s pr (RegionalCString RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: newCAStringLen :: MonadControlIO pr => String -> RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCAStringLen :: RegionControlIO pr => String -> RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: newCString :: MonadControlIO pr => String -> RegionT s pr (RegionalCString RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCString :: RegionControlIO pr => String -> RegionT s pr (RegionalCString RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: newCStringLen :: MonadControlIO pr => String -> RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCStringLen :: RegionControlIO pr => String -> RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: newCWString :: MonadControlIO pr => String -> RegionT s pr (RegionalCWString RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCWString :: RegionControlIO pr => String -> RegionT s pr (RegionalCWString RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: newCWStringLen :: MonadControlIO pr => String -> RegionT s pr (RegionalCWStringLen RegionalPtr (RegionT s pr))
+ Foreign.C.String.Region: newCWStringLen :: RegionControlIO pr => String -> RegionT s pr (RegionalCWStringLen RegionalPtr (RegionT s pr))
- Foreign.C.String.Region: withCAString :: MonadControlIO pr => String -> (forall sl. RegionalCString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCAString :: RegionControlIO pr => String -> (forall sl. RegionalCString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.C.String.Region: withCAStringLen :: MonadControlIO pr => String -> (forall sl. RegionalCStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCAStringLen :: RegionControlIO pr => String -> (forall sl. RegionalCStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.C.String.Region: withCString :: MonadControlIO pr => String -> (forall sl. RegionalCString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCString :: RegionControlIO pr => String -> (forall sl. RegionalCString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.C.String.Region: withCStringLen :: MonadControlIO pr => String -> (forall sl. RegionalCStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCStringLen :: RegionControlIO pr => String -> (forall sl. RegionalCStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.C.String.Region: withCWString :: MonadControlIO pr => String -> (forall sl. RegionalCWString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCWString :: RegionControlIO pr => String -> (forall sl. RegionalCWString LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.C.String.Region: withCWStringLen :: MonadControlIO pr => String -> (forall sl. RegionalCWStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
+ Foreign.C.String.Region: withCWStringLen :: RegionControlIO pr => String -> (forall sl. RegionalCWStringLen LocalPtr (LocalRegion sl s) -> RegionT (Local s) pr α) -> RegionT s pr α
- Foreign.Marshal.Alloc.Region: alloca :: (Storable α, MonadControlIO pr) => (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Alloc.Region: alloca :: (Storable α, RegionControlIO pr) => (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Alloc.Region: allocaBytes :: MonadControlIO pr => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Alloc.Region: allocaBytes :: RegionControlIO pr => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Alloc.Region: allocaBytesAligned :: MonadControlIO pr => Int -> Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Alloc.Region: allocaBytesAligned :: RegionControlIO pr => Int -> Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Alloc.Region: malloc :: (Storable α, MonadControlIO pr) => RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Alloc.Region: malloc :: (Storable α, RegionControlIO pr) => RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Alloc.Region: mallocBytes :: MonadControlIO pr => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Alloc.Region: mallocBytes :: RegionControlIO pr => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Array.Region: allocaArray :: (Storable α, MonadControlIO pr) => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: allocaArray :: (Storable α, RegionControlIO pr) => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Array.Region: allocaArray0 :: (Storable α, MonadControlIO pr) => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: allocaArray0 :: (Storable α, RegionControlIO pr) => Int -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Array.Region: mallocArray :: (Storable α, MonadControlIO pr) => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Array.Region: mallocArray :: (Storable α, RegionControlIO pr) => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Array.Region: mallocArray0 :: (Storable α, MonadControlIO pr) => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Array.Region: mallocArray0 :: (Storable α, RegionControlIO pr) => Int -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Array.Region: newArray :: (Storable α, MonadControlIO pr) => [α] -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Array.Region: newArray :: (Storable α, RegionControlIO pr) => [α] -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Array.Region: newArray0 :: (Storable α, MonadControlIO pr) => α -> [α] -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Array.Region: newArray0 :: (Storable α, RegionControlIO pr) => α -> [α] -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Array.Region: withArray :: (Storable α, MonadControlIO pr) => [α] -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: withArray :: (Storable α, RegionControlIO pr) => [α] -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Array.Region: withArray0 :: (Storable α, MonadControlIO pr) => α -> [α] -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: withArray0 :: (Storable α, RegionControlIO pr) => α -> [α] -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Array.Region: withArrayLen :: (Storable α, MonadControlIO pr) => [α] -> (forall sl. Int -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: withArrayLen :: (Storable α, RegionControlIO pr) => [α] -> (forall sl. Int -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Array.Region: withArrayLen0 :: (Storable α, MonadControlIO pr) => α -> [α] -> (forall sl. Int -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Array.Region: withArrayLen0 :: (Storable α, RegionControlIO pr) => α -> [α] -> (forall sl. Int -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Marshal.Utils.Region: new :: (Storable α, MonadControlIO pr) => α -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Marshal.Utils.Region: new :: (Storable α, RegionControlIO pr) => α -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Marshal.Utils.Region: with :: (Storable α, MonadControlIO pr) => α -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Marshal.Utils.Region: with :: (Storable α, RegionControlIO pr) => α -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Ptr.Region.Unsafe: wrapAlloca :: MonadControlIO pr => ((Ptr α -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Ptr.Region.Unsafe: wrapAlloca :: RegionControlIO pr => ((Ptr α -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Ptr.Region.Unsafe: wrapAlloca2 :: MonadControlIO pr => ((γ -> Ptr α -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. γ -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Ptr.Region.Unsafe: wrapAlloca2 :: RegionControlIO pr => ((γ -> Ptr α -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. γ -> LocalPtr α (LocalRegion sl s) -> RegionT (Local s) pr β) -> RegionT s pr β
- Foreign.Ptr.Region.Unsafe: wrapMalloc :: MonadControlIO pr => IO (Ptr α) -> RegionT s pr (RegionalPtr α (RegionT s pr))
+ Foreign.Ptr.Region.Unsafe: wrapMalloc :: RegionControlIO pr => IO (Ptr α) -> RegionT s pr (RegionalPtr α (RegionT s pr))
- Foreign.Ptr.Region.Unsafe: wrapNewStringLen :: MonadControlIO pr => IO (Ptr α, Int) -> RegionT s pr (RegionalPtr α (RegionT s pr), Int)
+ Foreign.Ptr.Region.Unsafe: wrapNewStringLen :: RegionControlIO pr => IO (Ptr α, Int) -> RegionT s pr (RegionalPtr α (RegionT s pr), Int)
- Foreign.Ptr.Region.Unsafe: wrapWithStringLen :: MonadControlIO pr => (((Ptr α, Int) -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. (LocalPtr α (LocalRegion sl s), Int) -> RegionT (Local s) pr β) -> RegionT s pr β
+ Foreign.Ptr.Region.Unsafe: wrapWithStringLen :: RegionControlIO pr => (((Ptr α, Int) -> IO (RegionT s pr β)) -> IO (RegionT s pr β)) -> (forall sl. (LocalPtr α (LocalRegion sl s), Int) -> RegionT (Local s) pr β) -> RegionT s pr β
Files
- Foreign/C/String/Region.hs +13/−15
- Foreign/Marshal/Alloc/Region.hs +10/−13
- Foreign/Marshal/Array/Region.hs +11/−13
- Foreign/Marshal/Utils/Region.hs +3/−5
- Foreign/Ptr/Region/Internal.hs +9/−11
- regional-pointers.cabal +2/−3
Foreign/C/String/Region.hs view
@@ -89,11 +89,9 @@ -- from transformers: import Control.Monad.IO.Class ( MonadIO, liftIO ) --- from monad-control:-import Control.Monad.IO.Control ( MonadControlIO )- -- from regions: import Control.Monad.Trans.Region ( RegionT+ , RegionControlIO , AncestorRegion , LocalRegion, Local )@@ -152,7 +150,7 @@ -- The Haskell string may /not/ contain any NUL characters -- -- Wraps: @Foreign.C.String.'FCS.newCString'@.-newCString ∷ MonadControlIO pr+newCString ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCString RegionalPtr (RegionT s pr)) newCString = wrapMalloc ∘ FCS.newCString @@ -160,7 +158,7 @@ -- explicit length information. -- -- Wraps: @Foreign.C.String.'FCS.newCStringLen'@.-newCStringLen ∷ MonadControlIO pr+newCStringLen ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr)) newCStringLen = wrapNewStringLen ∘ FCS.newCStringLen @@ -173,7 +171,7 @@ -- via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCString'@.-withCString ∷ MonadControlIO pr+withCString ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCString LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α@@ -188,7 +186,7 @@ -- via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCStringLen'@.-withCStringLen ∷ MonadControlIO pr+withCStringLen ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCStringLen LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α@@ -224,7 +222,7 @@ -- The Haskell string may /not/ contain any NUL characters -- -- Wraps: @Foreign.C.String.'FCS.newCAString'@.-newCAString ∷ MonadControlIO pr+newCAString ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCString RegionalPtr (RegionT s pr)) newCAString = wrapMalloc ∘ FCS.newCAString @@ -232,7 +230,7 @@ -- explicit length information. -- -- Wraps: @Foreign.C.String.'FCS.newCAStringLen'@.-newCAStringLen ∷ MonadControlIO pr+newCAStringLen ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCStringLen RegionalPtr (RegionT s pr)) newCAStringLen = wrapNewStringLen ∘ FCS.newCAStringLen @@ -245,7 +243,7 @@ -- via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCAString'@.-withCAString ∷ MonadControlIO pr+withCAString ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCString LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α@@ -260,7 +258,7 @@ -- via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCAStringLen'@.-withCAStringLen ∷ MonadControlIO pr+withCAStringLen ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCStringLen LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α@@ -305,7 +303,7 @@ -- The Haskell string may /not/ contain any NUL characters. -- -- Wraps: @Foreign.C.String.'FCS.newCWString'@.-newCWString ∷ MonadControlIO pr+newCWString ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCWString RegionalPtr (RegionT s pr)) newCWString = wrapMalloc ∘ FCS.newCWString @@ -313,7 +311,7 @@ -- with explicit length information. -- -- Wraps: @Foreign.C.String.'FCS.newCWStringLen'@.-newCWStringLen ∷ MonadControlIO pr+newCWStringLen ∷ RegionControlIO pr ⇒ String → RegionT s pr (RegionalCWStringLen RegionalPtr (RegionT s pr)) newCWStringLen = wrapNewStringLen ∘ FCS.newCWStringLen @@ -326,7 +324,7 @@ -- normally or via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCWString'@.-withCWString ∷ MonadControlIO pr+withCWString ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCWString LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α@@ -343,7 +341,7 @@ -- normally or via an exception). -- -- Wraps: @Foreign.C.String.'FCS.withCWStringLen'@.-withCWStringLen ∷ MonadControlIO pr+withCWStringLen ∷ RegionControlIO pr ⇒ String → (∀ sl. RegionalCWStringLen LocalPtr (LocalRegion sl s) → RegionT (Local s) pr α
Foreign/Marshal/Alloc/Region.hs view
@@ -44,19 +44,16 @@ #endif #if __HADDOCK__-import Foreign.Storable ( sizeOf )+import Foreign.Storable ( sizeOf ) #endif --- from monad-control:-import Control.Monad.IO.Control ( MonadControlIO )- -- from regions:-import Control.Monad.Trans.Region ( RegionT, LocalRegion, Local )+import Control.Monad.Trans.Region ( RegionT, RegionControlIO, LocalRegion, Local ) -- from ourselves:-import Foreign.Ptr.Region ( RegionalPtr, )-import Foreign.Ptr.Region.Internal ( LocalPtr )-import Foreign.Ptr.Region.Unsafe ( wrapAlloca, wrapMalloc )+import Foreign.Ptr.Region ( RegionalPtr, )+import Foreign.Ptr.Region.Internal ( LocalPtr )+import Foreign.Ptr.Region.Unsafe ( wrapAlloca, wrapMalloc ) --------------------------------------------------------------------------------@@ -72,7 +69,7 @@ This should provide a safer replacement for: @Foreign.Marshal.Alloc.'FMA.alloca'@. -}-alloca ∷ (Storable α, MonadControlIO pr)+alloca ∷ (Storable α, RegionControlIO pr) ⇒ (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β alloca = wrapAlloca FMA.alloca@@ -88,7 +85,7 @@ This should provide a safer replacement for: @Foreign.Marshal.Alloc.'FMA.allocaBytes'@. -}-allocaBytes ∷ MonadControlIO pr+allocaBytes ∷ RegionControlIO pr ⇒ Int → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -98,7 +95,7 @@ -- | This should provide a safer replacement for: -- @Foreign.Marshal.Alloc.'FMA.allocaBytesAligned'@. allocaBytesAligned ∷- MonadControlIO pr+ RegionControlIO pr ⇒ Int → Int → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -118,7 +115,7 @@ This should provide a safer replacement for: @Foreign.Marshal.Alloc.'FMA.malloc'@. -}-malloc ∷ ∀ α pr s. (Storable α, MonadControlIO pr)+malloc ∷ ∀ α pr s. (Storable α, RegionControlIO pr) ⇒ RegionT s pr (RegionalPtr α (RegionT s pr)) malloc = wrapMalloc FMA.malloc @@ -130,7 +127,7 @@ This should provide a safer replacement for: @Foreign.Marshal.Alloc.'FMA.mallocBytes'@. -}-mallocBytes ∷ MonadControlIO pr+mallocBytes ∷ RegionControlIO pr ⇒ Int → RegionT s pr (RegionalPtr α (RegionT s pr)) mallocBytes size = wrapMalloc (FMA.mallocBytes size)
Foreign/Marshal/Array/Region.hs view
@@ -71,11 +71,9 @@ -- from transformers: import Control.Monad.IO.Class ( MonadIO, liftIO ) --- from monad-control:-import Control.Monad.IO.Control ( MonadControlIO )- -- from regions: import Control.Monad.Trans.Region ( RegionT+ , RegionControlIO , AncestorRegion , LocalRegion, Local )@@ -104,19 +102,19 @@ -- | Allocate storage for the given number of elements of a storable type. -- -- Like 'malloc', but for multiple elements.-mallocArray ∷ (Storable α, MonadControlIO pr)+mallocArray ∷ (Storable α, RegionControlIO pr) ⇒ Int → RegionT s pr (RegionalPtr α (RegionT s pr)) mallocArray = wrapMalloc ∘ FMA.mallocArray -- | Like 'mallocArray', but add an extra position to hold a special termination -- element.-mallocArray0 ∷ (Storable α, MonadControlIO pr)+mallocArray0 ∷ (Storable α, RegionControlIO pr) ⇒ Int → RegionT s pr (RegionalPtr α (RegionT s pr)) mallocArray0 = wrapMalloc ∘ FMA.mallocArray0 -- | Temporarily allocate space for the given number of elements (like 'alloca', -- but for multiple elements).-allocaArray ∷ (Storable α, MonadControlIO pr)+allocaArray ∷ (Storable α, RegionControlIO pr) ⇒ Int → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -124,7 +122,7 @@ -- | Like 'allocaArray', but add an extra position to hold a special termination -- element.-allocaArray0 ∷ (Storable α, MonadControlIO pr)+allocaArray0 ∷ (Storable α, RegionControlIO pr) ⇒ Int → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -189,27 +187,27 @@ -- sequence of storable values. -- -- Like 'new', but for multiple elements.-newArray ∷ (Storable α, MonadControlIO pr)+newArray ∷ (Storable α, RegionControlIO pr) ⇒ [α] → RegionT s pr (RegionalPtr α (RegionT s pr )) newArray = wrapMalloc ∘ FMA.newArray -- | Write a list of storable elements into a newly allocated, consecutive -- sequence of storable values, where the end is fixed by the given end marker.-newArray0 ∷ (Storable α, MonadControlIO pr)+newArray0 ∷ (Storable α, RegionControlIO pr) ⇒ α → [α] → RegionT s pr (RegionalPtr α (RegionT s pr)) newArray0 marker vals = wrapMalloc (FMA.newArray0 marker vals) -- | Temporarily store a list of storable values in memory. -- -- Like 'with', but for multiple elements.-withArray ∷ (Storable α, MonadControlIO pr)+withArray ∷ (Storable α, RegionControlIO pr) ⇒ [α] → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β withArray = wrapAlloca ∘ FMA.withArray -- | Like 'withArray', but a terminator indicates where the array ends.-withArray0 ∷ (Storable α, MonadControlIO pr)+withArray0 ∷ (Storable α, RegionControlIO pr) ⇒ α → [α] → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β)@@ -219,7 +217,7 @@ -- | Like 'withArray', but the action gets the number of values as an additional -- parameter. withArrayLen ∷- (Storable α, MonadControlIO pr)+ (Storable α, RegionControlIO pr) ⇒ [α] → (∀ sl. Int → LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -227,7 +225,7 @@ -- | Like 'withArrayLen', but a terminator indicates where the array ends. withArrayLen0 ∷- (Storable α, MonadControlIO pr)+ (Storable α, RegionControlIO pr) ⇒ α → [α] → (∀ sl. Int → LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β)
Foreign/Marshal/Utils/Region.hs view
@@ -70,11 +70,9 @@ -- from transformers: import Control.Monad.IO.Class ( MonadIO, liftIO ) --- from monad-control:-import Control.Monad.IO.Control ( MonadControlIO )- -- from regions: import Control.Monad.Trans.Region ( RegionT+ , RegionControlIO , AncestorRegion , RootRegion , LocalRegion, Local@@ -105,7 +103,7 @@ -- exception). -- -- This provides a safer replacement for @Foreign.Marshal.Utils.'FMU.with'@.-with ∷ (Storable α, MonadControlIO pr)+with ∷ (Storable α, RegionControlIO pr) ⇒ α → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) -- ^ → RegionT s pr β with = wrapAlloca ∘ FMU.with@@ -115,7 +113,7 @@ -- 'sizeOf' method from the instance of 'Storable' for the appropriate type. -- -- This provides a safer replacement for @Foreign.Marshal.Utils.'FMU.new'@.-new ∷ (Storable α, MonadControlIO pr)+new ∷ (Storable α, RegionControlIO pr) ⇒ α → RegionT s pr (RegionalPtr α (RegionT s pr)) new = wrapMalloc ∘ FMU.new
Foreign/Ptr/Region/Internal.hs view
@@ -77,6 +77,7 @@ -- from regions: import Control.Monad.Trans.Region.OnExit ( FinalizerHandle, Finalizer, onExit ) import Control.Monad.Trans.Region ( RegionT+ , RegionControlIO , AncestorRegion , RootRegion , LocalRegion, Local@@ -88,9 +89,6 @@ , unsafeLiftIOOp_ ) --- from monad-control:-import Control.Monad.IO.Control ( MonadControlIO )- #if MIN_VERSION_base(4,3,0) import Control.Exception ( mask_ ) #else@@ -128,11 +126,11 @@ → RegionT s pr (RegionalPtr α (RegionT s pr)) unsafeRegionalPtr ptr finalize = liftM (RegionalPtr ptr) (onExit finalize) -wrapMalloc ∷ MonadControlIO pr+wrapMalloc ∷ RegionControlIO pr ⇒ IO (Ptr α) → RegionT s pr (RegionalPtr α (RegionT s pr))-wrapMalloc doMalloc = unsafeLiftIOOp_ mask_ $ do- ptr ← liftIO doMalloc- unsafeRegionalPtr ptr (free ptr)+wrapMalloc doMalloc = unsafeControlIO $ \runInIO → mask_ $ do+ ptr ← doMalloc+ runInIO $ unsafeRegionalPtr ptr (free ptr) --------------------------------------------------------------------------------@@ -167,14 +165,14 @@ -- Note that a @LocalPtr@ can not be 'dup'licated to a parent region. newtype LocalPtr α (r ∷ * → *) = LocalPtr (Ptr α) -wrapAlloca ∷ MonadControlIO pr+wrapAlloca ∷ RegionControlIO pr ⇒ ((Ptr α → IO (RegionT s pr β)) → IO (RegionT s pr β)) → (∀ sl. LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β wrapAlloca doAlloca f = unsafeLiftIOOp doAlloca $ unsafeStripLocal ∘ f ∘ LocalPtr -wrapAlloca2 ∷ MonadControlIO pr+wrapAlloca2 ∷ RegionControlIO pr ⇒ ((γ → Ptr α → IO (RegionT s pr β)) → IO (RegionT s pr β)) → (∀ sl. γ → LocalPtr α (LocalRegion sl s) → RegionT (Local s) pr β) → RegionT s pr β@@ -192,7 +190,7 @@ → (pointer α pr, Int) → cr String wrapPeekStringLen peekStringLen = liftIO ∘ peekStringLen ∘ first unsafePtr -wrapNewStringLen ∷ MonadControlIO pr+wrapNewStringLen ∷ RegionControlIO pr ⇒ IO (Ptr α, Int) → RegionT s pr (RegionalPtr α (RegionT s pr), Int) wrapNewStringLen newStringLen = unsafeLiftIOOp_ mask_ $ do@@ -200,7 +198,7 @@ rPtr ← unsafeRegionalPtr ptr (free ptr) return (rPtr, len) -wrapWithStringLen ∷ MonadControlIO pr+wrapWithStringLen ∷ RegionControlIO pr ⇒ (((Ptr α, Int) → IO (RegionT s pr β)) → IO (RegionT s pr β)) → (∀ sl. (LocalPtr α (LocalRegion sl s), Int) → RegionT (Local s) pr β) → RegionT s pr β
regional-pointers.cabal view
@@ -1,5 +1,5 @@ name: regional-pointers-version: 0.6.0.1+version: 0.7 cabal-version: >=1.6 build-type: Custom license: BSD3@@ -40,9 +40,8 @@ GHC-Options: -Wall build-depends: base >= 4 && < 4.5 , base-unicode-symbols >= 0.1.1 && < 0.3- , regions >= 0.10 && < 0.11+ , regions >= 0.11 && < 0.12 , transformers >= 0.2 && < 0.3- , monad-control >= 0.2 && < 0.3 exposed-modules: Foreign.Ptr.Region Foreign.Ptr.Region.Unsafe Foreign.Marshal.Alloc.Region