//! Input of the LLVM bitcode format.

use super::prelude::*;

extern "C" {
    /// Build a module from the bitcode in the specified memory buffer.
    ///
    /// Returns 0 on success and the generated module in `OutModule`.
    /// Optionally returns a human-readable error message in `OutMessage`.
    #[deprecated(
        since = "38.0.0",
        note = "Use of the global context is deprecated, use LLVMParseBitcodeInContext2 instead"
    )]
    pub fn LLVMParseBitcode(
        MemBuf: LLVMMemoryBufferRef,
        OutModule: *mut LLVMModuleRef,
        OutMessage: *mut *mut ::libc::c_char,
    ) -> LLVMBool;
    /// Build a module from the bitcode in the specified memory buffer.
    ///
    /// Returns the created module in OutModule, returns 0 on success.
    #[deprecated(
        since = "221.0.0",
        note = "Use of the global context is deprecated, use LLVMParseBitcodeInContext2 instead"
    )]
    pub fn LLVMParseBitcode2(
        MemBuf: LLVMMemoryBufferRef,
        OutModule: *mut LLVMModuleRef,
    ) -> LLVMBool;

    #[deprecated(since = "38.0.0", note = "Use LLVMParseBitcodeInContext2")]
    pub fn LLVMParseBitcodeInContext(
        ContextRef: LLVMContextRef,
        MemBuf: LLVMMemoryBufferRef,
        OutModule: *mut LLVMModuleRef,
        OutMessage: *mut *mut ::libc::c_char,
    ) -> LLVMBool;
    pub fn LLVMParseBitcodeInContext2(
        ContextRef: LLVMContextRef,
        MemBuf: LLVMMemoryBufferRef,
        OutModule: *mut LLVMModuleRef,
    ) -> LLVMBool;

    /// Read a module from the specified path, returning a module provider
    /// performing lazy deserialization.
    ///
    /// Returns 0 on success and an optional error message.
    #[deprecated(since = "38.0.0", note = "Use LLVMGetBitcodeModuleInContext2")]
    pub fn LLVMGetBitcodeModuleInContext(
        ContextRef: LLVMContextRef,
        MemBuf: LLVMMemoryBufferRef,
        OutM: *mut LLVMModuleRef,
        OutMessage: *mut *mut ::libc::c_char,
    ) -> LLVMBool;
    /// Read a module from the specified path, returning a module provider
    /// performing lazy deserialization.
    ///
    /// Returns 0 on success.
    pub fn LLVMGetBitcodeModuleInContext2(
        ContextRef: LLVMContextRef,
        MemBuf: LLVMMemoryBufferRef,
        OutM: *mut LLVMModuleRef,
    ) -> LLVMBool;

    #[deprecated(
        since = "38.0.0",
        note = "Use of the global context is deprecated, use LLVMParseBitcodeInContext2 instead"
    )]
    pub fn LLVMGetBitcodeModule(
        MemBuf: LLVMMemoryBufferRef,
        OutM: *mut LLVMModuleRef,
        OutMessage: *mut *mut ::libc::c_char,
    ) -> LLVMBool;
    /// Read a module from the specified path.
    ///
    /// Outputs a module provider which performs lazy deserialization.
    /// Returns 0 on success.
    #[deprecated(
        since = "221.0.0",
        note = "Use of the global context is deprecated, use LLVMParseBitcodeInContext2 instead"
    )]
    pub fn LLVMGetBitcodeModule2(MemBuf: LLVMMemoryBufferRef, OutM: *mut LLVMModuleRef)
        -> LLVMBool;
}
