diff options
| author | Ed Schouten <ed@FreeBSD.org> | 2009-06-02 17:52:33 +0000 | 
|---|---|---|
| committer | Ed Schouten <ed@FreeBSD.org> | 2009-06-02 17:52:33 +0000 | 
| commit | 009b1c42aa6266385f2c37e227516b24077e6dd7 (patch) | |
| tree | 64ba909838c23261cace781ece27d106134ea451 /lib/Bitcode/Reader/BitReader.cpp | |
Notes
Diffstat (limited to 'lib/Bitcode/Reader/BitReader.cpp')
| -rw-r--r-- | lib/Bitcode/Reader/BitReader.cpp | 51 | 
1 files changed, 51 insertions, 0 deletions
| diff --git a/lib/Bitcode/Reader/BitReader.cpp b/lib/Bitcode/Reader/BitReader.cpp new file mode 100644 index 000000000000..52851cd142da --- /dev/null +++ b/lib/Bitcode/Reader/BitReader.cpp @@ -0,0 +1,51 @@ +//===-- BitReader.cpp -----------------------------------------------------===// +// +//                     The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#include "llvm-c/BitReader.h" +#include "llvm/Bitcode/ReaderWriter.h" +#include "llvm/Support/MemoryBuffer.h" +#include <string> +#include <cstring> + +using namespace llvm; + +/* Builds a module from the bitcode in the specified memory buffer, returning a +   reference to the module via the OutModule parameter. Returns 0 on success. +   Optionally returns a human-readable error message via OutMessage. */  +int LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, +                     LLVMModuleRef *OutModule, char **OutMessage) { +  std::string Message; +   +  *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), &Message)); +  if (!*OutModule) { +    if (OutMessage) +      *OutMessage = strdup(Message.c_str()); +    return 1; +  } +   +  return 0; +} + +/* Reads a module from the specified path, returning via the OutModule parameter +   a module provider which performs lazy deserialization. Returns 0 on success. +   Optionally returns a human-readable error message via OutMessage. */  +int LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, +                                 LLVMModuleProviderRef *OutMP, +                                 char **OutMessage) { +  std::string Message; +   +  *OutMP = wrap(getBitcodeModuleProvider(unwrap(MemBuf), &Message)); +  if (!*OutMP) { +    if (OutMessage) +      *OutMessage = strdup(Message.c_str()); +    return 1; +  } +   +  return 0; +} | 
