diff options
author | Michael Gottesman <mgottesman@apple.com> | 2013-09-11 00:23:10 +0000 |
---|---|---|
committer | Michael Gottesman <mgottesman@apple.com> | 2013-09-11 00:23:10 +0000 |
commit | 6a63cd12813fea01d711f098126d199c936c8f6b (patch) | |
tree | b997c3d962152aa966697638aa7e61a0ce1af120 /bindings/python/llvm | |
parent | 8184ca673bbc23d55f17d903f98f5382f2b7da79 (diff) | |
download | external_llvm-6a63cd12813fea01d711f098126d199c936c8f6b.zip external_llvm-6a63cd12813fea01d711f098126d199c936c8f6b.tar.gz external_llvm-6a63cd12813fea01d711f098126d199c936c8f6b.tar.bz2 |
[python-bindings] Added bindings for LLVMContextRef and a test for creating a new context or getting the global context.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@190457 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'bindings/python/llvm')
-rw-r--r-- | bindings/python/llvm/core.py | 25 | ||||
-rw-r--r-- | bindings/python/llvm/tests/test_core.py | 4 |
2 files changed, 29 insertions, 0 deletions
diff --git a/bindings/python/llvm/core.py b/bindings/python/llvm/core.py index 74be0ab..76d1b14 100644 --- a/bindings/python/llvm/core.py +++ b/bindings/python/llvm/core.py @@ -20,6 +20,7 @@ from ctypes import c_char_p __all__ = [ "lib", "MemoryBuffer", + "Context", "PassRegistry" ] @@ -87,6 +88,19 @@ class MemoryBuffer(LLVMObject): def __len__(self): return lib.LLVMGetBufferSize(self) +class Context(LLVMObject): + + def __init__(self, context=None): + if context is None: + context = lib.LLVMContextCreate() + LLVMObject.__init__(self, context, disposer=lib.LLVMContextDispose) + else: + LLVMObject.__init__(self, context) + + @classmethod + def GetGlobalContext(cls): + return Context(lib.LLVMGetGlobalContext()) + class PassRegistry(LLVMObject): """Represents an opaque pass registry object.""" @@ -139,6 +153,16 @@ def register_library(library): library.LLVMGetGlobalPassRegistry.argtypes = [] library.LLVMGetGlobalPassRegistry.restype = c_object_p + # Context declarations. + library.LLVMContextCreate.argtypes = [] + library.LLVMContextCreate.restype = c_object_p + + library.LLVMContextDispose.argtypes = [Context] + library.LLVMContextDispose.restype = None + + library.LLVMGetGlobalContext.argtypes = [] + library.LLVMGetGlobalContext.restype = c_object_p + # Memory buffer declarations library.LLVMCreateMemoryBufferWithContentsOfFile.argtypes = [c_char_p, POINTER(c_object_p), POINTER(c_char_p)] @@ -153,6 +177,7 @@ def register_enumerations(): OpCode.register(name, value) def initialize_llvm(): + c = Context.GetGlobalContext() p = PassRegistry() lib.LLVMInitializeCore(p) lib.LLVMInitializeTransformUtils(p) diff --git a/bindings/python/llvm/tests/test_core.py b/bindings/python/llvm/tests/test_core.py index 3fdaf45..3364a66 100644 --- a/bindings/python/llvm/tests/test_core.py +++ b/bindings/python/llvm/tests/test_core.py @@ -2,6 +2,7 @@ from .base import TestBase from ..core import OpCode from ..core import MemoryBuffer from ..core import PassRegistry +from ..core import Context class TestCore(TestBase): def test_opcode(self): @@ -29,3 +30,6 @@ class TestCore(TestBase): def test_create_passregistry(self): PassRegistry() + + def test_create_context(self): + Context.GetGlobalContext() |