llvm.org GIT mirror llvm / release_23 include / llvm / Bitcode / ReaderWriter.h

Tree @release_23 (Download .tar.gz)

ReaderWriter.h @release_23raw · history · blame

//===-- llvm/Bitcode/ReaderWriter.h - Bitcode reader/writers ----*- C++ -*-===//
//                     The LLVM Compiler Infrastructure
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
// This header defines interfaces to read and write LLVM bitcode files/streams.


#include <iosfwd>
#include <string>

namespace llvm {
  class Module;
  class ModuleProvider;
  class MemoryBuffer;
  class ModulePass;
  /// getBitcodeModuleProvider - Read the header of the specified bitcode buffer
  /// and prepare for lazy deserialization of function bodies.  If successful,
  /// this takes ownership of 'buffer' and returns a non-null pointer.  On
  /// error, this returns null, *does not* take ownership of Buffer, and fills
  /// in *ErrMsg with an error description if ErrMsg is non-null.
  ModuleProvider *getBitcodeModuleProvider(MemoryBuffer *Buffer,
                                           std::string *ErrMsg = 0);

  /// ParseBitcodeFile - Read the specified bitcode file, returning the module.
  /// If an error occurs, this returns null and fills in *ErrMsg if it is
  /// non-null.  This method *never* takes ownership of Buffer.
  Module *ParseBitcodeFile(MemoryBuffer *Buffer, std::string *ErrMsg = 0);
  /// WriteBitcodeToFile - Write the specified module to the specified output
  /// stream.
  void WriteBitcodeToFile(const Module *M, std::ostream &Out);
  /// CreateBitcodeWriterPass - Create and return a pass that writes the module
  /// to the specified ostream.
  ModulePass *CreateBitcodeWriterPass(std::ostream &Str);
} // End llvm namespace