diff options
Diffstat (limited to 'plugins/pychrysa/analysis/blocks/flow.c')
-rw-r--r-- | plugins/pychrysa/analysis/blocks/flow.c | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/plugins/pychrysa/analysis/blocks/flow.c b/plugins/pychrysa/analysis/blocks/flow.c index a5ee99c..626d5c8 100644 --- a/plugins/pychrysa/analysis/blocks/flow.c +++ b/plugins/pychrysa/analysis/blocks/flow.c @@ -31,12 +31,15 @@ #include <analysis/blocks/flow.h> +#include "../block.h" +#if 0 + /* Fournit les adresses limites d'un bloc d'exécution. */ static PyObject *py_flow_block_get_boundary_addresses(PyObject *, void *); @@ -180,3 +183,103 @@ bool register_python_flow_block(PyObject *module) return (ret == 0); } + +#endif + + + + + + + + + + + + + + + + + + + +/****************************************************************************** +* * +* Paramètres : - * +* * +* Description : Fournit un accès à une définition de type à diffuser. * +* * +* Retour : Définition d'objet pour Python. * +* * +* Remarques : - * +* * +******************************************************************************/ + +PyTypeObject *get_python_flow_block_type(void) +{ + static PyMethodDef py_flow_block_methods[] = { + { NULL } + }; + + static PyGetSetDef py_flow_block_getseters[] = { + { NULL } + }; + + static PyTypeObject py_flow_block_type = { + + PyVarObject_HEAD_INIT(NULL, 0) + + .tp_name = "pychrysalide.analysis.blocks.FlowBlock", + + .tp_flags = Py_TPFLAGS_DEFAULT, + + .tp_doc = "PyChrysalide flow block", + + .tp_methods = py_flow_block_methods, + .tp_getset = py_flow_block_getseters, + + }; + + return &py_flow_block_type; + +} + + +/****************************************************************************** +* * +* Paramètres : module = module dont la définition est à compléter. * +* * +* Description : Prend en charge l'objet 'pychrysalide...blocks.FlowBlock'. * +* * +* Retour : Bilan de l'opération. * +* * +* Remarques : - * +* * +******************************************************************************/ + +bool register_python_flow_block(PyObject *module) +{ + PyTypeObject *py_flow_block_type; /* Type Python 'FlowBlock' */ + int ret; /* Bilan d'un appel */ + PyObject *dict; /* Dictionnaire du module */ + + py_flow_block_type = get_python_flow_block_type(); + + py_flow_block_type->tp_base = get_python_instr_block_type(); + py_flow_block_type->tp_basicsize = py_flow_block_type->tp_base->tp_basicsize; + + if (PyType_Ready(py_flow_block_type) != 0) + return false; + + Py_INCREF(py_flow_block_type); + ret = PyModule_AddObject(module, "FlowBlock", (PyObject *)py_flow_block_type); + if (ret != 0) return false; + + dict = PyModule_GetDict(module); + pygobject_register_class(dict, "FlowBlock", G_TYPE_FLOW_BLOCK, py_flow_block_type, + Py_BuildValue("(O)", py_flow_block_type->tp_base)); + + return true; + +} |