diff --git a/include/wrapping_dap_chain_datum.h b/include/wrapping_dap_chain_datum.h new file mode 100644 index 0000000000000000000000000000000000000000..bfbdeb560f816d63e70d1f6c161fa6f11941b7e6 --- /dev/null +++ b/include/wrapping_dap_chain_datum.h @@ -0,0 +1,163 @@ +#ifndef _WRAPPING_DAP_CHAIN_DATUM_ +#define _WRAPPING_DAP_CHAIN_DATUM_ +#include "Python.h" +#include "dap_chain_datum.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* DAP Chain datum type id */ +typedef struct PyDapChainDatumTypeId{ + PyObject_HEAD + dap_chain_datum_typeid_t *type_id; +}PyDapChainDatumTypeIdObject; + +static PyTypeObject DapChainDatumTypeIdObject_DapChainDatumTypeIdObjectType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.ChainDatumTypeId", /* tp_name */ + sizeof(PyDapChainDatumTypeIdObject), /* 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 datum type id object", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* 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 */ +}; +/* -------------------------------- */ + +typedef struct PyDapChainDatum{ + PyObject_HEAD + dap_chain_datum_t *datum; +}PyDapChainDatumObject; + +//void PyDapChainDatumObject_dealloc(PyDapChainDatumObject* object); +PyObject *DapChainDatumObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds); + +static PyTypeObject DapChainDatumObject_DapChainDatumObjectType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.ChainDatum", /* tp_name */ + sizeof(PyDapChainDatumObject), /* 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 datum object", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* 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 */ + PyDapChainDatumObject_new, /* tp_new */ +}; +/* -------------------------------- */ + +/* DAP Chain datum iter*/ +typedef struct PyDapChainDatumIter{ + PyObject_HEAD + dap_chain_datum_iter_t *datum_iter; +}PyDapChainDatumIterObject; + +static PyTypeObject DapChainDatumIterObject_DapChainDatumIterObjectType = { + PyVarObject_HEAD_INIT(NULL, 0) + "CellFrame.ChainDatumIter", /* tp_name */ + sizeof(PyDapChainDatumIterObject), /* 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 datum iter object", /* tp_doc */ + 0, /* tp_traverse */ + 0, /* tp_clear */ + 0, /* tp_richcompare */ + 0, /* tp_weaklistoffset */ + 0, /* tp_iter */ + 0, /* tp_iternext */ + 0, /* 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_DATUM_ diff --git a/src/wrapping_dap_chain_datum.c b/src/wrapping_dap_chain_datum.c new file mode 100644 index 0000000000000000000000000000000000000000..c9ef627bbb8388ece5e635803ea3ef9642fd1fe5 --- /dev/null +++ b/src/wrapping_dap_chain_datum.c @@ -0,0 +1,15 @@ +#include "wrapping_dap_chain_datum.h" + +//void PyDapChainDatumObject_dealloc(PyDapChainDatumObject* object){ +//} + +PyObject *PyDapChainDatumObject_new(PyTypeObject *type_object, PyObject *args, PyObject *kwds){ + uint16_t type_id; + PyBytesObject *bytes; + size_t data_size; + if (!PyArg_ParseTuple(args, "h|S|n", &type_id, &bytes, &data_size)) + return NULL; + PyDapChainDatumObject *obj = (PyDapChainDatumObject*)PyType_GenericNew(type_object, args, kwds); + obj->datum = dap_chain_datum_create(type_id, bytes, data_size); + return (PyObject *)obj; +}