summaryrefslogtreecommitdiff
path: root/lib/Data/Packed/Internal/Vector.hs
diff options
context:
space:
mode:
authorAlberto Ruiz <aruiz@um.es>2010-02-24 12:01:07 +0000
committerAlberto Ruiz <aruiz@um.es>2010-02-24 12:01:07 +0000
commitaae45de54aca92c5f0f013e46c6d6f65508d76f5 (patch)
tree3a3bbc11b6c87e6b7d469b046dff1a13df15561e /lib/Data/Packed/Internal/Vector.hs
parentded908e2a222f902b41e500eea5272700db75699 (diff)
conversion from/to Data.Vector.Storable
Diffstat (limited to 'lib/Data/Packed/Internal/Vector.hs')
-rw-r--r--lib/Data/Packed/Internal/Vector.hs12
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
29import Data.Packed.Internal.Common 31import 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
56unsafeToForeignPtr :: Vector a -> (ForeignPtr a, Int, Int)
57unsafeToForeignPtr v = (fptr v, 0, idim v)
58
59-- | Same convention as in Roman Leshchinskiy's vector package.
60unsafeFromForeignPtr :: ForeignPtr a -> Int -> Int -> Vector a
61unsafeFromForeignPtr 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
55dim :: Vector t -> Int 65dim :: Vector t -> Int
56dim = idim 66dim = idim