summaryrefslogtreecommitdiff
path: root/bindings/python/llvm/bit_reader.py
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/python/llvm/bit_reader.py')
-rw-r--r--bindings/python/llvm/bit_reader.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/bindings/python/llvm/bit_reader.py b/bindings/python/llvm/bit_reader.py
new file mode 100644
index 0000000000..5bf5e22025
--- /dev/null
+++ b/bindings/python/llvm/bit_reader.py
@@ -0,0 +1,31 @@
+
+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)