2 * 2005 Matthew Fluet (mfluet@acm.org)
7 * Functions for translating between 0-terminated C strings and native
10 * (C) 2001, Lucent Technologies, Bell Laboratories
12 * author: Matthias Blume (blume@research.bell-labs.com)
14 signature ZSTRING = sig
16 type 'c zstring = (C.uchar, 'c) C.obj C.ptr
17 type 'c zstring' = (C.uchar, 'c) C.obj C.ptr'
19 (* the C strlen function *)
20 val length : 'c zstring -> int
21 val length' : 'c zstring' -> int
23 (* make ML string from 0-terminated C string *)
24 val toML : 'c zstring -> string
25 val toML' : 'c zstring' -> string
27 (* Copy contents of ML string into C string and add terminating 0. *)
28 val cpML : { from: string, to: C.rw zstring } -> unit
29 val cpML' : { from: string, to: C.rw zstring' } -> unit
31 (* Make C-duplicate of ML string (allocate memory and then copy). *)
32 val dupML : string -> 'c zstring
33 val dupML' : string -> 'c zstring'