Add a LLVMWriteBitcodeToFD that exposes the raw_fd_ostream options.
[oota-llvm.git] / bindings / ocaml / bitwriter / bitwriter_ocaml.c
index 4abfa9f7b903c84c2d1d1a820c0421dc8665effe..53c93cbdfe9bfceaa8c655ace0bda1862e213af3 100644 (file)
@@ -2,8 +2,8 @@
 |*                                                                            *|
 |*                     The LLVM Compiler Infrastructure                       *|
 |*                                                                            *|
-|* This file was developed by Gordon Henriksen and is distributed under the   *|
-|* University of Illinois Open Source License. See LICENSE.TXT for details.   *|
+|* This file is distributed under the University of Illinois Open Source      *|
+|* License. See LICENSE.TXT for details.                                      *|
 |*                                                                            *|
 |*===----------------------------------------------------------------------===*|
 |*                                                                            *|
 
 /* Llvm.llmodule -> string -> bool */
 CAMLprim value llvm_write_bitcode_file(value M, value Path) {
-  CAMLparam1(Path);
   int res = LLVMWriteBitcodeToFile((LLVMModuleRef) M, String_val(Path));
-  CAMLreturn(Val_bool(res == 0));
+  return Val_bool(res == 0);
+}
+
+/* ?unbuffered:bool -> Llvm.llmodule -> Unix.file_descr -> bool */
+CAMLprim value llvm_write_bitcode_to_fd(value U, value M, value FD) {
+  int Unbuffered;
+  int res;
+
+  if (U == Val_int(0)) {
+    Unbuffered = 0;
+  } else {
+    Unbuffered = Bool_val(Field(U,0));
+  }
+
+  res = LLVMWriteBitcodeToFD((LLVMModuleRef) M, Int_val(FD), 0, Unbuffered);
+  return Val_bool(res == 0);
 }