Incremental extensions to llpython to better support using the Python C-API.

This commit is contained in:
Jon Riehl 2013-07-12 19:38:50 -05:00
commit 9fe9e8eb39
2 changed files with 75 additions and 16 deletions

View file

@ -1,4 +1,5 @@
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# ______________________________________________________________________
import ctypes
@ -23,9 +24,10 @@ li8_ptr = lc.Type.pointer(li8)
lc_int = lc.Type.int(ctypes.sizeof(ctypes.c_int) * 8)
lc_long = lc.Type.int(ctypes.sizeof(ctypes.c_long) * 8)
l_pyobject_head = [lc_size_t, lc.Type.pointer(li32)]
l_pyobject_head = [lc_size_t, li8_ptr]
l_pyobject_head_struct = lc.Type.struct(l_pyobject_head)
l_pyobj_p = l_pyobject_head_struct_p = lc.Type.pointer(l_pyobject_head_struct)
l_pyobj_pp = lc.Type.pointer(l_pyobj_p)
l_pyfunc = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
strlen = lc.Type.function(lc_size_t, (li8_ptr,))
@ -34,10 +36,26 @@ strndup = lc.Type.function(li8_ptr, (li8_ptr, lc_size_t))
malloc = lc.Type.function(li8_ptr, (lc_size_t,))
free = lc.Type.function(lvoid, (li8_ptr,))
Py_BuildValue = lc.Type.function(l_pyobj_p, [li8_ptr], True)
PyArg_ParseTuple = lc.Type.function(lc_int, [l_pyobj_p, li8_ptr], True)
PyBool_FromLong = lc.Type.function(l_pyobj_p, [lc_long])
PyEval_SaveThread = lc.Type.function(li8_ptr, [])
PyEval_RestoreThread = lc.Type.function(lc.Type.void(), [li8_ptr])
PyEval_RestoreThread = lc.Type.function(lvoid, [li8_ptr])
PyInt_AsLong = lc.Type.function(lc_long, [l_pyobj_p])
PyInt_FromLong = lc.Type.function(l_pyobj_p, [lc_long])
PyNumber_Add = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyNumber_Divide = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyNumber_Multiply = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyNumber_Remainder = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyNumber_Subtract = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyNumber_TrueDivide = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
PyString_Check = lc.Type.function(lc_int, [l_pyobj_p])
PyString_CheckExact = lc.Type.function(lc_int, [l_pyobj_p])
PyString_Format = lc.Type.function(l_pyobj_p, (l_pyobj_p, l_pyobj_p))
Py_BuildValue = lc.Type.function(l_pyobj_p, [li8_ptr], True)
Py_DecRef = lc.Type.function(lvoid, [l_pyobj_p])
Py_IncRef = lc.Type.function(lvoid, [l_pyobj_p])
PyInt_Type = li8
# ______________________________________________________________________
# End of bytetype.py