From 6a63cd12813fea01d711f098126d199c936c8f6b Mon Sep 17 00:00:00 2001 From: Michael Gottesman Date: Wed, 11 Sep 2013 00:23:10 +0000 Subject: [PATCH] [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 --- bindings/python/llvm/core.py | 25 +++++++++++++++++++++++++ bindings/python/llvm/tests/test_core.py | 4 ++++ 2 files changed, 29 insertions(+) diff --git a/bindings/python/llvm/core.py b/bindings/python/llvm/core.py index 74be0ab5525..76d1b14e631 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 3fdaf455fd4..3364a66cb55 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() -- 2.34.1