Skip to content
Snippets Groups Projects
wrapping_dap_app_cli_server.h 4.23 KiB
Newer Older

#include <Python.h>
#include "dap_config.h"
#include "dap_chain_node_cli.h"
typedef struct PyDapAppCliServer{
    PyObject_HEAD
    cmdfunc_t *func;
}PyDapAppCliServerObject;

typedef struct element_str_reply{
    char **str_reply;
    size_t id;
    struct element_str_reply *next;
}element_str_reply_t;

static element_str_reply_t *l_str_reply_list;
size_t elements_str_reply_add(char** str_reply);
int elements_str_reply_cmp_by_id(element_str_reply_t *e1, element_str_reply_t *e2);
char** elements_str_reply_get_by_id(size_t id);
void elements_str_reply_delete(size_t id);
void elements_str_reply_delete_all();

typedef struct element_py_func{
    char *name;
    PyObject *func;
    struct element_py_func *next;
}element_py_func_t;

static element_py_func_t *l_element_py_func_list;

void element_py_func_add(const char *name, PyObject *func);
int element_py_func_cmp_by_name(element_py_func_t *e1, element_py_func_t *e2);
PyObject *element_py_func_get(char *name);
void element_py_func_del_by_name(char *name);
void element_py_func_del_all();


//static PyObject *binded_object_cmdfunc = NULL;
//static char** l_str_reply = NULL;

int dap_chain_node_cli_init_py(dap_config_t *g_config);
void dap_chain_node_cli_delete_py(void);

PyObject *DapChainNodeCliObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds);

Dmitriy A. Gerasimov's avatar
Dmitriy A. Gerasimov committed
PyObject *dap_chain_node_cli_cmd_item_create_py(PyObject *a_self, PyObject *a_args);
PyObject *dap_chain_node_cli_set_reply_text_py(PyObject *self, PyObject *args);

PyObject *dap_chain_node_addr_get_by_alias_py(PyObject *self, PyObject *args);

static PyMethodDef DapChainNodeCliMethods[] = {
    {"cmdItemCreate", dap_chain_node_cli_cmd_item_create_py, METH_VARARGS| METH_STATIC, ""},
    {"setReplyText", dap_chain_node_cli_set_reply_text_py, METH_VARARGS| METH_STATIC, ""},
    {"getByAlias", dap_chain_node_addr_get_by_alias_py, METH_VARARGS | METH_STATIC, ""},
    {NULL, NULL, 0, NULL}
};

static PyTypeObject DapChainNodeCliObject_DapChainNodeCliObjectType = {
    PyVarObject_HEAD_INIT(NULL, 0)
    "AppCliServer",            /* tp_name */
    sizeof(PyDapAppCliServerObject),     /* 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 cli object",              /* tp_doc */
    0,		                         /* tp_traverse */
    0,		                         /* tp_clear */
    0,		                         /* tp_richcompare */
    0,                               /* tp_weaklistoffset */
    0,		                         /* tp_iter */
    0,		                         /* tp_iternext */
    DapChainNodeCliMethods,              /* 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 */
    DapChainNodeCliObject_new,       /* tp_new */
};

char **PyListToString(PyObject *list);
//PyObject *stringToPyList(char **list);
PyObject *stringToPyList(int argc, char **list);