Newer
Older
#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);
void* bytes_v = (void *)PyBytes_AsString((PyObject*)bytes);
obj->datum = dap_chain_datum_create(type_id, bytes_v, data_size);
return (PyObject *)obj;
}
PyObject *dap_chain_datum_size_py(PyObject *self, PyObject *args){

alexey.stratulat
committed
(void)args;
size_t size = dap_chain_datum_size(((PyDapChainDatumObject*)self)->datum);
return PyLong_FromSize_t(size);
}

alexey.stratulat
committed
PyObject *dap_chain_datum_get_ts_created_py(PyObject *self, void* closure){

alexey.stratulat
committed
PyDateTime_IMPORT;
PyObject *obj_ts_long = Py_BuildValue("(k)",((PyDapChainDatumObject*)self)->datum->header.ts_create);
PyObject *obj_ts = PyDateTime_FromTimestamp(obj_ts_long);
return obj_ts;
}
PyObject *dap_chain_datum_is_type_tx(PyObject *self, PyObject *args){
(void)args;
if (((PyDapChainDatumObject*)self)->datum->header.type_id == DAP_CHAIN_DATUM_TX){
return Py_BuildValue("O", Py_True);
} else {
return Py_BuildValue("O", Py_False);
}
}

alexey.stratulat
committed
PyObject *dap_chain_datum_is_type_token(PyObject *self, PyObject *args){
(void)args;
if (((PyDapChainDatumObject*)self)->datum->header.type_id == DAP_CHAIN_DATUM_TOKEN_DECL ){
return Py_BuildValue("O", Py_True);
} else {
return Py_BuildValue("O", Py_False);
}
}
PyObject *wrapping_dap_chain_datum_get_datum_token(PyObject *self, PyObject *args){
(void)args;
if (((PyDapChainDatumObject*)self)->datum->header.type_id == DAP_CHAIN_DATUM_TOKEN_DECL ){
PyDapChainDatumTokenObject *obj_token = PyObject_New(PyDapChainDatumTokenObject,
&DapChainDatumToken_DapChainDatumTokenObjectType);
PyObject_Dir((PyObject*)obj_token);
size_t l_size_token = ((PyDapChainDatumObject*)self)->datum->header.data_size;
obj_token->token = dap_chain_datum_token_read(((PyDapChainDatumObject*)self)->datum->data,
&l_size_token);
return (PyObject*)obj_token;

alexey.stratulat
committed
}else{
PyErr_SetString(PyExc_Exception, "Due to the type of this datum, it is not possible to get the token datum.");
return NULL;
}
}
PyObject *dap_chain_datum_is_type_emission(PyObject *self, PyObject *args){
(void)args;
if (((PyDapChainDatumObject*)self)->datum->header.type_id == DAP_CHAIN_DATUM_TOKEN_EMISSION){
return Py_BuildValue("O", Py_True);
}else{
return Py_BuildValue("O", Py_False);
}
}
PyObject *wrapping_dap_chain_datum_get_datum_token_emission(PyObject *self, PyObject *args){
(void)args;
if (((PyDapChainDatumObject*)self)->datum->header.type_id == DAP_CHAIN_DATUM_TOKEN_EMISSION ){
PyDapChainDatumTokenEmissionObject *obj_emission = PyObject_New(
PyDapChainDatumTokenEmissionObject,
&DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType
);
PyObject_Dir((PyObject*)obj_emission);
size_t l_token_emission_size = ((PyDapChainDatumObject*)self)->datum->header.data_size;

alexey.stratulat
committed
obj_emission->token_emission = dap_chain_datum_emission_read(((PyDapChainDatumObject*)self)->datum->data,
&l_token_emission_size);
return (PyObject*)obj_emission;
}else{
PyErr_SetString(PyExc_Exception, "Due to the type of this datum, it is not possible to get the token datum.");
return NULL;
}
}
PyObject *wrapping_dap_chain_datum_get_datum_tx(PyObject *self, PyObject *args){
(void)args;
if(((PyDapChainDatumObject *)self)->datum->header.type_id == DAP_CHAIN_DATUM_TX){
PyObject *obj_datum_tx = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType);
obj_datum_tx = PyObject_Init(obj_datum_tx, &DapChainDatumTx_DapChainDatumTxObjectType);
PyObject_Dir(obj_datum_tx);
((PyDapChainDatumTxObject*)obj_datum_tx)->datum_tx = ((PyDapChainDatumObject*)self)->datum->data;
return obj_datum_tx;
}else{
PyErr_SetString(PyExc_Exception, "Due to the type of this datum, it is not possible to get the transaction datum.");
return NULL;
}
}

alexey.stratulat
committed
PyObject *dap_chain_datum_get_type_str_py(PyObject *self, PyObject *args){
(void)args;
const char *l_ret;
DAP_DATUM_TYPE_STR(((PyDapChainDatumObject*)self)->datum->header.type_id, l_ret);
if (l_ret == NULL)
return Py_None;
return Py_BuildValue("s", l_ret);
}

alexey.stratulat
committed
PyObject *wrapping_dap_chain_datum_get_version_str_py(PyObject *self, void* closure){
(void)closure;
return Py_BuildValue("s", dap_strdup_printf("0x%02X",((PyDapChainDatumObject*)self)->datum->header.version_id));
}