| |
| from .common import LLVMObject |
| from .common import c_object_p |
| from .common import get_library |
| from . import enumerations |
| from .core import MemoryBuffer |
| from .core import Module |
| from .core import OpCode |
| from ctypes import POINTER |
| from ctypes import byref |
| from ctypes import c_char_p |
| from ctypes import cast |
| __all__ = ['parse_bitcode'] |
| lib = get_library() |
| |
| def parse_bitcode(mem_buffer): |
| """Input is .core.MemoryBuffer""" |
| module = c_object_p() |
| result = lib.LLVMParseBitcode2(mem_buffer, byref(module)) |
| if result: |
| raise RuntimeError('LLVM Error') |
| m = Module(module) |
| m.take_ownership(mem_buffer) |
| return m |
| |
| def register_library(library): |
| library.LLVMParseBitcode2.argtypes = [MemoryBuffer, POINTER(c_object_p)] |
| library.LLVMParseBitcode2.restype = bool |
| |
| register_library(lib) |