[Haskell-cafe] Quickest way to pass Text to C code
yves.pares at gmail.com
Wed Mar 21 12:45:23 CET 2012
> You can also manually allocate and poke data into raw memory using
Foreign.Marshall.Alloc and Foreign.Storable, if you're feeling particularly
That's kind of what I did by the past (Aggregate Word8 into a single
Word32), before I discovered Text for fast string handling.
I know about storable Vectors (and already use them, but not for text), but
I would loose Haskell-side the functionnalities of Text (I'm handling
textual data in the first place, not raw bytes).
Text already provide all string handling/file reading functions.
Or else you'd have a convenient way to convert Text into Vector?
Le 21 mars 2012 12:35, James Cook <mokus at deepbondi.net> a écrit :
> On Mar 21, 2012, at 4:35 AM, Yves Parès wrote:
> > Hello,
> > I have to interact with a C++ library that accepts as string types
> (putting c++ strings aside) pointers of wchar_t (CWString in Haskell) or
> unsigned 32-bit int (Ptr Word32 for UTF-32 codepoints).
> The vector package has "storable" vectors, which are essentially raw C
> arrays. It provides the function:
> Data.Vector.Storable.unsafeWith :: Storable a => Vector a -> (Ptr a
> -> IO b) -> IO b
> This is probably the simplest way to do what you're describing. You can
> also manually allocate and poke data into raw memory using
> Foreign.Marshall.Alloc and Foreign.Storable, if you're feeling particularly
> masochistic ;)
> -- James
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the Haskell-Cafe