From 310fe9bcf2993643ccc39d00655e334167bdc35b Mon Sep 17 00:00:00 2001 From: "alexey.stratulat" <alexey.stratulat@demlabs.net> Date: Mon, 18 Nov 2019 21:34:50 +0700 Subject: [PATCH] [+] Added wrapping dap_chain_net_node_info --- include/wrapping_dap_chain_net_node_info.h | 72 ++++++++++++++++++++++ src/wrapping_dap_chain_net_node_info.c | 19 ++++++ 2 files changed, 91 insertions(+) create mode 100644 include/wrapping_dap_chain_net_node_info.h create mode 100644 src/wrapping_dap_chain_net_node_info.c diff --git a/include/wrapping_dap_chain_net_node_info.h b/include/wrapping_dap_chain_net_node_info.h new file mode 100644 index 0000000..4caec25 --- /dev/null +++ b/include/wrapping_dap_chain_net_node_info.h @@ -0,0 +1,72 @@ +#ifndef _WRAPPING_DAP_CHAIN_NODE_INFO +#define _WRAPPING_DAP_CHAIN_NODE_INFO +#include <Python.h> +#include "dap_chain_node.h" +#include "libdap_chain_net_python.h" +#include "wrapping_dap_chain_common_objects.h" + +#ifdef __cplusplus +extern "C" { +#endif + +typedef struct PyDapChainNodeInfo{ + PyObject_HEAD + dap_chain_node_info_t *node_info; +}PyDapChainNodeInfoObject; + +PyObject *dap_chain_node_info_save_py(PyObject *self, PyObject *args); +PyObject *dap_chain_node_info_read_py(PyObject *self, PyObject *args); + +static PyMethodDef DapChainNetNodeInfoMethods[] = { + {"save", dap_chain_node_info_save_py, METH_VARARGS, ""}, + {"read", dap_chain_node_info_read_py, METH_VARARGS | METH_STATIC, ""}, + {NULL, NULL, 0, NULL} +}; + +static PyTypeObject DapChainNodeInfoObject_DapChainNodeInfoObjectType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.Chain.Node.Info", /* tp_name */ + sizeof(PyDapChainNodeInfoObject), /* 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 net node info object", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + DapChainNetNodeInfoMethods, /* 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_NODE_INFO diff --git a/src/wrapping_dap_chain_net_node_info.c b/src/wrapping_dap_chain_net_node_info.c new file mode 100644 index 0000000..36e1915 --- /dev/null +++ b/src/wrapping_dap_chain_net_node_info.c @@ -0,0 +1,19 @@ +#include "wrapping_dap_chain_net_node_info.h" + +PyObject *dap_chain_node_info_save_py(PyObject *self, PyObject *args){ + PyObject *obj_net; + if (!PyArg_ParseTuple(args, "O", &obj_net)) + return NULL; + int res = dap_chain_node_info_save(((PyDapChainNetObject*)obj_net)->chain_net, ((PyDapChainNodeInfoObject*)self)->node_info); + return PyLong_FromLong(res); +} + +PyObject *dap_chain_node_info_read_py(PyObject *self, PyObject *args){ + PyObject *obj_net; + PyObject *obj_node_addr; + if (!PyArg_ParseTuple(args, "O|O", &obj_net, &obj_node_addr)) + return NULL; + PyObject *obj_node_info = _PyObject_New(&DapChainNodeInfoObject_DapChainNodeInfoObjectType); + ((PyDapChainNodeInfoObject*)obj_node_info)->node_info = dap_chain_node_info_read(((PyDapChainNetObject*)obj_net)->chain_net, ((PyDapChainNodeAddrObject*)obj_node_addr)->node_addr); + return Py_BuildValue("O", &obj_node_info); +} -- GitLab