1193323Sed//===-- BitWriter.cpp -----------------------------------------------------===//
2193323Sed//
3193323Sed//                     The LLVM Compiler Infrastructure
4193323Sed//
5193323Sed// This file is distributed under the University of Illinois Open Source
6193323Sed// License. See LICENSE.TXT for details.
7193323Sed//
8193323Sed//===----------------------------------------------------------------------===//
9193323Sed
10193323Sed#include "llvm-c/BitWriter.h"
11193323Sed#include "llvm/Bitcode/ReaderWriter.h"
12251662Sdim#include "llvm/IR/Module.h"
13198090Srdivacky#include "llvm/Support/raw_ostream.h"
14193323Sedusing namespace llvm;
15193323Sed
16193323Sed
17193323Sed/*===-- Operations on modules ---------------------------------------------===*/
18193323Sed
19193323Sedint LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
20198090Srdivacky  std::string ErrorInfo;
21263508Sdim  raw_fd_ostream OS(Path, ErrorInfo, sys::fs::F_Binary);
22249423Sdim
23198090Srdivacky  if (!ErrorInfo.empty())
24193323Sed    return -1;
25249423Sdim
26198090Srdivacky  WriteBitcodeToFile(unwrap(M), OS);
27193323Sed  return 0;
28193323Sed}
29193323Sed
30204792Srdivackyint LLVMWriteBitcodeToFD(LLVMModuleRef M, int FD, int ShouldClose,
31204792Srdivacky                         int Unbuffered) {
32204792Srdivacky  raw_fd_ostream OS(FD, ShouldClose, Unbuffered);
33249423Sdim
34198090Srdivacky  WriteBitcodeToFile(unwrap(M), OS);
35193323Sed  return 0;
36193323Sed}
37193323Sed
38193323Sedint LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
39204792Srdivacky  return LLVMWriteBitcodeToFD(M, FileHandle, true, false);
40193323Sed}
41