| |
| 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() |
| out = c_char_p(None) |
| result = lib.LLVMParseBitcode(mem_buffer, byref(module), byref(out)) |
| if result: |
| raise RuntimeError('LLVM Error: %s' % out.value) |
| m = Module(module) |
| m.take_ownership(mem_buffer) |
| return m |
| |
| def register_library(library): |
| library.LLVMParseBitcode.argtypes = [MemoryBuffer, POINTER(c_object_p), POINTER(c_char_p)] |
| library.LLVMParseBitcode.restype = bool |
| |
| register_library(lib) |