From 8f1ea69ce6b175e800f9ec58785a2bbd4bc1ddf1 Mon Sep 17 00:00:00 2001
From: "alexey.stratulat" <alexey.stratulat@demlabs.net>
Date: Mon, 18 Nov 2019 15:04:45 +0700
Subject: [PATCH] [*] Improved work with wrapper on dap_chain_type. Now return
 and object containing a wrapper over dap_chain_type_t and not a number.

---
 include/libdap_chain_type_python.h |  1 +
 src/libdap_chain_type_python.c     | 20 +++++++++++++++-----
 2 files changed, 16 insertions(+), 5 deletions(-)

diff --git a/include/libdap_chain_type_python.h b/include/libdap_chain_type_python.h
index 8cb8ae63..289866c6 100644
--- a/include/libdap_chain_type_python.h
+++ b/include/libdap_chain_type_python.h
@@ -5,6 +5,7 @@
 
 typedef struct PyChainType{
     PyObject_HEAD
+    dap_chain_type_t chain_type;
 } PyChainTypeObject;
 
 PyObject* CHAIN_TYPE_FIRST_PY();
diff --git a/src/libdap_chain_type_python.c b/src/libdap_chain_type_python.c
index 7ba65602..2ce46a8e 100644
--- a/src/libdap_chain_type_python.c
+++ b/src/libdap_chain_type_python.c
@@ -1,17 +1,27 @@
 #include "libdap_chain_type_python.h"
 
 PyObject* CHAIN_TYPE_FIRST_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_FIRST);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_FIRST;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_TOKEN_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_TOKEN);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_TOKEN;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_EMISSION_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_EMISSION);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_EMISSION;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_TX_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_TX);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_TX;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
 PyObject* CHAIN_TYPE_LAST_PY(){
-    return PyLong_FromLong(CHAIN_TYPE_LAST);
+    PyObject *dap_chain_obj = _PyObject_New(&dapChainTypeObject_dapChainTypeType);
+    ((PyChainTypeObject*)dap_chain_obj)->chain_type = CHAIN_TYPE_LAST;
+    return Py_BuildValue("O", &dap_chain_obj);
 }
-- 
GitLab