
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@gmail.com