Skip to content
Snippets Groups Projects
Commit 2b94cc3b authored by alexey.stratulat's avatar alexey.stratulat
Browse files

[+] Added attributes for reading data from dap chain_datum_token_t and dap...

[+] Added attributes for reading data from dap chain_datum_token_t and dap chain _datum_token_emission_t.
parent ab7738de
No related branches found
No related tags found
1 merge request!73Features-5386 to develop
This commit is part of merge request !73. Comments created here will be created in the context of that merge request.
......@@ -28,6 +28,7 @@
#include "Python.h"
#include "dap_chain_datum_token.h"
#include "wrapping_dap_chain_common.h"
#ifdef __cplusplus
extern "C" {
......@@ -40,6 +41,17 @@ typedef struct PyDapChainDatumToken{
dap_chain_datum_token_t *token;
}PyDapChainDatumTokenObject;
PyObject *wrapping_dap_chain_datum_token_get_ticker(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_get_type_str(PyObject *self, void *closure);
//PyObject *wrapping_dap_chain_datum_token_get_size(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_get_data(PyObject *self, void *closure);
static PyGetSetDef PyDapChainDatumTokenGetsSetsDef[]={
{"ticker", (getter)wrapping_dap_chain_datum_token_get_ticker, NULL, NULL},
{"data", (getter)wrapping_dap_chain_datum_token_get_data, NULL, NULL},
{NULL}
};
static PyTypeObject DapChainDatumToken_DapChainDatumTokenObjectType = {
PyVarObject_HEAD_INIT(NULL, 0)
"CellFrame.Chain.DatumTokenObject", /* tp_name */
......@@ -71,7 +83,7 @@ static PyTypeObject DapChainDatumToken_DapChainDatumTokenObjectType = {
0, /* tp_iternext */
0, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
PyDapChainDatumTokenGetsSetsDef, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
......@@ -91,6 +103,28 @@ typedef struct PyDapChainDatumTokenEmission{
dap_chain_datum_token_emission_t *token_emission;
}PyDapChainDatumTokenEmissionObject;
PyObject *wrapping_dap_chain_datum_token_emission_get_version(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_type_str(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_ticker(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_addr(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_value(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_nonce(PyObject *self, void *closure);
PyObject *wrapping_dap_chain_datum_token_emission_get_data(PyObject *self, void *closure);
static PyGetSetDef PyDapChainDatumTokenEmissionGetsSetsDef[]={
{"version", (getter)wrapping_dap_chain_datum_token_emission_get_version, NULL, NULL},
{"typeStr", (getter)wrapping_dap_chain_datum_token_emission_get_type_str, NULL, NULL},
{"ticker", (getter)wrapping_dap_chain_datum_token_emission_get_ticker, NULL, NULL},
{"addr", (getter)wrapping_dap_chain_datum_token_emission_get_addr, NULL, NULL},
{"value", (getter)wrapping_dap_chain_datum_token_emission_get_value, NULL, NULL},
{"data", (getter)wrapping_dap_chain_datum_token_emission_get_data, NULL, NULL},
{NULL}
};
static PyMethodDef PyDapChainDatumTokenEmissionMethods[]={
{NULL, NULL, 0, NULL}
};
static PyTypeObject DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectType = {
PyVarObject_HEAD_INIT(NULL, 0)
"CellFrame.Chain.DatumTokenEmission", /* tp_name */
......@@ -120,9 +154,9 @@ static PyTypeObject DapChainDatumTokenEmission_DapChainDatumTokenEmissionObjectT
0, /* tp_weaklistoffset */
0, /* tp_iter */
0, /* tp_iternext */
0, /* tp_methods */
PyDapChainDatumTokenEmissionMethods, /* tp_methods */
0, /* tp_members */
0, /* tp_getset */
PyDapChainDatumTokenEmissionGetsSetsDef, /* tp_getset */
0, /* tp_base */
0, /* tp_dict */
0, /* tp_descr_get */
......
#include "wrapping_dap_chain_datum_token.h"
/* Token */
PyObject *wrapping_dap_chain_datum_token_get_ticker(PyObject *self, void *closure){
(void)closure;
return Py_BuildValue("s", ((PyDapChainDatumTokenObject*)self)->token->ticker);
}
PyObject *wrapping_dap_chain_datum_token_get_type_str(PyObject *self, void *closure){
(void)closure;
}
//PyObject *wrapping_dap_chain_datum_token_get_size(PyObject *self, void *closure){
// (void)closure;
// return Py_BuildValue("", ((PyDapChainDatumTokenObject*)self)->token->)
//}
PyObject *wrapping_dap_chain_datum_token_get_data(PyObject *self, void *closure){
(void)closure;
dap_chain_datum_token_t *l_token = ((PyDapChainDatumTokenObject*)self)->token;
PyObject *obj_dict = PyDict_New();
PyObject *obj_dict_header_private = NULL;
PyObject *obj = Py_None;
switch(l_token->type){
case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_SIMPLE:
case DAP_CHAIN_DATUM_TOKEN_TYPE_SIMPLE:
obj = Py_BuildValue("H", l_token->header_private.signs_total);
PyDict_SetItemString(obj_dict, "signs_total", obj);
obj = Py_BuildValue("H", l_token->header_private.signs_valid);
PyDict_SetItemString(obj_dict, "signs_valid", obj);
if (dap_chain_datum_token_is_old(l_token->type))
obj = Py_BuildValue("k", l_token->header_private.total_supply);
else
obj = Py_BuildValue("s", dap_chain_balance_print(l_token->header_private.total_supply_256));
PyDict_SetItemString(obj_dict, "total_supply", obj);
break;
case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_UPDATE:
case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_UPDATE:
break;
case DAP_CHAIN_DATUM_TOKEN_TYPE_OLD_PRIVATE_DECL:
case DAP_CHAIN_DATUM_TOKEN_TYPE_PRIVATE_DECL:
break;
default:
return Py_None;
}
return obj_dict;
}
/* Token Emission */
PyObject *wrapping_dap_chain_datum_token_emission_get_version(PyObject *self, void *closure){
(void)closure;
return Py_BuildValue("I", ((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.version);
}
PyObject *wrapping_dap_chain_datum_token_emission_get_type_str(PyObject *self, void *closure){
(void)closure;
const char *str;
switch (((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.type) {
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_UNDEFINED:
str = "TOKEN_EMISSION_TYPE_UNDEFINED";
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH:
str = "TOKEN_EMISSION_TYPE_AUTH";
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ALGO:
str = "TOKEN_EMISSION_TYPE_ALGO";
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ATOM_OWNER:
str = "TOKEN_EMISSION_TYPE_ATOM_OWNER";
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_SMART_CONTRACT:
str = "TOKEN_EMISSION_TYPE_SMART_CONTRACT";
break;
default:
str = "UNDEFINED";
}
return Py_BuildValue("s", str);
// const char *str = "UNDEFINED";
//#define DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_UNDEFINED 0x00
//#define DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH 0x01
//#define DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ALGO 0x02
//#define DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ATOM_OWNER 0x03
//#define DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_SMART_CONTRACT 0x04
// const char *str = c_dap_chain_datum_token_emission_type_str(((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.type);
// return Py_BuildValue("s", str);
}
PyObject *wrapping_dap_chain_datum_token_emission_get_ticker(PyObject *self, void *closure){
(void)closure;
// log_it(L_NOTICE, "ticker in token: %s", ((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.ticker);
return Py_BuildValue("s", ((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.ticker);
}
PyObject *wrapping_dap_chain_datum_token_emission_get_addr(PyObject *self, void *closure){
(void)closure;
PyDapChainAddrObject *obj_addr = PyObject_New(PyDapChainAddrObject, &DapChainAddrObject_DapChainAddrObjectType);
PyObject_Dir((PyObject*)obj_addr);
obj_addr->addr = &((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.address;
return (PyObject*)obj_addr;
}
PyObject *wrapping_dap_chain_datum_token_emission_get_value(PyObject *self, void *closure){
(void)closure;
return Py_BuildValue("k", ((PyDapChainDatumTokenEmissionObject*)self)->token_emission->hdr.value);
}
PyObject *wrapping_dap_chain_datum_token_emission_get_nonce(PyObject *self, void *closure){
(void)closure;
}
PyObject *wrapping_dap_chain_datum_token_emission_get_data(PyObject *self, void *closure){
(void)closure;
PyObject *obj_dict = NULL;
PyObject *obj_tmp = Py_None;
dap_chain_datum_token_emission_t *token_emi = ((PyDapChainDatumTokenEmissionObject*)self)->token_emission;
PyDapSignObject *obj_tmp_sign = Py_None;
switch(token_emi->hdr.type){
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_AUTH:
obj_dict = PyDict_New();
obj_tmp = PyList_New(token_emi->data.type_auth.signs_count);
for (size_t i = 0; i < token_emi->data.type_auth.signs_count; i++){
obj_tmp_sign = PyObject_New(PyDapSignObject, &DapSignObject_DapSignObjectType);
PyObject_Dir((PyObject*)obj_tmp_sign);
obj_tmp_sign->sign = DAP_NEW(dap_sign_t);
memcpy(
obj_tmp_sign->sign + sizeof(dap_sign_t) * i,
token_emi->data.type_auth.signs[i],
sizeof(dap_sign_t));
PyList_SetItem(obj_tmp, i, obj_tmp_sign);
}
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ALGO:
obj_dict = PyDict_New();
obj_tmp = Py_BuildValue("s", token_emi->data.type_algo.codename);
PyDict_SetItemString(obj_dict, "codename", obj_tmp);
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_ATOM_OWNER:
obj_dict = PyDict_New();
obj_tmp = Py_BuildValue("k", token_emi->data.type_atom_owner.value_start);
PyDict_SetItemString(obj_dict, "value_start", obj_tmp);
obj_tmp = Py_BuildValue("s", token_emi->data.type_atom_owner.value_change_algo_codename);
PyDict_SetItemString(obj_dict, "value_change_algo_codename", obj_tmp);
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_SMART_CONTRACT:
obj_dict = PyDict_New();
break;
case DAP_CHAIN_DATUM_TOKEN_EMISSION_TYPE_UNDEFINED:
return Py_None;
break;
default:
return Py_None;
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment