summaryrefslogtreecommitdiff
path: root/bindings
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-09-11 00:23:10 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-09-11 00:23:10 +0000
commit6a63cd12813fea01d711f098126d199c936c8f6b (patch)
treeb997c3d962152aa966697638aa7e61a0ce1af120 /bindings
parent8184ca673bbc23d55f17d903f98f5382f2b7da79 (diff)
downloadllvm-6a63cd12813fea01d711f098126d199c936c8f6b.tar.gz
llvm-6a63cd12813fea01d711f098126d199c936c8f6b.tar.bz2
llvm-6a63cd12813fea01d711f098126d199c936c8f6b.tar.xz
[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')
-rw-r--r--bindings/python/llvm/core.py25
-rw-r--r--bindings/python/llvm/tests/test_core.py4
2 files changed, 29 insertions, 0 deletions
diff --git a/bindings/python/llvm/core.py b/bindings/python/llvm/core.py
index 74be0ab552..76d1b14e63 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 3fdaf455fd..3364a66cb5 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()