17 | module Compiler.String
21 | ffi : String -> String
22 | ffi = libxla "c/string.h"
25 | data CppString = MkCppString AnyPtr
28 | %foreign (ffi "string_new")
29 | prim__mkString : PrimIO AnyPtr
33 | cppString : HasIO io => io CppString
34 | cppString = MkCppString <$> primIO prim__mkString
37 | %foreign (ffi "string_delete")
38 | prim__stringDelete : AnyPtr -> PrimIO ()
42 | delete : HasIO io => CppString -> io ()
43 | delete (MkCppString str) = primIO $
prim__stringDelete str
45 | %foreign (ffi "string_c_str")
46 | prim__stringCStr : AnyPtr -> String
49 | c_str : CppString -> String
50 | c_str (MkCppString str) = prim__stringCStr str
53 | %foreign (ffi "string_data")
54 | prim__stringData : AnyPtr -> Ptr Char
57 | %foreign (ffi "string_size")
58 | prim__stringSize : AnyPtr -> Bits64