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