From 5ab18d9bdb87de1f4d5b4c617e8f394b29311266 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Wed, 11 Dec 2019 22:46:42 +0700
Subject: [PATCH] [+] Added wrapping function from the header file
 dap_chain_gdb_python library.

---
 include/wrapping_dap_chain_gdb.h | 76 ++++++++++++++++++++++++++++++++
 src/wrapping_dap_chain_gdb.c     | 29 ++++++++++++
 2 files changed, 105 insertions(+)
 create mode 100644 include/wrapping_dap_chain_gdb.h
 create mode 100644 src/wrapping_dap_chain_gdb.c

diff --git a/include/wrapping_dap_chain_gdb.h b/include/wrapping_dap_chain_gdb.h
new file mode 100644
index 00000000..f93e2b6c
--- /dev/null
+++ b/include/wrapping_dap_chain_gdb.h
@@ -0,0 +1,76 @@
+#ifndef _WRAPPING_DAP_CHAIN_GDB_
+#define _WRAPPING_DAP_CHAIN_GDB_
+#include <Python.h>
+#include "dap_chain_gdb.h"
+#include "libdap-chain-python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct PyDapChainGDB{
+    PyObject_HEAD
+    dap_chain_gdb_t *gdb;
+
+}PyDapChainGDBObject;
+
+int dap_chain_gdb_init_py(void);
+
+PyObject* dap_chain_gdb_new_py(PyObject* self, PyObject *args);
+
+PyObject *dap_chain_gdb_delete_py(PyObject *self, PyObject *args);
+PyObject *dap_chain_gdb_get_group_py(PyObject *self, PyObject *args);
+
+PyMethodDef DapChainGDBMethod[] = {
+    {"new", (PyCFunction)dap_chain_gdb_new_py, METH_VARARGS | METH_STATIC, ""},
+    {"delete", (PyCFunction)dap_chain_gdb_delete_py, METH_VARARGS | METH_STATIC, ""},
+    {"getGroup", (PyCFunction)dap_chain_gdb_get_group_py, METH_VARARGS | METH_STATIC, ""},
+    {NULL, NULL, 0, NULL}
+};
+
+static PyTypeObject DapChainGDBObject_DapChainGDBType = {
+    PyVarObject_HEAD_INIT(NULL, 0)
+    "CellFrame.Chain",                                            /* tp_name */
+    sizeof(PyDapChainObject),                                     /* tp_basicsize */
+    0,                                                            /* tp_itemsize */
+    0,                                                            /* tp_dealloc */
+    0,                                                            /* tp_print */
+    0,                                                            /* tp_getattr */
+    0,                                                            /* tp_setattr */
+    0,                                                            /* tp_reserved */
+    0,                                                            /* tp_repr */
+    0,                                                            /* tp_as_number */
+    0,                                                            /* tp_as_sequence */
+    0,                                                            /* tp_as_mapping */
+    0,                                                            /* tp_hash  */
+    0,                                                            /* tp_call */
+    0,                                                            /* tp_str */
+    0,                                                            /* tp_getattro */
+    0,                                                            /* tp_setattro */
+    0,                                                            /* tp_as_buffer */
+    Py_TPFLAGS_DEFAULT |
+        Py_TPFLAGS_BASETYPE,                                      /* tp_flags */
+    "Chain gdb object",                                              /* tp_doc */
+    0,		                                                      /* tp_traverse */
+    0,		                                                      /* tp_clear */
+    0,		                                                      /* tp_richcompare */
+    0,		                                                      /* tp_weaklistoffset */
+    0,		                                                      /* tp_iter */
+    0,		                                                      /* tp_iternext */
+    DapChainGDBMethod,                                              /* tp_methods */
+    0,                                                            /* tp_members */
+    0,                                                            /* tp_getset */
+    0,                                                            /* tp_base */
+    0,                                                            /* tp_dict */
+    0,                                                            /* tp_descr_get */
+    0,                                                            /* tp_descr_set */
+    0,                                                            /* tp_dictoffset */
+    0,                                                            /* tp_init */
+    0,                                                            /* tp_alloc */
+    PyType_GenericNew,                                            /* tp_new */
+};
+
+#ifdef __cplusplus
+}
+#endif
+#endif // _WRAPPING_DAP_CHAIN_GDB_
diff --git a/src/wrapping_dap_chain_gdb.c b/src/wrapping_dap_chain_gdb.c
new file mode 100644
index 00000000..5bf53efa
--- /dev/null
+++ b/src/wrapping_dap_chain_gdb.c
@@ -0,0 +1,29 @@
+#include "wrapping_dap_chain_gdb.h"
+
+int dap_chain_gdb_init_py(void){
+    return dap_chain_gdb_init();
+}
+
+PyObject* dap_chain_gdb_new_py(PyObject* self, PyObject *args){
+    PyObject *obj_chain;
+    if (!PyArg_ParseTuple(args, "O", &obj_chain))
+        return NULL;
+    int res = dap_chain_gdb_new(((PyDapChainObject*)obj_chain)->chain_t, g_config);
+    return PyLong_FromLong(res);
+}
+
+PyObject *dap_chain_gdb_delete_py(PyObject *self, PyObject *args){
+    PyObject *obj_chain;
+    if (!PyArg_ParseTuple(args, "O", &obj_chain))
+        return NULL;
+    dap_chain_gdb_delete(((PyDapChainObject*)obj_chain)->chain_t);
+    return PyLong_FromLong(0);
+}
+
+PyObject *dap_chain_gdb_get_group_py(PyObject *self, PyObject *args){
+    PyObject *obj_chain;
+    if (!PyArg_ParseTuple(args, "O", &obj_chain))
+        return NULL;
+    const char *res = dap_chain_gdb_get_group(((PyDapChainObject*)obj_chain)->chain_t);
+    return Py_BuildValue("s", res);
+}
-- 
GitLab