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