BitWriter.cpp revision 198090
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"
12198090Srdivacky#include "llvm/Support/raw_ostream.h"
13193323Sedusing namespace llvm;
14193323Sed
15193323Sed
16193323Sed/*===-- Operations on modules ---------------------------------------------===*/
17193323Sed
18193323Sedint LLVMWriteBitcodeToFile(LLVMModuleRef M, const char *Path) {
19198090Srdivacky  std::string ErrorInfo;
20198090Srdivacky  raw_fd_ostream OS(Path, ErrorInfo,
21198090Srdivacky                    raw_fd_ostream::F_Binary);
22193323Sed
23198090Srdivacky  if (!ErrorInfo.empty())
24193323Sed    return -1;
25193323Sed
26198090Srdivacky  WriteBitcodeToFile(unwrap(M), OS);
27193323Sed  return 0;
28193323Sed}
29193323Sed
30193323Sed#if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR >= 4)
31193323Sed#include <ext/stdio_filebuf.h>
32193323Sed
33193323Sedint LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
34198090Srdivacky  raw_fd_ostream OS(FileHandle, false);
35193323Sed
36198090Srdivacky  WriteBitcodeToFile(unwrap(M), OS);
37193323Sed  return 0;
38193323Sed}
39193323Sed
40193323Sed#else
41193323Sed
42193323Sedint LLVMWriteBitcodeToFileHandle(LLVMModuleRef M, int FileHandle) {
43193323Sed  return -1; // Not supported.
44193323Sed}
45193323Sed
46193323Sed#endif
47