From 5b9885fc40382cdfe43b521af40047b9623bf0f2 Mon Sep 17 00:00:00 2001 From: Mark Florisson Date: Thu, 8 Nov 2012 12:15:00 +0000 Subject: [PATCH] Allow creating a cbuilder struct from a minitype struct type --- llvm_cbuilder/builder.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/llvm_cbuilder/builder.py b/llvm_cbuilder/builder.py index 67644db..628ed85 100644 --- a/llvm_cbuilder/builder.py +++ b/llvm_cbuilder/builder.py @@ -1328,10 +1328,6 @@ class CStruct(CValue): Can define new methods which gets inlined to the parent CBuilder. ''' - @classmethod - def llvm_type(cls): - return lc.Type.struct([v for k, v in cls._fields_]) - def __init__(self, parent, ptr): super(CStruct, self).__init__(parent, ptr) makeind = lambda x: self.parent.constant(types.int, x).value @@ -1348,6 +1344,17 @@ class CStruct(CValue): def reference(self): return self._temp(self.handle) + @classmethod + def llvm_type(cls): + return lc.Type.struct([v for k, v in cls._fields_]) + + @classmethod + def from_numba_struct(cls, context, struct_type): + class Struct(cls): + _fields_ = [(name, type.to_llvm(context)) + for name, type in struct_type.fields] + return Struct + class CExternal(object): '''subclass to define external interface