1bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen/*===-- llvm-c/BitReader.h - BitReader Library C Interface ------*- C++ -*-===*\ 2bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 3bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* The LLVM Compiler Infrastructure *| 4bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 57ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* This file is distributed under the University of Illinois Open Source *| 67ed47a13356daed2a34cd2209a31f92552e3bdd8Chris Lattner|* License. See LICENSE.TXT for details. *| 7bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 8bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|*===----------------------------------------------------------------------===*| 9bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 10bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* This header declares the C interface to libLLVMBitReader.a, which *| 11bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* implements input of the LLVM bitcode format. *| 12bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 13bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* Many exotic languages can interoperate with C code but have a harder time *| 14bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* with C++ due to name mangling. So in addition to C, this interface enables *| 15bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* tools written in such languages. *| 16bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen|* *| 17bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen\*===----------------------------------------------------------------------===*/ 18bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 19bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#ifndef LLVM_C_BITCODEREADER_H 20bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#define LLVM_C_BITCODEREADER_H 21bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 22bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#include "llvm-c/Core.h" 23bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 24bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#ifdef __cplusplus 25bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksenextern "C" { 26bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#endif 27bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 286244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 296244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @defgroup LLVMCBitReader Bit Reader 306244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @ingroup LLVMC 316244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * 326244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @{ 336244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 34bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 35da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen/* Builds a module from the bitcode in the specified memory buffer, returning a 36da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen reference to the module via the OutModule parameter. Returns 0 on success. 37e21c3137e1dfcd9644d3870a0a4528374375271fNAKAMURA Takumi Optionally returns a human-readable error message via OutMessage. */ 38d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMParseBitcode(LLVMMemoryBufferRef MemBuf, 39d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleRef *OutModule, char **OutMessage); 40da1435f86ebc9886dd7704294e01d192d79e069cGordon Henriksen 41d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMParseBitcodeInContext(LLVMContextRef ContextRef, 42d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMMemoryBufferRef MemBuf, 43d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleRef *OutModule, char **OutMessage); 44c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson 45df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Reads a module from the specified path, returning via the OutMP parameter 46df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar a module provider which performs lazy deserialization. Returns 0 on success. 47e21c3137e1dfcd9644d3870a0a4528374375271fNAKAMURA Takumi Optionally returns a human-readable error message via OutMessage. */ 48df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMGetBitcodeModuleInContext(LLVMContextRef ContextRef, 49df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMMemoryBufferRef MemBuf, 50df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleRef *OutM, 51df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutMessage); 52df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 53df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMGetBitcodeModule(LLVMMemoryBufferRef MemBuf, LLVMModuleRef *OutM, 54df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutMessage); 55d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner 56df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar 57df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMGetBitcodeModuleInContext instead. */ 58d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris LattnerLLVMBool LLVMGetBitcodeModuleProviderInContext(LLVMContextRef ContextRef, 59d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMMemoryBufferRef MemBuf, 60d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner LLVMModuleProviderRef *OutMP, 61d686c8e73f74e37ab5f647b65a12051ee6cbad16Chris Lattner char **OutMessage); 62c8897d9c2f9fcee6061a2c2d380028269026a836Owen Anderson 63df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar/** Deprecated: Use LLVMGetBitcodeModule instead. */ 64df7df075b723e926e51555bf5aff6e231279a479Erick TryzelaarLLVMBool LLVMGetBitcodeModuleProvider(LLVMMemoryBufferRef MemBuf, 65df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar LLVMModuleProviderRef *OutMP, 66df7df075b723e926e51555bf5aff6e231279a479Erick Tryzelaar char **OutMessage); 67bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 686244b518880842f2c15200ee041e06799e4cc779Gregory Szorc/** 696244b518880842f2c15200ee041e06799e4cc779Gregory Szorc * @} 706244b518880842f2c15200ee041e06799e4cc779Gregory Szorc */ 716244b518880842f2c15200ee041e06799e4cc779Gregory Szorc 72bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#ifdef __cplusplus 73bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen} 74bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#endif 75bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen 76bbc6597f02d108f32b5bdc7711cc67386196017bGordon Henriksen#endif 77