17 | module Compiler.LLVM.Support.RawOStream
21 | ffi : String -> String
22 | ffi = libxla "c/llvm/Support/raw_ostream.h"
25 | data RawStringOStream = MkRawStringOStream GCAnyPtr
27 | %foreign (ffi "raw_string_ostream_new")
28 | prim__mkRawStringOStream : AnyPtr -> PrimIO AnyPtr
30 | %foreign (ffi "raw_string_ostream_delete")
31 | prim__delete : AnyPtr -> PrimIO ()
34 | rawStringOStream : HasIO io => CppString -> io RawStringOStream
35 | rawStringOStream (MkCppString str) = do
36 | os <- primIO $
prim__mkRawStringOStream str
37 | os <- onCollectAny' os (primIO . prim__delete)
38 | pure (MkRawStringOStream os)