1//===-- BitReader.cpp -----------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "llvm-c/BitReader.h" 11#include "llvm/Bitcode/ReaderWriter.h" 12#include "llvm/LLVMContext.h" 13#include "llvm/Support/MemoryBuffer.h" 14#include <string> 15#include <cstring> 16 17using namespace llvm; 18 19/* Builds a module from the bitcode in the specified memory buffer, returning a 20 reference to the module via the OutModule parameter. Returns 0 on success. 21 Optionally returns a human-readable error message via OutMessage. */ 22LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, 23 LLVMModuleRef *OutModule, char **OutMessage) {
| 1//===-- BitReader.cpp -----------------------------------------------------===// 2// 3// The LLVM Compiler Infrastructure 4// 5// This file is distributed under the University of Illinois Open Source 6// License. See LICENSE.TXT for details. 7// 8//===----------------------------------------------------------------------===// 9 10#include "llvm-c/BitReader.h" 11#include "llvm/Bitcode/ReaderWriter.h" 12#include "llvm/LLVMContext.h" 13#include "llvm/Support/MemoryBuffer.h" 14#include <string> 15#include <cstring> 16 17using namespace llvm; 18 19/* Builds a module from the bitcode in the specified memory buffer, returning a 20 reference to the module via the OutModule parameter. Returns 0 on success. 21 Optionally returns a human-readable error message via OutMessage. */ 22LLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, 23 LLVMModuleRef *OutModule, char **OutMessage) {
|
24 std::string Message; 25 26 *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), getGlobalContext(), 27 &Message)); 28 if (!*OutModule) { 29 if (OutMessage) 30 *OutMessage = strdup(Message.c_str()); 31 return 1; 32 } 33 34 return 0;
| 24 return LLVMParseBitcodeInContext(wrap(&getGlobalContext()), MemBuf, OutModule, 25 OutMessage);
|
35} 36 37LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef, 38 LLVMMemoryBufferRef MemBuf, 39 LLVMModuleRef *OutModule, 40 char **OutMessage) { 41 std::string Message; 42 43 *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), *unwrap(ContextRef), 44 &Message)); 45 if (!*OutModule) { 46 if (OutMessage) 47 *OutMessage = strdup(Message.c_str()); 48 return 1; 49 } 50 51 return 0; 52} 53 54/* Reads a module from the specified path, returning via the OutModule parameter 55 a module provider which performs lazy deserialization. Returns 0 on success. 56 Optionally returns a human-readable error message via OutMessage. */ 57LLVMBool LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, 58 LLVMModuleProviderRef *OutMP, 59 char **OutMessage) {
| 26} 27 28LLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef, 29 LLVMMemoryBufferRef MemBuf, 30 LLVMModuleRef *OutModule, 31 char **OutMessage) { 32 std::string Message; 33 34 *OutModule = wrap(ParseBitcodeFile(unwrap(MemBuf), *unwrap(ContextRef), 35 &Message)); 36 if (!*OutModule) { 37 if (OutMessage) 38 *OutMessage = strdup(Message.c_str()); 39 return 1; 40 } 41 42 return 0; 43} 44 45/* Reads a module from the specified path, returning via the OutModule parameter 46 a module provider which performs lazy deserialization. Returns 0 on success. 47 Optionally returns a human-readable error message via OutMessage. */ 48LLVMBool LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, 49 LLVMModuleProviderRef *OutMP, 50 char **OutMessage) {
|
60 std::string Message; 61 62 *OutMP = wrap(getBitcodeModuleProvider(unwrap(MemBuf), getGlobalContext(), 63 &Message)); 64 65 if (!*OutMP) { 66 if (OutMessage) 67 *OutMessage = strdup(Message.c_str()); 68 return 1; 69 } 70 71 return 0;
| 51 return LLVMGetBitcodeModuleProviderInContext(wrap(&getGlobalContext()), 52 MemBuf, OutMP, OutMessage);
|
72} 73 74LLVMBool LLVMGetBitcodeModuleProviderInContext(LLVMContextRef ContextRef, 75 LLVMMemoryBufferRef MemBuf, 76 LLVMModuleProviderRef *OutMP, 77 char **OutMessage) { 78 std::string Message; 79
| 53} 54 55LLVMBool LLVMGetBitcodeModuleProviderInContext(LLVMContextRef ContextRef, 56 LLVMMemoryBufferRef MemBuf, 57 LLVMModuleProviderRef *OutMP, 58 char **OutMessage) { 59 std::string Message; 60
|
80 *OutMP = wrap(getBitcodeModuleProvider(unwrap(MemBuf), *unwrap(ContextRef), 81 &Message));
| 61 *OutMP = reinterpret_cast<LLVMModuleProviderRef>( 62 getLazyBitcodeModule(unwrap(MemBuf), *unwrap(ContextRef), &Message));
|
82 if (!*OutMP) { 83 if (OutMessage) 84 *OutMessage = strdup(Message.c_str()); 85 return 1; 86 } 87 88 return 0; 89}
| 63 if (!*OutMP) { 64 if (OutMessage) 65 *OutMessage = strdup(Message.c_str()); 66 return 1; 67 } 68 69 return 0; 70}
|