From dff20e706be367b583a8dbfce1a6ed6fdacde076 Mon Sep 17 00:00:00 2001 From: David Hendriks <davidhendriks93@gmail.com> Date: Wed, 7 Apr 2021 11:44:06 +0100 Subject: [PATCH] working on the capsules --- .../demo.cpython-36m-x86_64-linux-gnu.so | Bin 0 -> 33688 bytes python_pycapsule_test/demo.egg-info/PKG-INFO | 10 ++ .../demo.egg-info/SOURCES.txt | 6 + .../demo.egg-info/dependency_links.txt | 1 + .../demo.egg-info/top_level.txt | 1 + python_pycapsule_test/demolib.h | 6 + python_pycapsule_test/demomodule.c | 143 ++++++++++++++++++ .../dist/demo-1.0-py3.6-linux-x86_64.egg | Bin 0 -> 15071 bytes python_pycapsule_test/main.py | 21 +++ python_pycapsule_test/setup.py | 12 ++ 10 files changed, 200 insertions(+) create mode 100755 python_pycapsule_test/build/lib.linux-x86_64-3.6/demo.cpython-36m-x86_64-linux-gnu.so create mode 100644 python_pycapsule_test/demo.egg-info/PKG-INFO create mode 100644 python_pycapsule_test/demo.egg-info/SOURCES.txt create mode 100644 python_pycapsule_test/demo.egg-info/dependency_links.txt create mode 100644 python_pycapsule_test/demo.egg-info/top_level.txt create mode 100644 python_pycapsule_test/demolib.h create mode 100644 python_pycapsule_test/demomodule.c create mode 100644 python_pycapsule_test/dist/demo-1.0-py3.6-linux-x86_64.egg create mode 100644 python_pycapsule_test/main.py create mode 100644 python_pycapsule_test/setup.py diff --git a/python_pycapsule_test/build/lib.linux-x86_64-3.6/demo.cpython-36m-x86_64-linux-gnu.so b/python_pycapsule_test/build/lib.linux-x86_64-3.6/demo.cpython-36m-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..27b58462f3254677f79e2b1c1d144d0cdf1ed634 GIT binary patch literal 33688 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 literal 0 HcmV?d00001 diff --git a/python_pycapsule_test/demo.egg-info/PKG-INFO b/python_pycapsule_test/demo.egg-info/PKG-INFO new file mode 100644 index 0000000..bb988b6 --- /dev/null +++ b/python_pycapsule_test/demo.egg-info/PKG-INFO @@ -0,0 +1,10 @@ +Metadata-Version: 1.0 +Name: demo +Version: 1.0 +Summary: Python wrapper for custom C extension +Home-page: UNKNOWN +Author: UNKNOWN +Author-email: UNKNOWN +License: UNKNOWN +Description: UNKNOWN +Platform: UNKNOWN diff --git a/python_pycapsule_test/demo.egg-info/SOURCES.txt b/python_pycapsule_test/demo.egg-info/SOURCES.txt new file mode 100644 index 0000000..2a14b9e --- /dev/null +++ b/python_pycapsule_test/demo.egg-info/SOURCES.txt @@ -0,0 +1,6 @@ +demomodule.c +setup.py +demo.egg-info/PKG-INFO +demo.egg-info/SOURCES.txt +demo.egg-info/dependency_links.txt +demo.egg-info/top_level.txt \ No newline at end of file diff --git a/python_pycapsule_test/demo.egg-info/dependency_links.txt b/python_pycapsule_test/demo.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/python_pycapsule_test/demo.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/python_pycapsule_test/demo.egg-info/top_level.txt b/python_pycapsule_test/demo.egg-info/top_level.txt new file mode 100644 index 0000000..1549b67 --- /dev/null +++ b/python_pycapsule_test/demo.egg-info/top_level.txt @@ -0,0 +1 @@ +demo diff --git a/python_pycapsule_test/demolib.h b/python_pycapsule_test/demolib.h new file mode 100644 index 0000000..340c916 --- /dev/null +++ b/python_pycapsule_test/demolib.h @@ -0,0 +1,6 @@ +// Example header file +// int add_number(int number_1, int number_2); +// char* make_str(const char *s1, const char *s2); +// int add_number_using_pointer(int (*pf)(int, int), int number_1, int number_2); +// int multiply_number(int number_1, int number_2); +void capsule_cleanup(PyObject *capsule); \ No newline at end of file diff --git a/python_pycapsule_test/demomodule.c b/python_pycapsule_test/demomodule.c new file mode 100644 index 0000000..adcb1ff --- /dev/null +++ b/python_pycapsule_test/demomodule.c @@ -0,0 +1,143 @@ +// demomodule.c +#include <Python.h> +#include "demolib.h" +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + +// void capsule_cleanup(PyObject *capsule) { +// double *content_capsule; +// if (!(content_capsule = (double*) PyCapsule_GetPointer(capsule, "DOUBLE"))) +// return NULL; + +// // Free stuff +// printf("Via other function: Before deleting: Pointer %p and value %f\n", content_capsule, *content_capsule); +// PyMem_Free(content_capsule); +// printf("Via other function: After deleting: Pointer %p and value %f\n", content_capsule, *content_capsule); + +// // Use your specific gc implementation in place of free if you have to +// free(content_capsule); +// } + +// https://stackoverflow.com/questions/51505391/how-to-parse-void-to-pyobject + +typedef struct { + int book_id; +} Books; + + +//////////////////////// +static PyObject *free_content_capsule(PyObject *self, PyObject *args) +{ + PyObject *pycapsule = NULL; + if (!PyArg_ParseTuple(args, "O", &pycapsule)) + return NULL; + + // double *content_capsule; + // if (!(content_capsule = (double*) PyCapsule_GetPointer(pycapsule, "DOUBLE"))) + // return NULL; + Books *content_capsule; + if (!(content_capsule = (Books*) PyCapsule_GetPointer(pycapsule, "BOOKS"))) + return NULL; + + PyMem_Free(content_capsule); + // free(content_capsule); + + return Py_BuildValue(""); +} + +static PyObject *print_content_capsule(PyObject *self, PyObject *args) +{ + PyObject *pycapsule = NULL; + if (!PyArg_ParseTuple(args, "O", &pycapsule)) + return NULL; + + Books *content_capsule; + if (!(content_capsule = (Books*) PyCapsule_GetPointer(pycapsule, "BOOKS"))) + return NULL; + + printf("Pointer %p and value %d\n", content_capsule, content_capsule->book_id); + + return Py_BuildValue(""); +} + +Books *create_book_pointer(void); +Books *create_book_pointer(void) +{ + Books *content_capsule = (Books *)malloc(sizeof(Books *)); + if (NULL == content_capsule) + return NULL; + + content_capsule->book_id = 6.0; + return content_capsule; +} + +double * create_double_pointer(void); +double * create_double_pointer(void) +{ + double *content_capsule = (double *) malloc(sizeof(double *)); + if (NULL == content_capsule) + return NULL; + *content_capsule = 6.0; + + return content_capsule; +} + +static PyObject *create_capsule(PyObject *self, PyObject *args) +{ + // double *content_capsule = create_double_pointer(); + Books *content_capsule = create_book_pointer(); + + // printf("Pointer %p and value %d\n", content_capsule, *content_capsule; + printf("Pointer %p and value %d\n", content_capsule, content_capsule->book_id); + + // PyObject * ret = PyCapsule_New(content_capsule, "DOUBLE", NULL); + PyObject * ret = PyCapsule_New(content_capsule, "BOOKS", NULL); + return ret; +} + + +/////////////////////////////////////////////////////////////////////////////////// +// module's function table +static PyMethodDef DemoLib_FunctionsTable[] = { + // Capsule items + { + "create_capsule", // name exposed to Python + create_capsule, // C wrapper function + METH_VARARGS, // received variable args (but really just 1) + "Create capsule object" // documentation + }, + + { + "print_content_capsule", // name exposed to Python + print_content_capsule, // C wrapper function + METH_VARARGS, // received variable args (but really just 1) + "Opens the capsule and prints content" // documentation + }, + + { + "free_content_capsule", // name exposed to Python + free_content_capsule, // C wrapper function + METH_VARARGS, // received variable args (but really just 1) + "Free the capsule memory" // documentation + }, + + + { + NULL, NULL, 0, NULL + } +}; + +/////////////////////////////////////////////////////////////////////////////////// +// modules definition +static struct PyModuleDef DemoLib_Module = { + PyModuleDef_HEAD_INIT, + "demo", // name of module exposed to Python + "Demo Python wrapper for custom C extension library.", // module documentation + -1, + DemoLib_FunctionsTable +}; + +PyMODINIT_FUNC PyInit_demo(void) { + return PyModule_Create(&DemoLib_Module); +} \ No newline at end of file diff --git a/python_pycapsule_test/dist/demo-1.0-py3.6-linux-x86_64.egg b/python_pycapsule_test/dist/demo-1.0-py3.6-linux-x86_64.egg new file mode 100644 index 0000000000000000000000000000000000000000..ee497d2b179ca909da9a9819075183e1a914c9c3 GIT binary patch literal 15071 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 RL4W;hL4bgCzIp-y{XbU&TE+kX literal 0 HcmV?d00001 diff --git a/python_pycapsule_test/main.py b/python_pycapsule_test/main.py new file mode 100644 index 0000000..687d37a --- /dev/null +++ b/python_pycapsule_test/main.py @@ -0,0 +1,21 @@ +import demo +import time + +def is_capsule(o): + t = type(o) + return t.__module__ == 'builtins' and t.__name__ == 'PyCapsule' + +# Make capsule +caps = demo.create_capsule() + +print(dir(caps)) + +# Print content (twice, just to see if it persists) +demo.print_content_capsule(caps) +demo.print_content_capsule(caps) + +demo.free_content_capsule(caps) # Free it +demo.print_content_capsule(caps) + +del caps + diff --git a/python_pycapsule_test/setup.py b/python_pycapsule_test/setup.py new file mode 100644 index 0000000..1c18081 --- /dev/null +++ b/python_pycapsule_test/setup.py @@ -0,0 +1,12 @@ +from setuptools import Extension, setup + + + +module = Extension("demo", + sources=[ + 'demomodule.c' + ]) +setup(name='demo', + version='1.0', + description='Python wrapper for custom C extension', + ext_modules=[module]) \ No newline at end of file -- GitLab