diff options
author | Alberto Ruiz <aruiz@um.es> | 2010-02-24 12:01:07 +0000 |
---|---|---|
committer | Alberto Ruiz <aruiz@um.es> | 2010-02-24 12:01:07 +0000 |
commit | aae45de54aca92c5f0f013e46c6d6f65508d76f5 (patch) | |
tree | 3a3bbc11b6c87e6b7d469b046dff1a13df15561e /lib/Data/Packed/Internal/Vector.hs | |
parent | ded908e2a222f902b41e500eea5272700db75699 (diff) |
conversion from/to Data.Vector.Storable
Diffstat (limited to 'lib/Data/Packed/Internal/Vector.hs')
-rw-r--r-- | lib/Data/Packed/Internal/Vector.hs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/Data/Packed/Internal/Vector.hs b/lib/Data/Packed/Internal/Vector.hs index 66acd87..51c0d92 100644 --- a/lib/Data/Packed/Internal/Vector.hs +++ b/lib/Data/Packed/Internal/Vector.hs | |||
@@ -23,7 +23,9 @@ module Data.Packed.Internal.Vector ( | |||
23 | createVector, withVector, vec, | 23 | createVector, withVector, vec, |
24 | asComplex, asReal, | 24 | asComplex, asReal, |
25 | fwriteVector, freadVector, fprintfVector, fscanfVector, | 25 | fwriteVector, freadVector, fprintfVector, fscanfVector, |
26 | cloneVector | 26 | cloneVector, |
27 | unsafeToForeignPtr, | ||
28 | unsafeFromForeignPtr | ||
27 | ) where | 29 | ) where |
28 | 30 | ||
29 | import Data.Packed.Internal.Common | 31 | import Data.Packed.Internal.Common |
@@ -51,6 +53,14 @@ data Vector t = | |||
51 | , fptr :: {-# UNPACK #-} !(ForeignPtr t) -- ^ foreign pointer to the memory block | 53 | , fptr :: {-# UNPACK #-} !(ForeignPtr t) -- ^ foreign pointer to the memory block |
52 | } | 54 | } |
53 | 55 | ||
56 | unsafeToForeignPtr :: Vector a -> (ForeignPtr a, Int, Int) | ||
57 | unsafeToForeignPtr v = (fptr v, 0, idim v) | ||
58 | |||
59 | -- | Same convention as in Roman Leshchinskiy's vector package. | ||
60 | unsafeFromForeignPtr :: ForeignPtr a -> Int -> Int -> Vector a | ||
61 | unsafeFromForeignPtr fp i n | i == 0 = V {idim = n, fptr = fp} | ||
62 | | otherwise = error "unsafeFromForeignPtr with nonzero offset" | ||
63 | |||
54 | -- | Number of elements | 64 | -- | Number of elements |
55 | dim :: Vector t -> Int | 65 | dim :: Vector t -> Int |
56 | dim = idim | 66 | dim = idim |