FPS: useAsCString variants

Bulat Ziganshin bulat.ziganshin at gmail.com
Fri Jul 14 07:23:02 EDT 2006

Hello Donald,

Friday, July 14, 2006, 11:23:23 AM, you wrote:

> Ok, the story is:

> We'd like to be able to efficiently pass ByteStrings to C. However,
>     * CString has to be null terminated
>     * ByteStrings aren't null terminated.

yes, i know this story

> So, we have:
>     useAsCString,           which copies a ByteString, and adds a \0 byte, O(n)
>     unafeUseAsCString,      zero-copy version, assumes there's already a null byte, O(1)

> Now, on the other hand, we have the CStringLen type, which doesn't need
> a null byte. The CString type is isomorphic to a ByteString, so:

>     useAsCStringLen,        which is just a cast. O(1)
>     unsafeUseAsCStringLen   is a synonym for useAsCStringLen. 

what i mention is what unsafeUseAsCStringLen is not required because
it dubs useAsCStringLen, and unsafeUseAsCString is just not used in
FPS lib (although it may be useful for 3rd-party libs). whether it is
better to keep or omit them is a matter of taste

Best regards,
 Bulat                            mailto:Bulat.Ziganshin at gmail.com

More information about the Libraries mailing list