diff --git a/include/wrapping_dap_chain_datum_tx.h b/include/wrapping_dap_chain_datum_tx.h index 595e5cb2014460a339ecefa96e99f0c7cf22da87..87aec6a55afeedbd8a3cbaf91fc35800cd2f8582 100644 --- a/include/wrapping_dap_chain_datum_tx.h +++ b/include/wrapping_dap_chain_datum_tx.h @@ -6,6 +6,7 @@ #include "libdap_crypto_key_python.h" #include "dap_chain_datum_tx_out_cond.h" #include "wrapping_dap_hash.h" +#include "dap_chain_datum_tx_items.h" #ifdef __cplusplus extern "C" { @@ -158,22 +159,34 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args); PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args); -static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj); -static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs); - +//static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj); +//static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs); static PyMethodDef PyDapChainDatumTxObjectMethods[] ={ {"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""}, - {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS | METH_STATIC, ""}, - {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS | METH_STATIC, ""}, - {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS | METH_STATIC, ""}, - {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS | METH_STATIC, ""}, - {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS | METH_STATIC, ""}, - {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS | METH_STATIC, ""}, + {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS, ""}, + {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS, ""}, + {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS, ""}, + {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS, ""}, + {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS, ""}, + {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS, ""}, {"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""}, {NULL, NULL, 0, NULL} }; + +//static PyMethodDef PyDapChainDatumTxObjectMethods[] ={ +// {"getSize", (PyCFunction)dap_chain_datum_tx_get_size_py, METH_VARARGS, ""}, +// {"addItem", (PyCFunction)dap_chain_datum_tx_add_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"addInItem", (PyCFunction)dap_chain_datum_tx_add_in_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"addInCondItem", (PyCFunction)dap_chain_datum_tx_add_in_cond_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"addOutItem", (PyCFunction)dap_chain_datum_tx_add_out_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"addOutCond", (PyCFunction)dap_chain_datum_tx_add_out_cond_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"addSignItem", (PyCFunction)dap_chain_datum_tx_add_sign_item_py, METH_VARARGS | METH_STATIC, ""}, +// {"verifySign", (PyCFunction)dap_chain_datum_tx_verify_sign_py, METH_VARARGS, ""}, +// {NULL, NULL, 0, NULL} +//}; + static PyTypeObject DapChainDatumTx_DapChainDatumTxObjectType = { PyVarObject_HEAD_INIT(NULL, 0) "CellFrame.Chain.DatumTx", /* tp_name */ @@ -265,8 +278,8 @@ static PyTypeObject DapChainTxOutCond_DapChainTxOutCondObjectType = { PyType_GenericNew, /* tp_new */ }; -dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list); -PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond); +//dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list); +//PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond); /* -------------------------------------- */ diff --git a/src/wrapping_dap_chain_datum_tx.c b/src/wrapping_dap_chain_datum_tx.c index 5ed4299e3194fea347357304ff3daa429931d828..699cfc4cf98cbee349da35cccc232ddb257a57e7 100644 --- a/src/wrapping_dap_chain_datum_tx.c +++ b/src/wrapping_dap_chain_datum_tx.c @@ -54,69 +54,63 @@ void PyDapChainDatumTxObject_delete(PyDapChainDatumTxObject* datumTx){ } PyObject *dap_chain_datum_tx_get_size_py(PyObject *self, PyObject *args){ + (void)args; size_t size = dap_chain_datum_tx_get_size(((PyDapChainDatumTxObject*)self)->datum_tx); return PyLong_FromSize_t(size); } PyObject *dap_chain_datum_tx_add_item_py(PyObject *self, PyObject *args){ - PyObject *in_obj; - u_int8_t *a_item; - if (!PyArg_ParseTuple(args, "O|b", &in_obj, &a_item)) + uint8_t *a_item; + if (!PyArg_ParseTuple(args, "b", &a_item)) return NULL; - dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj); - int res = dap_chain_datum_tx_add_item(txs, a_item); - if (res == -1){ - return NULL; - } else { - PyObject *out = DapChainDatumTxArrayToPyList(txs); - return Py_BuildValue("O", out); - } + int res = dap_chain_datum_tx_add_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), a_item); + return PyLong_FromLong(res); +// if (res == -1){ +// return NULL; +// } else { +// PyObject *out = DapChainDatumTxArrayToPyList(txs); +// return Py_BuildValue("O", out); +// } } PyObject *dap_chain_datum_tx_add_in_item_py(PyObject *self, PyObject *args){ - PyObject *in_obj_datum_txs; PyObject *in_obj_hash_fast; uint32_t in_tx_out_pref_idx; - if (!PyArg_ParseTuple(args, "O|O|I", &in_obj_datum_txs, &in_obj_hash_fast, &in_tx_out_pref_idx)) + if (!PyArg_ParseTuple(args, "O|I", &in_obj_hash_fast, &in_tx_out_pref_idx)) return NULL; - dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); - int res = dap_chain_datum_tx_add_in_item(a_txs, ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast, + int res = dap_chain_datum_tx_add_in_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), + ((PyDapHashFastObject*)in_obj_hash_fast)->hash_fast, in_tx_out_pref_idx); - if (res == -1){ - return NULL; - } else { - PyObject *out = DapChainDatumTxArrayToPyList(a_txs); - return Py_BuildValue("O", out); - } + return PyLong_FromLong(res); } PyObject *dap_chain_datum_tx_add_in_cond_item_py(PyObject *self, PyObject *args){ - PyObject *in_obj_datum_txs; +// PyObject *in_obj_datum_txs; PyObject *in_chain_hash_fast; unsigned int in_tx_out_prev_idx; unsigned int in_receipt_idx; - if (!PyArg_ParseTuple(args, "O|O|I|I", &in_obj_datum_txs, &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx)) + if (!PyArg_ParseTuple(args, "O|I|I", &in_chain_hash_fast, &in_tx_out_prev_idx, &in_receipt_idx)) return NULL; - dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); - int res = dap_chain_datum_tx_add_in_cond_item(a_txs, ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast, in_tx_out_prev_idx, in_receipt_idx); +// dap_chain_datum_tx_t **a_txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); + int res = dap_chain_datum_tx_add_in_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), + ((PyDapHashFastObject*)in_chain_hash_fast)->hash_fast, + in_tx_out_prev_idx, + in_receipt_idx); return PyLong_FromLong(res); } PyObject *dap_chain_datum_tx_add_out_item_py(PyObject *self, PyObject *args){ - PyObject *in_obj_datum_txs; +// PyObject *in_obj_datum_txs; PyObject *in_addr; uint64_t value; - if (!PyArg_ParseTuple(args, "O|O|k", &in_obj_datum_txs, &in_addr, value)) + if (!PyArg_ParseTuple(args, "O|k", &in_addr, &value)) return NULL; - dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); - int res = dap_chain_datum_tx_add_out_item(txs, ((PyDapChainAddrObject*)in_addr)->addr, value); - if (res == -1){ - return NULL; - } else { - PyObject *out = DapChainDatumTxArrayToPyList(txs); - return Py_BuildValue("O", out); - } +// dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(in_obj_datum_txs); + int res = dap_chain_datum_tx_add_out_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), + ((PyDapChainAddrObject*)in_addr)->addr, + value); + return PyLong_FromLong(res); } PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args){ - PyObject *obj_txs; +// PyObject *obj_txs; PyObject *obj_key; PyObject *obj_srv_uid; uint64_t value; @@ -124,78 +118,74 @@ PyObject *dap_chain_datum_tx_add_out_cond_item_py(PyObject *self, PyObject *args PyObject *obj_srv_price_unit_uid; PyObject *obj_cond_bytes; Py_ssize_t cond_size; - if (!PyArg_ParseTuple(args, "O|O|O|k|k|O|O|n", &obj_txs, &obj_key, &obj_srv_uid, &value, &value_max_per_unit, + if (!PyArg_ParseTuple(args, "O|O|k|k|O|O|n", &obj_key, &obj_srv_uid, &value, &value_max_per_unit, &obj_srv_price_unit_uid, &obj_cond_bytes, &cond_size)) return NULL; - dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs); +// dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs); void *cond = (void*)PyBytes_AsString(obj_cond_bytes); - int res = dap_chain_datum_tx_add_out_cond_item(txs, ((PyCryptoKeyObject*)obj_key)->key, ((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid, - value, value_max_per_unit, ((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid, + int res = dap_chain_datum_tx_add_out_cond_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), + ((PyCryptoKeyObject*)obj_key)->key, + ((PyDapChainNetSrvUIDObject*)obj_srv_uid)->net_srv_uid, + value, value_max_per_unit, + ((PyDapChainNetSrvPriceUnitUIDObject*)obj_srv_price_unit_uid)->price_unit_uid, cond, (size_t)cond_size); - if (res == -1){ - return NULL; - } else { - PyObject *out = DapChainDatumTxArrayToPyList(txs); - return Py_BuildValue("O", out); - } + return PyLong_FromLong(res); } PyObject *dap_chain_datum_tx_add_sign_item_py(PyObject *self, PyObject *args){ - PyObject *obj_txs; +// PyObject *obj_txs; PyObject *obj_key; - if (!PyArg_ParseTuple(args, "O|O", &obj_txs, &obj_key)) - return NULL; - dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs); - int res = dap_chain_datum_tx_add_sign_item(txs, ((PyCryptoKeyObject*)obj_key)->key); - if (res == -1){ + if (!PyArg_ParseTuple(args, "O", &obj_key)) return NULL; - } else { - PyObject *out = DapChainDatumTxArrayToPyList(txs); - return Py_BuildValue("O", out); - } +// dap_chain_datum_tx_t **txs = PyListToDapChainDatumTxArray(obj_txs); + int res = dap_chain_datum_tx_add_sign_item(&(((PyDapChainDatumTxObject*)self)->datum_tx), + ((PyCryptoKeyObject*)obj_key)->key); + return PyLong_FromLong(res); } PyObject *dap_chain_datum_tx_verify_sign_py(PyObject *self, PyObject *args){ + (void)args; int res = dap_chain_datum_tx_verify_sign(((PyDapChainDatumTxObject*)self)->datum_tx); return PyLong_FromLong(res); } -static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj){ - Py_ssize_t size = PyList_Size(a_in_obj); - dap_chain_datum_tx_t **txs = calloc(sizeof(dap_chain_datum_tx_t), (size_t)size); - for (Py_ssize_t i = 0; i < size;i++){ - txs[i] = ((PyDapChainDatumTxObject*)PyList_GetItem(a_in_obj, i))->datum_tx; - } - return txs; -} +//static dap_chain_datum_tx_t **PyListToDapChainDatumTxArray(PyObject *a_in_obj){ +// Py_ssize_t size = PyList_Size(a_in_obj); +// dap_chain_datum_tx_t **txs = calloc(sizeof(dap_chain_datum_tx_t), (size_t)size); +// for (Py_ssize_t i = 0; i < size;i++){ +// txs[i] = ((PyDapChainDatumTxObject*)PyList_GetItem(a_in_obj, i))->datum_tx; +// } +// return txs; +//} -static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs){ - size_t len = sizeof(datum_txs) / sizeof(*datum_txs); - PyObject* list = PyList_New((Py_ssize_t)len); - for (size_t i=0; i < len; i++){ - PyObject *obj = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType); - ((PyDapChainDatumTxObject*)obj)->datum_tx = datum_txs[i]; - PyList_Append(list, obj); - } - return list; -} +//static PyObject* DapChainDatumTxArrayToPyList(dap_chain_datum_tx_t** datum_txs){ +//// size_t len = sizeof(datum_txs) / sizeof(*datum_txs); +//// size_t len = dap_chain_datum_item_tx_get_size(datum_txs); +// PyObject* list = PyList_New((Py_ssize_t)len); +// for (size_t i=0; i < len; i++){ +// PyObject *obj = _PyObject_New(&DapChainDatumTx_DapChainDatumTxObjectType); +// ((PyDapChainDatumTxObject*)obj)->datum_tx = datum_txs[i]; +// PyList_Append(list, obj); +// } +// return list; +//} -dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list){ - Py_ssize_t size = PyList_Size(list); - dap_chain_tx_out_cond_t **out_conds = calloc(sizeof(dap_chain_tx_out_cond_t), (size_t)size); - for (Py_ssize_t i=0; i < size; i++){ - out_conds[i] = ((PyDapChainTxOutCondObject*)PyList_GetItem(list, i))->out_cond; - } - return out_conds; -} +//dap_chain_tx_out_cond_t **PyListToDapChainTxOutCond(PyObject *list){ +// Py_ssize_t size = PyList_Size(list); +// dap_chain_tx_out_cond_t **out_conds = calloc(sizeof(dap_chain_tx_out_cond_t), (size_t)size); +// for (Py_ssize_t i=0; i < size; i++){ +// out_conds[i] = ((PyDapChainTxOutCondObject*)PyList_GetItem(list, i))->out_cond; +// } +// return out_conds; +//} -PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond){ - size_t len = sizeof(out_cond) / sizeof(*out_cond); - PyObject *list = PyList_New((Py_ssize_t)len); - for (size_t i=0; i< len;i++ ){ - PyObject *obj = _PyObject_New(&DapChainTxOutCond_DapChainTxOutCondObjectType); - ((PyDapChainTxOutCondObject*)obj)->out_cond = out_cond[i]; - PyList_Append(list, obj); - } - return list; -} +//PyObject *DapChainTxOutCondObjectToPyList(dap_chain_tx_out_cond_t **out_cond){ +// size_t len = sizeof(out_cond) / sizeof(*out_cond); +// PyObject *list = PyList_New((Py_ssize_t)len); +// for (size_t i=0; i< len;i++ ){ +// PyObject *obj = _PyObject_New(&DapChainTxOutCond_DapChainTxOutCondObjectType); +// ((PyDapChainTxOutCondObject*)obj)->out_cond = out_cond[i]; +// PyList_Append(list, obj); +// } +// return list; +//} /* -------------------------------------- */